[
  {
    "path": ".gitignore",
    "content": "tunnel\nsimple_parallel_example\nquickstart\nfull_example\nflags\nearth\ncompositing\nlibfbg.*\nglfw_example\n"
  },
  {
    "path": "LICENSE",
    "content": "BSD 3-Clause License\n\nCopyright (c) 2018, Julien Verneuil\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "README.md",
    "content": "FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support\n=====\n\nFBGraphics (FBG) is a simple C 24, 32 bpp (internal format) graphics library with parallelism and custom rendering backend support (graphics API agnostic).\n\nThe library is only two .c files on most use cases, the renderer agnostic library `fbgraphics.c` and one of the rendering backend found in `custom_backend` directory.\n\nThe library come with five backend (see `custom_backend` folder) : \n * a Linux framebuffer rendering backend (with 16 bpp support through 24/32 bpp conversion)\n * OpenGL backend which use the [GLFW](http://www.glfw.org/) library\n * OpenGL ES 2.0 backend for fbdev or Raspberry PI\n * fast dispmanx backend (Video Core IV; Raspberry PI)\n * GBA backend (slow due to 24/32 bpp -> 16 bpp support, mostly done as a proof of concept for portability on low memory hardware)\n\nFeatures :\n\n * Easy to write / use custom rendering backend support flexible enough to target low memory hardware!\n * Cross-platform with the GLFW backend (some examples may need to be adapted to the target OS)\n * Linux framebuffer (fbdev) rendering backend support\n    * Double buffering (with optional page flipping mechanism)\n    * 16, 24 (BGR/RGB), 32 bpp support\n * GBA rendering backend\n * OpenGL rendering backend through GLFW\n * OpenGL ES 2.0 rendering backend for Raspberry PI or through fbdev (tested on Nano PI Fire 3 board)\n * dispmanx rendering backend (Video Core IV; Raspberry PI)\n * Optional : Full parallelism, execute graphics code on multiple CPU cores **with a single function**\n * Image loading (provided by [LodePNG](https://lodev.org/lodepng/), [NanoJPEG](http://keyj.emphy.de/nanojpeg/), and [stb_image](https://github.com/nothings/stb/blob/master/stb_image.h))\n * Bitmap fonts for drawing texts\n * Bare-metal graphics primitive (pixels, rectangles, lines, polygon)\n * Easy to do fading, clipping and screen-clearing related effects (motion blur etc.)\n * Drawing calls can be used to render into a specified target buffer such as fbg_image etc.\n * Framerate tracking & display for all cores\n * Lightweight enough to be hackable; adapt to all kinds of needs (and still support parallelism easily)\n\nThe library is generic, most functions (including parallel ones) only manipulate buffers and you can build a custom rendering backend pretty easily with few functions call, see the `custom_backend` folder.\n\nDoxygen documentation : https://grz0zrg.github.io/fbg/\n\nTable of Contents\n=================\n\n* FBGraphics\n   * [About](#about)\n      * [Quickstart](#quickstart)\n      * [Parallelism](#parallelism)\n      * [Technical implementation](#technical-implementation)\n   * [Benchmark](#benchmark)\n   * [Documentation](#documentation)\n   * [Building](#building)\n   * [Rendering backend](#Rendering-backend)\n   * [GLFW backend](#GLFW-backend)\n   * [OpenGL ES 2.0 backend](#OpenGL-ES-2-backend)\n   * [Screenshots](#screenshots)\n   * [License](#license)\n\n## About\n\nFBGraphics was built to produce fullscreen pixels effects easily (think of Processing-like creative coding etc.) with non-accelerated framebuffer by leveraging multi-core processors, it is a bit like a software GPU but much less complex and featured, the initial target platform was a Raspberry PI 3B / NanoPI.\n\nFBGraphics was extended to support any numbers of custom rendering backend; all graphics calls manipulate internal buffers and a simple interface allow to draw the result the way you want to.\n\nFBGraphics can support low memory hardware such as GBA. It should be noted that all internal buffers are manipulated in 24/32 bpp so it has to convert to 16bpp on GBA.\n\nAn OpenGL rendering backend which use the [GLFW library](http://www.glfw.org/) was created to demonstrate the custom backend feature, it allow to draw the non-accelerated FB Graphics buffer into an OpenGL context through a texture and thus allow to interwine 3D or 2D graphics produced with standard OpenGL calls with CPU-only graphics produced by FBGraphics draw calls.\n\nAn OpenGL ES 2.0 backend is also available with similar features, it target platforms with support for OpenGL ES 2.0 through fbdev (tested on Nano PI Fire 3 SBC) or Raspberry PI dispmanx and similar platforms, it wouldn't be hard to extend this for more OpenGL ES 2.0 platforms...\n\nThere is also a dispmanx backend targeting Raspberry PI, it have better performances than the OpenGL ES 2 backend on this platform and is recommended if you don't need 3D stuff.\n\nFBGraphics was built so that it is possible to create any number of rendering context using different backend running at the same time while exploiting multi-core processors... the content of any rendering context can be transfered into other context through images when calling `fbg_drawInto`\n\nFBGraphics framebuffer settings support 16, 24 (BGR/RGB), 32 bpp, 16 bpp mode is handled by converting from 24 bpp to 16 bpp upon drawing, page flipping mechanism is disabled in 16 bpp mode, **24 bpp is the fastest mode**.\n\nFBGraphics is lightweight and does not intend to be a fully featured graphics library, it provide a limited set of graphics primitive and a small set of useful functions to start doing computer graphics anywhere right away with or without multi-core support.\n\nIf you want to use the parallelism features with advanced graphics primitives, take a look at great libraries such as [libgd](http://libgd.github.io/), [Adafruit GFX library](https://github.com/adafruit/Adafruit-GFX-Library) or even [ImageMagick](https://imagemagick.org) which should be easy to integrate.\n\nFBGraphics is fast but should be used with caution, display bounds checking is not implemented on most primitives, this allow raw performances at the cost of crashs if not careful.\n\nMulti-core support is optional and is only enabled when `FBG_PARALLEL` C definition is present.\n\nFBGraphics framebuffer backend support a mechanism known as page flipping, it allow fast double buffering by doubling the framebuffer virtual area, it is disabled by default because it is actually slower on some devices. You can enable it with a `fbg_fbdevSetup` call.\n\nVSync is automatically enabled if supported.\n\n**Note** : FBGraphics framebuffer backend does not let you setup the framebuffer, it expect the framebuffer to be configured prior launch with a command such as :\n\n```\nfbset -fb /dev/fb0 -g 512 240 512 240 24 -vsync high\nsetterm -cursor off > /dev/tty0\n```\n\n`fbset` should be available in your package manager.\n\n### Framebuffer Quickstart\n\nThe simplest example (no parallelism, without texts and images) :\n\n```c\n#include <sys/stat.h>\n#include <signal.h>\n\n#include \"fbg_fbdev.h\"\n#include \"fbgraphics.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    signal(SIGINT, int_handler);\n\n    struct _fbg *fbg = fbg_fbdevSetup(\"/dev/fb0\", 0); // you can also directly use fbg_fbdevInit(); for \"/dev/fb0\", last argument mean that will not use page flipping mechanism  for double buffering (it is actually slower on some devices!)\n\n    do {\n        fbg_clear(fbg, 0); // can also be replaced by fbg_fill(fbg, 0, 0, 0);\n\n        fbg_draw(fbg);\n\n        fbg_rect(fbg, fbg->width / 2 - 32, fbg->height / 2 - 32, 16, 16, 0, 255, 0);\n\n        fbg_pixel(fbg, fbg->width / 2, fbg->height / 2, 255, 0, 0);\n\n        fbg_flip(fbg);\n\n    } while (keep_running);\n\n    fbg_close(fbg);\n\n    return 0;\n}\n\n```\n\nA simple quickstart example with most features (but no parallelism, see below) :\n\n```c\n#include <sys/stat.h>\n#include <signal.h>\n\n#include \"fbg_fbdev.h\"\n#include \"fbgraphics.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    signal(SIGINT, int_handler);\n\n    struct _fbg *fbg = fbg_fbdevInit();\n\n    struct _fbg_img *texture = fbg_loadImage(fbg, \"texture.png\");\n    struct _fbg_img *bb_font_img = fbg_loadImage(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    do {\n        fbg_clear(fbg, 0);\n\n        fbg_draw(fbg);\n\n        // you can also use fbg_image(fbg, texture, 0, 0)\n        // but you must be sure that your image size fit on the display\n        fbg_imageClip(fbg, texture, 0, 0, 0, 0, fbg->width, fbg->height);\n\n        fbg_write(fbg, \"Quickstart example\\nFPS:\", 4, 2);\n        fbg_write(fbg, fbg->fps_char, 32 + 8, 2 + 8);\n\n        fbg_rect(fbg, fbg->width / 2 - 32, fbg->height / 2 - 32, 16, 16, 0, 255, 0);\n\n        fbg_pixel(fbg, fbg->width / 2, fbg->height / 2, 255, 0, 0);\n\n        fbg_flip(fbg);\n\n    } while (keep_running);\n\n    fbg_freeImage(texture);\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n\n    return 0;\n}\n```\n\n**Note** : Functions like `fbg_clear` or `fbg_fpixel` are fast functions, there is slower equivalent (but more parametrable) such as `fbg_background` or `fbg_pixel`, some functions variant also support transparency such as ``fbg_pixela` or `fbg_recta`.\n\n**Note** : You can generate monospace bitmap fonts to be used with `fbg_createFont` function by using my [monoBitmapFontCreator](https://github.com/grz0zrg/monoBitmapFontCreator) tool available [here](https://fbg-bitmap-font-creator.netlify.com/)\n\n### Parallelism\n\nExploiting multiple cores with FBGraphics is really easy, first you have to prepare 3 functions (of which two are optional if you don't have any allocations to do) of the following definition :\n\n```c\n// optional function\nvoid *fragmentStart(struct _fbg *fbg) {\n    // typically used to allocate your per-thread data\n    // see full_example.c for more informations\n\n    return NULL; // return your user data here\n}\n```\n\n```c\nvoid fragment(struct _fbg *fbg, struct _fragment_user_data *user_data) {\n    // this function will be executed by each threads\n    // you are free to call any FBG graphics primitive here\n    \n    fbg_clear(fbg, 0);\n    \n    // you are also free to fill each threads back buffer the way you want to\n    // fbg->task_id : thread identifier (starting at 1, 0 is reserved for the main thread)\n    // each threads will draw an horizontal line, the shade of the blue color will change based on the thread it is drawn from\n    int x = 0, y = 0;\n    for (y = fbg->task_id; y < fbg->height; y += 4) {\n        for (x = 0; x < fbg->width; x += 1) {\n            int i = (x + y * fbg->width) * 3;\n            fbg->back_buffer[i] = fbg->task_id * 85; // note : BGR format\n            fbg->back_buffer[i + 1] = 0;\n            fbg->back_buffer[i + 2] = 0;\n        }\n    }\n    \n    // simple graphics primitive (4 blue rectangle which will be handled by different threads in parallel)\n    fbg_rect(fbg, fbg->task_id * 32, 0, 32, 32, 0, 0, 255);\n}\n```\n\n```c\n// optional function\nvoid fragmentStop(struct _fbg *fbg, struct _fragment_user_data *data) {\n    // typically used to free your per-thread data\n    // see full_example.c for more informations\n}\n```\n\nThen you have to create a 'Fragment' which is a FBG multi-core task :\n\n```c\nfbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n```\n\nWhere :\n\n* `fbg` is the main library data structure returned by `fbg_customSetup` and any backend `fbg_backendnameSetup` calls (see available backends in `custom_backend` directory)\n* `fragmentStart`is a C function which will be executed when the thread start (can be NULL)\n* `fragment`is a C function which will be executed indefinitly for each threads and where all the draw code will happen\n* `fragmentStop` is a C function which will be executed when the thread end  (can be NULL)\n* `3`is the number of parallel tasks (this will launch 3 threads)\n\nAnd finally you just have to make a call to your fragment function in your drawing loop and call  `fbg_draw`!\n\n```c\nfragment(fbg, NULL);\nfbg_draw(fbg, NULL);\n```\n\n`fbg_draw` will wait until all the data are received from all the threads then draw to screen\n\n**Note** : This example will use 4 threads (including your app one) for drawing things on the screen but calling the fragment function in your drawing loop is totally optional, you could for example make use of threads for intensive drawing tasks and just use the main thread to draw the GUI or the inverse etc. it is up to you!\n\nAnd that is all you have to do!\n\nSee `simple_parallel_example.c` and `full_example.c` for more informations.\n\n**Note** : By default, the resulting buffer of each tasks are additively mixed into the main back buffer, you can override this behavior by specifying a mixing function as the last argument of `fbg_draw` such as :\n\n```c\n// function called for each tasks in the fbg_draw function\nvoid selectiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    // fbg is the main fbg structure returned by fbg_customSetup calls and any backend setup calls\n    // buffer is the current task buffer\n    // task_id is the current task id\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = (fbg->back_buffer[j] > buffer[j]) ? fbg->back_buffer[j] : buffer[j];\n    }\n}\n```\n\nThen you just have to specify it to the `fbg_draw` function :\n\n```c\nfbg_draw(fbg, additiveMixing);\n```\n\nBy using the mixing function, you can have different layers handled by different cores with different compositing rule, see `compositing.c` for an example of alpha blending compositing 2 layers running on their own cores.\n\n**Note** : You can only create one Fragment per fbg instance, another call to `fbg_createFragment` will stop all tasks for the passed fbg context and will create a new set of tasks.\n\n**Note** : On low performances platforms you may encounter performance issues at high resolution and with a high number of fragments, this is because all the threads buffer need to be mixed back onto the main thread before being displayed and at high resolution / threads count that is alot of pixels to process! You can see an alternative implementation using pure pthread in the `custom_backend` folder and `dispmanx_pure_parallel.c` but it doesn't have compositing. If your platform support some sort of SIMD instructions you could also do all the compositing using SIMD which should result in a 5x or more speed increase!\n\n### Technical implementation\n\nFBGraphics threads come with their own fbg context data which is essentialy a copy of the actual fbg context, they make use of C atomic types.\n\nInitially parallelism was implemented using [liblfds](http://liblfds.org/) library for its Ringbuffer and Freelist data structure.\n\nNow parallelism has two implementation, liblfds and a custom synchronization mechanism which has the advantage to not require additional libraries and thus execute on more platforms.\n\nYou can still use the liblfds implementation using the `FBG_LFDS` define, it may be faster.\n\n#### With liblfds\n\nEach threads begin by fetching a pre-allocated buffer from a freelist, then the fragment function is called to fill that buffer, the thread then place the buffer into a ringbuffer data structure which will be fetched upon calling `fbg_draw`, the buffers are then mixed into the main back buffer and put back into the freelist.\n\n#### Without liblfds\n\nEach threads fragment function is called to fill the local buffer, each threads then wait till that buffer is consumed by the main thread upon calling `fbg_draw`, the buffers are then mixed into the main back buffer and `fbg_draw` wake up all threads.\n\n## Benchmark (framebuffer)\n\nA simple unoptimized per pixels screen clearing with 4 cores on a Raspberry PI 3B :  30 FPS @ 1280x768 and 370 FPS @ 320x240\n\nNote : Using the dispmanx backend a screen clearing + rectangle moving on a Raspberry PI 3B : 60 FPS @ 1920x1080\n\n### Full example\n\nFullscreen per pixels perlin noise with texture mapping and scrolling (unoptimized)\n\n**Device** : Raspberry PI 3B ( Quad Core 1.2GHz )\n\n**Settings** : 320x240\n\n| Cores used to draw graphics | FPS     |\n| :-------------------------- | :------ |\n| 1                           | 42 FPS  |\n| 2                           | 81 FPS  |\n| 3                           | 120 FPS |\n\nSee screenshots below.\n\n### Tunnel example\n\nFullscreen texture-mapped and animated tunnel made of 40800 2px rectangles with motion blur (unoptimized)\n\n**Device** : Raspberry PI 3B ( Quad Core 1.2GHz )\n\n**Settings** : 320x240\n\n| Cores used to draw graphics | FPS     |\n| :-------------------------- | :------ |\n| 1                           | 36 FPS  |\n| 2                           | 69 FPS  |\n| 3                           | 99 FPS |\n| 4                           | 66 FPS |\n\nNote : The framerate drop with 4 cores is due to the main thread being too busy which make all the other threads follow due to the synchronization.\n\nSee screenshots below.\n\n## Documentation\n\nAll usable functions and structures are documented in the `fbgraphics.h` file with [Doxygen](http://www.stack.nl/~dimitri/doxygen/)\n\nThe HTML documentation can be found in the `docs` directory, it is also hosted on GitHub [here](https://grz0zrg.github.io/fbg/)\n\nExamples demonstrating all features are available in the `examples` directory.\n\nSome effects come from [my Open Processing sketches](https://www.openprocessing.org/user/130883#sketches)\n\n## Building\n\nC11 standard should be supported by the C compiler.\n\nAll examples found in `examples` directory make use of the framebuffer device `/dev/fb0` and can be built by typing `make` into the examples directory then run them by typing `./run_quickstart` for example (this handle the framebuffer setup prior launch), you will need to compile liblfds for the parallelism features. (see below)\n\nAll examples were tested on a Raspberry PI 3B with framebuffer settings : 320x240 24 bpp\n\nFor the default build (no parallelism), FBGraphics come with a header file `fbgraphics.h` and a C file `fbgraphics.c` to be included / compiled / linked with your program plus one of the rendering backend found in `custom_backend` directory, you will also need to compile the `lodepng.c` library and `nanojpeg.c` library, see the examples directory for examples of Makefile.\n\nFor parallelism support, `FBG_PARALLEL` need to be defined.\n\nIf you need to use the slightly different parallelism implementation (see technical implementation section) you will need the [liblfds](http://liblfds.org/) library :\n\n * Get latest liblfds 7.1.1 package on the official website\n * uncompress, go into the directory `liblfds711`\n * go into the directory `build/gcc_gnumake`\n * type `make` in a terminal\n * `liblfds711.a` can now be found in the `bin` directory, you need to link against it when compiling (see examples)\n\nTo compile liblfds parallel examples, just copy `liblfds711.a` / `liblfds711.h` file and `liblfds711` directory into the `examples` directory then type `make lfds711`.\n\n**Note** : FBGraphics with liblfds work on ARM64 platforms but you will need liblfds720 which is not yet released.\n\n### Executable size optimization\n\nThis library may be used for size optimized executable for things like [demos](https://en.wikipedia.org/wiki/Demoscene)\n\nImage support can be disabled with the following defines:\n- `WITHOUT_JPEG`\n- `WITHOUT_PNG`\n- `WITHOUT_STB_IMAGE`\n\nSee `tiny` makefile rule inside the `custom_backend` or `examples` folder for some compiler optimizations related to executable size.\n\nUnder Linux [sstrip](https://github.com/BR903/ELFkickers/tree/master/sstrip) and [UPX](https://upx.github.io/) can be used to bring the size down even futher.\n\n## Rendering backend\n\nSee `README` into `custom_backend` folder\n\n## GLFW backend\n\nSee `README` into `custom_backend` folder\n\nThe GLFW backend was made to demonstrate how to write a backend but it is complete enough to be used by default.\n\nThe GLFW backend has a cool lightweight Lua example which setup a Processing-like environment making use of the parallelism feature of the library, allowing the user to prototype multithreaded graphical stuff without C code compilation through the Lua language.\n\n## OpenGL ES 2 backend\n\nSee `README` into `custom_backend` folder\n\n## GBA backend\n\nSee `README` into `custom_backend` folder\n\n## Screenshots\n\n![Full example screenshot with three threads](/screenshot1.png?raw=true \"Full example screenshot with three threads\")\n\n![Tunnel with four threads](/screenshot2.png?raw=true \"Tunnel with four threads\")\n\n![Earth with four threads](/screenshot3.png?raw=true \"Earth with four threads\")\n\n![Flags of the world with four threads](/screenshot4.png?raw=true \"Flags of the world with four threads\")\n\n![Compositing with three threads](/screenshot5.png?raw=true \"Compositing with three threads\")\n\n## License\n\nBSD, see LICENSE file\n"
  },
  {
    "path": "custom_backend/Makefile",
    "content": "CC=gcc\nSTANDARD_FLAGS=-Werror -std=c11 -pedantic -D_GNU_SOURCE -D_POSIX_SOURCE\nDEBUG_FLAGS=-DDEBUG -g -Wall\nRELEASE_FLAGS=-O2 -Wall\nDEFP=-DFBG_PARALLEL\nSRC_LIBS=../src/lodepng/lodepng.c ../src/nanojpeg/nanojpeg.c ../src/fbgraphics.c\nSRC_LIB1=../src/fbgraphics.c\nSRC_GLFW=glfw/fbg_glfw.c\nSRC1=$(SRC_LIBS) $(SRC_GLFW) glfw_example.c\nSRC2=$(SRC_LIBS) $(SRC_GLFW) glfw_example_advanced.c\nSRC3=$(SRC_LIBS) $(SRC_GLFW) glfw_parallel.c\nSRC4=$(SRC_LIBS) $(SRC_GLFW) glfw_lua.c\nOUT1=glfw_example\nOUT2=glfw_example_advanced\nOUT3=glfw_parallel\nOUT4=glfw_lua\nLIBS1=-lm -lpthread `pkg-config --static --libs glfw3` `pkg-config --libs glu` `pkg-config --libs glew`\nLIBS2= -lm -lpthread `pkg-config --static --libs glfw3` `pkg-config --libs glu` `pkg-config --libs glew`\nLIBS3=-lm -lpthread `pkg-config --static --libs glfw3` `pkg-config --libs glu` `pkg-config --libs glew`\nLIBS_LFDS_711=../examples/liblfds711.a\nLIBS_LFDS_720=../examples/liblfds720.a\nINCS=-I ../src/ -I. -Iluajit `pkg-config --cflags glfw3 glu`\nINCS2=-I ../src/ -I. -IIluajit `pkg-config --cflags glfw3 glu`\nINCS_LFDS_711=-Iliblfds711\nINCS_LFDS_720=-Iliblfds720\n\n#tiny:\n#\t$(CC) $(SRC_LIB1) $(INCS) $(STANDARD_FLAGS) -O1 -fPIC -shared -o libfbg.so\n#\t$(CC) ../src/fbgraphics.c glfw/fbg_glfw.c glfw_example.c $(INCS) $(STANDARD_FLAGS) -fdata-sections -ffunction-sections -flto -DWITHOUT_PNG -DWITHOUT_JPEG -Os -lpthread `pkg-config --static --libs glfw3` `pkg-config --libs glew` -o $(OUT1) -Wl,--gc-sections,-flto\n#\t$(CC) ../src/fbgraphics.c glfw/fbg_glfw.c glfw_parallel.c $(INCS) $(STANDARD_FLAGS) -fdata-sections -ffunction-sections -flto -DWITHOUT_JPEG -Os -lpthread `pkg-config --static --libs glfw3` `pkg-config --libs glew` $(DEFP) -o $(OUT3) -Wl,--gc-sections,-flto\n\nall:\n\t$(CC) $(SRC_LIB1) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) -fPIC -shared -o libfbg.so\n\t$(CC) $(SRC1) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -o $(OUT1)\n\t$(CC) $(SRC2) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS2) $(DEFP) -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS2) libluajit.a -ldl $(DEFP) -o $(OUT4)\n\ndebug:\n\t$(CC) $(SRC1) $(INCS) $(STANDARD_FLAGS) $(DEBUG_FLAGS) $(LIBS1) -o $(OUT1)\n\t$(CC) $(SRC2) $(INCS) $(STANDARD_FLAGS) $(DEBUG_FLAGS) $(LIBS1) -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS) $(STANDARD_FLAGS) $(DEBUG_FLAGS) $(LIBS2) $(DEFP) -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS) $(STANDARD_FLAGS) $(DEBUG_FLAGS) $(LIBS2) libluajit.a -ldl $(DEFP) -o $(OUT4)\n\nlfds711:\n\t$(CC) $(SRC1) $(INCS2) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -DFBG_LFDS -DLFDS711 -o $(OUT1)\n\t$(CC) $(SRC2) $(INCS2) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -DFBG_LFDS -DLFDS711 -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS2) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS3) -DFBG_LFDS -DLFDS711 $(DEFP) -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS2) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS3) libluajit.a -ldl -DFBG_LFDS -DLFDS711 $(DEFP) -o $(OUT4)\n\nfbdeves2:\n\t$(CC) $(SRC_LIBS) opengl_es2/fbg_opengl_es2.c opengl_es2_example.c -I ../src/ $(STANDARD_FLAGS) -DFBG_FBDEV -lEGL -lm -lpthread -o opengl_es2_example\n\t$(CC) $(SRC_LIBS) opengl_es2/fbg_opengl_es2.c opengl_es2_parallel.c -I ../src/ $(STANDARD_FLAGS) -DFBG_FBDEV -I. -Iliblfds720 -DFBG_LFDS $(DEFP) ~/liblfds7.2.0/src/liblfds720/bin/liblfds720.a -lEGL -lm -lpthread -o opengl_es2_parallel\n\nrpies2:\n\t$(CC) $(SRC_LIBS) opengl_es2/fbg_opengl_es2.c opengl_es2_example.c -I ../src/ $(STANDARD_FLAGS) -DFBG_RPI -I/opt/vc/include/ -L/opt/vc/lib/ -lbrcmGLESv2 -lbrcmEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -lm -o opengl_es2_example\n\t$(CC) $(SRC_LIBS) opengl_es2/fbg_opengl_es2.c opengl_es2_parallel.c -I ../src/ $(STANDARD_FLAGS) -DFBG_RPI -I/opt/vc/include/ -I. $(DEFP) -L/opt/vc/lib/ -lbrcmGLESv2 -lbrcmEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -lm -o opengl_es2_parallel\n\ndispman:\n\t$(CC) $(SRC_LIBS) dispmanx/fbg_dispmanx.c dispmanx_example.c -I ../src/ $(STANDARD_FLAGS) -I/opt/vc/include/ -L/opt/vc/lib/ -lbrcmGLESv2 -lbrcmEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -lm -o dispmanx_example\n\t$(CC) $(SRC_LIBS) dispmanx/fbg_dispmanx.c dispmanx_pure_parallel.c -I ../src/ $(STANDARD_FLAGS) -o2 -I/opt/vc/include/ -L/opt/vc/lib/ -lbrcmGLESv2 -lbrcmEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -lm -o dispmanx_pure_parallel\n\t$(CC) $(SRC_LIBS) dispmanx/fbg_dispmanx.c dispmanx_parallel.c -I ../src/ $(STANDARD_FLAGS) $(DEFP) -DFBG_LFDS -I. -Iliblfds720 -I/opt/vc/include/ -L/opt/vc/lib/ ~/liblfds7.2.0/src/liblfds720/bin/liblfds720.a -lbrcmGLESv2 -lbrcmEGL -lopenmaxil -lbcm_host -lvcos -lvchiq_arm -lpthread -lrt -lm -o dispmanx_parallel\n\nclean:\n\trm -f *.o $(OUT1) $(OUT2) $(OUT3) $(OUT4)\n"
  },
  {
    "path": "custom_backend/README.md",
    "content": "FBGraphics : Custom rendering backend\n=====\n\n## OpenGL ES 2.0\n\nFBG OpenGL ES 2.0 rendering backend with GL utilities, similar to the GLFW backend.\n\nSupport rendering through fbdev (tested on Nano PI Fire 3 board) and / or dispmanx on Raspberry PI.\n\nOn Nano PI Fire 3 with fbdev we get 20 fps @ 720p without paralellism and 28 fps @ 720p with 7 threads (and the main thread doing nothing but SIMD buffers copy / blitting), compared to 24 fps @ 720p with paralellism but without OpenGL ES 2, main bottleneck with OpenGL ES 2 is due to CPU -> GPU buffer transfer (through `glTexSubImage2D`),\n\n### Compiling\n\nSee examples `makefile` `rpies2` / `fbdeves2` rule to compile\n\nOn Raspberry PI you must define `FBG_RPI` when compiling, this will enable the use of dispmanx which has some advantages over fbdev.\n\n### Examples\n\nSee `opengl_es2_example.c`\n\nSee `opengl_es2_parallel.c`\n\n## dispmanx\n\nFBG dispmanx double buffering rendering backend, allow fast blitting of the software buffers by using Video Core IV GPU (as used in Raspberry PI)\n\nNote : All drawing is still done in software, dispmanx is just used for fast CPU -> GPU buffer transfer aka blitting... the single core example run at full fps at 1920x1080.\n\nGood FBG Parallelism performances is tricky because FBG mix the fragments buffer on the main CPU and at 1080p with 3 threads there is alot of pixels to mix so you get 2 fps at 1080p... the parallel example use another approach by using dispmanx compositing and output at 8 fps at 1920x1080 (and 30 fps at 720p) with 3 threads by doing all the compositing with dispmanx layers, this has some disadvantages since you are more restricted in compositing operations.\n\nAnother way to optimize this without doing dispmanx compositing is to simply integrate a simple SIMD / Neon library like [this one](http://ermig1979.github.io/Simd/index.html) and let it mix the buffers, i have achieved 15 fps @ 1080p (instead of 2 fps when doing the compositing on CPU without Neon!!!) for the parallel example (with LFDS and 12 fps without) by replacing the mixing function body by one line of code :\n\n```c\nvoid fbg_mixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n\tSimdOperationBinary8u(buffer, fbg->width * fbg->components, fbg->back_buffer, fbg->width * fbg->components, fbg->width, fbg->height, fbg->components, fbg->back_buffer, fbg->width * fbg->components, SimdOperationBinary8uSaturatedAddition);\n}\n```\n\nAnother way and probably the fastest way (with SIMD compositing) to do efficient paralellim is to use MMAL / OpenMax so that FBG do zero copy transfer to GPU, you just have to define `FBG_MMAL` when compiling, it only use dispmanx to get the display resolution, the only disadvantage of that method is that *screen tearing may happen because there is no true VSYNC yet*.\n\nThere is also a pure pthread parallelism example, see `dispmanx_pure_parallel.c`, each threads are tasked to push specific pixels, it doesn't need to mix buffers, it only use a pthread barrier to keep everything in sync. It run at 20 fps @ 1080p doing a fullscreen color clear, 50 fps @ 1080p without barrier and 60 fps @ 720p. (720p is probably the best compromise resolution / efficiency on RPI)\n\nNote : Examples may have some room for more optimizations, especially in respect to RPI CPU caches.\n\n### Compiling\n\nSee examples `makefile` `dispman` rule to compile\n\n### Examples\n\nSee `dispmanx_example.c`\n\nSee `dispmanx_pure_parallel.c`\n\nSee `dispmanx_parallel.c`\n\n## GBA\n\nVery simple Game Boy Advance backend written as a proof of concept to target low memory hardware. It is slow due to 24/32 bpp -> 16 bpp conversion upon fbg_draw() calls.\n\n### Compiling\n\nThere is no makefile provided to compile this example but this can be used as a base (devkitpro / devkitarm) : [GBA_VSCode_Basic](https://github.com/JamieDStewart/GBA_VSCode_Basic)\n\nNote : May need to define `-DWITHOUT_PNG -DWITHOUT_JPEG` when compiling, `-lm` should also be linked.\n\n### Examples\n\nsee `gba_example.c`\n\n### Documentation\n\nSee the FB Graphics documentation.\n\n## GLFW\n\nFBG OpenGL 3.x+ rendering backend with GL utilities, multi-platform, use the [GLFW](https://www.glfw.org/) and [GLEW](http://glew.sourceforge.net/) library.\n\n**How it work** : An OpenGL texture is updated in real-time with a FB Graphics context content, as such all FB Graphics draw calls work but are handled by the CPU and the resulting frame buffer is handled by the GPU, you are free to call any OpenGL calls and mix software rendered graphics with accelerated graphics.\n\nIt is also possible to modify the way the FBG display buffer is rendered through a shader, see the advanced example where the software rendered background is actually the FBG buffer with a fragment shader applied to it.\n\n`fbg_glfwSetup` accept a [SSAA](https://en.wikipedia.org/wiki/Supersampling) parameter (last one) which will increase the FB Graphics context resolution by the specified factor (anti-aliasing amount) and downscale the context upon rendering, this is a cheap solution (albeit slow) to [anti-aliasing](https://en.wikipedia.org/wiki/Anti-aliasing) and removing jaggies. When using the SSAA parameter `fbg->width` and `fbg->height` refer to the internal upscaled FBG context, not the window size. To get the window size you must then use:\n\n```c\nstruct _fbg_glfw_context *glfw_context = fbg->user_context;\n// use glfw_context->width or glfw_context->height to get display size\n```\n\nNote: The SSAA parameter only increase the FBG context resolution, as such the anti-aliasing will be applied on the FBG context, not the OpenGL context.\n\n### Lua example\n\nThe Lua example is an advanced sample which use the [Lua](https://www.lua.org/) scripting language (through [LuaJIT](http://luajit.org/)) to provide a sort of multithreaded Processing-like (much much less featured) environment with JIT to build FB Graphics graphical sketches from a Lua script without the need to compile any C code.\n\nThis use 8 cores, all threads (FBG fragments) have their own Lua state and call the Lua draw() function at each frames.\n\nSee `sketch.lua` and `glfw_lua.c`\n\nIt require the LuaJIT library.\n\n### Basic usage \n\nJust call `fbg_glfwSetup` then any FB Graphics calls can be used.\n\n`fbg_glfwClear` can also be useful (a wrapper to glClear)\n\n`fbg_glfwShouldClose` can be used to know when the window is closed.\n\n### Advanced usage\n\nThis backend has a lightweight OpenGL library which ease some of the most cumbersome things when starting OpenGL projects such as VBO/VAO/FBO creations, shaders loading (from files or strings), textures creation from FBG images, etc.\n\nIt also has built-in OpenGL debugging when `DEBUG` is defined.\n\nThe `glfw_example_advanced.c` demonstrate nearly all features and mix 2D graphics (FBG) with 3D graphics.\n\n![Spooky](spooky.png \"Advanced demonstration\")\n\n### Simple example\n\nDraw a red rectangle (handled by CPU) bouncing off the screen borders, see `glfw_example` and its `makefile`:\n\n```c\n#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"glfw/fbg_glfw.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_glfwSetup(800, 600, 3, \"glfw example\", 0, 0);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    float x = 0, y = 0, velx = 3.4, vely = 3.425;\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_glfwClear();\n        \n        fbg_clear(fbg, 0);\n\n        fbg_rect(fbg, x, y, 40, 40, 255, 0, 0);\n\n        fbg_draw(fbg);\n        fbg_flip(fbg);\n\n        x += velx;\n        y += vely;\n\n        if (x <= 0 || x > fbg->width - 40) {\n            velx = -velx;\n        }\n\n        if (y <= 0 || y > fbg->height - 40) {\n            vely = -vely;\n        }\n    } while (keep_running && !fbg_glfwShouldClose(fbg));\n\n    fbg_close(fbg);\n}\n```\n"
  },
  {
    "path": "custom_backend/advanced.frag",
    "content": "#version 330\n\nuniform vec2 iResolution;\nuniform float iTime;\nuniform vec4 iMouse;\n\nin vec2 uv;\nout vec4 final_color;\nuniform sampler2D t0;\nvoid main() {\n    // normalized coordinates (-1 to 1 vertically)\n    vec2 p = (-iResolution.xy + 2.0*gl_FragCoord.xy)/iResolution.y;\n\n    // angle of each pixel to the center of the screen\n    float a = atan(p.y, p.x);\n\n    float e = iMouse.x / iResolution.x * 4;\n    float r = pow( pow(p.x*p.x,e) + pow(p.y*p.y,e), 1.0/(2.*e) );\n    \n    // index texture by (animated inverse) radious and angle\n    vec2 uv = vec2( 0.3/r + 0.4*iTime, a/3.1415927 );\n\n    // fetch color with correct texture gradients, to prevent discontinutity\n    vec2 uv2 = vec2( uv.x, atan(p.y,abs(p.x))/3.1415927 );\n    vec3 col = textureGrad( t0, uv, dFdx(uv2), dFdy(uv2) ).xyz;\n    \n    // do some weird effect based on distance\n    col = col*( (0.5 - abs(0.75 - r)) * 2) * 16.;\n\n\tfinal_color = vec4(col, 1.0);\n}"
  },
  {
    "path": "custom_backend/advanced.vert",
    "content": "#version 330\n\nlayout(location = 0) in vec3 vp;\nlayout(location = 1) in vec2 vu;\nout vec2 uv;\nvoid main() {\n    uv = vu;\n    gl_Position = vec4(vp, 1.0);\n}"
  },
  {
    "path": "custom_backend/advanced_3d.frag",
    "content": "#version 330\n\nin vec2 uv;\nin vec3 normal;\nin vec3 fpos;\nin vec3 lpos;\n\nout vec4 final_color;\nuniform sampler2D t0;\nuniform sampler2D t1;\n\nvec3 viewPos = vec3(0.0f, 0.0f, 12.0f);\nvec3 lightCol = vec3(1., 1., 1.);\n\nvoid main() {\n\tfloat ambient_strength = 0.005;\n\tvec3 ambient = ambient_strength * lightCol;\n\n\tvec3 lightDir = normalize(lpos - fpos);\n\n\tvec3 norm = normalize(normal);\n\n\tfloat diffuse = max(dot(norm, lightDir), 0.);\n\n\tvec3 viewDir = normalize(-fpos);\n\t//vec3 reflectDir = reflect(-lightDir, norm);\n\n\tfloat specularStrength = 0.75;\n\tint specularShininess = 8;\n\n\tvec3 halfwayDir = normalize(lightDir + viewDir);\n\n\tfloat spec = pow(max(dot(normal, halfwayDir), 0.0), specularShininess);\n\tvec3 specular = specularStrength * spec * lightCol;\n\n\tvec3 shade_result = ambient + diffuse + specular;\n\n\tvec4 texture1 = texture(t0, uv * 4.);\n\n\tvec4 c = (texture1 * 12. + ((1. - texture1 / 8.) - texture(t1, uv * 4.)) * 0.05) * vec4(shade_result * 8., 1.);\n\n\tfloat gamma = 2.2;\n\tfinal_color.rgb = pow(c.rgb, vec3(1.0 / gamma));\n\tfinal_color.a = 1.;\n}"
  },
  {
    "path": "custom_backend/advanced_3d.vert",
    "content": "#version 330\n\nlayout(location = 0) in vec3 vp;\nlayout(location = 1) in vec2 vu;\nlayout(location = 2) in vec3 vn;\n\nout vec2 uv;\nout vec3 normal;\nout vec3 fpos;\nout vec3 lpos;\n\nvec3 lightPos = vec3(0., 0., 0.5);\n\nuniform mat4 m, v, p;\nuniform mat4 vp_mat;\n\nvoid main() {\n    uv = vu;\n\n    normal = mat3(transpose(inverse(v * m))) * vn;\n    fpos = vec3(v * m * vec4(vp, 1.0));\n\n    lpos = vec3(v * vec4(lightPos, 1.0));\n\n    gl_Position = (p * v * m) * vec4(vp, 1.0);\n}"
  },
  {
    "path": "custom_backend/bad_skull.obj",
    "content": "# Blender v2.79 (sub 0) OBJ File: ''\n# www.blender.org\nmtllib bad_skull.mtl\no dents_sup�rieur001\nv 0.001277 -0.343559 0.357319\nv 0.000735 -0.347295 0.361536\nv 0.000312 -0.346001 0.363288\nv 0.000735 -0.347804 0.360254\nv 0.000735 -0.348199 0.360368\nv 0.001757 -0.363588 0.359951\nv -0.000367 -0.343559 0.357319\nv 0.000598 -0.346001 0.363288\nv 0.000175 -0.347295 0.361536\nv 0.000175 -0.347804 0.360254\nv 0.000175 -0.348199 0.360368\nv -0.000847 -0.363588 0.359951\nv 0.092415 -0.215548 0.309867\nv 0.088795 -0.245396 0.302110\nv 0.103839 -0.216047 0.314431\nv 0.123927 -0.250658 0.315010\nv 0.103965 -0.225752 0.325334\nv 0.087096 -0.213261 0.320138\nv 0.083907 -0.223150 0.315923\nv 0.085791 -0.261245 0.321838\nv 0.081574 -0.272295 0.312929\nv 0.115351 -0.362559 0.309239\nv 0.123049 -0.360804 0.300925\nv 0.122721 -0.333620 0.292886\nv 0.130972 -0.331534 0.291924\nv 0.122412 -0.320180 0.335383\nv 0.119221 -0.348764 0.327071\nv 0.132339 -0.330183 0.327058\nv 0.087669 -0.313953 0.312152\nv 0.101909 -0.339526 0.324197\nv 0.108733 -0.353303 0.320323\nv 0.099714 -0.289204 0.291390\nv 0.112641 -0.307647 0.289746\nv 0.119385 -0.309361 0.290348\nv 0.104539 -0.258204 0.333145\nv 0.102905 -0.339700 0.314827\nv 0.141612 -0.333830 0.311637\nv 0.144843 -0.311917 0.309600\nv 0.128919 -0.358424 0.309208\nv 0.141025 -0.337904 0.301708\nv 0.090954 -0.313264 0.320188\nv 0.123294 -0.298015 0.335158\nv 0.095863 -0.225212 0.327243\nv 0.138001 -0.297804 0.304015\nv 0.121260 -0.254732 0.306998\nv 0.105835 -0.309048 0.290236\nv 0.140814 -0.295092 0.312594\nv 0.112105 -0.305951 0.335057\nv 0.104366 -0.260580 0.296274\nv 0.097746 -0.313253 0.327620\nv 0.127498 -0.267070 0.323826\nv 0.130133 -0.296117 0.330722\nv 0.090267 -0.308660 0.300330\nv 0.084425 -0.279094 0.301460\nv 0.142146 -0.314804 0.300232\nv 0.113222 -0.331250 0.334316\nv 0.137876 -0.293883 0.321356\nv 0.093090 -0.210404 0.321710\nv 0.095446 -0.208264 0.315928\nv 0.124091 -0.211251 0.272345\nv 0.119981 -0.244821 0.267507\nv 0.141385 -0.207707 0.277170\nv 0.138254 -0.202977 0.277893\nv 0.138062 -0.206259 0.283562\nv 0.118312 -0.220389 0.285214\nv 0.129959 -0.217842 0.291057\nv 0.106043 -0.341656 0.278889\nv 0.121996 -0.346526 0.267485\nv 0.111140 -0.344972 0.261674\nv 0.123600 -0.337064 0.291695\nv 0.131358 -0.334994 0.249683\nv 0.146458 -0.331716 0.255293\nv 0.121761 -0.315325 0.252076\nv 0.152518 -0.298755 0.294802\nv 0.147421 -0.338646 0.300639\nv 0.156418 -0.341065 0.298110\nv 0.104281 -0.316752 0.283586\nv 0.113063 -0.285964 0.260776\nv 0.112456 -0.339296 0.286936\nv 0.105330 -0.271881 0.281399\nv 0.139114 -0.225725 0.293064\nv 0.139840 -0.245711 0.297427\nv 0.120374 -0.210633 0.281802\nv 0.121071 -0.338961 0.251619\nv 0.159673 -0.299914 0.273093\nv 0.161642 -0.297941 0.278928\nv 0.171751 -0.339114 0.273627\nv 0.170105 -0.335395 0.267353\nv 0.111483 -0.267901 0.265336\nv 0.153671 -0.253998 0.279354\nv 0.128219 -0.213953 0.270498\nv 0.152110 -0.263868 0.295769\nv 0.152533 -0.344872 0.287233\nv 0.167425 -0.344212 0.286574\nv 0.132403 -0.337548 0.291384\nv 0.133139 -0.204148 0.286154\nv 0.144613 -0.301089 0.297849\nv 0.147421 -0.280753 0.298983\nv 0.121185 -0.300221 0.257768\nv 0.108006 -0.301689 0.283211\nv 0.105909 -0.299115 0.275386\nv 0.156221 -0.344778 0.277413\nv 0.161611 -0.283273 0.282217\nv 0.153523 -0.332116 0.257912\nv 0.101992 -0.315766 0.276521\nv 0.117911 -0.321398 0.292836\nv 0.143334 -0.300053 0.262496\nv 0.112587 -0.312967 0.256260\nv 0.163095 -0.311382 0.286966\nv 0.124572 -0.301165 0.295213\nv 0.156907 -0.256369 0.285123\nv 0.136194 -0.337386 0.282530\nv 0.124326 -0.205522 0.278797\nv 0.105376 -0.271525 0.274958\nv 0.138019 -0.256698 0.269796\nv 0.158228 -0.294337 0.285369\nv 0.125355 -0.306007 0.296076\nv 0.106055 -0.313014 0.263549\nv 0.120756 -0.249485 0.292814\nv 0.114266 -0.239505 0.277487\nv 0.127444 -0.205886 0.273293\nv 0.135205 -0.336794 0.270739\nv 0.111879 -0.295255 0.264556\nv 0.132422 -0.204599 0.227829\nv 0.125422 -0.239485 0.225875\nv 0.148331 -0.200533 0.232783\nv 0.145215 -0.196134 0.236855\nv 0.127055 -0.216313 0.245263\nv 0.113585 -0.343477 0.232622\nv 0.135764 -0.333952 0.208216\nv 0.117684 -0.311616 0.214811\nv 0.128429 -0.318448 0.210153\nv 0.156925 -0.298180 0.255554\nv 0.164345 -0.295878 0.251527\nv 0.163943 -0.337803 0.257985\nv 0.111347 -0.316658 0.244447\nv 0.120426 -0.299668 0.247926\nv 0.117320 -0.282480 0.220266\nv 0.126235 -0.298312 0.216654\nv 0.127186 -0.335688 0.209118\nv 0.112497 -0.268444 0.242231\nv 0.142927 -0.204162 0.246490\nv 0.151126 -0.240856 0.254542\nv 0.131362 -0.200893 0.230533\nv 0.126772 -0.208553 0.241324\nv 0.143214 -0.334809 0.218017\nv 0.170141 -0.296748 0.230792\nv 0.116346 -0.339242 0.245691\nv 0.180692 -0.335923 0.225796\nv 0.162496 -0.251040 0.234305\nv 0.163728 -0.256645 0.251230\nv 0.170133 -0.344258 0.244704\nv 0.137128 -0.335466 0.253166\nv 0.157508 -0.336497 0.259188\nv 0.163684 -0.297720 0.225683\nv 0.142376 -0.196840 0.240874\nv 0.163705 -0.344772 0.236310\nv 0.159609 -0.277014 0.256015\nv 0.119132 -0.296203 0.220209\nv 0.114093 -0.298605 0.241605\nv 0.112346 -0.296831 0.236504\nv 0.122538 -0.346467 0.224908\nv 0.179974 -0.343212 0.239177\nv 0.174663 -0.341098 0.249826\nv 0.171568 -0.280048 0.237263\nv 0.152844 -0.330710 0.212523\nv 0.115752 -0.343685 0.221093\nv 0.108519 -0.314569 0.237985\nv 0.175377 -0.332940 0.219641\nv 0.130393 -0.244886 0.251927\nv 0.170109 -0.292089 0.238247\nv 0.160375 -0.335200 0.222913\nv 0.145567 -0.334863 0.232990\nv 0.148858 -0.298052 0.219121\nv 0.166311 -0.249683 0.240447\nv 0.131799 -0.199023 0.236679\nv 0.111465 -0.268217 0.235583\nv 0.115596 -0.264939 0.225829\nv 0.144553 -0.252784 0.226434\nv 0.173536 -0.308120 0.243251\nv 0.111103 -0.310754 0.223694\nv 0.151569 -0.338762 0.246550\nv 0.120902 -0.234859 0.236575\nv 0.130949 -0.314593 0.255039\nv 0.135313 -0.299441 0.254929\nv 0.130454 -0.344826 0.228253\nv 0.134615 -0.338122 0.240683\nv 0.115759 -0.292563 0.227452\nv -0.091505 -0.215547 0.309867\nv -0.087884 -0.245392 0.302112\nv -0.101677 -0.214548 0.314574\nv -0.122599 -0.249833 0.314834\nv -0.103052 -0.225753 0.325336\nv -0.086186 -0.213261 0.320139\nv -0.082997 -0.223148 0.315923\nv -0.084879 -0.261221 0.321837\nv -0.114441 -0.362559 0.309239\nv -0.122140 -0.360803 0.300925\nv -0.121811 -0.333620 0.292885\nv -0.130062 -0.331534 0.291924\nv -0.121504 -0.320176 0.335383\nv -0.131430 -0.330179 0.327058\nv -0.118310 -0.348764 0.327072\nv -0.086759 -0.313951 0.312153\nv -0.100998 -0.339525 0.324196\nv -0.107822 -0.353301 0.320325\nv -0.098803 -0.289207 0.291390\nv -0.111733 -0.307647 0.289746\nv -0.118475 -0.309361 0.290347\nv -0.080663 -0.272302 0.312927\nv -0.103625 -0.258191 0.333143\nv -0.101994 -0.339699 0.314829\nv -0.140703 -0.333829 0.311636\nv -0.143932 -0.311912 0.309602\nv -0.128009 -0.358424 0.309208\nv -0.140115 -0.337903 0.301709\nv -0.090046 -0.313266 0.320190\nv -0.122384 -0.298015 0.335158\nv -0.094954 -0.225217 0.327244\nv -0.137091 -0.297805 0.304015\nv -0.120344 -0.254718 0.307000\nv -0.104925 -0.309047 0.290236\nv -0.139904 -0.295091 0.312595\nv -0.111195 -0.305950 0.335056\nv -0.103454 -0.260574 0.296276\nv -0.096837 -0.313254 0.327621\nv -0.126584 -0.267064 0.323827\nv -0.129224 -0.296116 0.330721\nv -0.089356 -0.308663 0.300332\nv -0.083515 -0.279103 0.301460\nv -0.141236 -0.314807 0.300231\nv -0.112311 -0.331248 0.334316\nv -0.136964 -0.293883 0.321359\nv -0.092180 -0.210404 0.321710\nv -0.094535 -0.208264 0.315928\nv -0.126666 -0.212610 0.270526\nv -0.124752 -0.207567 0.272461\nv -0.119071 -0.244822 0.267507\nv -0.137682 -0.203198 0.277632\nv -0.140704 -0.207954 0.277280\nv -0.137152 -0.206259 0.283562\nv -0.117401 -0.220392 0.285214\nv -0.129049 -0.217840 0.291056\nv -0.105133 -0.341656 0.278889\nv -0.121087 -0.346526 0.267485\nv -0.110230 -0.344972 0.261676\nv -0.122690 -0.337064 0.291695\nv -0.130449 -0.334994 0.249683\nv -0.145548 -0.331716 0.255293\nv -0.120851 -0.315325 0.252076\nv -0.151608 -0.298755 0.294803\nv -0.146510 -0.338646 0.300639\nv -0.155506 -0.341064 0.298111\nv -0.103371 -0.316752 0.283587\nv -0.112154 -0.285960 0.260776\nv -0.111546 -0.339296 0.286936\nv -0.104420 -0.271883 0.281398\nv -0.138203 -0.225723 0.293064\nv -0.138931 -0.245709 0.297427\nv -0.119464 -0.210632 0.281801\nv -0.120160 -0.338961 0.251620\nv -0.158763 -0.299914 0.273093\nv -0.160732 -0.297941 0.278929\nv -0.170842 -0.339115 0.273628\nv -0.169195 -0.335395 0.267353\nv -0.110571 -0.267909 0.265335\nv -0.152766 -0.255259 0.279087\nv -0.155999 -0.256374 0.285123\nv -0.151201 -0.263870 0.295768\nv -0.151622 -0.344872 0.287232\nv -0.166515 -0.344212 0.286574\nv -0.131493 -0.337548 0.291385\nv -0.132229 -0.204148 0.286155\nv -0.143702 -0.301089 0.297849\nv -0.146514 -0.280757 0.298983\nv -0.120275 -0.300221 0.257768\nv -0.107096 -0.301689 0.283212\nv -0.105000 -0.299114 0.275387\nv -0.155311 -0.344778 0.277414\nv -0.160702 -0.283275 0.282216\nv -0.152612 -0.332116 0.257912\nv -0.101083 -0.315766 0.276518\nv -0.117001 -0.321404 0.292836\nv -0.142427 -0.300052 0.262498\nv -0.111678 -0.312971 0.256260\nv -0.162185 -0.311381 0.286966\nv -0.123662 -0.301165 0.295213\nv -0.123840 -0.205128 0.278227\nv -0.135283 -0.337386 0.282529\nv -0.119845 -0.249483 0.292814\nv -0.104467 -0.271524 0.274957\nv -0.137112 -0.256697 0.269796\nv -0.157319 -0.294336 0.285368\nv -0.124445 -0.306007 0.296076\nv -0.113355 -0.239507 0.277488\nv -0.105148 -0.313014 0.263545\nv -0.134294 -0.336795 0.270738\nv -0.110968 -0.295254 0.264557\nv -0.131513 -0.204597 0.227829\nv -0.124513 -0.239483 0.225875\nv -0.147421 -0.200533 0.232782\nv -0.144306 -0.196134 0.236854\nv -0.126146 -0.216306 0.245262\nv -0.121629 -0.346467 0.224909\nv -0.112676 -0.343478 0.232620\nv -0.134855 -0.333952 0.208216\nv -0.116774 -0.311615 0.214811\nv -0.127518 -0.318446 0.210154\nv -0.156015 -0.298180 0.255554\nv -0.163436 -0.295877 0.251526\nv -0.163035 -0.337804 0.257984\nv -0.119514 -0.299668 0.247925\nv -0.110439 -0.316659 0.244448\nv -0.116410 -0.282487 0.220265\nv -0.125324 -0.298311 0.216654\nv -0.126275 -0.335688 0.209119\nv -0.111587 -0.268444 0.242231\nv -0.142017 -0.204162 0.246490\nv -0.150216 -0.240856 0.254542\nv -0.130452 -0.200893 0.230533\nv -0.125862 -0.208554 0.241324\nv -0.142304 -0.334809 0.218017\nv -0.169146 -0.296736 0.230617\nv -0.115435 -0.339243 0.245690\nv -0.161583 -0.251030 0.234305\nv -0.165402 -0.249690 0.240448\nv -0.162818 -0.256647 0.251231\nv -0.169224 -0.344258 0.244704\nv -0.136218 -0.335466 0.253166\nv -0.156596 -0.336497 0.259188\nv -0.162775 -0.297720 0.225683\nv -0.159466 -0.335200 0.222912\nv -0.162795 -0.344772 0.236310\nv -0.158699 -0.277019 0.256015\nv -0.118222 -0.296203 0.220209\nv -0.113183 -0.298605 0.241605\nv -0.111436 -0.296831 0.236503\nv -0.173755 -0.341098 0.249824\nv -0.177554 -0.343869 0.238569\nv -0.170658 -0.280054 0.237260\nv -0.151935 -0.330710 0.212523\nv -0.114841 -0.343686 0.221094\nv -0.107609 -0.314567 0.237988\nv -0.176319 -0.333601 0.220663\nv -0.134403 -0.299442 0.254929\nv -0.169200 -0.292088 0.238247\nv -0.144658 -0.334863 0.232989\nv -0.147949 -0.298052 0.219122\nv -0.130888 -0.199024 0.236679\nv -0.141466 -0.196840 0.240874\nv -0.129480 -0.244874 0.251926\nv -0.110555 -0.268217 0.235582\nv -0.114686 -0.264942 0.225828\nv -0.143645 -0.252791 0.226434\nv -0.172626 -0.308124 0.243252\nv -0.119992 -0.234857 0.236575\nv -0.110193 -0.310753 0.223693\nv -0.150659 -0.338762 0.246550\nv -0.130040 -0.314592 0.255039\nv -0.129545 -0.344826 0.228253\nv -0.133704 -0.338122 0.240683\nv -0.114848 -0.292563 0.227455\nv -0.180881 -0.338756 0.233587\nv 0.171530 -0.266654 0.047894\nv 0.167953 -0.268958 0.052736\nv 0.170596 -0.244497 0.054276\nv 0.167338 -0.276284 0.080707\nv 0.170035 -0.251145 0.085968\nv 0.207992 -0.256058 0.050196\nv 0.213826 -0.266590 0.060268\nv 0.208855 -0.251999 0.087003\nv 0.210044 -0.273525 0.085168\nv 0.169665 -0.306593 0.085444\nv 0.164743 -0.305115 0.072638\nv 0.164866 -0.298465 0.062927\nv 0.182099 -0.301673 0.087751\nv 0.166617 -0.298614 0.046496\nv 0.168885 -0.293711 0.039022\nv 0.175897 -0.296563 0.042439\nv 0.184004 -0.287248 0.037718\nv 0.169291 -0.255943 0.068161\nv 0.206005 -0.238365 0.051098\nv 0.189309 -0.257706 0.046903\nv 0.168749 -0.281873 0.041633\nv 0.166066 -0.295767 0.085909\nv 0.170901 -0.277095 0.085839\nv 0.211330 -0.278436 0.046094\nv 0.210092 -0.286789 0.085661\nv 0.203532 -0.306990 0.080253\nv 0.197552 -0.306373 0.086872\nv 0.183693 -0.293650 0.047615\nv 0.200828 -0.294891 0.040515\nv 0.203851 -0.299398 0.050472\nv 0.207431 -0.298603 0.064363\nv 0.177739 -0.238820 0.048962\nv 0.205977 -0.302585 0.085316\nv 0.165093 -0.303635 0.082876\nv 0.205916 -0.291323 0.040997\nv 0.210399 -0.263970 0.049975\nv 0.197972 -0.300451 0.063709\nv 0.171463 -0.249977 0.063344\nv 0.162893 -0.291373 0.075510\nv 0.208283 -0.302906 0.078169\nv 0.207278 -0.242808 0.086509\nv 0.170944 -0.252354 0.075642\nv 0.209985 -0.250045 0.064003\nv 0.202550 -0.223567 0.059111\nv 0.197293 -0.237075 0.091572\nv 0.210031 -0.254235 0.070039\nv 0.177594 -0.226560 0.086247\nv 0.180829 -0.217954 0.059211\nv 0.181762 -0.216973 0.053469\nv 0.197557 -0.216354 0.054082\nv 0.200802 -0.265939 0.045864\nv 0.193924 -0.216493 0.084883\nv 0.196419 -0.218977 0.086726\nv 0.173034 -0.306590 0.076103\nv 0.213120 -0.269898 0.074581\nv 0.213982 -0.277202 0.079013\nv 0.164334 -0.282480 0.051016\nv 0.196360 -0.305914 0.076253\nv 0.178842 -0.252476 0.068088\nv 0.209503 -0.295112 0.050089\nv 0.181097 -0.293955 0.064188\nv 0.164313 -0.295725 0.049682\nv 0.203019 -0.249013 0.066838\nv 0.182778 -0.300833 0.077089\nv 0.197293 -0.286544 0.037434\nv 0.200681 -0.227367 0.082154\nv 0.198897 -0.232592 0.049867\nv 0.185378 -0.211699 0.057063\nv 0.179034 -0.250493 0.092088\nv 0.202750 -0.250996 0.092334\nv 0.196729 -0.299120 0.049319\nv 0.207639 -0.250759 0.075229\nv 0.194594 -0.211727 0.057082\nv 0.208884 -0.238226 0.055513\nv 0.182529 -0.225719 0.088845\nv 0.176600 -0.300121 0.089779\nv 0.166251 -0.271434 0.067318\nv 0.214413 -0.280797 0.054598\nv 0.198155 -0.251915 0.069673\nv 0.179376 -0.245320 0.074682\nv 0.176346 -0.252293 0.070846\nv 0.179272 -0.267190 0.045144\nv 0.200511 -0.296224 0.089929\nv 0.201245 -0.274664 0.088792\nv 0.193825 -0.218567 0.082193\nv 0.178532 -0.286905 0.036575\nv 0.212517 -0.291948 0.078983\nv 0.179306 -0.245512 0.065066\nv 0.178183 -0.276376 0.088103\nv 0.171543 -0.297907 0.063326\nv 0.174305 -0.299317 0.047556\nv 0.195725 -0.216908 0.060124\nv 0.198909 -0.247589 0.074095\nv 0.184605 -0.216593 0.085326\nv 0.182883 -0.217818 0.082515\nv 0.162328 -0.276793 0.097020\nv 0.156229 -0.279178 0.101677\nv 0.162800 -0.241103 0.100961\nv 0.156723 -0.253332 0.105006\nv 0.148597 -0.270734 0.129712\nv 0.153297 -0.253984 0.143485\nv 0.149337 -0.254842 0.136596\nv 0.148636 -0.283851 0.129478\nv 0.212640 -0.260785 0.107940\nv 0.218884 -0.271561 0.113251\nv 0.217002 -0.265120 0.122263\nv 0.204634 -0.252237 0.148329\nv 0.205784 -0.277564 0.147627\nv 0.164885 -0.254719 0.147738\nv 0.148096 -0.319476 0.134372\nv 0.155534 -0.321224 0.136936\nv 0.147173 -0.319905 0.125506\nv 0.150820 -0.320044 0.121505\nv 0.160812 -0.321206 0.128663\nv 0.151304 -0.314010 0.112443\nv 0.170262 -0.313966 0.141768\nv 0.168806 -0.312454 0.144478\nv 0.155271 -0.315638 0.097793\nv 0.167824 -0.309039 0.085801\nv 0.172066 -0.313577 0.092404\nv 0.183951 -0.302329 0.088984\nv 0.162055 -0.308181 0.087079\nv 0.161864 -0.295446 0.089815\nv 0.153319 -0.261209 0.119192\nv 0.187221 -0.264634 0.099927\nv 0.153153 -0.299473 0.096248\nv 0.146287 -0.303198 0.135523\nv 0.150307 -0.284561 0.135903\nv 0.219891 -0.288347 0.104537\nv 0.215043 -0.270502 0.107049\nv 0.210095 -0.276835 0.144836\nv 0.208621 -0.293482 0.147606\nv 0.205437 -0.317476 0.136397\nv 0.194647 -0.319555 0.143694\nv 0.181487 -0.308757 0.099801\nv 0.203866 -0.306973 0.092639\nv 0.212699 -0.312971 0.107295\nv 0.211168 -0.310770 0.123811\nv 0.203733 -0.314180 0.146006\nv 0.199974 -0.306378 0.149505\nv 0.160272 -0.314521 0.091417\nv 0.212809 -0.307681 0.097169\nv 0.197987 -0.313895 0.120900\nv 0.146219 -0.296677 0.123143\nv 0.211270 -0.310495 0.138331\nv 0.201445 -0.240096 0.147315\nv 0.153480 -0.255756 0.127176\nv 0.162145 -0.253443 0.124880\nv 0.211454 -0.251600 0.123354\nv 0.167640 -0.217390 0.108143\nv 0.210261 -0.255867 0.130053\nv 0.158017 -0.223109 0.140026\nv 0.157243 -0.255216 0.114594\nv 0.171276 -0.215528 0.111940\nv 0.193449 -0.214842 0.107921\nv 0.204172 -0.273952 0.101543\nv 0.181114 -0.209222 0.142753\nv 0.184430 -0.217313 0.146848\nv 0.173480 -0.313521 0.131376\nv 0.214946 -0.273670 0.134626\nv 0.215114 -0.282382 0.141024\nv 0.192491 -0.212873 0.115604\nv 0.192908 -0.318993 0.134338\nv 0.193753 -0.253297 0.125541\nv 0.201915 -0.250877 0.125047\nv 0.166192 -0.252979 0.118335\nv 0.204827 -0.296490 0.093403\nv 0.155757 -0.310956 0.143415\nv 0.191020 -0.219135 0.142434\nv 0.196452 -0.253248 0.129023\nv 0.162469 -0.236647 0.146309\nv 0.196908 -0.248294 0.152207\nv 0.173675 -0.214438 0.104961\nv 0.173766 -0.240717 0.099903\nv 0.165438 -0.214127 0.136239\nv 0.199806 -0.314259 0.104763\nv 0.197540 -0.214924 0.111731\nv 0.197784 -0.243677 0.134574\nv 0.187189 -0.206604 0.111394\nv 0.190599 -0.312008 0.149319\nv 0.211918 -0.240969 0.112917\nv 0.175367 -0.207642 0.109329\nv 0.153596 -0.317762 0.140902\nv 0.205807 -0.239926 0.106336\nv 0.220295 -0.302018 0.108856\nv 0.165619 -0.245789 0.128258\nv 0.174089 -0.277164 0.095777\nv 0.187678 -0.252712 0.151979\nv 0.206823 -0.253087 0.134140\nv 0.208828 -0.235659 0.117186\nv 0.194432 -0.278948 0.148884\nv 0.180723 -0.210329 0.139560\nv 0.176651 -0.298806 0.087579\nv 0.214080 -0.300386 0.140822\nv 0.159730 -0.283389 0.142165\nv 0.160709 -0.312765 0.114349\nv 0.168771 -0.316359 0.097617\nv 0.221822 -0.280339 0.116006\nv 0.185582 -0.232936 0.150554\nv 0.153087 -0.279507 0.109188\nv 0.167668 -0.209597 0.140101\nv 0.163193 -0.214901 0.141528\nv 0.173878 -0.307115 0.117338\nv 0.168202 -0.256190 0.121967\nv 0.146224 -0.273381 0.155043\nv 0.138981 -0.287894 0.158161\nv 0.142162 -0.250355 0.158545\nv 0.133194 -0.281049 0.168397\nv 0.128036 -0.294270 0.197672\nv 0.129367 -0.258326 0.208013\nv 0.127016 -0.258975 0.201622\nv 0.197144 -0.266141 0.166984\nv 0.202711 -0.274168 0.179560\nv 0.194260 -0.255084 0.185723\nv 0.189501 -0.257350 0.202017\nv 0.187124 -0.286531 0.214762\nv 0.137003 -0.258005 0.213332\nv 0.128012 -0.338448 0.195186\nv 0.135985 -0.339133 0.201685\nv 0.127803 -0.336583 0.185577\nv 0.135036 -0.339217 0.186522\nv 0.138535 -0.329812 0.173588\nv 0.153173 -0.330552 0.208927\nv 0.147775 -0.332868 0.204230\nv 0.138101 -0.332365 0.161517\nv 0.144728 -0.333047 0.150997\nv 0.146982 -0.328385 0.143838\nv 0.153719 -0.325168 0.141088\nv 0.168477 -0.319624 0.147707\nv 0.171582 -0.312513 0.143712\nv 0.133330 -0.266316 0.179080\nv 0.135589 -0.260310 0.171963\nv 0.191888 -0.241655 0.166888\nv 0.184223 -0.269275 0.160973\nv 0.137084 -0.261841 0.184523\nv 0.145040 -0.285327 0.153556\nv 0.143759 -0.317403 0.143441\nv 0.130210 -0.294466 0.202431\nv 0.205899 -0.299611 0.162897\nv 0.199991 -0.277883 0.165875\nv 0.186500 -0.313566 0.216296\nv 0.159390 -0.271813 0.155498\nv 0.185830 -0.336265 0.202646\nv 0.175524 -0.337107 0.209704\nv 0.167292 -0.332695 0.213832\nv 0.190249 -0.324421 0.150871\nv 0.194623 -0.329375 0.159406\nv 0.192610 -0.330853 0.171981\nv 0.193553 -0.327582 0.185641\nv 0.184997 -0.331559 0.213158\nv 0.125298 -0.322970 0.201096\nv 0.201105 -0.319885 0.154825\nv 0.149278 -0.327543 0.211672\nv 0.181592 -0.330221 0.182678\nv 0.125013 -0.307409 0.191420\nv 0.203115 -0.316455 0.181256\nv 0.131553 -0.261619 0.189377\nv 0.137401 -0.251492 0.190758\nv 0.169860 -0.215625 0.208345\nv 0.143318 -0.227706 0.166230\nv 0.145192 -0.253905 0.178199\nv 0.160696 -0.205020 0.208683\nv 0.133580 -0.230748 0.207554\nv 0.181344 -0.232303 0.163534\nv 0.195504 -0.242130 0.172963\nv 0.155286 -0.202740 0.208332\nv 0.195270 -0.288547 0.209876\nv 0.167271 -0.201606 0.168415\nv 0.142675 -0.338102 0.190616\nv 0.168791 -0.200593 0.171530\nv 0.176042 -0.207595 0.174820\nv 0.175305 -0.336575 0.198765\nv 0.156914 -0.321819 0.178733\nv 0.138065 -0.216049 0.201412\nv 0.192170 -0.316161 0.148472\nv 0.189293 -0.282272 0.159325\nv 0.129942 -0.325693 0.206221\nv 0.143916 -0.322384 0.212049\nv 0.171193 -0.207718 0.175926\nv 0.156014 -0.201438 0.168586\nv 0.157827 -0.209340 0.163666\nv 0.182048 -0.253942 0.195906\nv 0.160844 -0.207481 0.204564\nv 0.181824 -0.330181 0.165633\nv 0.175332 -0.249813 0.220516\nv 0.163593 -0.217943 0.215266\nv 0.146036 -0.206026 0.202111\nv 0.181429 -0.258481 0.190941\nv 0.174725 -0.288512 0.216333\nv 0.133701 -0.311560 0.157667\nv 0.131394 -0.328484 0.172609\nv 0.135310 -0.287385 0.164761\nv 0.132764 -0.334830 0.206664\nv 0.182384 -0.251359 0.186671\nv 0.139694 -0.236716 0.213081\nv 0.149639 -0.260867 0.183925\nv 0.196792 -0.281324 0.201955\nv 0.145405 -0.252630 0.189833\nv 0.154608 -0.330262 0.196349\nv 0.179696 -0.210773 0.169970\nv 0.197075 -0.311212 0.207025\nv 0.157619 -0.285555 0.152342\nv 0.164317 -0.253336 0.220045\nv 0.171953 -0.327684 0.216933\nv 0.152948 -0.314266 0.141747\nv 0.191627 -0.235588 0.178154\nv 0.207053 -0.304393 0.174547\nv 0.182380 -0.245202 0.215508\nv 0.164219 -0.324125 0.162275\nv 0.193229 -0.285382 0.209519\nv 0.136444 -0.293902 0.207552\nv 0.153810 -0.240932 0.157026\nv 0.192767 -0.330667 0.202129\nv 0.155296 -0.332089 0.155200\nv 0.206044 -0.286893 0.177204\nv 0.202889 -0.324544 0.167016\nv 0.151662 -0.211003 0.171744\nv 0.130316 -0.290438 0.179681\nv 0.175945 -0.244400 0.198567\nv 0.193251 -0.261255 0.193407\nv 0.203704 -0.279157 0.173270\nv 0.144827 -0.204328 0.205842\nv 0.140383 -0.210371 0.207347\nv 0.150328 -0.211482 0.164221\nv 0.139123 -0.328936 0.150919\nv -0.170621 -0.266653 0.047894\nv -0.169870 -0.243965 0.054037\nv -0.169125 -0.251145 0.085969\nv -0.212916 -0.266590 0.060265\nv -0.207431 -0.248416 0.087640\nv -0.209418 -0.273371 0.084922\nv -0.165011 -0.306244 0.082012\nv -0.163565 -0.305222 0.073053\nv -0.169599 -0.306215 0.086119\nv -0.163956 -0.298465 0.062927\nv -0.181189 -0.301673 0.087752\nv -0.165708 -0.298614 0.046496\nv -0.167976 -0.293710 0.039021\nv -0.174986 -0.296564 0.042440\nv -0.183094 -0.287248 0.037718\nv -0.169607 -0.250621 0.062969\nv -0.168382 -0.255943 0.068161\nv -0.202968 -0.256606 0.048345\nv -0.167839 -0.281877 0.041632\nv -0.166174 -0.295761 0.086544\nv -0.169992 -0.277095 0.085840\nv -0.210400 -0.278531 0.046068\nv -0.210165 -0.264079 0.051018\nv -0.202622 -0.306990 0.080254\nv -0.196640 -0.306372 0.086873\nv -0.182783 -0.293650 0.047615\nv -0.199918 -0.294892 0.040516\nv -0.198796 -0.300028 0.050018\nv -0.206522 -0.298603 0.064364\nv -0.176830 -0.238819 0.048963\nv -0.205066 -0.302587 0.085315\nv -0.208037 -0.296150 0.050191\nv -0.205007 -0.291322 0.040997\nv -0.197064 -0.300451 0.063710\nv -0.178665 -0.264260 0.046268\nv -0.201642 -0.265379 0.046183\nv -0.162058 -0.291178 0.076280\nv -0.207373 -0.302905 0.078169\nv -0.170035 -0.252353 0.075643\nv -0.209075 -0.250047 0.064005\nv -0.179870 -0.215957 0.057117\nv -0.196380 -0.237075 0.091572\nv -0.178321 -0.251240 0.092169\nv -0.178467 -0.245320 0.074682\nv -0.209121 -0.254235 0.070039\nv -0.181476 -0.218399 0.059802\nv -0.180853 -0.216974 0.053468\nv -0.193010 -0.216639 0.085377\nv -0.195608 -0.223799 0.088491\nv -0.199258 -0.224707 0.083626\nv -0.172124 -0.306590 0.076103\nv -0.212247 -0.269878 0.074495\nv -0.199079 -0.218995 0.058858\nv -0.176684 -0.226561 0.086247\nv -0.163424 -0.282487 0.051012\nv -0.202108 -0.249013 0.066838\nv -0.195450 -0.305914 0.076253\nv -0.177932 -0.252476 0.068088\nv -0.180187 -0.293955 0.064188\nv -0.163403 -0.295725 0.049684\nv -0.181869 -0.300833 0.077090\nv -0.196383 -0.286544 0.037434\nv -0.176962 -0.277013 0.088100\nv -0.184908 -0.211571 0.057086\nv -0.201841 -0.250998 0.092334\nv -0.183695 -0.216592 0.085325\nv -0.197381 -0.216999 0.053945\nv -0.206730 -0.250760 0.075228\nv -0.192490 -0.211393 0.056983\nv -0.207918 -0.236683 0.056772\nv -0.181619 -0.225715 0.088844\nv -0.175436 -0.300357 0.089707\nv -0.202092 -0.235182 0.049985\nv -0.165341 -0.271431 0.067309\nv -0.213503 -0.280794 0.054598\nv -0.197246 -0.251915 0.069674\nv -0.175437 -0.252293 0.070846\nv -0.199352 -0.296527 0.089985\nv -0.200337 -0.274665 0.088792\nv -0.192235 -0.217282 0.082612\nv -0.177624 -0.286903 0.036575\nv -0.212046 -0.280857 0.083281\nv -0.211606 -0.291949 0.078986\nv -0.178394 -0.245516 0.065067\nv -0.166428 -0.276284 0.080708\nv -0.167043 -0.268958 0.052737\nv -0.170633 -0.297907 0.063326\nv -0.173395 -0.299317 0.047556\nv -0.194817 -0.216911 0.060125\nv -0.197998 -0.247589 0.074095\nv -0.181962 -0.217832 0.082513\nv -0.161417 -0.276792 0.097021\nv -0.158441 -0.246065 0.102830\nv -0.154209 -0.255540 0.109085\nv -0.147687 -0.270737 0.129712\nv -0.148429 -0.254839 0.136598\nv -0.147726 -0.283851 0.129478\nv -0.211791 -0.261200 0.107913\nv -0.216093 -0.265119 0.122258\nv -0.203724 -0.252232 0.148329\nv -0.204874 -0.277564 0.147627\nv -0.154623 -0.321224 0.136936\nv -0.146263 -0.319905 0.125509\nv -0.159903 -0.321206 0.128664\nv -0.149911 -0.320043 0.121505\nv -0.150418 -0.313967 0.112346\nv -0.169352 -0.313966 0.141768\nv -0.167893 -0.312455 0.144477\nv -0.154474 -0.315479 0.097363\nv -0.166912 -0.309040 0.085801\nv -0.171158 -0.313577 0.092405\nv -0.183042 -0.302329 0.088984\nv -0.161145 -0.308182 0.087080\nv -0.160954 -0.295439 0.089818\nv -0.152516 -0.261083 0.118601\nv -0.207246 -0.240615 0.107865\nv -0.186321 -0.264630 0.099929\nv -0.164173 -0.254331 0.147831\nv -0.152242 -0.299474 0.096249\nv -0.145378 -0.303196 0.135524\nv -0.149398 -0.284561 0.135903\nv -0.218981 -0.288348 0.104538\nv -0.215101 -0.270654 0.107760\nv -0.209185 -0.276835 0.144836\nv -0.207710 -0.293483 0.147607\nv -0.204529 -0.317475 0.136398\nv -0.193738 -0.319555 0.143695\nv -0.180578 -0.308757 0.099801\nv -0.202956 -0.306973 0.092639\nv -0.211789 -0.312971 0.107295\nv -0.210258 -0.310770 0.123811\nv -0.165354 -0.243712 0.099642\nv -0.202826 -0.314178 0.146006\nv -0.199064 -0.306376 0.149506\nv -0.159364 -0.314521 0.091417\nv -0.147186 -0.319476 0.134371\nv -0.211900 -0.307681 0.097170\nv -0.197077 -0.313895 0.120901\nv -0.158983 -0.253712 0.115583\nv -0.203268 -0.273945 0.101547\nv -0.145309 -0.296676 0.123146\nv -0.210363 -0.310490 0.138330\nv -0.198616 -0.234298 0.146132\nv -0.152571 -0.255757 0.127175\nv -0.210545 -0.251601 0.123354\nv -0.166731 -0.217387 0.108144\nv -0.184181 -0.230981 0.150238\nv -0.164285 -0.246597 0.127973\nv -0.209351 -0.255867 0.130053\nv -0.155557 -0.231701 0.141683\nv -0.152385 -0.253986 0.143485\nv -0.170367 -0.215526 0.111940\nv -0.192540 -0.214842 0.107921\nv -0.178512 -0.208630 0.140976\nv -0.181761 -0.212732 0.145235\nv -0.172571 -0.313521 0.131375\nv -0.214037 -0.273669 0.134621\nv -0.218184 -0.271696 0.116076\nv -0.214204 -0.282378 0.141024\nv -0.191581 -0.212872 0.115604\nv -0.159406 -0.220130 0.136638\nv -0.199919 -0.250486 0.124906\nv -0.191998 -0.318993 0.134337\nv -0.165282 -0.252979 0.118335\nv -0.203915 -0.296493 0.093402\nv -0.154848 -0.310954 0.143415\nv -0.184130 -0.212611 0.140052\nv -0.161558 -0.236641 0.146308\nv -0.196000 -0.248294 0.152207\nv -0.171157 -0.215394 0.104638\nv -0.166096 -0.213694 0.136369\nv -0.166758 -0.209598 0.140101\nv -0.198896 -0.314259 0.104762\nv -0.196628 -0.214921 0.111730\nv -0.199569 -0.245064 0.135644\nv -0.186278 -0.206604 0.111393\nv -0.189692 -0.312008 0.149320\nv -0.211008 -0.240967 0.112917\nv -0.152686 -0.317763 0.140902\nv -0.190891 -0.237805 0.102894\nv -0.219384 -0.302022 0.108858\nv -0.192371 -0.253932 0.126844\nv -0.173180 -0.277167 0.095776\nv -0.186760 -0.252712 0.151978\nv -0.205913 -0.253086 0.134140\nv -0.207915 -0.235652 0.117184\nv -0.193551 -0.278926 0.148885\nv -0.174458 -0.207641 0.109329\nv -0.175740 -0.298805 0.087579\nv -0.213170 -0.300387 0.140823\nv -0.155320 -0.279177 0.101676\nv -0.159798 -0.312765 0.114349\nv -0.161345 -0.255327 0.123523\nv -0.167860 -0.316359 0.097618\nv -0.158969 -0.283145 0.142186\nv -0.221032 -0.285239 0.114725\nv -0.192160 -0.248031 0.131878\nv -0.152177 -0.279508 0.109191\nv -0.162280 -0.214908 0.141529\nv -0.172969 -0.307115 0.117338\nv -0.167295 -0.256189 0.121968\nv -0.145317 -0.273378 0.155043\nv -0.138070 -0.287894 0.158162\nv -0.141253 -0.250352 0.158545\nv -0.132285 -0.281030 0.168399\nv -0.127127 -0.294270 0.197674\nv -0.126106 -0.258971 0.201623\nv -0.196307 -0.266615 0.166952\nv -0.201803 -0.274173 0.179557\nv -0.193352 -0.255086 0.185723\nv -0.188821 -0.257987 0.202435\nv -0.186213 -0.286531 0.214763\nv -0.136092 -0.258007 0.213331\nv -0.127102 -0.338447 0.195188\nv -0.135075 -0.339133 0.201685\nv -0.134124 -0.339217 0.186521\nv -0.126893 -0.336583 0.185578\nv -0.131817 -0.329955 0.172967\nv -0.152263 -0.330552 0.208927\nv -0.146865 -0.332868 0.204232\nv -0.139752 -0.333364 0.155205\nv -0.144305 -0.327140 0.143203\nv -0.153470 -0.327029 0.143194\nv -0.167567 -0.319624 0.147707\nv -0.171415 -0.312699 0.144010\nv -0.132420 -0.266316 0.179080\nv -0.134681 -0.260308 0.171964\nv -0.190978 -0.241652 0.166888\nv -0.183312 -0.269272 0.160973\nv -0.136173 -0.261843 0.184522\nv -0.144131 -0.285327 0.153556\nv -0.143742 -0.307618 0.145340\nv -0.129300 -0.294466 0.202431\nv -0.204990 -0.299610 0.162899\nv -0.200047 -0.278074 0.166686\nv -0.185591 -0.313563 0.216296\nv -0.158487 -0.271818 0.155499\nv -0.188017 -0.334195 0.198860\nv -0.171198 -0.336378 0.210620\nv -0.189340 -0.324422 0.150873\nv -0.193713 -0.329375 0.159406\nv -0.191700 -0.330853 0.171982\nv -0.192642 -0.327583 0.185640\nv -0.152900 -0.240932 0.157026\nv -0.182931 -0.331466 0.213808\nv -0.124389 -0.322970 0.201097\nv -0.200194 -0.319887 0.154825\nv -0.184445 -0.335546 0.208360\nv -0.148369 -0.327543 0.211673\nv -0.192319 -0.285382 0.209519\nv -0.135535 -0.293901 0.207552\nv -0.180682 -0.330221 0.182678\nv -0.124102 -0.307408 0.191426\nv -0.156708 -0.285556 0.152342\nv -0.202206 -0.316457 0.181250\nv -0.130644 -0.261621 0.189375\nv -0.136489 -0.251494 0.190758\nv -0.168952 -0.215628 0.208345\nv -0.142409 -0.227704 0.166229\nv -0.163405 -0.253334 0.220045\nv -0.159786 -0.205020 0.208684\nv -0.132670 -0.230748 0.207553\nv -0.128457 -0.258331 0.208014\nv -0.180434 -0.232302 0.163534\nv -0.194591 -0.242120 0.172962\nv -0.154375 -0.202740 0.208331\nv -0.194359 -0.288546 0.209877\nv -0.166365 -0.201606 0.168416\nv -0.141765 -0.338102 0.190616\nv -0.175130 -0.207593 0.174819\nv -0.174395 -0.336575 0.198765\nv -0.141903 -0.328193 0.174961\nv -0.156004 -0.321819 0.178734\nv -0.137155 -0.216050 0.201411\nv -0.191263 -0.316162 0.148473\nv -0.188381 -0.282268 0.159326\nv -0.143005 -0.322383 0.212049\nv -0.129033 -0.325696 0.206222\nv -0.170285 -0.207720 0.175927\nv -0.156917 -0.209343 0.163665\nv -0.182449 -0.252888 0.198004\nv -0.159936 -0.207481 0.204564\nv -0.180912 -0.330180 0.165634\nv -0.144284 -0.253905 0.178200\nv -0.162682 -0.217942 0.215265\nv -0.145127 -0.206026 0.202111\nv -0.143917 -0.204328 0.205842\nv -0.180520 -0.258481 0.190941\nv -0.155105 -0.201437 0.168586\nv -0.173816 -0.288512 0.216334\nv -0.150325 -0.331255 0.161543\nv -0.151232 -0.322321 0.140294\nv -0.134400 -0.287384 0.164762\nv -0.174423 -0.249811 0.220516\nv -0.131856 -0.334831 0.206665\nv -0.181473 -0.251358 0.186671\nv -0.138783 -0.236708 0.213080\nv -0.148727 -0.260867 0.183925\nv -0.195884 -0.281323 0.201951\nv -0.167881 -0.200593 0.171531\nv -0.144495 -0.252630 0.189833\nv -0.178783 -0.210768 0.169971\nv -0.196165 -0.311217 0.207024\nv -0.170250 -0.328226 0.216789\nv -0.175861 -0.250839 0.196465\nv -0.159567 -0.308488 0.143615\nv -0.190715 -0.235586 0.178156\nv -0.206143 -0.304389 0.174552\nv -0.181471 -0.245204 0.215509\nv -0.129403 -0.290439 0.179692\nv -0.132791 -0.311556 0.157668\nv -0.163309 -0.324125 0.162275\nv -0.153698 -0.330262 0.196350\nv -0.193399 -0.326539 0.203498\nv -0.153658 -0.332011 0.152131\nv -0.205133 -0.286889 0.177206\nv -0.202615 -0.279464 0.175592\nv -0.201979 -0.324545 0.167017\nv -0.150753 -0.211001 0.171744\nv -0.192341 -0.261255 0.193408\nv -0.139474 -0.210368 0.207347\nv -0.149420 -0.211478 0.164221\nv -0.137633 -0.329184 0.151745\nv 0.071198 -0.361778 0.342849\nv 0.067181 -0.344429 0.341762\nv 0.062217 -0.342313 0.346685\nv 0.059274 -0.328592 0.337255\nv 0.069440 -0.353824 0.354414\nv 0.080857 -0.355033 0.353849\nv 0.077036 -0.341535 0.360262\nv 0.111312 -0.355673 0.334639\nv 0.079064 -0.320335 0.359461\nv 0.073221 -0.363291 0.348448\nv 0.067773 -0.359648 0.348800\nv 0.107021 -0.358302 0.321887\nv 0.107501 -0.338950 0.319834\nv 0.112689 -0.358932 0.323024\nv 0.100962 -0.329335 0.317572\nv 0.114644 -0.312936 0.339228\nv 0.116595 -0.349775 0.332086\nv 0.091875 -0.232932 0.333687\nv 0.087201 -0.242776 0.327611\nv 0.081585 -0.229249 0.336494\nv 0.095648 -0.229373 0.341705\nv 0.080191 -0.229850 0.340222\nv 0.065000 -0.279400 0.338709\nv 0.080997 -0.274786 0.357025\nv 0.060570 -0.321700 0.334767\nv 0.113323 -0.312034 0.335859\nv 0.108421 -0.270333 0.343081\nv 0.097475 -0.312615 0.319125\nv 0.090567 -0.286259 0.318985\nv 0.118612 -0.335737 0.334099\nv 0.086909 -0.232418 0.347957\nv 0.089217 -0.224470 0.342962\nv 0.098363 -0.236350 0.341151\nv 0.083116 -0.304185 0.320308\nv 0.068077 -0.275521 0.330024\nv 0.077115 -0.261117 0.326059\nv 0.070266 -0.308545 0.325797\nv 0.070184 -0.258506 0.333022\nv 0.115758 -0.342980 0.323317\nv 0.060450 -0.328562 0.343855\nv 0.070468 -0.289091 0.351013\nv 0.068129 -0.328338 0.354923\nv 0.107401 -0.362617 0.324696\nv 0.089792 -0.309495 0.357062\nv 0.107071 -0.305291 0.347117\nv 0.084738 -0.342345 0.329906\nv 0.073617 -0.320401 0.319914\nv 0.081645 -0.312416 0.317643\nv 0.112998 -0.321740 0.324258\nv 0.084183 -0.276035 0.320423\nv 0.086435 -0.223439 0.338666\nv 0.087782 -0.338317 0.358652\nv 0.080657 -0.365698 0.342020\nv 0.108150 -0.316427 0.324687\nv 0.105818 -0.267374 0.349326\nv 0.089299 -0.271197 0.358306\nv 0.114567 -0.333895 0.343394\nv 0.058121 -0.350427 0.345687\nv 0.060006 -0.366614 0.348824\nv 0.049484 -0.371904 0.348443\nv 0.058483 -0.367709 0.358724\nv 0.051389 -0.360444 0.366305\nv 0.015659 -0.367396 0.367661\nv 0.055967 -0.325413 0.372112\nv 0.060227 -0.370370 0.352190\nv 0.005416 -0.350571 0.354903\nv 0.004533 -0.339628 0.351060\nv 0.011228 -0.347432 0.376111\nv 0.006241 -0.368942 0.363884\nv 0.018313 -0.229500 0.365641\nv 0.019855 -0.238289 0.356519\nv 0.026585 -0.229192 0.359794\nv 0.021379 -0.231008 0.372896\nv 0.032336 -0.233305 0.360891\nv 0.043463 -0.278473 0.345333\nv 0.055964 -0.331989 0.340165\nv 0.013851 -0.320167 0.376601\nv 0.016646 -0.275855 0.378601\nv 0.005068 -0.323661 0.356192\nv 0.008222 -0.297433 0.350286\nv 0.054312 -0.334658 0.338842\nv 0.064823 -0.353280 0.361933\nv 0.001144 -0.331677 0.357399\nv 0.027865 -0.351880 0.349203\nv 0.032868 -0.230270 0.369511\nv 0.030059 -0.229646 0.371799\nv 0.013693 -0.256438 0.353217\nv 0.048789 -0.276857 0.374995\nv 0.062033 -0.330659 0.364234\nv 0.052863 -0.284352 0.368328\nv 0.027822 -0.309763 0.339894\nv 0.015504 -0.243475 0.367393\nv 0.026312 -0.328894 0.336486\nv 0.026685 -0.270064 0.344158\nv 0.021223 -0.344448 0.377885\nv 0.041513 -0.271408 0.379122\nv 0.046618 -0.323239 0.337650\nv 0.063017 -0.333915 0.353196\nv 0.064957 -0.352745 0.350802\nv 0.052638 -0.289993 0.354266\nv 0.021954 -0.319779 0.336926\nv 0.007266 -0.372403 0.355588\nv 0.007600 -0.373811 0.357989\nv 0.049179 -0.315304 0.373869\nv 0.010896 -0.320526 0.344133\nv 0.012132 -0.313631 0.346606\nv 0.022405 -0.224063 0.365670\nv 0.027530 -0.223805 0.366262\nv 0.023045 -0.271400 0.381981\nv 0.029413 -0.319813 0.335445\nv 0.001584 -0.330911 0.363801\nv 0.014365 -0.283373 0.345331\nv 0.058032 -0.345050 0.371146\nv 0.043031 -0.374904 0.353377\nv 0.025150 -0.312882 0.378235\nv 0.005420 -0.323907 0.364529\nv 0.033904 -0.255231 0.348905\nv -0.070288 -0.361777 0.342849\nv -0.066273 -0.344429 0.341761\nv -0.061307 -0.342309 0.346684\nv -0.058364 -0.328591 0.337255\nv -0.068530 -0.353823 0.354414\nv -0.079948 -0.355030 0.353851\nv -0.076126 -0.341535 0.360262\nv -0.110403 -0.355673 0.334639\nv -0.078153 -0.320335 0.359461\nv -0.066863 -0.359647 0.348800\nv -0.072310 -0.363290 0.348449\nv -0.106112 -0.358303 0.321887\nv -0.106590 -0.338948 0.319834\nv -0.111779 -0.358932 0.323024\nv -0.100053 -0.329337 0.317572\nv -0.113734 -0.312934 0.339230\nv -0.115686 -0.349770 0.332091\nv -0.090963 -0.232933 0.333685\nv -0.086290 -0.242772 0.327613\nv -0.086041 -0.222844 0.339624\nv -0.080728 -0.228917 0.336694\nv -0.091049 -0.226260 0.343210\nv -0.095212 -0.230947 0.340363\nv -0.079282 -0.229847 0.340222\nv -0.064090 -0.279400 0.338709\nv -0.059660 -0.321701 0.334766\nv -0.112412 -0.312033 0.335860\nv -0.107511 -0.270328 0.343082\nv -0.096566 -0.312617 0.319124\nv -0.089657 -0.286256 0.318985\nv -0.059541 -0.328560 0.343856\nv -0.085999 -0.232420 0.347958\nv -0.080088 -0.274786 0.357026\nv -0.117703 -0.335735 0.334100\nv -0.113656 -0.333895 0.343394\nv -0.082205 -0.304185 0.320308\nv -0.072707 -0.320400 0.319914\nv -0.067168 -0.275523 0.330023\nv -0.076206 -0.261119 0.326059\nv -0.069356 -0.308545 0.325797\nv -0.069273 -0.258511 0.333021\nv -0.114848 -0.342983 0.323317\nv -0.069558 -0.289095 0.351014\nv -0.106491 -0.362617 0.324697\nv -0.088884 -0.309493 0.357061\nv -0.067219 -0.328336 0.354922\nv -0.106159 -0.305290 0.347118\nv -0.083829 -0.342345 0.329905\nv -0.080736 -0.312415 0.317644\nv -0.112087 -0.321738 0.324258\nv -0.083273 -0.276034 0.320423\nv -0.086874 -0.338316 0.358652\nv -0.079747 -0.365697 0.342020\nv -0.107240 -0.316426 0.324687\nv -0.104908 -0.267376 0.349325\nv -0.088388 -0.271199 0.358307\nv -0.057211 -0.350429 0.345687\nv -0.059096 -0.366615 0.348824\nv -0.048573 -0.371905 0.348443\nv -0.057573 -0.367709 0.358723\nv -0.050480 -0.360443 0.366305\nv -0.014750 -0.367396 0.367661\nv -0.059317 -0.370370 0.352190\nv -0.004505 -0.350570 0.354904\nv -0.003622 -0.339628 0.351060\nv -0.010317 -0.347433 0.376110\nv -0.005330 -0.368942 0.363883\nv -0.017404 -0.229499 0.365641\nv -0.018945 -0.238292 0.356518\nv -0.025675 -0.229192 0.359794\nv -0.020469 -0.231009 0.372896\nv -0.031466 -0.234008 0.360303\nv -0.042553 -0.278474 0.345333\nv -0.031452 -0.229767 0.370765\nv -0.055055 -0.331990 0.340165\nv -0.012941 -0.320168 0.376601\nv -0.015737 -0.275855 0.378602\nv -0.004157 -0.323664 0.356194\nv -0.008738 -0.291332 0.348029\nv -0.053402 -0.334658 0.338843\nv -0.063912 -0.353280 0.361934\nv -0.000234 -0.331674 0.357401\nv -0.012783 -0.256435 0.353217\nv -0.047878 -0.276854 0.374996\nv -0.058496 -0.327112 0.368232\nv -0.051955 -0.284356 0.368328\nv -0.026911 -0.309763 0.339894\nv -0.014595 -0.243471 0.367394\nv -0.025402 -0.328894 0.336486\nv -0.017479 -0.272858 0.345486\nv -0.020314 -0.344448 0.377885\nv -0.031586 -0.251611 0.350006\nv -0.045708 -0.323239 0.337650\nv -0.064048 -0.352747 0.350803\nv -0.062551 -0.334838 0.353118\nv -0.062293 -0.332592 0.360680\nv -0.051727 -0.289995 0.354263\nv -0.021043 -0.319779 0.336926\nv -0.006356 -0.372403 0.355588\nv -0.006689 -0.373811 0.357990\nv -0.048518 -0.316503 0.373944\nv -0.024240 -0.312882 0.378235\nv -0.009984 -0.320525 0.344135\nv -0.011224 -0.313630 0.346605\nv -0.021495 -0.224063 0.365670\nv -0.022136 -0.271400 0.381981\nv -0.026958 -0.351880 0.349203\nv -0.028503 -0.319813 0.335445\nv -0.000674 -0.330910 0.363801\nv -0.057122 -0.345051 0.371145\nv -0.040605 -0.271409 0.379122\nv -0.042122 -0.374904 0.353377\nv -0.004510 -0.323905 0.364527\nv -0.027359 -0.224028 0.366708\nv -0.032390 -0.275289 0.343134\nv -0.174951 -0.491836 0.251258\nv -0.138796 -0.513461 0.279709\nv -0.136600 -0.455992 0.288860\nv -0.165021 -0.426836 0.262679\nv -0.117584 -0.483212 0.294978\nv -0.094010 -0.530470 0.300493\nv -0.081092 -0.480625 0.315203\nv -0.061090 -0.509008 0.313152\nv -0.052798 -0.535018 0.310334\nv -0.054212 -0.483767 0.322137\nv 0.019146 -0.532052 0.312825\nv -0.000460 -0.486866 0.319279\nv -0.176841 -0.524196 0.234745\nv -0.147293 -0.536958 0.270473\nv -0.116869 -0.571080 0.291313\nv -0.046451 -0.579090 0.313890\nv 0.012966 -0.567856 0.316391\nv -0.220341 -0.462740 0.202456\nv -0.174922 -0.413610 0.247181\nv -0.203430 -0.421817 0.203328\nv -0.199774 -0.375918 0.165293\nv -0.238999 -0.407728 0.136855\nv -0.246888 -0.379338 0.117002\nv -0.227016 -0.367877 0.137177\nv -0.267429 -0.382639 0.079916\nv -0.265873 -0.338033 0.103981\nv -0.314329 -0.357022 0.006469\nv -0.294414 -0.290705 0.079217\nv -0.346534 -0.256834 0.016654\nv -0.304736 -0.248752 0.079438\nv -0.332854 -0.206807 0.054626\nv -0.339573 -0.142222 0.056034\nv -0.319571 -0.111477 0.086369\nv -0.338413 -0.021804 0.090111\nv -0.354102 -0.057848 0.051214\nv -0.325662 -0.043085 0.103977\nv -0.329572 -0.019128 0.102796\nv -0.321951 -0.023710 0.111608\nv -0.351705 -0.015909 0.052311\nv -0.351486 -0.014932 0.056986\nv -0.215336 -0.497056 0.205915\nv -0.246764 -0.516203 0.142111\nv -0.251706 -0.439085 0.118344\nv -0.277159 -0.428470 0.049262\nv -0.363199 -0.233345 -0.006004\nv -0.356860 -0.150850 0.019632\nv -0.362525 -0.075973 0.022642\nv -0.058823 -0.607594 0.308004\nv 0.024221 -0.602687 0.312467\nv -0.089543 -0.600351 0.302553\nv -0.120291 -0.599493 0.284696\nv -0.151517 -0.603537 0.248958\nv -0.185346 -0.580905 0.196750\nv -0.194535 -0.558644 0.191422\nv -0.235470 -0.525174 0.165714\nv -0.274802 -0.488333 0.037033\nv -0.283691 -0.466735 0.015898\nv -0.358660 -0.283245 -0.034537\nv -0.338559 -0.342037 -0.045147\nv -0.375505 -0.202040 -0.034772\nv -0.374546 -0.246173 -0.058299\nv -0.376683 -0.125480 -0.044014\nv -0.385141 -0.175695 -0.069521\nv -0.324892 -0.399052 -0.061833\nv -0.279136 -0.490075 0.010169\nv -0.388715 -0.175614 -0.096706\nv -0.372845 -0.246101 -0.108007\nv -0.387781 -0.124387 -0.073791\nv -0.400436 -0.117545 -0.097211\nv -0.399595 -0.120586 -0.119789\nv -0.381327 -0.176579 -0.130841\nv -0.360814 -0.261135 -0.124510\nv -0.337273 -0.356534 -0.106695\nv -0.315856 -0.418917 -0.108307\nv -0.203015 -0.366417 0.149521\nv -0.191671 -0.399403 0.207353\nv -0.118665 -0.430797 0.329056\nv -0.110041 -0.460056 0.313510\nv -0.102681 -0.434999 0.345308\nv -0.090714 -0.441077 0.347501\nv -0.063746 -0.445576 0.352110\nv -0.074555 -0.432864 0.353481\nv -0.027499 -0.440051 0.353948\nv -0.048020 -0.426753 0.352734\nv -0.058994 -0.425347 0.351532\nv -0.071898 -0.422446 0.347666\nv -0.081675 -0.416912 0.347144\nv -0.088496 -0.421878 0.343735\nv -0.036983 -0.427680 0.355529\nv -0.037453 -0.420690 0.350077\nv -0.130503 -0.407389 0.311283\nv -0.115422 -0.403305 0.316948\nv -0.111889 -0.426932 0.339526\nv -0.138832 -0.407863 0.305473\nv -0.142930 -0.400174 0.295630\nv -0.150717 -0.396135 0.282618\nv -0.164464 -0.396590 0.268835\nv -0.181756 -0.386692 0.225036\nv -0.187974 -0.389453 0.214406\nv -0.170845 -0.386880 0.247921\nv -0.176173 -0.389800 0.242079\nv -0.188889 -0.375836 0.192510\nv -0.192720 -0.366506 0.169224\nv -0.198004 -0.360856 0.141060\nv -0.200709 -0.350909 0.121902\nv -0.227280 -0.346493 0.122047\nv -0.247530 -0.338635 0.112976\nv -0.243092 -0.327284 0.101784\nv -0.235000 -0.319584 0.081347\nv -0.253887 -0.304926 0.081533\nv -0.269034 -0.312569 0.097389\nv -0.294485 -0.270301 0.084005\nv -0.291043 -0.257623 0.082909\nv -0.281108 -0.262193 0.076252\nv -0.268864 -0.266869 0.063579\nv -0.230963 -0.307776 0.041698\nv -0.253514 -0.277363 0.048943\nv -0.295343 -0.219487 0.078187\nv -0.307375 -0.130515 0.087585\nv -0.284717 -0.485150 -0.011882\nv -0.265437 -0.509201 0.045670\nv -0.252291 -0.532081 0.093104\nv -0.252023 -0.529092 0.118204\nv -0.209295 -0.566563 0.140208\nv -0.212137 -0.561098 0.158993\nv -0.186700 -0.590569 0.177394\nv -0.161231 -0.615406 0.220832\nv -0.132895 -0.626187 0.254568\nv -0.085572 -0.637491 0.277364\nv -0.098498 -0.621312 0.287820\nv -0.052640 -0.624770 0.299491\nv -0.000460 -0.636816 0.289369\nv 0.020568 -0.627193 0.300205\nv -0.335544 -0.013081 0.071764\nv -0.321454 -0.016855 0.086806\nv -0.330235 -0.086374 0.034641\nv -0.353809 -0.078272 0.012641\nv -0.305487 -0.119391 0.063337\nv -0.302656 -0.155224 0.042187\nv -0.341005 -0.114683 -0.005213\nv -0.292611 -0.198847 0.015243\nv -0.338129 -0.151865 -0.023745\nv -0.265625 -0.260797 0.007547\nv -0.254609 -0.302357 -0.021267\nv -0.232421 -0.311552 0.008822\nv -0.221932 -0.340770 -0.009653\nv -0.190770 -0.351619 0.040054\nv -0.204911 -0.371044 -0.002990\nv -0.212411 -0.320606 0.030531\nv -0.183178 -0.387099 0.035922\nv -0.164272 -0.367573 0.125387\nv -0.159190 -0.417838 0.096463\nv -0.146191 -0.434383 0.145574\nv -0.136185 -0.421413 0.190319\nv -0.132146 -0.468419 0.180798\nv -0.155540 -0.382216 0.167477\nv -0.028134 -0.508686 0.248569\nv -0.046672 -0.447501 0.288255\nv -0.037440 -0.423162 0.316922\nv 0.013221 -0.509442 0.249962\nv -0.090196 -0.455379 0.248707\nv -0.096472 -0.421121 0.275043\nv -0.112158 -0.476896 0.211805\nv -0.112134 -0.429315 0.236335\nv -0.064292 -0.510282 0.233964\nv -0.098266 -0.507494 0.215886\nv -0.029725 -0.542202 0.231643\nv -0.051660 -0.560588 0.225590\nv -0.085027 -0.575666 0.221605\nv -0.105826 -0.551125 0.209602\nv -0.050381 -0.585940 0.230033\nv -0.025369 -0.617695 0.244437\nv 0.032831 -0.565138 0.226153\nv 0.047773 -0.586662 0.230073\nv -0.074857 -0.616470 0.241049\nv 0.017713 -0.631061 0.255198\nv -0.041382 -0.630552 0.255788\nv -0.082766 -0.630189 0.249885\nv -0.122652 -0.605283 0.211089\nv -0.103421 -0.611313 0.227480\nv -0.125694 -0.622133 0.223968\nv -0.120504 -0.572421 0.201397\nv -0.126716 -0.520349 0.188450\nv -0.154413 -0.601147 0.182804\nv -0.146182 -0.593112 0.177448\nv -0.140718 -0.578750 0.174130\nv -0.144609 -0.522927 0.156753\nv -0.152504 -0.504322 0.134501\nv -0.157361 -0.447332 0.095841\nv -0.164434 -0.554702 0.121392\nv -0.169212 -0.567851 0.126339\nv -0.171273 -0.438903 0.076106\nv -0.192063 -0.559648 0.108124\nv -0.189055 -0.540770 0.087154\nv -0.180948 -0.508501 0.091225\nv -0.198462 -0.483773 0.068644\nv -0.209434 -0.464583 0.050475\nv -0.230968 -0.486876 0.020800\nv -0.219090 -0.519693 0.054636\nv -0.238275 -0.519126 0.044954\nv -0.235315 -0.508797 0.030479\nv -0.189098 -0.418894 0.038710\nv -0.205487 -0.395336 -0.003070\nv -0.236228 -0.423248 -0.034842\nv -0.252922 -0.502303 0.005601\nv -0.294629 -0.413014 -0.116170\nv -0.302928 -0.378175 -0.133044\nv -0.292868 -0.373090 -0.131161\nv -0.303091 -0.430542 -0.110825\nv -0.287799 -0.441895 -0.101624\nv -0.282765 -0.470992 -0.070340\nv -0.272193 -0.476037 -0.060199\nv -0.256584 -0.455419 -0.057172\nv -0.275157 -0.386099 -0.111234\nv -0.269898 -0.367302 -0.105708\nv -0.272570 -0.436990 -0.089504\nv -0.259730 -0.421781 -0.078140\nv -0.256085 -0.385849 -0.089740\nv -0.268086 -0.355186 -0.097696\nv -0.240020 -0.397330 -0.052392\nv -0.240158 -0.368069 -0.049860\nv -0.265600 -0.319549 -0.051848\nv -0.285785 -0.268477 -0.048099\nv -0.285963 -0.324997 -0.101767\nv -0.299219 -0.345101 -0.132635\nv -0.308940 -0.337771 -0.135063\nv -0.332484 -0.267743 -0.132858\nv -0.340133 -0.211571 -0.131644\nv -0.331434 -0.222198 -0.123421\nv -0.323777 -0.253817 -0.125629\nv -0.296192 -0.288494 -0.101900\nv -0.291530 -0.289340 -0.078669\nv -0.306546 -0.250789 -0.063406\nv -0.319939 -0.224297 -0.083003\nv -0.339745 -0.167334 -0.111759\nv -0.350728 -0.209627 -0.137994\nv -0.344631 -0.163354 -0.126754\nv -0.321302 -0.185475 -0.040357\nv -0.353366 -0.174077 -0.141728\nv -0.357466 -0.110812 -0.054344\nv -0.305646 -0.216397 -0.043734\nv -0.324188 -0.196614 -0.071251\nv -0.339854 -0.154456 -0.083830\nv -0.341886 -0.131752 -0.124538\nv -0.347429 -0.130108 -0.097653\nv -0.360495 -0.105784 -0.085241\nv -0.346921 -0.113586 -0.109685\nv -0.348497 -0.119604 -0.150386\nv -0.336221 -0.102542 -0.134844\nv -0.336400 -0.048118 -0.174700\nv -0.318696 -0.030891 -0.159246\nv -0.316625 -0.049118 -0.139603\nv -0.361644 -0.109571 -0.163834\nv -0.354721 -0.057217 -0.175281\nv -0.363779 -0.189143 -0.139215\nv -0.381526 -0.162239 -0.138548\nv -0.374624 -0.120981 -0.156567\nv -0.357847 -0.239599 -0.132229\nv -0.326357 -0.326416 -0.131072\nv -0.313473 -0.403969 -0.118820\nv -0.283954 -0.478593 -0.047689\nv -0.238937 -0.536237 0.086147\nv -0.186491 -0.580516 0.149548\nv -0.157536 -0.613827 0.206435\nv -0.125018 -0.630689 0.242706\nv -0.076625 -0.637362 0.268712\nv -0.029122 -0.636958 0.269778\nv -0.282052 -0.219960 0.043626\nv -0.295763 -0.174497 0.071706\nv -0.301400 -0.132326 0.082455\nv -0.268435 -0.248999 0.040171\nv -0.045217 -0.415363 0.330354\nv -0.089856 -0.406390 0.309568\nv -0.097801 -0.410624 0.286692\nv -0.058769 -0.418679 0.311920\nv -0.115841 -0.400257 0.287233\nv -0.099759 -0.401009 0.302904\nv -0.115764 -0.401387 0.267776\nv -0.131818 -0.383640 0.265711\nv 0.015211 -0.415293 0.327436\nv -0.029573 -0.418215 0.328656\nv -0.127031 -0.388195 0.256192\nv -0.136329 -0.397896 0.216435\nv -0.136033 -0.387790 0.246757\nv -0.146983 -0.386210 0.221157\nv -0.159694 -0.376633 0.187552\nv -0.166543 -0.360036 0.155590\nv -0.188118 -0.342182 0.066953\nv -0.179886 -0.355333 0.106188\nv -0.171109 -0.362960 0.123516\nv -0.409224 -0.031657 -0.150711\nv -0.405236 -0.091879 -0.135051\nv -0.412720 -0.091703 -0.115517\nv -0.428228 -0.051609 -0.120934\nv -0.424650 -0.031352 -0.134442\nv -0.401927 -0.013972 -0.152082\nv -0.360214 -0.031418 -0.173086\nv -0.337792 -0.020716 -0.175321\nv -0.324243 -0.020878 -0.168418\nv -0.356009 -0.005302 -0.158621\nv -0.329976 -0.013257 -0.165632\nv -0.346583 -0.004315 -0.150896\nv -0.386229 -0.008291 -0.153853\nv -0.416577 -0.015261 -0.137171\nv -0.416629 -0.013115 -0.124153\nv -0.420111 -0.028287 -0.108680\nv -0.408708 -0.011625 -0.117304\nv -0.427389 -0.033486 -0.116159\nv -0.398274 -0.021524 -0.107035\nv -0.376628 -0.006648 -0.120643\nv -0.360347 -0.017038 -0.117136\nv -0.322697 -0.032358 -0.130152\nv -0.325175 -0.018109 -0.138045\nv -0.315105 -0.033200 -0.137929\nv -0.319560 -0.017172 -0.151128\nv -0.377507 -0.000815 -0.136520\nv -0.402207 -0.004295 -0.133939\nv -0.333324 -0.094748 -0.125583\nv -0.321939 -0.051108 -0.126407\nv -0.426252 -0.055989 -0.107783\nv -0.410954 -0.054266 -0.101829\nv -0.377654 -0.041910 -0.109542\nv -0.355423 -0.069164 -0.112868\nv -0.340238 -0.090639 -0.119230\nv -0.379814 -0.064778 -0.101971\nv -0.361306 -0.088070 -0.101875\nv -0.379369 -0.092128 -0.073091\nv -0.386616 -0.073596 -0.092398\nv -0.352215 -0.106555 -0.027581\nv -0.367451 -0.105486 -0.038895\nv -0.370521 -0.103372 -0.061166\nv -0.362854 -0.095593 -0.014529\nv -0.313256 -0.026850 0.100680\nv -0.307921 -0.075872 0.093536\nv -0.401682 -0.091747 -0.090424\nv -0.390304 -0.091956 -0.081824\nv -0.388631 -0.106413 -0.074965\nv -0.378344 -0.105474 -0.052779\nv -0.375036 -0.108241 -0.035716\nv -0.368879 -0.099693 -0.005730\nv -0.359282 -0.073434 0.017291\nv -0.325760 -0.018488 0.099095\nv -0.318270 -0.020891 0.110436\nv -0.316209 -0.045033 0.106750\nv -0.195205 -0.334225 0.082033\nv -0.216720 -0.317531 0.045011\nv -0.179633 -0.361162 0.166076\nv -0.161547 -0.383794 0.219143\nv -0.159435 -0.385165 0.233540\nv -0.116877 -0.399382 0.305667\nv -0.074959 -0.407294 0.323880\nv -0.136847 -0.387124 0.275906\nv -0.025925 -0.416441 0.333590\nv -0.000460 -0.445910 0.347127\nv -0.000460 -0.426964 0.348311\nv -0.000460 -0.414265 0.339574\nv 0.147861 -0.525603 0.271088\nv 0.174024 -0.491838 0.251263\nv 0.135676 -0.455996 0.288862\nv 0.164097 -0.426835 0.262683\nv 0.116665 -0.483211 0.294977\nv 0.080169 -0.480625 0.315204\nv 0.119998 -0.529459 0.289063\nv 0.059544 -0.509087 0.313321\nv 0.053292 -0.483765 0.322137\nv 0.073084 -0.535018 0.306386\nv 0.175923 -0.524194 0.234742\nv 0.115946 -0.571079 0.291314\nv 0.072860 -0.585160 0.309028\nv 0.219419 -0.462740 0.202459\nv 0.173999 -0.413611 0.247182\nv 0.202511 -0.421810 0.203321\nv 0.238078 -0.407729 0.136856\nv 0.198856 -0.375922 0.165293\nv 0.245966 -0.379339 0.117003\nv 0.266508 -0.382640 0.079915\nv 0.227013 -0.373416 0.138091\nv 0.264951 -0.338035 0.103982\nv 0.313412 -0.357018 0.006464\nv 0.293492 -0.290711 0.079217\nv 0.345612 -0.256833 0.016657\nv 0.303816 -0.248750 0.079438\nv 0.331928 -0.206799 0.054634\nv 0.338653 -0.142239 0.056028\nv 0.337491 -0.021805 0.090111\nv 0.318649 -0.111481 0.086369\nv 0.353179 -0.057851 0.051218\nv 0.324741 -0.043083 0.103978\nv 0.328651 -0.019128 0.102796\nv 0.321030 -0.023710 0.111608\nv 0.350566 -0.014932 0.056985\nv 0.350785 -0.015909 0.052311\nv 0.214418 -0.497058 0.205912\nv 0.245844 -0.516204 0.142112\nv 0.250785 -0.439082 0.118342\nv 0.276236 -0.428471 0.049266\nv 0.362279 -0.233353 -0.006008\nv 0.355940 -0.150841 0.019630\nv 0.361604 -0.075974 0.022641\nv 0.079898 -0.605867 0.304045\nv 0.119369 -0.599494 0.284697\nv 0.150596 -0.603535 0.248959\nv 0.184427 -0.580901 0.196749\nv 0.193617 -0.558645 0.191418\nv 0.234549 -0.525173 0.165716\nv 0.273881 -0.488335 0.037032\nv 0.282769 -0.466730 0.015902\nv 0.337638 -0.342037 -0.045147\nv 0.357739 -0.283242 -0.034530\nv 0.374580 -0.202043 -0.034758\nv 0.373626 -0.246171 -0.058302\nv 0.375765 -0.125477 -0.044023\nv 0.384221 -0.175690 -0.069523\nv 0.323972 -0.399047 -0.061833\nv 0.278215 -0.490075 0.010167\nv 0.371923 -0.246102 -0.108010\nv 0.387795 -0.175609 -0.096708\nv 0.386864 -0.124385 -0.073799\nv 0.399516 -0.117545 -0.097213\nv 0.398674 -0.120585 -0.119788\nv 0.380406 -0.176580 -0.130841\nv 0.359894 -0.261134 -0.124510\nv 0.336353 -0.356528 -0.106696\nv 0.314935 -0.418918 -0.108306\nv 0.213901 -0.368703 0.144422\nv 0.200422 -0.364401 0.148378\nv 0.190752 -0.399406 0.207351\nv 0.117742 -0.430797 0.329058\nv 0.109119 -0.460058 0.313511\nv 0.101760 -0.435000 0.345308\nv 0.089794 -0.441076 0.347501\nv 0.062826 -0.445575 0.352111\nv 0.073634 -0.432864 0.353481\nv 0.036063 -0.427679 0.355529\nv 0.058072 -0.425346 0.351532\nv 0.043242 -0.424189 0.350890\nv 0.026577 -0.440053 0.353947\nv 0.070978 -0.422446 0.347666\nv 0.080755 -0.416911 0.347144\nv 0.087574 -0.421878 0.343736\nv 0.036534 -0.420691 0.350080\nv 0.129583 -0.407390 0.311283\nv 0.114501 -0.403305 0.316949\nv 0.110967 -0.426933 0.339527\nv 0.137911 -0.407863 0.305473\nv 0.142009 -0.400174 0.295629\nv 0.149797 -0.396135 0.282617\nv 0.163543 -0.396590 0.268835\nv 0.182003 -0.387042 0.224377\nv 0.169925 -0.386880 0.247921\nv 0.175252 -0.389800 0.242079\nv 0.189370 -0.376099 0.192106\nv 0.188492 -0.365402 0.173244\nv 0.197082 -0.360856 0.141061\nv 0.199791 -0.350907 0.121899\nv 0.226357 -0.346494 0.122048\nv 0.246609 -0.338635 0.112976\nv 0.242174 -0.327281 0.101782\nv 0.234076 -0.319586 0.081350\nv 0.252970 -0.304924 0.081533\nv 0.268113 -0.312569 0.097389\nv 0.293564 -0.270301 0.084005\nv 0.290122 -0.257624 0.082909\nv 0.280188 -0.262190 0.076251\nv 0.267944 -0.266866 0.063579\nv 0.230043 -0.307775 0.041702\nv 0.252592 -0.277364 0.048944\nv 0.294422 -0.219486 0.078187\nv 0.306454 -0.130514 0.087585\nv 0.283796 -0.485150 -0.011884\nv 0.264516 -0.509201 0.045671\nv 0.251372 -0.532080 0.093103\nv 0.251104 -0.529091 0.118202\nv 0.208374 -0.566563 0.140208\nv 0.211219 -0.561095 0.158994\nv 0.185780 -0.590567 0.177391\nv 0.160311 -0.615405 0.220832\nv 0.122119 -0.631082 0.257124\nv 0.120372 -0.618084 0.273918\nv 0.077605 -0.637345 0.279485\nv 0.075264 -0.624058 0.295139\nv 0.334622 -0.013081 0.071765\nv 0.320534 -0.016855 0.086805\nv 0.352888 -0.078272 0.012641\nv 0.329314 -0.086374 0.034641\nv 0.304564 -0.119403 0.063333\nv 0.340084 -0.114684 -0.005212\nv 0.301733 -0.155228 0.042187\nv 0.291691 -0.198850 0.015238\nv 0.337208 -0.151865 -0.023745\nv 0.264703 -0.260799 0.007548\nv 0.253689 -0.302357 -0.021269\nv 0.221012 -0.340767 -0.009651\nv 0.231500 -0.311552 0.008823\nv 0.203989 -0.371044 -0.002989\nv 0.189849 -0.351619 0.040054\nv 0.182259 -0.387097 0.035919\nv 0.163350 -0.367573 0.125388\nv 0.158270 -0.417836 0.096462\nv 0.145271 -0.434370 0.145578\nv 0.131223 -0.468418 0.180804\nv 0.135262 -0.421420 0.190321\nv 0.154620 -0.382212 0.167475\nv 0.045750 -0.447497 0.288258\nv 0.041626 -0.423162 0.314771\nv 0.095554 -0.421118 0.275043\nv 0.089275 -0.455383 0.248704\nv 0.111237 -0.476900 0.211803\nv 0.111213 -0.429316 0.236335\nv 0.036615 -0.511194 0.244329\nv 0.097348 -0.507492 0.215886\nv 0.063371 -0.510281 0.233964\nv 0.045627 -0.543171 0.228943\nv 0.104905 -0.551127 0.209602\nv 0.084107 -0.575666 0.221605\nv 0.037247 -0.617365 0.244734\nv 0.073936 -0.616470 0.241049\nv 0.069144 -0.630391 0.254172\nv 0.102501 -0.611315 0.227480\nv 0.121729 -0.605281 0.211090\nv 0.124772 -0.622134 0.223969\nv 0.119584 -0.572416 0.201395\nv 0.125795 -0.520351 0.188451\nv 0.153492 -0.601147 0.182803\nv 0.145266 -0.593105 0.177435\nv 0.139796 -0.578750 0.174131\nv 0.143684 -0.522918 0.156759\nv 0.151581 -0.504321 0.134506\nv 0.156441 -0.447329 0.095839\nv 0.163513 -0.554702 0.121392\nv 0.168291 -0.567851 0.126339\nv 0.170353 -0.438901 0.076104\nv 0.208512 -0.464581 0.050475\nv 0.188135 -0.540769 0.087153\nv 0.191142 -0.559649 0.108125\nv 0.180023 -0.508500 0.091228\nv 0.197542 -0.483772 0.068644\nv 0.230050 -0.486871 0.020792\nv 0.218169 -0.519694 0.054637\nv 0.234394 -0.508798 0.030480\nv 0.237353 -0.519127 0.044956\nv 0.188183 -0.418888 0.038698\nv 0.204563 -0.395338 -0.003065\nv 0.235312 -0.423250 -0.034850\nv 0.252001 -0.502303 0.005603\nv 0.302007 -0.378175 -0.133044\nv 0.293708 -0.413011 -0.116171\nv 0.291947 -0.373091 -0.131162\nv 0.302170 -0.430543 -0.110825\nv 0.286878 -0.441897 -0.101623\nv 0.281844 -0.470992 -0.070340\nv 0.271273 -0.476036 -0.060201\nv 0.255664 -0.455417 -0.057176\nv 0.274240 -0.386096 -0.111240\nv 0.268976 -0.367302 -0.105706\nv 0.271647 -0.436989 -0.089502\nv 0.258812 -0.421781 -0.078145\nv 0.255165 -0.385846 -0.089742\nv 0.267162 -0.355185 -0.097690\nv 0.239097 -0.397330 -0.052388\nv 0.239238 -0.368069 -0.049860\nv 0.264676 -0.319553 -0.051847\nv 0.284864 -0.268477 -0.048099\nv 0.285041 -0.324996 -0.101763\nv 0.298297 -0.345101 -0.132635\nv 0.308019 -0.337771 -0.135063\nv 0.339211 -0.211571 -0.131644\nv 0.331563 -0.267743 -0.132858\nv 0.322852 -0.253829 -0.125628\nv 0.330515 -0.222188 -0.123421\nv 0.295272 -0.288491 -0.101901\nv 0.290610 -0.289338 -0.078668\nv 0.305625 -0.250789 -0.063406\nv 0.319020 -0.224294 -0.083004\nv 0.338825 -0.167331 -0.111757\nv 0.343710 -0.163354 -0.126753\nv 0.349807 -0.209629 -0.137994\nv 0.320380 -0.185474 -0.040352\nv 0.352444 -0.174080 -0.141727\nv 0.356545 -0.110812 -0.054345\nv 0.304723 -0.216399 -0.043733\nv 0.323263 -0.196616 -0.071240\nv 0.338934 -0.154452 -0.083831\nv 0.346512 -0.130098 -0.097647\nv 0.340965 -0.131753 -0.124539\nv 0.359574 -0.105783 -0.085243\nv 0.346002 -0.113582 -0.109682\nv 0.347577 -0.119611 -0.150383\nv 0.335298 -0.102539 -0.134843\nv 0.315705 -0.049118 -0.139603\nv 0.317775 -0.030891 -0.159246\nv 0.335478 -0.048115 -0.174700\nv 0.360723 -0.109572 -0.163834\nv 0.353800 -0.057218 -0.175280\nv 0.362857 -0.189146 -0.139214\nv 0.373704 -0.120982 -0.156567\nv 0.380606 -0.162239 -0.138547\nv 0.356926 -0.239597 -0.132229\nv 0.325436 -0.326416 -0.131072\nv 0.312551 -0.403969 -0.118821\nv 0.283033 -0.478593 -0.047690\nv 0.238016 -0.536237 0.086148\nv 0.185570 -0.580517 0.149549\nv 0.156615 -0.613826 0.206434\nv 0.124096 -0.630689 0.242706\nv 0.075703 -0.637362 0.268712\nv 0.026374 -0.636909 0.270280\nv 0.281133 -0.219955 0.043623\nv 0.294840 -0.174508 0.071704\nv 0.300480 -0.132315 0.082456\nv 0.267515 -0.248998 0.040169\nv 0.044291 -0.415363 0.330353\nv 0.088935 -0.406390 0.309568\nv 0.096882 -0.410624 0.286690\nv 0.057848 -0.418678 0.311920\nv 0.098838 -0.401008 0.302904\nv 0.114920 -0.400257 0.287233\nv 0.114844 -0.401386 0.267774\nv 0.130897 -0.383640 0.265711\nv 0.028651 -0.418215 0.328655\nv 0.126110 -0.388195 0.256192\nv 0.135409 -0.397897 0.216433\nv 0.135112 -0.387790 0.246757\nv 0.146061 -0.386210 0.221157\nv 0.158772 -0.376634 0.187553\nv 0.165623 -0.360036 0.155590\nv 0.187197 -0.342182 0.066952\nv 0.178961 -0.355337 0.106195\nv 0.170187 -0.362961 0.123515\nv 0.408300 -0.031658 -0.150713\nv 0.404313 -0.091881 -0.135052\nv 0.411800 -0.091701 -0.115517\nv 0.427307 -0.051609 -0.120935\nv 0.423729 -0.031353 -0.134441\nv 0.359292 -0.031418 -0.173086\nv 0.401004 -0.013972 -0.152083\nv 0.336871 -0.020716 -0.175321\nv 0.323322 -0.020878 -0.168418\nv 0.355088 -0.005302 -0.158621\nv 0.329055 -0.013257 -0.165632\nv 0.345662 -0.004315 -0.150896\nv 0.385307 -0.008292 -0.153854\nv 0.415658 -0.015263 -0.137172\nv 0.415709 -0.013115 -0.124152\nv 0.419190 -0.028288 -0.108680\nv 0.426468 -0.033488 -0.116158\nv 0.407787 -0.011625 -0.117304\nv 0.397354 -0.021524 -0.107035\nv 0.375708 -0.006648 -0.120643\nv 0.359426 -0.017038 -0.117136\nv 0.321776 -0.032357 -0.130152\nv 0.324255 -0.018109 -0.138046\nv 0.314184 -0.033199 -0.137928\nv 0.318640 -0.017171 -0.151130\nv 0.376587 -0.000815 -0.136520\nv 0.401289 -0.004295 -0.133939\nv 0.332401 -0.094746 -0.125585\nv 0.321017 -0.051110 -0.126407\nv 0.425329 -0.055991 -0.107782\nv 0.410031 -0.054267 -0.101829\nv 0.376734 -0.041911 -0.109542\nv 0.354502 -0.069164 -0.112868\nv 0.339316 -0.090639 -0.119231\nv 0.378893 -0.064779 -0.101971\nv 0.360386 -0.088070 -0.101875\nv 0.385696 -0.073596 -0.092398\nv 0.351293 -0.106554 -0.027579\nv 0.366530 -0.105486 -0.038894\nv 0.369598 -0.103372 -0.061166\nv 0.378448 -0.092129 -0.073090\nv 0.361933 -0.095593 -0.014530\nv 0.312335 -0.026849 0.100678\nv 0.306999 -0.075878 0.093534\nv 0.389382 -0.091955 -0.081824\nv 0.400762 -0.091743 -0.090425\nv 0.387709 -0.106414 -0.074963\nv 0.377424 -0.105474 -0.052779\nv 0.374114 -0.108239 -0.035713\nv 0.367958 -0.099693 -0.005730\nv 0.358361 -0.073435 0.017290\nv 0.324839 -0.018487 0.099095\nv 0.317348 -0.020891 0.110436\nv 0.315288 -0.045031 0.106750\nv 0.194284 -0.334225 0.082036\nv 0.211491 -0.320605 0.030530\nv 0.215803 -0.317529 0.045009\nv 0.178712 -0.361162 0.166077\nv 0.160625 -0.383794 0.219143\nv 0.158515 -0.385165 0.233540\nv 0.115958 -0.399383 0.305666\nv 0.074039 -0.407293 0.323880\nv 0.135926 -0.387124 0.275905\nv 0.142316 -0.466101 0.188910\nv 0.144201 -0.461731 0.188480\nv 0.135748 -0.436852 0.196519\nv 0.159503 -0.462090 0.192918\nv 0.154996 -0.471026 0.190418\nv 0.152955 -0.473760 0.196397\nv 0.138599 -0.466544 0.199540\nv 0.131655 -0.445842 0.210157\nv 0.142967 -0.444869 0.218664\nv 0.130550 -0.355646 0.248401\nv 0.140623 -0.343297 0.233823\nv 0.124597 -0.349622 0.240761\nv 0.140153 -0.343893 0.213604\nv 0.151288 -0.348140 0.210482\nv 0.159314 -0.349058 0.215971\nv 0.137575 -0.378119 0.203514\nv 0.138894 -0.362375 0.204674\nv 0.166913 -0.398891 0.235265\nv 0.169132 -0.363034 0.256810\nv 0.121698 -0.383623 0.230032\nv 0.127289 -0.355952 0.245921\nv 0.140721 -0.381085 0.204398\nv 0.129907 -0.402955 0.214717\nv 0.133425 -0.416196 0.212431\nv 0.131233 -0.423552 0.205106\nv 0.178695 -0.357865 0.253926\nv 0.123821 -0.396277 0.228404\nv 0.121363 -0.414608 0.229305\nv 0.151612 -0.470260 0.202937\nv 0.155417 -0.454619 0.214648\nv 0.160332 -0.456222 0.209120\nv 0.142071 -0.470138 0.193180\nv 0.177525 -0.382948 0.212321\nv 0.186108 -0.351611 0.219160\nv 0.176083 -0.393357 0.217085\nv 0.189387 -0.350570 0.223681\nv 0.172157 -0.418719 0.216113\nv 0.121699 -0.423818 0.224885\nv 0.165951 -0.427229 0.225851\nv 0.187047 -0.349149 0.242512\nv 0.166939 -0.358870 0.255473\nv 0.148106 -0.360867 0.252059\nv 0.176619 -0.350319 0.214861\nv 0.174438 -0.345959 0.240244\nv 0.160791 -0.418436 0.232841\nv 0.131855 -0.385229 0.208080\nv 0.129351 -0.401127 0.236660\nv 0.174252 -0.388697 0.211856\nv 0.162613 -0.398314 0.237933\nv 0.127028 -0.342306 0.230143\nv 0.130070 -0.340741 0.226774\nv 0.183823 -0.374564 0.233028\nv 0.131145 -0.364625 0.207801\nv 0.175425 -0.397813 0.219356\nv 0.157218 -0.353143 0.232149\nv 0.168339 -0.349386 0.222701\nv 0.145335 -0.384062 0.246455\nv 0.127017 -0.414418 0.217676\nv 0.158239 -0.385520 0.204013\nv 0.168168 -0.437694 0.209980\nv 0.126862 -0.425628 0.206150\nv 0.135028 -0.411256 0.238776\nv 0.127608 -0.378296 0.208108\nv 0.125055 -0.363528 0.217889\nv 0.145914 -0.353817 0.241713\nv 0.159939 -0.421349 0.209511\nv 0.189064 -0.351116 0.240225\nv 0.138308 -0.403195 0.239324\nv 0.158071 -0.356198 0.245293\nv 0.162914 -0.379076 0.205114\nv 0.128064 -0.395534 0.219219\nv 0.151411 -0.416559 0.210614\nv 0.157469 -0.453178 0.219784\nv 0.155738 -0.457891 0.217907\nv 0.152670 -0.459887 0.223149\nv 0.159058 -0.420632 0.247605\nv 0.147653 -0.452924 0.213831\nv 0.144929 -0.456262 0.216715\nv 0.139821 -0.454166 0.221996\nv 0.136624 -0.440502 0.241019\nv 0.123891 -0.361761 0.280327\nv 0.128617 -0.347250 0.264996\nv 0.135093 -0.349311 0.246013\nv 0.153019 -0.355236 0.249856\nv 0.133875 -0.372290 0.236076\nv 0.150490 -0.394947 0.271908\nv 0.149989 -0.363260 0.293093\nv 0.114443 -0.367447 0.269606\nv 0.136974 -0.385410 0.236346\nv 0.126023 -0.409081 0.234959\nv 0.131291 -0.418360 0.229313\nv 0.116139 -0.414977 0.250729\nv 0.117234 -0.422784 0.240912\nv 0.149186 -0.456237 0.230234\nv 0.130122 -0.346724 0.258970\nv 0.162930 -0.381426 0.254750\nv 0.161922 -0.390080 0.259772\nv 0.114618 -0.355421 0.271054\nv 0.168837 -0.354303 0.273544\nv 0.170671 -0.356189 0.264990\nv 0.125197 -0.419020 0.231197\nv 0.156774 -0.418192 0.242077\nv 0.122027 -0.426007 0.250580\nv 0.144916 -0.423666 0.259453\nv 0.151528 -0.416148 0.261405\nv 0.141934 -0.364575 0.291049\nv 0.137127 -0.398242 0.272416\nv 0.160620 -0.355869 0.254758\nv 0.143897 -0.396209 0.274078\nv 0.129876 -0.387374 0.236843\nv 0.116666 -0.398415 0.253960\nv 0.162216 -0.386784 0.256014\nv 0.120830 -0.347085 0.258456\nv 0.152531 -0.352510 0.279999\nv 0.136457 -0.361594 0.281228\nv 0.129026 -0.364483 0.283967\nv 0.150249 -0.376675 0.241716\nv 0.125308 -0.376858 0.239116\nv 0.163073 -0.355021 0.284914\nv 0.162505 -0.375396 0.275302\nv 0.157068 -0.395712 0.263212\nv 0.115989 -0.373016 0.253935\nv 0.122258 -0.400408 0.244733\nv 0.124401 -0.404061 0.265232\nv 0.144941 -0.415802 0.234371\nv 0.126493 -0.401599 0.267293\nv 0.130425 -0.422114 0.259645\nv 0.145398 -0.447070 0.214156\nv 0.147946 -0.385600 0.239788\nv 0.141621 -0.355714 0.263360\nv 0.150925 -0.355797 0.265507\nv 0.116486 -0.463742 0.270038\nv 0.115614 -0.470783 0.272507\nv 0.127917 -0.458452 0.271059\nv 0.122542 -0.471896 0.272280\nv 0.129043 -0.456663 0.282981\nv 0.139954 -0.405477 0.285792\nv 0.114252 -0.469404 0.277678\nv 0.123886 -0.350942 0.300728\nv 0.125762 -0.350244 0.293392\nv 0.125497 -0.361141 0.289987\nv 0.131806 -0.393586 0.316559\nv 0.134723 -0.372107 0.315162\nv 0.112143 -0.381609 0.313527\nv 0.110222 -0.424001 0.272374\nv 0.135192 -0.356965 0.300051\nv 0.120232 -0.360567 0.311026\nv 0.100844 -0.434818 0.297391\nv 0.121439 -0.471202 0.278859\nv 0.100983 -0.410765 0.297564\nv 0.142203 -0.386469 0.285626\nv 0.141291 -0.372194 0.290180\nv 0.130110 -0.433114 0.274544\nv 0.103941 -0.410553 0.305200\nv 0.135692 -0.412213 0.303322\nv 0.128154 -0.412632 0.310679\nv 0.130372 -0.350484 0.297423\nv 0.129211 -0.363883 0.313573\nv 0.106146 -0.405230 0.281649\nv 0.115789 -0.400906 0.277701\nv 0.134463 -0.402861 0.279891\nv 0.114653 -0.407520 0.312878\nv 0.141530 -0.375290 0.305020\nv 0.116495 -0.429513 0.305382\nv 0.100503 -0.431177 0.279494\nv 0.098236 -0.435464 0.290426\nv 0.132843 -0.372647 0.284873\nv 0.126560 -0.378291 0.320133\nv 0.139664 -0.409675 0.293321\nv -0.144646 -0.462177 0.188383\nv -0.143059 -0.466583 0.189146\nv -0.137633 -0.436339 0.196633\nv -0.160426 -0.462089 0.192919\nv -0.155918 -0.471026 0.190418\nv -0.153878 -0.473760 0.196396\nv -0.139647 -0.466563 0.199672\nv -0.132576 -0.445840 0.210158\nv -0.141548 -0.343297 0.233824\nv -0.125519 -0.349622 0.240760\nv -0.146835 -0.353817 0.241714\nv -0.141076 -0.343893 0.213603\nv -0.152210 -0.348140 0.210482\nv -0.160237 -0.349058 0.215971\nv -0.139818 -0.362374 0.204674\nv -0.167836 -0.398891 0.235265\nv -0.170055 -0.363033 0.256810\nv -0.122589 -0.383989 0.230410\nv -0.141644 -0.381086 0.204398\nv -0.130829 -0.402953 0.214718\nv -0.134347 -0.416196 0.212431\nv -0.132157 -0.423553 0.205104\nv -0.179617 -0.357865 0.253927\nv -0.130253 -0.355213 0.247870\nv -0.122434 -0.412510 0.229554\nv -0.156421 -0.459146 0.211807\nv -0.142994 -0.470138 0.193178\nv -0.178447 -0.382950 0.212320\nv -0.187032 -0.351610 0.219162\nv -0.177006 -0.393358 0.217086\nv -0.190311 -0.350570 0.223682\nv -0.173079 -0.418718 0.216114\nv -0.122620 -0.423816 0.224887\nv -0.166873 -0.427226 0.225854\nv -0.187969 -0.349148 0.242512\nv -0.167862 -0.358870 0.255473\nv -0.149028 -0.360867 0.252059\nv -0.150986 -0.468644 0.204431\nv -0.177543 -0.350318 0.214862\nv -0.175360 -0.345959 0.240244\nv -0.161714 -0.418434 0.232841\nv -0.132778 -0.385228 0.208080\nv -0.138497 -0.378116 0.203514\nv -0.130108 -0.400320 0.236432\nv -0.124740 -0.395847 0.228402\nv -0.175175 -0.388699 0.211857\nv -0.163537 -0.398314 0.237933\nv -0.127950 -0.342306 0.230144\nv -0.130993 -0.340741 0.226773\nv -0.184746 -0.374563 0.233028\nv -0.132067 -0.364620 0.207803\nv -0.142622 -0.434570 0.224563\nv -0.176347 -0.397814 0.219357\nv -0.158140 -0.353143 0.232152\nv -0.169262 -0.349386 0.222700\nv -0.146256 -0.384063 0.246455\nv -0.127939 -0.414419 0.217676\nv -0.159161 -0.385519 0.204013\nv -0.169091 -0.437693 0.209981\nv -0.127983 -0.425314 0.206143\nv -0.135950 -0.411256 0.238776\nv -0.161254 -0.456227 0.209118\nv -0.128532 -0.378299 0.208107\nv -0.125979 -0.363526 0.217888\nv -0.160863 -0.421349 0.209512\nv -0.189986 -0.351116 0.240227\nv -0.139230 -0.403195 0.239324\nv -0.158994 -0.356198 0.245292\nv -0.163838 -0.379079 0.205114\nv -0.128987 -0.395535 0.219221\nv -0.152334 -0.416560 0.210614\nv -0.143924 -0.444739 0.215604\nv -0.157076 -0.456252 0.221943\nv -0.160004 -0.420739 0.247520\nv -0.148118 -0.452915 0.213659\nv -0.141289 -0.454460 0.222833\nv -0.124813 -0.361761 0.280327\nv -0.129540 -0.347250 0.264996\nv -0.136015 -0.349311 0.246013\nv -0.153943 -0.355236 0.249856\nv -0.134798 -0.372291 0.236075\nv -0.151411 -0.394947 0.271910\nv -0.150912 -0.363259 0.293094\nv -0.115367 -0.367439 0.269610\nv -0.137895 -0.385409 0.236346\nv -0.126945 -0.409079 0.234959\nv -0.132213 -0.418360 0.229313\nv -0.117062 -0.414977 0.250730\nv -0.118156 -0.422784 0.240913\nv -0.150109 -0.456237 0.230234\nv -0.144547 -0.455850 0.216965\nv -0.131044 -0.346723 0.258972\nv -0.163235 -0.387654 0.256868\nv -0.171934 -0.354935 0.267971\nv -0.115540 -0.355420 0.271052\nv -0.170844 -0.356061 0.263821\nv -0.157699 -0.418190 0.242080\nv -0.145838 -0.423666 0.259453\nv -0.152451 -0.416145 0.261407\nv -0.163996 -0.355021 0.284914\nv -0.142856 -0.364576 0.291049\nv -0.138049 -0.398242 0.272416\nv -0.161543 -0.355869 0.254758\nv -0.144820 -0.396209 0.274078\nv -0.130799 -0.387374 0.236843\nv -0.117589 -0.398415 0.253960\nv -0.159649 -0.386282 0.250784\nv -0.121754 -0.347085 0.258456\nv -0.153452 -0.352510 0.279999\nv -0.137380 -0.361594 0.281228\nv -0.129948 -0.364483 0.283966\nv -0.151168 -0.376678 0.241714\nv -0.128901 -0.372856 0.238474\nv -0.163805 -0.381346 0.270456\nv -0.161321 -0.392677 0.260429\nv -0.121481 -0.379587 0.245010\nv -0.123372 -0.400027 0.244613\nv -0.152171 -0.459946 0.222323\nv -0.125323 -0.404062 0.265232\nv -0.122950 -0.426009 0.250577\nv -0.137552 -0.440509 0.241013\nv -0.126120 -0.419019 0.231197\nv -0.145864 -0.415802 0.234371\nv -0.127415 -0.401600 0.267293\nv -0.131349 -0.422113 0.259647\nv -0.157935 -0.450209 0.220169\nv -0.156317 -0.457848 0.217559\nv -0.148868 -0.385601 0.239788\nv -0.142543 -0.355713 0.263359\nv -0.151850 -0.355797 0.265505\nv -0.116801 -0.368051 0.256121\nv -0.117409 -0.463741 0.270038\nv -0.116536 -0.470782 0.272506\nv -0.128840 -0.458453 0.271059\nv -0.123465 -0.471895 0.272280\nv -0.129963 -0.456670 0.282980\nv -0.140877 -0.405477 0.285792\nv -0.115175 -0.469403 0.277679\nv -0.125188 -0.350433 0.300424\nv -0.126685 -0.350244 0.293392\nv -0.126420 -0.361141 0.289987\nv -0.132728 -0.393585 0.316559\nv -0.135646 -0.372109 0.315163\nv -0.113065 -0.381610 0.313527\nv -0.111145 -0.423997 0.272374\nv -0.134127 -0.353528 0.298268\nv -0.121155 -0.360567 0.311027\nv -0.101766 -0.434819 0.297390\nv -0.122363 -0.471201 0.278860\nv -0.101905 -0.410767 0.297564\nv -0.143126 -0.386468 0.285626\nv -0.142213 -0.372196 0.290178\nv -0.131032 -0.433115 0.274543\nv -0.104864 -0.410553 0.305200\nv -0.129076 -0.412629 0.310680\nv -0.136615 -0.412214 0.303321\nv -0.130136 -0.363884 0.313574\nv -0.107069 -0.405231 0.281650\nv -0.116713 -0.400905 0.277702\nv -0.135386 -0.402861 0.279891\nv -0.115573 -0.407524 0.312876\nv -0.142453 -0.375287 0.305019\nv -0.117416 -0.429515 0.305381\nv -0.101425 -0.431177 0.279495\nv -0.099159 -0.435464 0.290427\nv -0.133767 -0.372647 0.284873\nv -0.127482 -0.378290 0.320133\nv -0.140587 -0.409678 0.293322\nv 0.210551 -0.337756 0.070749\nv 0.210535 -0.353320 0.067505\nv 0.207458 -0.349950 0.075980\nv 0.212743 -0.326498 0.071238\nv 0.206312 -0.347582 0.083072\nv 0.203301 -0.354524 0.095277\nv 0.206022 -0.343014 0.105965\nv 0.247450 -0.352936 0.079688\nv 0.246170 -0.355465 0.091813\nv 0.240645 -0.367200 0.105226\nv 0.196067 -0.299041 0.111244\nv 0.204478 -0.296673 0.108218\nv 0.195951 -0.296977 0.102948\nv 0.204343 -0.301908 0.116990\nv 0.199301 -0.299365 0.092522\nv 0.211433 -0.305912 0.119160\nv 0.201048 -0.295395 0.084103\nv 0.206510 -0.293566 0.073885\nv 0.213192 -0.294467 0.071125\nv 0.215269 -0.292194 0.077700\nv 0.225439 -0.298665 0.073581\nv 0.209204 -0.306221 0.070849\nv 0.245245 -0.366301 0.072334\nv 0.237999 -0.357406 0.073439\nv 0.207777 -0.350972 0.085587\nv 0.196200 -0.309785 0.112097\nv 0.202268 -0.330512 0.104351\nv 0.253484 -0.316485 0.089530\nv 0.249878 -0.335312 0.083176\nv 0.239213 -0.344778 0.114873\nv 0.240176 -0.314612 0.121899\nv 0.215858 -0.341727 0.068938\nv 0.227689 -0.368483 0.111911\nv 0.236123 -0.296582 0.119718\nv 0.225594 -0.299715 0.122920\nv 0.242810 -0.292624 0.081480\nv 0.244867 -0.291923 0.092007\nv 0.238577 -0.296253 0.104566\nv 0.231970 -0.302144 0.125075\nv 0.251136 -0.300351 0.084422\nv 0.241168 -0.302048 0.120562\nv 0.233096 -0.296283 0.102993\nv 0.195201 -0.310551 0.101945\nv 0.220644 -0.301140 0.070312\nv 0.245598 -0.300615 0.105555\nv 0.242442 -0.377943 0.099787\nv 0.220386 -0.367697 0.090366\nv 0.212220 -0.374995 0.105256\nv 0.216165 -0.371631 0.069613\nv 0.229182 -0.369407 0.092230\nv 0.216635 -0.358938 0.086800\nv 0.233613 -0.389004 0.092712\nv 0.240240 -0.379355 0.104125\nv 0.245048 -0.368085 0.083275\nv 0.242966 -0.381469 0.071390\nv 0.211959 -0.374976 0.100335\nv 0.219195 -0.380078 0.095433\nv 0.235538 -0.369351 0.084303\nv 0.228103 -0.296221 0.114796\nv 0.206217 -0.299789 0.094465\nv 0.223583 -0.390995 0.090269\nv 0.230971 -0.383562 0.066203\nv 0.230319 -0.374807 0.081850\nv 0.245091 -0.374693 0.084891\nv 0.208156 -0.331966 0.109782\nv 0.240119 -0.361316 0.093380\nv 0.230204 -0.365108 0.090026\nv 0.236202 -0.371398 0.109881\nv 0.225565 -0.371488 0.063740\nv 0.218518 -0.364755 0.063928\nv 0.216666 -0.387152 0.093116\nv 0.235016 -0.291633 0.090095\nv 0.226234 -0.309089 0.124285\nv 0.239151 -0.366806 0.097203\nv 0.249322 -0.367702 0.076609\nv 0.233626 -0.377712 0.107052\nv 0.242763 -0.332316 0.077598\nv 0.199241 -0.302637 0.116488\nv 0.204143 -0.309580 0.117690\nv 0.236404 -0.387132 0.097718\nv 0.250460 -0.336685 0.091418\nv 0.208498 -0.358619 0.089055\nv 0.222621 -0.296877 0.083263\nv 0.204972 -0.359467 0.103141\nv 0.216589 -0.303576 0.096522\nv 0.207356 -0.325400 0.077278\nv 0.203425 -0.311981 0.077376\nv 0.239327 -0.376782 0.097416\nv 0.231418 -0.347142 0.115975\nv 0.218995 -0.363685 0.082477\nv 0.218679 -0.326468 0.070927\nv 0.216867 -0.373125 0.096081\nv 0.241051 -0.298171 0.077113\nv 0.233571 -0.380407 0.065722\nv 0.222734 -0.388213 0.089975\nv 0.247804 -0.376229 0.082125\nv 0.250914 -0.373778 0.080697\nv 0.251598 -0.303073 0.096244\nv 0.201775 -0.329363 0.095727\nv 0.246627 -0.312606 0.113172\nv 0.219906 -0.371863 0.076318\nv 0.214811 -0.302084 0.109522\nv 0.212213 -0.291683 0.082389\nv 0.210520 -0.363172 0.106130\nv 0.214862 -0.383194 0.100197\nv 0.245622 -0.373904 0.074851\nv 0.244341 -0.341679 0.109912\nv 0.218648 -0.372289 0.065212\nv 0.169347 -0.360419 0.112662\nv 0.171133 -0.365964 0.109893\nv 0.164004 -0.366548 0.135596\nv 0.165964 -0.375457 0.143143\nv 0.214195 -0.367253 0.112356\nv 0.215285 -0.371381 0.121481\nv 0.211520 -0.366503 0.140950\nv 0.212088 -0.379863 0.135428\nv 0.207150 -0.366606 0.147903\nv 0.175184 -0.374946 0.146527\nv 0.160293 -0.325427 0.154929\nv 0.152052 -0.324930 0.150109\nv 0.163268 -0.322259 0.148309\nv 0.151008 -0.322717 0.141772\nv 0.158796 -0.323052 0.133406\nv 0.175966 -0.330921 0.155738\nv 0.157006 -0.316731 0.123502\nv 0.161650 -0.315740 0.110429\nv 0.167377 -0.315439 0.108287\nv 0.182117 -0.318577 0.112024\nv 0.167811 -0.327997 0.106071\nv 0.168057 -0.373405 0.115941\nv 0.168001 -0.371971 0.125255\nv 0.219148 -0.378600 0.112555\nv 0.213704 -0.377723 0.107991\nv 0.208839 -0.363895 0.108182\nv 0.193396 -0.367388 0.110277\nv 0.164209 -0.390134 0.135831\nv 0.206526 -0.388793 0.141014\nv 0.168243 -0.347356 0.107404\nv 0.160972 -0.333416 0.109008\nv 0.153423 -0.343994 0.142620\nv 0.164099 -0.360158 0.144962\nv 0.215660 -0.342058 0.115642\nv 0.209049 -0.352997 0.155010\nv 0.212675 -0.352912 0.151029\nv 0.186277 -0.367967 0.108980\nv 0.174373 -0.361593 0.110048\nv 0.198263 -0.378225 0.147131\nv 0.203638 -0.320800 0.154608\nv 0.196593 -0.324181 0.161144\nv 0.200372 -0.314073 0.113277\nv 0.209131 -0.312943 0.120912\nv 0.199776 -0.312020 0.127874\nv 0.197984 -0.318700 0.140041\nv 0.205334 -0.327888 0.161065\nv 0.159192 -0.314596 0.115563\nv 0.154768 -0.335694 0.154043\nv 0.212355 -0.317219 0.117125\nv 0.212585 -0.357801 0.112540\nv 0.174434 -0.345914 0.105576\nv 0.209332 -0.321227 0.140604\nv 0.206371 -0.395092 0.141257\nv 0.168850 -0.376376 0.126085\nv 0.209138 -0.388015 0.114227\nv 0.213226 -0.375094 0.126928\nv 0.173597 -0.389303 0.100695\nv 0.175645 -0.400346 0.140011\nv 0.212018 -0.335607 0.151567\nv 0.192760 -0.408195 0.120731\nv 0.187529 -0.392280 0.123269\nv 0.176763 -0.399880 0.098126\nv 0.174537 -0.382248 0.109187\nv 0.197862 -0.411399 0.129561\nv 0.205112 -0.396056 0.105538\nv 0.197289 -0.408581 0.096278\nv 0.169207 -0.399669 0.123948\nv 0.155706 -0.334956 0.116341\nv 0.194644 -0.376473 0.124270\nv 0.192911 -0.395037 0.106629\nv 0.193491 -0.321171 0.152786\nv 0.206858 -0.376157 0.125436\nv 0.211680 -0.315612 0.129638\nv 0.191901 -0.409420 0.133154\nv 0.188621 -0.384315 0.111465\nv 0.208911 -0.324775 0.112398\nv 0.170242 -0.360417 0.147878\nv 0.197771 -0.394870 0.132918\nv 0.192603 -0.390155 0.095546\nv 0.198748 -0.407597 0.093995\nv 0.194976 -0.384945 0.148778\nv 0.204093 -0.400712 0.150821\nv 0.194208 -0.351995 0.106830\nv 0.185253 -0.380923 0.095143\nv 0.170804 -0.379202 0.101805\nv 0.178014 -0.415344 0.120553\nv 0.178297 -0.414361 0.125605\nv 0.183628 -0.418157 0.119649\nv 0.200153 -0.364054 0.151190\nv 0.204791 -0.388019 0.133094\nv 0.194520 -0.395425 0.155278\nv 0.182107 -0.390056 0.150932\nv 0.158861 -0.330616 0.158087\nv 0.195469 -0.379204 0.104746\nv 0.176699 -0.337331 0.160414\nv 0.194575 -0.417279 0.122425\nv 0.192207 -0.417089 0.119712\nv 0.161609 -0.357883 0.138726\nv 0.184256 -0.375850 0.124077\nv 0.164102 -0.349174 0.113530\nv 0.206741 -0.352129 0.109122\nv 0.196959 -0.333322 0.163610\nv 0.192167 -0.339250 0.161524\nv 0.215167 -0.361017 0.119744\nv 0.182951 -0.404491 0.098313\nv 0.184293 -0.407646 0.092861\nv 0.194544 -0.382166 0.128200\nv 0.181049 -0.389131 0.121838\nv 0.169218 -0.313476 0.119974\nv 0.188841 -0.376285 0.125543\nv 0.171310 -0.391753 0.146780\nv 0.183858 -0.403953 0.091813\nv 0.180441 -0.413285 0.118620\nv 0.203629 -0.403096 0.099253\nv 0.215178 -0.320792 0.126140\nv 0.179456 -0.320134 0.123705\nv 0.176976 -0.328040 0.147731\nv 0.155120 -0.319292 0.119218\nv 0.152881 -0.324604 0.132318\nv 0.185659 -0.321847 0.107325\nv 0.217545 -0.344984 0.124800\nv 0.204385 -0.397809 0.095868\nv 0.209763 -0.387001 0.103392\nv 0.197160 -0.399511 0.154620\nv 0.176539 -0.327846 0.135143\nv 0.209213 -0.324756 0.153469\nv 0.164824 -0.380705 0.128867\nv 0.171082 -0.407877 0.127515\nv 0.205060 -0.404193 0.140117\nv 0.199912 -0.408533 0.124116\nv 0.177748 -0.397600 0.093384\nv 0.156147 -0.380820 0.163295\nv 0.154089 -0.392687 0.156582\nv 0.149547 -0.394005 0.164484\nv 0.163157 -0.371041 0.158758\nv 0.146531 -0.394997 0.178577\nv 0.140605 -0.395700 0.188634\nv 0.144589 -0.381217 0.201070\nv 0.139479 -0.400457 0.190903\nv 0.143590 -0.389855 0.200529\nv 0.197920 -0.385752 0.167149\nv 0.200669 -0.390988 0.171801\nv 0.200075 -0.395401 0.178885\nv 0.193258 -0.399566 0.194247\nv 0.185053 -0.400802 0.199714\nv 0.153760 -0.394542 0.202619\nv 0.135178 -0.333071 0.199345\nv 0.137738 -0.331532 0.190739\nv 0.139469 -0.338052 0.204675\nv 0.156013 -0.343323 0.202566\nv 0.157237 -0.340390 0.199168\nv 0.142399 -0.335176 0.180785\nv 0.152134 -0.324335 0.164676\nv 0.159321 -0.325463 0.156263\nv 0.176165 -0.334294 0.152744\nv 0.175219 -0.332641 0.158838\nv 0.151116 -0.330715 0.158598\nv 0.202178 -0.398673 0.162053\nv 0.192747 -0.385598 0.165733\nv 0.180909 -0.382375 0.164323\nv 0.144690 -0.400318 0.180652\nv 0.141079 -0.408564 0.184157\nv 0.191813 -0.407918 0.194374\nv 0.157562 -0.372924 0.162077\nv 0.154571 -0.354913 0.157215\nv 0.201147 -0.366647 0.154984\nv 0.185253 -0.386652 0.190518\nv 0.185275 -0.372758 0.193614\nv 0.139578 -0.367390 0.197365\nv 0.166811 -0.380128 0.160842\nv 0.168442 -0.401211 0.203381\nv 0.188736 -0.335017 0.198023\nv 0.181543 -0.334010 0.202604\nv 0.173232 -0.335084 0.204153\nv 0.192793 -0.327620 0.157158\nv 0.200112 -0.328336 0.161299\nv 0.195017 -0.327522 0.172677\nv 0.193903 -0.335902 0.184420\nv 0.171948 -0.392738 0.151477\nv 0.163533 -0.394653 0.150990\nv 0.176714 -0.340278 0.205594\nv 0.186657 -0.341561 0.202326\nv 0.167190 -0.359009 0.152493\nv 0.134204 -0.338585 0.200820\nv 0.205617 -0.343849 0.158552\nv 0.198158 -0.374473 0.158271\nv 0.134844 -0.360813 0.192485\nv 0.162020 -0.336320 0.152136\nv 0.174767 -0.339722 0.150779\nv 0.196523 -0.357578 0.189548\nv 0.153296 -0.403829 0.177600\nv 0.180038 -0.446364 0.168480\nv 0.165358 -0.425768 0.144877\nv 0.199682 -0.415056 0.151266\nv 0.160871 -0.398089 0.173674\nv 0.146514 -0.404776 0.194943\nv 0.164261 -0.394485 0.178683\nv 0.176585 -0.437663 0.137967\nv 0.145187 -0.355957 0.168329\nv 0.143336 -0.412219 0.187767\nv 0.194209 -0.370723 0.154576\nv 0.197692 -0.362967 0.152115\nv 0.151701 -0.369844 0.197627\nv 0.190780 -0.385643 0.182798\nv 0.146851 -0.332033 0.196227\nv 0.147774 -0.335841 0.180855\nv 0.142760 -0.380864 0.199183\nv 0.164686 -0.342855 0.180675\nv 0.156282 -0.433854 0.169856\nv 0.197012 -0.332422 0.154550\nv 0.138478 -0.354392 0.197514\nv 0.175470 -0.436001 0.141290\nv 0.172277 -0.420337 0.139486\nv 0.179577 -0.442274 0.165894\nv 0.154143 -0.347794 0.202484\nv 0.189388 -0.325975 0.170104\nv 0.180249 -0.426034 0.185278\nv 0.165398 -0.446412 0.165151\nv 0.162324 -0.445637 0.170283\nv 0.194081 -0.404728 0.190647\nv 0.168613 -0.367447 0.195575\nv 0.139447 -0.338123 0.179964\nv 0.196788 -0.400974 0.169640\nv 0.162168 -0.325804 0.166765\nv 0.161213 -0.328729 0.153508\nv 0.152367 -0.373614 0.169314\nv 0.147865 -0.378540 0.180379\nv 0.186293 -0.409117 0.197612\nv 0.187909 -0.399834 0.173637\nv 0.186035 -0.432219 0.171609\nv 0.165921 -0.422577 0.142242\nv 0.160528 -0.339575 0.193848\nv 0.179705 -0.332104 0.196866\nv 0.193968 -0.428068 0.138304\nv 0.182563 -0.397646 0.181066\nv 0.195585 -0.398065 0.185539\nv 0.189405 -0.437355 0.139502\nv 0.151038 -0.397754 0.170924\nv 0.175388 -0.444826 0.172296\nv 0.133285 -0.334908 0.194837\nv 0.176771 -0.434554 0.136734\nv 0.176693 -0.385742 0.194938\nv 0.181059 -0.405601 0.179687\nv 0.161832 -0.431719 0.167504\nv 0.204795 -0.351090 0.170336\nv 0.182590 -0.334113 0.183641\nv 0.175980 -0.449389 0.167161\nv 0.190864 -0.398352 0.152320\nv 0.186596 -0.438097 0.137395\nv 0.194321 -0.344419 0.194699\nv 0.168156 -0.449193 0.165866\nv 0.203142 -0.367271 0.159307\nv 0.177065 -0.412446 0.196117\nv 0.201737 -0.331597 0.170488\nv 0.195667 -0.419619 0.141079\nv 0.171762 -0.334700 0.169086\nv 0.197346 -0.378752 0.166511\nv 0.145130 -0.329166 0.170264\nv 0.145865 -0.386679 0.184029\nv 0.200547 -0.399958 0.155912\nv -0.211458 -0.353320 0.067505\nv -0.210599 -0.325611 0.074102\nv -0.208381 -0.349949 0.075981\nv -0.213878 -0.326392 0.071159\nv -0.207235 -0.347584 0.083070\nv -0.206945 -0.343014 0.105965\nv -0.248372 -0.352938 0.079688\nv -0.247091 -0.355467 0.091817\nv -0.242134 -0.365563 0.104588\nv -0.240136 -0.344777 0.114874\nv -0.196991 -0.299040 0.111243\nv -0.205401 -0.296673 0.108218\nv -0.196874 -0.296976 0.102951\nv -0.205266 -0.301909 0.116991\nv -0.200252 -0.299371 0.092434\nv -0.212356 -0.305913 0.119161\nv -0.205892 -0.292044 0.079153\nv -0.213347 -0.293625 0.071593\nv -0.226763 -0.299027 0.073016\nv -0.206843 -0.295803 0.073727\nv -0.210084 -0.305931 0.070707\nv -0.246177 -0.366223 0.072436\nv -0.240172 -0.351609 0.074732\nv -0.208495 -0.350705 0.085533\nv -0.205153 -0.355145 0.092330\nv -0.197128 -0.309747 0.112126\nv -0.203581 -0.331014 0.104544\nv -0.254407 -0.316484 0.089528\nv -0.250738 -0.303028 0.081953\nv -0.250507 -0.335394 0.082472\nv -0.241100 -0.314610 0.121900\nv -0.214702 -0.340404 0.068678\nv -0.228613 -0.368484 0.111911\nv -0.237046 -0.296582 0.119719\nv -0.226515 -0.299715 0.122920\nv -0.241830 -0.293162 0.079734\nv -0.245790 -0.291923 0.092007\nv -0.239499 -0.296254 0.104567\nv -0.232892 -0.302144 0.125075\nv -0.245679 -0.293712 0.082143\nv -0.242091 -0.302048 0.120563\nv -0.234020 -0.296284 0.102993\nv -0.196123 -0.310546 0.101947\nv -0.223784 -0.301250 0.070620\nv -0.246521 -0.300615 0.105556\nv -0.213144 -0.374997 0.105255\nv -0.217086 -0.371629 0.069616\nv -0.230103 -0.369405 0.092228\nv -0.217557 -0.358937 0.086800\nv -0.242367 -0.379453 0.103050\nv -0.205066 -0.309579 0.117690\nv -0.251382 -0.336686 0.091420\nv -0.245969 -0.368086 0.083275\nv -0.243890 -0.381469 0.071391\nv -0.212883 -0.374979 0.100334\nv -0.220118 -0.380078 0.095433\nv -0.205934 -0.327328 0.083959\nv -0.236463 -0.369351 0.084303\nv -0.229026 -0.296221 0.114795\nv -0.207140 -0.299789 0.094465\nv -0.202371 -0.296706 0.081520\nv -0.231240 -0.374807 0.081849\nv -0.246016 -0.374694 0.084891\nv -0.209079 -0.331964 0.109783\nv -0.241043 -0.361315 0.093381\nv -0.231127 -0.365108 0.090027\nv -0.237125 -0.371397 0.109881\nv -0.226489 -0.371490 0.063741\nv -0.219441 -0.364756 0.063928\nv -0.223656 -0.388214 0.089975\nv -0.217588 -0.387152 0.093117\nv -0.224504 -0.390995 0.090269\nv -0.235940 -0.291633 0.090096\nv -0.227158 -0.309089 0.124285\nv -0.240075 -0.366806 0.097204\nv -0.250245 -0.367702 0.076611\nv -0.234550 -0.377712 0.107052\nv -0.242071 -0.330999 0.077099\nv -0.200163 -0.302638 0.116488\nv -0.236416 -0.388190 0.096254\nv -0.233547 -0.389193 0.092180\nv -0.247552 -0.312612 0.113166\nv -0.252975 -0.300485 0.091915\nv -0.216258 -0.365235 0.089688\nv -0.223544 -0.296877 0.083263\nv -0.205895 -0.359467 0.103141\nv -0.219865 -0.326726 0.070979\nv -0.204347 -0.311984 0.077379\nv -0.231894 -0.383562 0.066203\nv -0.238682 -0.374156 0.096176\nv -0.242381 -0.377647 0.097997\nv -0.232342 -0.347142 0.115975\nv -0.219922 -0.363684 0.082481\nv -0.217789 -0.373124 0.096081\nv -0.214056 -0.291584 0.081953\nv -0.234494 -0.380409 0.065722\nv -0.248727 -0.376229 0.082125\nv -0.251837 -0.373777 0.080698\nv -0.202445 -0.329115 0.097330\nv -0.220827 -0.371862 0.076318\nv -0.215734 -0.302084 0.109522\nv -0.211442 -0.363171 0.106130\nv -0.215786 -0.383194 0.100197\nv -0.246545 -0.373905 0.074852\nv -0.245264 -0.341679 0.109911\nv -0.217512 -0.303576 0.096522\nv -0.219570 -0.372289 0.065213\nv -0.170271 -0.360419 0.112661\nv -0.172055 -0.365964 0.109893\nv -0.164926 -0.366549 0.135599\nv -0.166889 -0.375456 0.143145\nv -0.215117 -0.367252 0.112355\nv -0.216209 -0.371383 0.121481\nv -0.213010 -0.379864 0.135428\nv -0.213190 -0.366090 0.137583\nv -0.207975 -0.366690 0.147922\nv -0.176108 -0.374947 0.146527\nv -0.161216 -0.325427 0.154929\nv -0.152975 -0.324931 0.150110\nv -0.164191 -0.322259 0.148310\nv -0.151931 -0.322717 0.141773\nv -0.159719 -0.323052 0.133406\nv -0.176889 -0.330922 0.155739\nv -0.157930 -0.316729 0.123500\nv -0.162572 -0.315740 0.110430\nv -0.168302 -0.315439 0.108287\nv -0.183066 -0.318608 0.111804\nv -0.164187 -0.332736 0.107170\nv -0.168980 -0.373406 0.115944\nv -0.168924 -0.371971 0.125255\nv -0.220071 -0.378600 0.112556\nv -0.214625 -0.377723 0.107990\nv -0.209761 -0.363889 0.108183\nv -0.194318 -0.367388 0.110277\nv -0.165132 -0.390133 0.135832\nv -0.207449 -0.388794 0.141014\nv -0.170110 -0.347005 0.106667\nv -0.165021 -0.360158 0.144962\nv -0.216583 -0.342062 0.115642\nv -0.208970 -0.355055 0.154915\nv -0.206827 -0.337252 0.160519\nv -0.187193 -0.367963 0.108980\nv -0.175297 -0.361593 0.110048\nv -0.199186 -0.378225 0.147132\nv -0.204559 -0.320800 0.154607\nv -0.197516 -0.324181 0.161144\nv -0.201295 -0.314073 0.113277\nv -0.210054 -0.312943 0.120914\nv -0.200698 -0.312020 0.127874\nv -0.198905 -0.318701 0.140041\nv -0.206256 -0.327886 0.161065\nv -0.160115 -0.314596 0.115563\nv -0.153804 -0.324604 0.132318\nv -0.155691 -0.335696 0.154043\nv -0.213278 -0.317218 0.117126\nv -0.213507 -0.357800 0.112539\nv -0.154347 -0.343997 0.142619\nv -0.176468 -0.328674 0.106114\nv -0.210253 -0.321226 0.140604\nv -0.207294 -0.395092 0.141257\nv -0.169770 -0.376374 0.126086\nv -0.210058 -0.388015 0.114228\nv -0.214149 -0.375094 0.126929\nv -0.174520 -0.389301 0.100698\nv -0.176572 -0.400346 0.140014\nv -0.212941 -0.335611 0.151568\nv -0.193682 -0.408196 0.120730\nv -0.188452 -0.392282 0.123269\nv -0.175460 -0.382247 0.109188\nv -0.177685 -0.399880 0.098125\nv -0.198786 -0.411400 0.129558\nv -0.206083 -0.396231 0.105164\nv -0.170132 -0.399672 0.123948\nv -0.156628 -0.334956 0.116345\nv -0.195568 -0.376473 0.124270\nv -0.193978 -0.395379 0.106537\nv -0.194412 -0.321171 0.152786\nv -0.207783 -0.376157 0.125436\nv -0.212603 -0.315613 0.129639\nv -0.192825 -0.409420 0.133153\nv -0.189545 -0.384316 0.111464\nv -0.209835 -0.324774 0.112399\nv -0.210689 -0.386997 0.103395\nv -0.171165 -0.360418 0.147878\nv -0.198694 -0.394870 0.132918\nv -0.193526 -0.390156 0.095545\nv -0.199671 -0.407597 0.093995\nv -0.211879 -0.366375 0.143247\nv -0.195899 -0.384946 0.148779\nv -0.205016 -0.400712 0.150821\nv -0.195130 -0.351996 0.106831\nv -0.186176 -0.380924 0.095143\nv -0.171728 -0.379202 0.101804\nv -0.181363 -0.413284 0.118620\nv -0.178938 -0.415345 0.120552\nv -0.179220 -0.414360 0.125606\nv -0.184551 -0.418157 0.119649\nv -0.201074 -0.364053 0.151191\nv -0.205714 -0.388019 0.133094\nv -0.193128 -0.334938 0.163156\nv -0.183032 -0.390056 0.150932\nv -0.159784 -0.330616 0.158087\nv -0.196392 -0.379205 0.104746\nv -0.177623 -0.337332 0.160414\nv -0.195497 -0.417280 0.122424\nv -0.193129 -0.417089 0.119712\nv -0.162531 -0.357883 0.138727\nv -0.216100 -0.320792 0.126140\nv -0.185178 -0.375850 0.124077\nv -0.165025 -0.349174 0.113529\nv -0.207664 -0.352131 0.109122\nv -0.216090 -0.361017 0.119744\nv -0.204550 -0.403336 0.098395\nv -0.183873 -0.404491 0.098313\nv -0.185216 -0.407646 0.092861\nv -0.195467 -0.382164 0.128200\nv -0.181973 -0.389135 0.121838\nv -0.170140 -0.313476 0.119974\nv -0.189763 -0.376285 0.125543\nv -0.172004 -0.407877 0.127516\nv -0.172232 -0.391752 0.146781\nv -0.184781 -0.403953 0.091813\nv -0.180379 -0.320134 0.123706\nv -0.177899 -0.328040 0.147731\nv -0.156042 -0.319291 0.119224\nv -0.213724 -0.352747 0.150878\nv -0.218468 -0.344991 0.124801\nv -0.195443 -0.395425 0.155278\nv -0.199083 -0.408378 0.096365\nv -0.205307 -0.397811 0.095867\nv -0.198082 -0.399511 0.154619\nv -0.187571 -0.321786 0.107565\nv -0.177462 -0.327846 0.135142\nv -0.210137 -0.324757 0.153469\nv -0.165747 -0.380709 0.128865\nv -0.205984 -0.404193 0.140117\nv -0.200835 -0.408534 0.124115\nv -0.178671 -0.397599 0.093385\nv -0.154211 -0.394830 0.163295\nv -0.152151 -0.406699 0.156582\nv -0.147610 -0.408016 0.164485\nv -0.144594 -0.409008 0.178577\nv -0.138667 -0.409711 0.188636\nv -0.137542 -0.414468 0.190902\nv -0.140734 -0.410203 0.197267\nv -0.195982 -0.399760 0.167146\nv -0.199221 -0.405069 0.173033\nv -0.191322 -0.413576 0.194247\nv -0.183113 -0.414812 0.199715\nv -0.149453 -0.407045 0.202370\nv -0.133241 -0.347082 0.199345\nv -0.135801 -0.345545 0.190738\nv -0.137490 -0.351915 0.204797\nv -0.145838 -0.349852 0.180855\nv -0.154077 -0.357334 0.202567\nv -0.155300 -0.354401 0.199167\nv -0.140460 -0.349188 0.180786\nv -0.150198 -0.338346 0.164675\nv -0.157383 -0.339474 0.156263\nv -0.174229 -0.348306 0.152744\nv -0.173281 -0.346652 0.158839\nv -0.149179 -0.344725 0.158598\nv -0.149101 -0.411764 0.170926\nv -0.197107 -0.411294 0.178850\nv -0.200493 -0.411990 0.163977\nv -0.190809 -0.399609 0.165733\nv -0.178971 -0.396385 0.164323\nv -0.142754 -0.414335 0.180652\nv -0.139141 -0.422574 0.184160\nv -0.189875 -0.421930 0.194375\nv -0.158764 -0.386001 0.159929\nv -0.152635 -0.368925 0.157214\nv -0.133496 -0.365023 0.196309\nv -0.199759 -0.379474 0.155136\nv -0.183317 -0.400663 0.190518\nv -0.183337 -0.386771 0.193614\nv -0.137641 -0.381400 0.197365\nv -0.164876 -0.394139 0.160842\nv -0.166504 -0.415222 0.203381\nv -0.177768 -0.346116 0.196869\nv -0.186799 -0.349027 0.198022\nv -0.179607 -0.348021 0.202604\nv -0.171296 -0.349094 0.204153\nv -0.190856 -0.341632 0.157158\nv -0.198446 -0.341995 0.163557\nv -0.193716 -0.341882 0.173013\nv -0.191965 -0.349913 0.184421\nv -0.170015 -0.406750 0.151477\nv -0.161598 -0.408663 0.150990\nv -0.174775 -0.354289 0.205594\nv -0.184721 -0.355572 0.202326\nv -0.165251 -0.373019 0.152493\nv -0.134199 -0.351656 0.203232\nv -0.203294 -0.359209 0.157659\nv -0.196375 -0.388854 0.159096\nv -0.134254 -0.374080 0.187712\nv -0.160083 -0.350332 0.152137\nv -0.172828 -0.353731 0.150779\nv -0.151359 -0.417840 0.177601\nv -0.163420 -0.439775 0.144880\nv -0.197745 -0.429064 0.151271\nv -0.162323 -0.408497 0.178683\nv -0.174647 -0.451674 0.137968\nv -0.143972 -0.367451 0.166935\nv -0.178103 -0.460375 0.168481\nv -0.141401 -0.426237 0.187763\nv -0.193129 -0.377825 0.152213\nv -0.152202 -0.361805 0.202484\nv -0.149763 -0.383855 0.197627\nv -0.144915 -0.346044 0.196228\nv -0.193794 -0.412054 0.185460\nv -0.162750 -0.356867 0.180675\nv -0.154347 -0.447868 0.169856\nv -0.196243 -0.346453 0.154821\nv -0.197028 -0.362096 0.152705\nv -0.140492 -0.370985 0.197228\nv -0.173535 -0.450014 0.141289\nv -0.170341 -0.434347 0.139487\nv -0.177640 -0.456283 0.165895\nv -0.187453 -0.339985 0.170104\nv -0.158949 -0.412102 0.173674\nv -0.178315 -0.440043 0.185280\nv -0.163461 -0.460425 0.165151\nv -0.159475 -0.458650 0.169515\nv -0.192145 -0.418740 0.190648\nv -0.166681 -0.381460 0.195574\nv -0.137510 -0.352135 0.179966\nv -0.195025 -0.415467 0.169020\nv -0.160229 -0.339815 0.166765\nv -0.159276 -0.342741 0.153508\nv -0.152486 -0.386985 0.165618\nv -0.184355 -0.423128 0.197613\nv -0.188371 -0.414806 0.172321\nv -0.182227 -0.412515 0.175901\nv -0.146605 -0.418706 0.195564\nv -0.184099 -0.446227 0.171609\nv -0.177116 -0.410953 0.180373\nv -0.163980 -0.436585 0.142246\nv -0.192031 -0.442081 0.138304\nv -0.194587 -0.371588 0.189547\nv -0.181997 -0.415921 0.182530\nv -0.187469 -0.451367 0.139503\nv -0.173454 -0.458838 0.172295\nv -0.140037 -0.393548 0.198502\nv -0.131163 -0.348533 0.195636\nv -0.193919 -0.385075 0.154542\nv -0.174833 -0.448566 0.136734\nv -0.174757 -0.399754 0.194938\nv -0.174917 -0.420700 0.178467\nv -0.159895 -0.445727 0.167505\nv -0.146425 -0.395736 0.200759\nv -0.203721 -0.369327 0.163367\nv -0.203503 -0.356706 0.167791\nv -0.147401 -0.389438 0.174429\nv -0.180651 -0.348125 0.183641\nv -0.174043 -0.463401 0.167161\nv -0.158591 -0.353586 0.193850\nv -0.188842 -0.399655 0.182799\nv -0.188927 -0.412363 0.152321\nv -0.184658 -0.452109 0.137395\nv -0.192385 -0.358429 0.194698\nv -0.166222 -0.463205 0.165866\nv -0.161755 -0.459563 0.170937\nv -0.173407 -0.383589 0.157148\nv -0.199922 -0.384744 0.161110\nv -0.175127 -0.426461 0.196114\nv -0.199976 -0.347969 0.171858\nv -0.193733 -0.433628 0.141081\nv -0.169826 -0.348711 0.169086\nv -0.195410 -0.392762 0.166509\nv -0.143193 -0.343178 0.170265\nv -0.145881 -0.393298 0.181376\nv -0.141244 -0.394734 0.200162\nv -0.198610 -0.413970 0.155910\nv 0.076149 -0.381694 0.338910\nv 0.083486 -0.365645 0.339535\nv 0.088338 -0.375381 0.351370\nv 0.088883 -0.394636 0.352335\nv 0.110580 -0.363799 0.333773\nv 0.086518 -0.411698 0.346669\nv 0.080228 -0.368414 0.346304\nv 0.084459 -0.379282 0.353050\nv 0.116047 -0.366296 0.317721\nv 0.115042 -0.359677 0.320063\nv 0.122128 -0.367583 0.322354\nv 0.115033 -0.407815 0.321751\nv 0.114013 -0.416642 0.325970\nv 0.123919 -0.379725 0.327708\nv 0.096827 -0.459712 0.296994\nv 0.101959 -0.469783 0.302148\nv 0.099749 -0.473191 0.303264\nv 0.091108 -0.471898 0.303015\nv 0.095537 -0.473918 0.305296\nv 0.072314 -0.432396 0.316026\nv 0.073531 -0.400011 0.333589\nv 0.074139 -0.440058 0.313586\nv 0.110137 -0.402322 0.314026\nv 0.098562 -0.434604 0.301535\nv 0.072294 -0.392927 0.330904\nv 0.077473 -0.381562 0.349080\nv 0.096555 -0.410231 0.305661\nv 0.105588 -0.365076 0.322218\nv 0.120607 -0.388856 0.332723\nv 0.116137 -0.358785 0.324127\nv 0.091225 -0.472297 0.299656\nv 0.079472 -0.403236 0.344659\nv 0.087757 -0.444491 0.333427\nv 0.090666 -0.445846 0.298317\nv 0.083358 -0.401758 0.308253\nv 0.083788 -0.413584 0.305611\nv 0.076208 -0.439102 0.324126\nv 0.087181 -0.362516 0.342871\nv 0.096069 -0.424034 0.341134\nv 0.097439 -0.393807 0.349677\nv 0.110858 -0.434526 0.316919\nv 0.111703 -0.420413 0.330549\nv 0.105193 -0.428280 0.332288\nv 0.096143 -0.418812 0.305454\nv 0.095343 -0.448523 0.331427\nv 0.082485 -0.450573 0.302472\nv 0.096989 -0.378043 0.319259\nv 0.094443 -0.474216 0.299550\nv 0.108072 -0.458559 0.308443\nv 0.112355 -0.379599 0.315899\nv 0.086061 -0.392503 0.311220\nv 0.109572 -0.449200 0.320403\nv 0.075510 -0.409234 0.317649\nv 0.083911 -0.424706 0.306146\nv 0.074573 -0.374407 0.353600\nv 0.067988 -0.370364 0.356954\nv 0.072268 -0.384700 0.347020\nv 0.073032 -0.380098 0.362696\nv 0.077331 -0.401677 0.359893\nv 0.036002 -0.382417 0.367748\nv 0.077473 -0.410999 0.351119\nv 0.070073 -0.371287 0.360539\nv 0.076134 -0.375615 0.357651\nv 0.031735 -0.378166 0.360194\nv 0.029520 -0.393988 0.351537\nv 0.029032 -0.379177 0.364145\nv 0.032590 -0.412258 0.360414\nv 0.030789 -0.402476 0.365693\nv 0.038820 -0.475684 0.312539\nv 0.040336 -0.469974 0.310455\nv 0.047654 -0.478495 0.309124\nv 0.041489 -0.476957 0.322975\nv 0.039302 -0.478288 0.317563\nv 0.059584 -0.447951 0.315506\nv 0.049605 -0.481806 0.316051\nv 0.068625 -0.446325 0.330797\nv 0.063173 -0.418950 0.326110\nv 0.035042 -0.424410 0.354051\nv 0.036958 -0.442776 0.344054\nv 0.037056 -0.432555 0.344411\nv 0.034293 -0.441144 0.339992\nv 0.039909 -0.455042 0.334603\nv 0.033303 -0.413293 0.333883\nv 0.032475 -0.428445 0.326976\nv 0.035726 -0.430279 0.323384\nv 0.032810 -0.420166 0.349763\nv 0.030586 -0.407280 0.340601\nv 0.035543 -0.445031 0.318858\nv 0.072578 -0.422734 0.352580\nv 0.068523 -0.448562 0.339753\nv 0.033851 -0.422023 0.325498\nv 0.034077 -0.374904 0.363435\nv 0.070145 -0.396733 0.334786\nv 0.072077 -0.406493 0.363260\nv 0.050920 -0.438686 0.313673\nv 0.044240 -0.414791 0.325051\nv 0.043479 -0.408127 0.325438\nv 0.034952 -0.411443 0.329859\nv 0.062380 -0.453953 0.341094\nv 0.044171 -0.451742 0.342327\nv 0.028004 -0.405578 0.351651\nv 0.035176 -0.405440 0.367418\nv 0.044362 -0.484458 0.312730\nv 0.042071 -0.401582 0.329619\nv 0.042560 -0.482388 0.310615\nv 0.076873 -0.395618 0.342758\nv 0.063358 -0.432489 0.352065\nv 0.043048 -0.430144 0.351756\nv 0.037045 -0.436710 0.315349\nv 0.050621 -0.460534 0.309683\nv 0.045569 -0.387381 0.348694\nv 0.064155 -0.404810 0.329477\nv -0.077072 -0.381693 0.338911\nv -0.084408 -0.365644 0.339537\nv -0.089261 -0.375380 0.351370\nv -0.089804 -0.394631 0.352336\nv -0.113657 -0.363121 0.331959\nv -0.087440 -0.411698 0.346669\nv -0.081151 -0.368414 0.346304\nv -0.085383 -0.379282 0.353051\nv -0.117021 -0.362021 0.318504\nv -0.122663 -0.366098 0.322004\nv -0.115955 -0.407816 0.321750\nv -0.114933 -0.416651 0.325972\nv -0.124841 -0.379722 0.327707\nv -0.099829 -0.470335 0.298918\nv -0.100916 -0.473011 0.303203\nv -0.093930 -0.464347 0.313750\nv -0.095853 -0.474085 0.305272\nv -0.073237 -0.432396 0.316027\nv -0.074453 -0.400011 0.333587\nv -0.075062 -0.440058 0.313587\nv -0.109680 -0.455335 0.310664\nv -0.111058 -0.402326 0.314024\nv -0.099029 -0.435927 0.300935\nv -0.096529 -0.455699 0.296982\nv -0.073216 -0.392927 0.330905\nv -0.078395 -0.381560 0.349080\nv -0.097477 -0.410231 0.305661\nv -0.106509 -0.365074 0.322220\nv -0.121531 -0.388856 0.332723\nv -0.092003 -0.472226 0.299782\nv -0.080394 -0.403235 0.344660\nv -0.088680 -0.444492 0.333427\nv -0.104316 -0.456198 0.302292\nv -0.076434 -0.409231 0.317647\nv -0.084280 -0.401760 0.308253\nv -0.110638 -0.449563 0.319984\nv -0.084710 -0.413586 0.305611\nv -0.083945 -0.423922 0.306860\nv -0.077132 -0.439104 0.324125\nv -0.088104 -0.362516 0.342872\nv -0.096991 -0.424033 0.341134\nv -0.098360 -0.393807 0.349678\nv -0.111844 -0.434076 0.317023\nv -0.112624 -0.420414 0.330549\nv -0.106117 -0.428280 0.332287\nv -0.095887 -0.420825 0.304887\nv -0.096266 -0.448523 0.331427\nv -0.083407 -0.450572 0.302473\nv -0.097912 -0.378042 0.319259\nv -0.095365 -0.474216 0.299550\nv -0.113279 -0.379598 0.315900\nv -0.086982 -0.392504 0.311221\nv -0.114441 -0.357884 0.323387\nv -0.091417 -0.446630 0.298272\nv -0.075497 -0.374408 0.353600\nv -0.068910 -0.370364 0.356954\nv -0.073190 -0.384700 0.347020\nv -0.073954 -0.380097 0.362696\nv -0.078253 -0.401677 0.359894\nv -0.036925 -0.382417 0.367748\nv -0.070995 -0.371287 0.360539\nv -0.077057 -0.375616 0.357652\nv -0.032657 -0.378162 0.360196\nv -0.030443 -0.393985 0.351539\nv -0.029955 -0.379177 0.364145\nv -0.033512 -0.412260 0.360411\nv -0.031711 -0.402477 0.365692\nv -0.039742 -0.475680 0.312540\nv -0.041259 -0.469974 0.310455\nv -0.043482 -0.482388 0.310616\nv -0.048576 -0.478497 0.309124\nv -0.042411 -0.476957 0.322974\nv -0.040225 -0.478286 0.317565\nv -0.060506 -0.447951 0.315505\nv -0.050529 -0.481805 0.316052\nv -0.064095 -0.418949 0.326110\nv -0.035964 -0.424408 0.354053\nv -0.037880 -0.442775 0.344055\nv -0.037979 -0.432555 0.344411\nv -0.035216 -0.441143 0.339992\nv -0.040834 -0.455045 0.334602\nv -0.034226 -0.413293 0.333883\nv -0.033397 -0.428446 0.326976\nv -0.036648 -0.430280 0.323384\nv -0.033732 -0.420166 0.349763\nv -0.031509 -0.407282 0.340601\nv -0.036100 -0.405440 0.367418\nv -0.036465 -0.445031 0.318859\nv -0.073501 -0.422735 0.352580\nv -0.069446 -0.448562 0.339754\nv -0.034774 -0.422022 0.325497\nv -0.035000 -0.374904 0.363435\nv -0.071068 -0.396732 0.334787\nv -0.073000 -0.406493 0.363261\nv -0.052514 -0.440011 0.313427\nv -0.046399 -0.415279 0.324442\nv -0.035875 -0.411443 0.329859\nv -0.063302 -0.453954 0.341094\nv -0.045093 -0.451742 0.342326\nv -0.078396 -0.411000 0.351122\nv -0.028928 -0.405579 0.351651\nv -0.069548 -0.446325 0.330796\nv -0.045285 -0.484458 0.312730\nv -0.042994 -0.401583 0.329618\nv -0.077797 -0.395619 0.342758\nv -0.064282 -0.432489 0.352066\nv -0.043971 -0.430144 0.351756\nv -0.038265 -0.435564 0.315351\nv -0.051544 -0.460534 0.309683\nv -0.046490 -0.387382 0.348693\nv -0.043665 -0.407469 0.325881\nv -0.065077 -0.404810 0.329477\nv 0.019700 -0.374409 0.346134\nv 0.014051 -0.370289 0.349548\nv 0.017393 -0.384700 0.339555\nv -0.013824 -0.378224 0.349609\nv 0.018158 -0.380092 0.355229\nv 0.022458 -0.401675 0.352429\nv -0.019964 -0.385683 0.360659\nv 0.022599 -0.411001 0.343654\nv 0.016227 -0.371107 0.352074\nv 0.021260 -0.375615 0.350186\nv -0.025353 -0.393983 0.344076\nv -0.025975 -0.378648 0.355556\nv -0.022843 -0.375705 0.355744\nv -0.022284 -0.412258 0.352949\nv -0.024085 -0.402475 0.358228\nv -0.016054 -0.475681 0.305075\nv -0.014537 -0.469980 0.302990\nv -0.007220 -0.478503 0.301660\nv -0.013385 -0.476955 0.315511\nv -0.015571 -0.478286 0.310099\nv 0.004709 -0.447951 0.308039\nv -0.005267 -0.481804 0.308587\nv 0.013752 -0.446322 0.323331\nv 0.008298 -0.418946 0.318645\nv -0.019832 -0.424408 0.346588\nv -0.021681 -0.423961 0.341241\nv -0.017817 -0.432555 0.336945\nv -0.015465 -0.446693 0.336511\nv -0.020488 -0.440484 0.332049\nv -0.014224 -0.455963 0.328406\nv -0.021569 -0.413295 0.326414\nv -0.022399 -0.428445 0.319511\nv -0.019148 -0.430279 0.315918\nv -0.024288 -0.407280 0.333138\nv -0.020293 -0.377207 0.358717\nv -0.019331 -0.445033 0.311392\nv 0.017703 -0.422738 0.345114\nv 0.013649 -0.448563 0.332289\nv -0.021022 -0.422022 0.318032\nv 0.015272 -0.396732 0.327321\nv 0.017205 -0.406494 0.355794\nv -0.003280 -0.440017 0.305961\nv -0.010634 -0.414789 0.317586\nv -0.011394 -0.408130 0.317972\nv -0.019922 -0.411442 0.322395\nv 0.006835 -0.454493 0.333550\nv -0.026869 -0.405579 0.344187\nv -0.019696 -0.405439 0.359953\nv -0.010510 -0.484457 0.305266\nv -0.012802 -0.401581 0.322154\nv -0.012313 -0.482389 0.303150\nv 0.022001 -0.395616 0.335293\nv 0.008487 -0.432488 0.344600\nv -0.011826 -0.430145 0.344289\nv -0.017532 -0.435562 0.307887\nv -0.004252 -0.460533 0.302218\nv -0.009301 -0.387380 0.341228\nv 0.009280 -0.404810 0.322011\nv 0.000428 0.087594 0.415423\nv 0.013194 0.072869 0.422656\nv 0.000480 0.105316 0.404584\nv 0.021577 0.088795 0.400627\nv 0.000499 0.063821 0.428448\nv 0.034371 0.115856 0.357439\nv 0.051990 0.116327 0.329341\nv 0.027826 0.142625 0.364823\nv 0.008078 0.133006 0.379079\nv 0.006761 0.114671 0.385572\nv 0.036061 0.160705 0.365352\nv 0.054299 0.124219 0.324231\nv 0.061479 0.138925 0.333238\nv 0.107217 0.162609 0.342274\nv 0.061388 0.194722 0.379488\nv 0.111739 0.178985 0.359551\nv 0.095505 0.198291 0.376938\nv 0.145813 0.206006 0.360370\nv 0.151660 0.232353 0.368615\nv 0.169523 0.201503 0.340559\nv 0.196652 0.231849 0.340013\nv 0.220104 0.275467 0.339633\nv 0.253847 0.296678 0.327411\nv 0.305368 0.263309 0.307203\nv 0.172762 0.044039 0.327764\nv 0.125593 0.053851 0.331424\nv 0.155107 0.031293 0.339183\nv 0.176628 0.008837 0.337022\nv 0.211975 0.033760 0.316622\nv 0.212128 0.018693 0.320320\nv 0.316071 0.279743 0.299191\nv 0.337628 0.249084 0.287607\nv 0.347949 0.265491 0.275170\nv 0.355842 0.227484 0.267645\nv 0.379205 0.205712 0.232778\nv 0.362448 0.191323 0.244727\nv 0.377690 0.097702 0.197184\nv 0.346471 0.111535 0.203843\nv 0.000479 0.137873 0.381242\nv 0.009963 0.155198 0.372324\nv 0.017807 0.169548 0.369999\nv 0.000478 0.175892 0.367351\nv 0.374781 0.146897 0.215010\nv 0.386589 0.149916 0.208897\nv 0.354945 0.153210 0.224555\nv 0.069495 0.047196 0.375378\nv 0.030972 0.045447 0.416775\nv 0.067724 0.020892 0.391507\nv 0.067822 0.083864 0.347062\nv 0.088360 0.047766 0.362195\nv 0.114558 0.048878 0.343187\nv 0.091387 0.070130 0.334046\nv 0.118803 0.039957 0.347984\nv 0.215822 0.041861 0.309889\nv 0.245796 0.029343 0.316801\nv 0.261199 0.040376 0.305654\nv 0.281372 0.030045 0.297427\nv 0.268865 0.049133 0.289080\nv 0.319613 0.022441 0.275501\nv 0.322643 0.040068 0.270605\nv 0.320006 0.054393 0.264517\nv 0.355661 0.040197 0.217585\nv 0.361187 0.001086 0.224992\nv 0.346040 0.064559 0.214156\nv 0.365350 0.077072 0.198259\nv 0.339141 0.093152 0.203335\nv 0.103499 0.031616 0.352535\nv 0.152845 0.009395 0.332080\nv 0.137691 -0.002036 0.330286\nv 0.132216 -0.052113 0.321980\nv 0.157725 -0.025652 0.328978\nv 0.172920 -0.008812 0.336623\nv 0.081724 0.011592 0.376932\nv 0.118738 -0.003336 0.343956\nv 0.102893 -0.014547 0.355922\nv 0.096994 -0.067517 0.340617\nv 0.000547 0.246721 0.382128\nv 0.231211 0.329689 0.338376\nv 0.270420 0.322894 0.316872\nv 0.295203 0.321838 0.300334\nv 0.334119 0.311727 0.265678\nv 0.362605 0.269241 0.251833\nv 0.381500 0.218267 0.217395\nv 0.388660 0.158712 0.197713\nv 0.153722 0.190894 0.341432\nv 0.093596 0.147174 0.318004\nv 0.065124 0.095381 0.329377\nv 0.054512 0.119097 0.312415\nv 0.232653 0.256554 0.327579\nv 0.258261 0.267401 0.320961\nv 0.333264 0.230210 0.284656\nv 0.345048 0.211580 0.269129\nv 0.346524 0.183734 0.240783\nv 0.346647 0.168044 0.232732\nv 0.336338 0.134532 0.209575\nv 0.332828 0.111094 0.200546\nv 0.335952 0.070728 0.214962\nv 0.323966 0.074368 0.207751\nv 0.314869 0.060704 0.256069\nv 0.289351 0.053545 0.271029\nv 0.274119 0.054937 0.247415\nv 0.232008 0.047381 0.267998\nv 0.219237 0.046119 0.300912\nv 0.132754 0.055452 0.319120\nv 0.115709 0.058737 0.297498\nv 0.110484 0.062855 0.259525\nv 0.091398 0.073544 0.280167\nv 0.135852 0.054347 0.274118\nv 0.204063 0.047762 0.272694\nv 0.277726 0.064383 0.222852\nv 0.335372 0.081415 0.206141\nv 0.289011 0.089439 0.169889\nv 0.320420 0.116920 0.190254\nv 0.210929 0.238810 0.328085\nv 0.233181 0.253081 0.307054\nv 0.264788 0.264229 0.308889\nv 0.282913 0.265687 0.312291\nv 0.293107 0.261796 0.307596\nv 0.299351 0.254406 0.290784\nv 0.333897 0.221440 0.275723\nv 0.066675 0.124828 0.303248\nv 0.067100 0.116472 0.284159\nv 0.058018 0.106536 0.303831\nv 0.164560 0.198677 0.305658\nv 0.194289 0.226175 0.301147\nv 0.233563 0.260187 0.262529\nv 0.254052 0.269853 0.273829\nv 0.275929 0.271757 0.265543\nv 0.291313 0.267725 0.250837\nv 0.342497 0.207795 0.260643\nv 0.325329 0.240645 0.245251\nv 0.306724 0.258525 0.232999\nv 0.315992 0.247885 0.224091\nv 0.330936 0.215497 0.212546\nv 0.310916 0.182287 0.195712\nv 0.128748 0.168462 0.266370\nv 0.094279 0.124813 0.187710\nv 0.082767 0.108708 0.234750\nv 0.098862 0.074431 0.249821\nv 0.161671 0.064897 0.206528\nv 0.175812 0.207808 0.272091\nv 0.175961 0.204092 0.242956\nv 0.204704 0.236407 0.223722\nv 0.238613 0.260640 0.208021\nv 0.258915 0.270475 0.240835\nv 0.269963 0.266711 0.215073\nv 0.282465 0.265400 0.207508\nv 0.313240 0.237770 0.189723\nv 0.288600 0.253302 0.157848\nv 0.322479 0.157690 0.202587\nv 0.244180 0.057119 0.224080\nv 0.268020 0.058629 0.232847\nv 0.095541 0.117345 0.181586\nv 0.117900 0.144938 0.173185\nv 0.109126 0.107480 0.185703\nv 0.144432 0.169979 0.196805\nv 0.185611 0.204351 0.205637\nv 0.227086 0.245971 0.172881\nv 0.258303 0.265107 0.168071\nv 0.248076 0.260493 0.141163\nv 0.261020 0.263191 0.138840\nv 0.266420 0.256144 0.133162\nv 0.277965 0.244073 0.141745\nv 0.120558 0.085918 0.187650\nv 0.106176 0.081270 0.217754\nv 0.233984 0.067165 0.148420\nv 0.263906 0.072818 0.171960\nv 0.254823 0.078961 0.149284\nv 0.254048 0.089197 0.140422\nv 0.266474 0.137794 0.159810\nv 0.260812 0.166487 0.153425\nv 0.250146 0.232673 0.117467\nv 0.243485 0.250415 0.117166\nv 0.240643 0.237398 0.107790\nv 0.224753 0.235596 0.106619\nv 0.216402 0.223826 0.139303\nv 0.319061 0.216290 0.195444\nv 0.196795 0.180927 0.102216\nv 0.165547 0.175455 0.161176\nv 0.109369 0.127527 0.161001\nv 0.116675 0.118046 0.149535\nv 0.173722 0.113947 0.088811\nv 0.156786 0.118336 0.103630\nv 0.146920 0.107887 0.134175\nv 0.160765 0.085592 0.152189\nv 0.178261 0.105612 0.107908\nv 0.133612 0.068526 0.205709\nv 0.187683 0.076871 0.143740\nv 0.190364 0.098030 0.105788\nv 0.223135 0.078381 0.111588\nv 0.205511 0.087496 0.100860\nv 0.230817 0.084271 0.113543\nv 0.228538 0.111721 0.115426\nv 0.227645 0.233856 0.097130\nv 0.221976 0.212944 0.088195\nv 0.211536 0.204321 0.082664\nv 0.209402 0.208901 0.087518\nv 0.164479 0.152716 0.122653\nv 0.183150 0.108400 0.090773\nv 0.197173 0.107088 0.097817\nv 0.215136 0.086018 0.100366\nv 0.217350 0.127958 0.099506\nv 0.213688 0.162378 0.084874\nv 0.203887 0.189912 0.080479\nv 0.190896 0.159245 0.085194\nv 0.184649 0.138671 0.083839\nv 0.186819 0.120450 0.076759\nv 0.193418 0.116208 0.082229\nv 0.203980 0.113392 0.094683\nv 0.216078 0.100800 0.103304\nv 0.195262 0.129862 0.073962\nv 0.094105 -0.099650 0.336472\nv 0.105641 -0.128067 0.327287\nv 0.131963 -0.102433 0.309916\nv 0.090706 -0.135468 0.335775\nv 0.071096 -0.123288 0.335269\nv 0.068011 -0.155037 0.351926\nv 0.064533 -0.138627 0.348472\nv 0.055390 -0.142255 0.350539\nv 0.054851 -0.215382 0.361635\nv 0.036404 -0.154413 0.369614\nv 0.007118 -0.164324 0.398928\nv 0.028179 -0.147621 0.371911\nv 0.009824 -0.146040 0.388647\nv 0.026488 -0.192731 0.378073\nv 0.016723 -0.261832 0.392307\nv -0.000053 -0.309114 0.401898\nv 0.013645 -0.305775 0.397150\nv 0.028601 -0.299775 0.398686\nv 0.039231 -0.271530 0.388649\nv 0.041906 -0.290926 0.387083\nv 0.062355 -0.285297 0.376191\nv 0.070359 -0.271516 0.373634\nv 0.070457 -0.304486 0.370234\nv 0.047909 -0.303060 0.372883\nv 0.082733 -0.297032 0.376558\nv 0.092897 -0.292763 0.367339\nv 0.095890 -0.300860 0.365242\nv 0.107487 -0.302460 0.355585\nv 0.128660 -0.291116 0.345491\nv 0.115208 -0.273832 0.353107\nv 0.128717 -0.299469 0.337910\nv 0.144794 -0.291623 0.314936\nv 0.143707 -0.300132 0.318428\nv 0.159214 -0.288775 0.299377\nv 0.157716 -0.295656 0.299011\nv 0.031118 -0.220980 0.376972\nv 0.146006 -0.274716 0.312293\nv 0.084001 -0.246515 0.356239\nv 0.362620 0.289979 0.224479\nv 0.352137 0.300309 0.245485\nv 0.169827 0.308419 0.368044\nv 0.120794 0.295918 0.382810\nv 0.083229 0.277712 0.387647\nv 0.035138 0.254106 0.386282\nv 0.113884 0.344361 0.376410\nv 0.174458 0.369305 0.358915\nv 0.008482 0.337348 0.382380\nv 0.034040 0.293793 0.384957\nv 0.294723 0.363002 0.289384\nv 0.337852 0.346134 0.248637\nv 0.359957 0.324626 0.221779\nv 0.368316 0.299329 0.197772\nv 0.368807 0.268370 0.205030\nv 0.380894 0.216902 0.205326\nv 0.370423 0.230123 0.180933\nv 0.369405 0.250991 0.158904\nv 0.382866 0.152911 0.183230\nv 0.367748 0.196272 0.171860\nv 0.351063 0.206045 0.147906\nv 0.113138 0.473227 0.348326\nv 0.243873 0.388671 0.324385\nv 0.379041 0.412974 0.178738\nv 0.393863 0.322276 0.133932\nv 0.387124 0.278945 0.121391\nv 0.410993 0.298276 0.068248\nv 0.346872 0.200657 0.112622\nv 0.413742 0.287672 0.050947\nv 0.404230 0.207400 0.009623\nv 0.454348 0.304443 -0.039171\nv 0.448931 0.180449 -0.105496\nv 0.470068 0.244873 -0.124620\nv 0.483925 0.148913 -0.265888\nv 0.461985 0.100478 -0.236461\nv 0.493996 0.215792 -0.242679\nv 0.468790 0.080980 -0.280367\nv 0.500962 0.218545 -0.306433\nv 0.483251 0.106431 -0.339300\nv 0.497827 0.223781 -0.378312\nv 0.483382 0.125275 -0.384943\nv 0.473334 0.077652 -0.390252\nv 0.461137 0.196984 -0.500817\nv 0.481789 0.255075 -0.464137\nv 0.456055 0.108341 -0.451477\nv 0.434384 0.108234 -0.518079\nv 0.000463 0.474863 0.355551\nv 0.165539 0.505772 0.330269\nv 0.243035 0.493289 0.304825\nv 0.274126 0.448615 0.294481\nv 0.310135 0.445214 0.265154\nv 0.347658 0.430360 0.222458\nv 0.412290 0.413654 0.105007\nv 0.442021 0.378683 0.032288\nv 0.426289 0.334376 0.052885\nv 0.471967 0.304442 -0.096036\nv 0.483189 0.383127 -0.122151\nv 0.469243 0.356918 -0.061078\nv 0.499517 0.266100 -0.245508\nv 0.504446 0.353868 -0.269837\nv 0.505763 0.347777 -0.356020\nv 0.496017 0.294756 -0.415166\nv 0.481431 0.371034 -0.472150\nv 0.456617 0.276531 -0.528003\nv 0.449912 0.363615 -0.548772\nv 0.434376 0.176390 -0.548389\nv 0.375730 0.102404 -0.609853\nv 0.376557 0.205619 -0.647621\nv 0.298503 0.076220 -0.677650\nv 0.337871 0.162092 -0.681116\nv 0.281513 0.126753 -0.721117\nv 0.241044 0.149857 -0.764074\nv 0.319656 0.206514 -0.709080\nv 0.225116 0.089391 -0.764267\nv 0.188993 0.100220 -0.795180\nv 0.224114 0.196013 -0.779160\nv 0.103643 0.112476 -0.836411\nv 0.156878 0.149575 -0.816059\nv 0.000460 0.062498 -0.854459\nv 0.000849 0.093804 -0.859348\nv 0.053167 0.132096 -0.851417\nv 0.001623 0.130057 -0.859059\nv 0.418732 0.285280 -0.596620\nv 0.378904 0.287588 -0.654040\nv 0.261737 0.276051 -0.753228\nv 0.185798 0.226912 -0.796311\nv 0.141674 0.175275 -0.821106\nv 0.000689 0.218037 -0.844809\nv -0.000314 -0.183381 0.402843\nv 0.005693 -0.135107 0.363443\nv 0.000428 -0.141794 0.380469\nv 0.158586 -0.064893 0.304835\nv 0.175057 -0.030975 0.318454\nv 0.214407 0.003449 0.313505\nv 0.245078 -0.004070 0.300387\nv 0.143726 -0.145827 0.291394\nv 0.097803 -0.189381 0.336790\nv 0.131938 -0.182607 0.306215\nv 0.298216 0.003073 0.284242\nv 0.326344 0.002620 0.270369\nv 0.320595 -0.028332 0.268882\nv 0.333378 -0.031090 0.259049\nv 0.160505 -0.195893 0.260803\nv 0.161149 -0.122028 0.275339\nv 0.185196 -0.049911 0.293967\nv 0.229102 -0.065147 0.280845\nv 0.268507 -0.086216 0.265698\nv 0.314646 -0.096279 0.255446\nv 0.336279 -0.111479 0.233958\nv 0.366110 -0.101726 0.203517\nv 0.380909 0.042009 0.190829\nv 0.383682 0.081736 0.189597\nv 0.174755 -0.139916 0.261141\nv 0.192176 -0.136918 0.254206\nv 0.257202 -0.127284 0.253205\nv 0.221938 -0.138969 0.249693\nv 0.308987 -0.126235 0.246512\nv 0.300057 -0.157310 0.231332\nv 0.390634 0.019988 0.180729\nv 0.417826 -0.092418 0.131972\nv 0.201972 -0.161802 0.243071\nv 0.245111 -0.157784 0.235240\nv 0.229175 -0.172917 0.228110\nv 0.359163 -0.127034 0.202618\nv 0.366586 -0.164537 0.167837\nv 0.337944 -0.155764 0.207713\nv 0.401397 -0.130293 0.143701\nv 0.420748 -0.105259 0.124024\nv 0.405804 -0.018836 0.151534\nv 0.446021 -0.068917 0.079403\nv 0.435014 -0.020373 0.095141\nv 0.458510 -0.048098 0.021615\nv 0.438424 -0.013437 0.074169\nv 0.460125 -0.032509 -0.013358\nv 0.451924 -0.067891 0.021916\nv 0.446339 -0.086365 0.061189\nv 0.403330 -0.145657 0.122745\nv 0.324667 -0.168299 0.201171\nv 0.352598 -0.172811 0.164879\nv 0.271686 -0.171171 0.222475\nv 0.282263 -0.172934 0.211983\nv 0.249541 -0.181051 0.212597\nv 0.214346 -0.200823 0.215960\nv 0.183669 -0.183115 0.242391\nv 0.170512 -0.191792 0.249358\nv 0.154826 -0.223610 0.277706\nv 0.130300 -0.223179 0.316646\nv 0.102625 -0.223376 0.341867\nv 0.172993 -0.218120 0.241381\nv 0.203807 -0.224001 0.211711\nv 0.215366 -0.221794 0.198909\nv 0.222213 -0.274781 0.167630\nv 0.197908 -0.285544 0.153034\nv 0.226500 -0.270493 0.128188\nv 0.231779 -0.266628 0.147124\nv 0.180375 -0.288247 0.190349\nv 0.194514 -0.279026 0.202240\nv 0.182147 -0.273780 0.230645\nv 0.161835 -0.295102 0.225866\nv 0.167010 -0.289587 0.245231\nv 0.155716 -0.295281 0.240537\nv 0.169753 -0.279582 0.252354\nv 0.152839 -0.296479 0.274352\nv 0.161070 -0.239999 0.260254\nv 0.212139 -0.259601 0.197005\nv 0.231957 -0.259506 0.163797\nv 0.234709 -0.252534 0.136081\nv 0.388754 0.107932 0.177620\nv 0.386732 0.067806 0.177182\nv 0.405763 -0.007821 0.143660\nv 0.425304 -0.012799 0.093738\nv 0.411309 -0.011235 0.129767\nv 0.458974 -0.050654 -0.060071\nv 0.461079 -0.041650 -0.052269\nv 0.448382 -0.063929 -0.057341\nv 0.445918 -0.038740 -0.112966\nv 0.433333 -0.064864 -0.108822\nv 0.433567 -0.026397 -0.158640\nv 0.414188 -0.044159 -0.166594\nv 0.425374 -0.015098 -0.198602\nv 0.395551 -0.030546 -0.205908\nv 0.421555 -0.018735 -0.225632\nv 0.429612 -0.012476 -0.221521\nv 0.431910 -0.002092 -0.202929\nv 0.391087 -0.024220 -0.240337\nv 0.382576 -0.024676 -0.219870\nv 0.420820 -0.034572 -0.271539\nv 0.439844 -0.014973 -0.259122\nv 0.435872 0.004801 -0.214537\nv 0.390883 -0.034451 -0.261324\nv 0.398934 -0.052601 -0.282489\nv 0.429700 -0.035957 -0.283615\nv 0.414437 -0.069732 -0.303368\nv 0.430570 -0.048788 -0.300310\nv 0.434041 0.025490 -0.176603\nv 0.442656 -0.025436 -0.128767\nv 0.348552 0.215246 0.134042\nv 0.357461 0.180212 0.064765\nv 0.403172 0.169623 -0.019782\nv 0.400765 0.108509 -0.056995\nv 0.414055 0.098155 -0.098427\nv 0.440371 0.130032 -0.136257\nv 0.429744 0.095754 -0.127604\nv 0.437283 0.082792 -0.175599\nv 0.464931 0.009964 -0.313081\nv 0.384733 0.080738 0.171716\nv 0.390824 0.029349 0.170256\nv 0.399516 0.002533 0.156310\nv 0.424515 -0.019576 0.069205\nv 0.411146 -0.018007 0.086205\nv 0.401650 -0.012834 0.118623\nv 0.393658 -0.004965 0.129766\nv 0.388549 0.006764 0.140106\nv 0.384968 0.015299 0.148071\nv 0.382490 0.030689 0.158113\nv 0.380841 0.062360 0.165600\nv 0.387631 0.130296 0.180730\nv 0.364221 0.097487 0.167366\nv 0.436334 0.040476 -0.118038\nv 0.343879 0.146706 0.144998\nv 0.337848 0.153054 0.120864\nv 0.357945 0.122564 0.026427\nv 0.380854 0.116960 -0.015496\nv 0.414336 0.067558 -0.108761\nv 0.444427 -0.022936 -0.101978\nv 0.402511 0.018796 -0.098377\nv 0.385705 0.040928 -0.091980\nv 0.383633 0.058592 -0.080244\nv 0.367218 0.085351 -0.019640\nv 0.339434 0.123755 0.073929\nv 0.333450 0.123786 0.125821\nv 0.348762 0.108651 0.151306\nv 0.343726 0.079844 0.163188\nv 0.342166 0.092446 0.161742\nv 0.345694 0.063071 0.161666\nv 0.368028 0.029818 0.159592\nv 0.317637 0.113626 0.119232\nv 0.297490 0.107111 0.099834\nv 0.281675 0.096352 0.093715\nv 0.305033 0.091893 0.058452\nv 0.382698 -0.013563 -0.092844\nv 0.365505 -0.012444 -0.086176\nv 0.453632 -0.040891 -0.066046\nv 0.449616 -0.035918 -0.086131\nv 0.452710 -0.035343 -0.016125\nv 0.436167 -0.011740 0.064686\nv 0.324845 0.103389 0.142837\nv 0.308675 0.090015 0.145771\nv 0.294030 0.099189 0.127249\nv 0.278996 0.093955 0.115330\nv 0.265774 0.073893 0.116143\nv 0.289256 0.090233 0.135687\nv 0.282756 0.072513 0.144467\nv 0.252140 0.053732 0.118999\nv 0.252112 0.042861 0.099015\nv 0.250903 0.044692 0.151875\nv 0.241744 0.023887 0.130146\nv 0.271529 0.074808 0.086932\nv 0.287687 0.080503 0.066500\nv 0.300078 0.068855 0.035871\nv 0.346239 0.051761 -0.027266\nv 0.348676 0.019989 -0.054406\nv 0.354534 -0.000121 -0.071112\nv 0.436964 -0.044579 -0.052251\nv 0.427438 -0.041927 -0.068710\nv 0.427590 -0.054139 -0.032140\nv 0.434321 -0.044534 -0.008195\nv 0.428147 -0.020873 0.049790\nv 0.403221 -0.032172 -0.084656\nv 0.380215 -0.021835 -0.092487\nv 0.255965 0.053707 0.081971\nv 0.261935 0.053227 0.060044\nv 0.298495 0.058837 0.019057\nv 0.302904 0.052936 0.006875\nv 0.273884 0.039151 0.024100\nv 0.239437 0.024253 0.059307\nv 0.250894 0.026589 0.038407\nv 0.337499 0.039458 -0.028126\nv 0.317548 0.031957 -0.033421\nv 0.403556 -0.044383 -0.067015\nv 0.370489 -0.032157 -0.077949\nv 0.381684 -0.042961 -0.074341\nv 0.360460 -0.020250 -0.078560\nv 0.343659 -0.022117 -0.068258\nv 0.421434 -0.055915 -0.047491\nv 0.429157 -0.057313 0.000576\nv 0.403354 -0.060778 -0.064247\nv 0.367935 -0.059290 -0.077544\nv 0.369083 -0.071212 -0.081070\nv 0.327038 0.010691 -0.049045\nv 0.328751 -0.015793 -0.064439\nv 0.002541 0.596245 0.314165\nv 0.000023 0.528879 0.340532\nv 0.047408 0.581917 0.317560\nv 0.125174 0.518827 0.333949\nv 0.115107 0.573701 0.311232\nv 0.233968 0.554197 0.286002\nv 0.170391 0.571754 0.301176\nv 0.273001 0.505786 0.279558\nv 0.292507 0.537230 0.246896\nv 0.308079 0.494975 0.251327\nv 0.063191 0.645579 0.277054\nv 0.217074 0.590908 0.270613\nv 0.152034 0.644220 0.253066\nv 0.211229 0.641030 0.227852\nv 0.271341 0.580905 0.235503\nv 0.255468 0.629927 0.200739\nv 0.323775 0.544360 0.196998\nv 0.311877 0.602761 0.157447\nv 0.042736 0.693443 0.233843\nv 0.005451 0.652292 0.278642\nv -0.003222 0.710677 0.220282\nv 0.102155 0.683235 0.230396\nv 0.189850 0.666748 0.211343\nv 0.247851 0.661827 0.169497\nv 0.304834 0.637212 0.125199\nv 0.020953 0.729176 0.189687\nv 0.060333 0.728452 0.187875\nv 0.135662 0.704690 0.188827\nv 0.208871 0.710183 0.134191\nv 0.224496 0.712424 0.107597\nv 0.267690 0.680114 0.101518\nv 0.360144 0.478312 0.184568\nv 0.345667 0.520877 0.182377\nv 0.411642 0.482053 0.079241\nv 0.475557 0.454359 -0.113817\nv 0.463770 0.466890 -0.069712\nv 0.455067 0.452271 -0.031218\nv 0.442707 0.424752 0.024879\nv 0.468076 0.406772 -0.056253\nv 0.487975 0.441070 -0.183635\nv 0.493431 0.423872 -0.213827\nv 0.499292 0.421968 -0.280502\nv 0.498287 0.436489 -0.335295\nv 0.495051 0.431554 -0.377893\nv 0.478380 0.443695 -0.456952\nv 0.447582 0.459940 -0.541736\nv 0.399289 0.349360 -0.626330\nv 0.406763 0.436896 -0.604719\nv 0.351447 0.311213 -0.683466\nv 0.310151 0.290478 -0.719680\nv 0.257640 0.367146 -0.744233\nv 0.180808 0.324728 -0.781597\nv 0.097272 0.293112 -0.808370\nv 0.043304 0.301492 -0.818152\nv 0.000273 0.316726 -0.821827\nv 0.400631 0.529877 0.066584\nv 0.424973 0.514724 0.015815\nv 0.353673 0.578071 0.113723\nv 0.439460 0.521041 -0.049749\nv 0.446206 0.532655 -0.086857\nv 0.453706 0.528536 -0.120623\nv 0.465632 0.522836 -0.189340\nv 0.476481 0.509659 -0.256025\nv 0.490540 0.465588 -0.294937\nv 0.472874 0.521548 -0.317381\nv 0.475338 0.511755 -0.359327\nv 0.468984 0.508901 -0.420309\nv 0.456227 0.506330 -0.481248\nv 0.428086 0.528704 -0.533827\nv 0.380754 0.528696 -0.607720\nv 0.328490 0.500111 -0.675128\nv 0.269319 0.459595 -0.728751\nv 0.221124 0.427485 -0.756170\nv 0.146588 0.447236 -0.779087\nv 0.133722 0.403109 -0.784217\nv 0.080085 0.390085 -0.795210\nv 0.032765 0.388923 -0.798154\nv -0.022154 0.391670 -0.797440\nv 0.318835 0.633457 0.103734\nv 0.378463 0.588468 0.052319\nv 0.368715 0.616038 0.032769\nv 0.404729 0.580342 -0.011707\nv 0.433746 0.573005 -0.114822\nv 0.398822 0.611947 -0.057412\nv 0.406508 0.626219 -0.141922\nv 0.442765 0.580776 -0.247406\nv 0.438073 0.588743 -0.295025\nv 0.437125 0.585641 -0.350806\nv 0.417940 0.617570 -0.332839\nv 0.439209 0.579726 -0.390541\nv 0.437745 0.570003 -0.414388\nv 0.439719 0.563937 -0.445394\nv 0.422917 0.563187 -0.506637\nv 0.396762 0.557889 -0.566825\nv 0.259118 0.515779 -0.721889\nv 0.196389 0.479859 -0.758865\nv 0.198148 0.501010 -0.755137\nv 0.145576 0.468543 -0.773541\nv 0.147487 0.488057 -0.772592\nv 0.084218 0.435707 -0.790987\nv 0.096998 0.466764 -0.781943\nv 0.000454 0.462584 -0.787024\nv 0.340136 0.645797 0.044129\nv 0.304506 0.694186 0.013199\nv 0.284471 0.687783 0.062982\nv 0.369198 0.641991 -0.025295\nv 0.355794 0.672638 -0.083735\nv 0.369494 0.673152 -0.210386\nv 0.418573 0.619795 -0.272125\nv 0.412544 0.616832 -0.396145\nv 0.408548 0.599895 -0.475704\nv 0.381542 0.629573 -0.469764\nv 0.363252 0.585944 -0.585271\nv 0.393990 0.590395 -0.532450\nv 0.335237 0.563227 -0.635932\nv 0.282287 0.555325 -0.685671\nv 0.220682 0.566783 -0.716653\nv 0.170365 0.546226 -0.746854\nv 0.115954 0.532995 -0.762854\nv 0.074699 0.486536 -0.775575\nv 0.068818 0.530432 -0.765535\nv 0.028877 0.537104 -0.767296\nv 0.025629 0.486599 -0.777179\nv -0.007423 0.550446 -0.757072\nv 0.020389 0.587663 -0.729759\nv 0.015505 0.648008 -0.696308\nv 0.046688 0.650219 -0.696958\nv 0.086514 0.641815 -0.696927\nv 0.132176 0.605818 -0.718421\nv 0.128442 0.653730 -0.683434\nv 0.195143 0.608206 -0.697925\nv 0.174937 0.678994 -0.641520\nv 0.248039 0.643695 -0.632879\nv 0.214278 0.692331 -0.596061\nv 0.310263 0.659810 -0.543361\nv 0.218586 0.731434 -0.522756\nv 0.272017 0.712483 -0.485712\nv 0.324283 0.675213 -0.481278\nv 0.351922 0.678692 -0.371437\nv 0.297682 0.720769 -0.367283\nv 0.367584 0.669239 -0.335726\nv 0.313888 0.716503 -0.296111\nv 0.370661 0.670708 -0.291095\nv 0.377016 0.666444 -0.258025\nv 0.324481 0.711228 -0.235787\nv 0.360873 0.676496 -0.131103\nv 0.310225 0.717603 -0.105255\nv 0.323966 0.685520 -0.011626\nv 0.295450 0.712336 -0.021582\nv 0.244292 0.743473 -0.015672\nv 0.268375 0.713946 0.024062\nv 0.228916 0.740734 0.022980\nv 0.248688 0.705623 0.078272\nv 0.235286 0.717841 0.085213\nv 0.185561 0.731496 0.112525\nv 0.142465 0.729828 0.145314\nv 0.140198 0.739714 0.141720\nv 0.104500 0.727724 0.170725\nv 0.099416 0.762186 0.122208\nv 0.004077 0.771691 0.135549\nv 0.000261 0.752147 0.162923\nv 0.017734 0.735291 -0.618336\nv -0.032961 0.702500 -0.649923\nv 0.057742 0.734700 -0.614844\nv 0.076872 0.707884 -0.640254\nv 0.136720 0.713364 -0.616288\nv 0.094304 0.752619 -0.576321\nv 0.165851 0.723650 -0.587639\nv 0.092397 0.773486 -0.533991\nv 0.145271 0.748357 -0.553832\nv 0.149259 0.762105 -0.518270\nv 0.197381 0.729871 -0.547293\nv 0.178607 0.751050 -0.512514\nv 0.183904 0.761915 -0.475568\nv 0.208030 0.757389 -0.459853\nv 0.159516 0.771839 -0.482608\nv 0.180060 0.787748 -0.352419\nv 0.253552 0.753303 -0.337968\nv 0.216202 0.777902 -0.263822\nv 0.268109 0.749102 -0.259185\nv 0.258401 0.753701 -0.113007\nv 0.221958 0.774642 -0.111605\nv 0.206522 0.777297 -0.069995\nv 0.246914 0.749274 -0.039132\nv 0.184682 0.774723 -0.011097\nv 0.205148 0.748599 0.049328\nv 0.003626 0.799341 0.070449\nv 0.144733 0.765474 0.095618\nv 0.100744 0.784245 0.075138\nv 0.118570 0.794484 0.036243\nv 0.064724 0.803762 0.032055\nv 0.145622 0.780970 0.062636\nv 0.195291 0.752914 0.068032\nv 0.169821 0.776806 0.035356\nv -0.013306 0.763230 -0.582595\nv 0.000479 0.784217 -0.547472\nv 0.028871 0.754556 -0.594127\nv 0.047670 0.765254 -0.570816\nv 0.019148 0.794842 -0.521146\nv 0.075485 0.797955 -0.483506\nv 0.140009 0.789675 -0.438293\nv 0.099705 0.812367 -0.381639\nv 0.165639 0.800836 -0.253553\nv 0.123081 0.815345 -0.249293\nv 0.156287 0.801319 -0.095897\nv 0.112581 0.816097 -0.100157\nv 0.152956 0.796806 -0.057133\nv 0.140373 0.795632 -0.020546\nv 0.073374 0.816669 -0.027937\nv 0.129929 0.796793 0.005310\nv -0.000730 0.820131 -0.004206\nv 0.045588 0.810758 -0.455200\nv 0.028147 0.834485 -0.332687\nv 0.077989 0.826946 -0.250253\nv 0.023256 0.840187 -0.261271\nv 0.065806 0.828431 -0.118537\nv 0.022090 0.833714 -0.119727\nv 0.014390 0.826406 -0.042352\nv 0.000443 0.816300 -0.450245\nv 0.000446 0.829133 -0.390511\nv 0.000479 0.840543 -0.294724\nv 0.006306 0.839216 -0.191053\nv 0.456023 -0.017434 -0.315063\nv 0.443777 -0.033349 -0.303845\nv 0.471515 0.035307 -0.350514\nv 0.467459 0.038056 -0.378203\nv 0.398483 -0.019600 -0.491514\nv 0.398059 0.068160 -0.552025\nv 0.309676 0.039818 -0.635805\nv 0.205533 0.076679 -0.772606\nv 0.107294 0.038660 -0.811146\nv 0.165841 0.055444 -0.786918\nv 0.057347 0.023111 -0.824366\nv 0.001730 -0.019294 -0.815213\nv 0.443844 -0.037479 -0.347818\nv 0.420170 0.002891 -0.450521\nv 0.383981 0.014409 -0.534349\nv 0.208748 0.027540 -0.725044\nv 0.080453 0.003826 -0.800829\nv 0.043800 -0.014266 -0.805935\nv 0.429881 -0.068306 -0.320833\nv 0.418908 -0.036839 -0.427074\nv 0.400868 -0.051685 -0.469030\nv 0.414921 -0.032866 -0.460145\nv 0.361140 -0.102615 -0.506842\nv 0.333882 -0.080162 -0.548138\nv 0.283710 -0.067289 -0.608727\nv 0.237381 -0.045466 -0.659310\nv 0.205832 -0.002466 -0.705947\nv 0.132349 -0.001980 -0.751467\nv 0.060756 -0.042004 -0.761765\nv 0.000515 -0.052400 -0.787262\nv 0.425787 -0.078189 -0.343068\nv 0.383482 -0.055530 -0.278005\nv 0.403605 -0.082870 -0.300564\nv 0.413588 -0.093784 -0.319932\nv 0.420484 -0.073100 -0.384071\nv 0.414252 -0.112343 -0.344787\nv 0.399206 -0.115946 -0.419820\nv 0.387790 -0.111154 -0.456557\nv 0.386645 -0.077280 -0.283602\nv 0.386390 -0.102217 -0.282841\nv 0.404239 -0.134677 -0.374051\nv 0.396542 -0.172823 -0.316911\nv 0.392084 -0.160273 -0.300919\nv 0.392877 -0.184768 -0.334778\nv 0.379285 -0.114814 -0.281406\nv 0.376202 -0.172710 -0.288521\nv 0.375214 -0.191402 -0.379936\nv 0.375217 -0.121428 -0.468938\nv 0.369026 -0.157183 -0.282590\nv 0.369812 -0.039914 -0.266459\nv 0.332070 -0.056428 -0.255577\nv 0.333720 -0.026752 -0.253810\nv 0.355889 -0.117552 -0.268599\nv 0.339421 -0.139795 -0.262808\nv 0.338160 -0.168874 -0.269902\nv 0.336844 -0.125218 -0.252843\nv 0.316759 -0.146361 -0.255098\nv 0.343991 -0.009654 -0.248995\nv 0.317559 -0.024845 -0.243657\nv 0.352790 -0.006381 -0.236744\nv 0.366863 -0.029426 -0.212962\nv 0.349267 -0.040904 -0.212030\nv 0.326645 0.002263 -0.242234\nv 0.383509 -0.035103 -0.204256\nv 0.398196 -0.044649 -0.179044\nv 0.407944 -0.059208 -0.152328\nv 0.412225 -0.076625 -0.123168\nv 0.422125 -0.077893 -0.097431\nv 0.447741 -0.062462 -0.010010\nv 0.440862 -0.070252 0.014243\nv 0.434625 -0.102431 0.057654\nv 0.395139 -0.150030 0.115260\nv 0.313606 -0.169720 0.191766\nv 0.295027 -0.171481 0.196693\nv 0.308410 -0.175493 0.190837\nv 0.265563 -0.173619 0.193966\nv 0.232209 -0.188377 0.213015\nv 0.243959 -0.186285 0.195869\nv 0.224156 -0.200006 0.199125\nv 0.421510 -0.094770 0.056326\nv 0.432036 -0.093490 0.046263\nv 0.392659 -0.140753 0.104041\nv 0.381143 -0.122088 0.112925\nv 0.344072 -0.145546 0.155817\nv 0.350550 -0.170455 0.158127\nv 0.305162 -0.167117 0.183949\nv 0.326099 -0.156719 0.166729\nv 0.307867 -0.154350 0.172636\nv 0.292238 -0.163172 0.180327\nv 0.261443 -0.168440 0.186107\nv 0.423961 -0.081131 0.041006\nv 0.431868 -0.065949 0.009393\nv 0.432464 -0.063969 -0.005485\nv 0.428256 -0.065688 -0.017112\nv 0.422579 -0.075900 -0.042346\nv 0.411824 -0.084999 -0.075132\nv 0.407705 -0.085522 -0.073874\nv 0.388714 -0.081896 -0.080371\nv 0.404257 -0.082138 -0.073049\nv 0.409905 -0.073526 -0.064562\nv 0.065361 -0.212093 0.186964\nv 0.083270 -0.230246 0.185584\nv 0.049899 -0.189650 0.166680\nv 0.092682 -0.184636 0.136668\nv 0.114152 -0.217336 0.141310\nv 0.057218 -0.233370 0.236916\nv 0.034608 -0.219816 0.238490\nv 0.069714 -0.264029 0.268015\nv 0.063733 -0.310081 0.322050\nv 0.024076 -0.271909 0.301390\nv 0.189112 -0.241925 0.075600\nv 0.126737 -0.252627 0.141386\nv 0.132363 -0.191430 0.116100\nv 0.099460 -0.261746 0.187725\nv 0.081986 -0.250912 0.227410\nv 0.097540 -0.275268 0.236494\nv 0.072270 -0.287912 0.291882\nv 0.080436 -0.301916 0.306306\nv 0.227560 -0.224797 0.162300\nv 0.241012 -0.178590 0.182125\nv 0.230471 -0.189898 0.179704\nv 0.226800 -0.198853 0.173206\nv 0.226026 -0.217881 0.130615\nv 0.228634 -0.209453 0.151425\nv 0.230229 -0.257456 0.116917\nv 0.209027 -0.270768 0.112571\nv 0.225826 -0.263205 0.114360\nv 0.224867 -0.193842 0.140450\nv 0.228678 -0.170540 0.149640\nv 0.241682 -0.165596 0.173895\nv 0.259951 -0.142469 0.173332\nv 0.269655 -0.119401 0.169134\nv 0.300944 -0.111962 0.170436\nv 0.283816 -0.097877 0.169101\nv 0.297492 -0.009659 0.174593\nv 0.312510 0.001935 0.170928\nv 0.223390 -0.164716 0.121778\nv 0.232851 -0.157252 0.154556\nv 0.243054 -0.162131 0.164160\nv 0.238427 -0.138910 0.154152\nv 0.252504 -0.136699 0.162487\nv 0.254431 -0.127488 0.164469\nv 0.272350 -0.041186 0.165554\nv 0.299725 0.022497 0.170899\nv 0.283639 0.030664 0.171399\nv 0.233594 -0.137459 0.141447\nv 0.228815 -0.130456 0.121391\nv 0.238514 -0.111028 0.139155\nv 0.238889 -0.098808 0.144160\nv 0.254583 -0.014527 0.158251\nv 0.229934 -0.083580 0.120462\nv 0.235029 -0.032267 0.122320\nv 0.237776 -0.025952 0.134527\nv 0.265707 0.045995 0.162613\nv 0.256803 0.053966 0.150056\nv 0.349032 -0.035249 0.141064\nv 0.322210 0.060810 0.161246\nv 0.303788 0.060339 0.167842\nv 0.315764 0.082982 0.157124\nv 0.277916 0.061555 0.156923\nv 0.368238 -0.037612 0.137779\nv 0.412408 -0.071951 0.066195\nv 0.417486 -0.044802 0.054710\nv 0.397082 -0.053321 0.098321\nv 0.408857 -0.034975 0.078332\nv 0.395839 -0.029167 0.112240\nv 0.382522 -0.016209 0.126741\nv 0.011695 -0.269652 0.312907\nv 0.000719 -0.259425 0.322689\nv 0.011378 -0.242650 0.276883\nv 0.000479 -0.237274 0.279612\nv -0.001648 -0.222660 0.251261\nv 0.078566 -0.308976 0.317506\nv 0.027480 -0.309618 0.336282\nv 0.017111 -0.309895 0.341016\nv 0.003893 -0.280868 0.338818\nv 0.181944 -0.216283 0.071289\nv 0.176136 -0.214919 0.054281\nv 0.158837 -0.182397 0.090164\nv 0.194339 -0.241543 0.058837\nv 0.193532 -0.257928 0.056072\nv 0.192175 -0.265601 0.074883\nv 0.183610 -0.262766 0.041411\nv 0.180051 -0.263269 0.092293\nv 0.164289 -0.269254 0.116781\nv 0.120748 -0.270131 0.178202\nv 0.110261 -0.286211 0.242620\nv 0.089597 -0.299186 0.272323\nv 0.345552 -0.208769 -0.277741\nv 0.374172 -0.195504 -0.294618\nv 0.382127 -0.201092 -0.317688\nv 0.369245 -0.216856 -0.354893\nv 0.338322 -0.216092 -0.396303\nv 0.342649 -0.164139 -0.468494\nv 0.326912 -0.188041 -0.458285\nv 0.314082 -0.201486 -0.446136\nv 0.327583 -0.124748 -0.522752\nv 0.304359 -0.143920 -0.515358\nv 0.306673 -0.181268 -0.473883\nv 0.238569 -0.083037 -0.637376\nv 0.163557 -0.080063 -0.680420\nv 0.102951 -0.044352 -0.734834\nv 0.074431 -0.071691 -0.723513\nv 0.048068 -0.095638 -0.704327\nv 0.028530 -0.071665 -0.739977\nv -0.001558 -0.094994 -0.715478\nv 0.000533 -0.115576 -0.679512\nv 0.056390 -0.129611 -0.662499\nv 0.098216 -0.124045 -0.670908\nv 0.115422 -0.103410 -0.686388\nv 0.138715 -0.143227 -0.628352\nv 0.263060 -0.116457 -0.578371\nv 0.176588 -0.148675 -0.596878\nv 0.299485 -0.103516 -0.560774\nv 0.238504 -0.149615 -0.546629\nv 0.106510 -0.151183 -0.623385\nv 0.059045 -0.145713 -0.621961\nv 0.000674 -0.131882 -0.643467\nv 0.272645 -0.170418 -0.485999\nv 0.259062 -0.162711 -0.503885\nv 0.150762 -0.172632 -0.576883\nv 0.081658 -0.165997 -0.592306\nv 0.126557 -0.178801 -0.561382\nv 0.039338 -0.154413 -0.583838\nv 0.000058 -0.148229 -0.571074\nv 0.268193 -0.182179 -0.453942\nv 0.228899 -0.176801 -0.490016\nv 0.137392 -0.184252 -0.508142\nv 0.064927 -0.179091 -0.527793\nv 0.000458 -0.169066 -0.513635\nv 0.319634 -0.223074 -0.400055\nv 0.314160 -0.231308 -0.385863\nv 0.329168 -0.250534 -0.341256\nv 0.319213 -0.247713 -0.351577\nv 0.356389 -0.233023 -0.340225\nv 0.333791 -0.253172 -0.300914\nv 0.344377 -0.229030 -0.286331\nv 0.322169 -0.248682 -0.281953\nv 0.309525 -0.220128 -0.272551\nv 0.299264 -0.210665 -0.413090\nv 0.242989 0.005665 0.114046\nv 0.240904 0.033530 0.083031\nv 0.326326 -0.255960 -0.289632\nv 0.327941 -0.258691 -0.304201\nv 0.312723 -0.160466 -0.260553\nv 0.308207 -0.235416 -0.369658\nv 0.300505 -0.253174 -0.320722\nv 0.315934 -0.260600 -0.301584\nv 0.311970 -0.256225 -0.290133\nv 0.298990 -0.235250 -0.280677\nv 0.309969 -0.123009 -0.241005\nv 0.289264 -0.149729 -0.263266\nv 0.284942 -0.204186 -0.388624\nv 0.275930 -0.195826 -0.422864\nv 0.191862 -0.268904 0.061073\nv 0.174026 -0.273118 0.118402\nv 0.193753 -0.271553 0.101204\nv 0.119325 -0.286032 0.192018\nv 0.109258 -0.282459 0.209526\nv 0.138128 -0.292480 0.174867\nv 0.107456 -0.287710 0.230007\nv 0.136710 -0.293459 0.234785\nv 0.031921 -0.179686 -0.469723\nv 0.000471 -0.176804 -0.477829\nv 0.136882 -0.183215 -0.485447\nv 0.073718 -0.179281 -0.486924\nv 0.276551 -0.197570 -0.410925\nv 0.172082 -0.189091 -0.455361\nv 0.109475 -0.173446 -0.453617\nv 0.280305 -0.139420 -0.252888\nv 0.289789 -0.167091 -0.273062\nv 0.293657 -0.237007 -0.289762\nv 0.293873 -0.247049 -0.308027\nv 0.291654 -0.244732 -0.336759\nv 0.284779 -0.218915 -0.360783\nv 0.280388 -0.149149 -0.271653\nv 0.262829 -0.133703 -0.288610\nv 0.265592 -0.139194 -0.266911\nv 0.264662 -0.145583 -0.253550\nv 0.266775 -0.176598 -0.305530\nv 0.268622 -0.191976 -0.317783\nv 0.281729 -0.223790 -0.328184\nv 0.271742 -0.199603 -0.333217\nv 0.269227 -0.195847 -0.355271\nv 0.277860 -0.132116 -0.240086\nv 0.281033 -0.119368 -0.230453\nv 0.260962 -0.147801 -0.233668\nv 0.313082 -0.104004 -0.233645\nv 0.320311 -0.094853 -0.234985\nv 0.041137 -0.176442 -0.444471\nv 0.060006 -0.177408 -0.433120\nv 0.074118 -0.179546 -0.449239\nv 0.137074 -0.172399 -0.431705\nv 0.213244 -0.191203 -0.403847\nv 0.263185 -0.198200 -0.381197\nv 0.119651 -0.151805 -0.407880\nv 0.089161 -0.142532 -0.406340\nv 0.220863 -0.182066 -0.370922\nv 0.247079 -0.186601 -0.349876\nv 0.000468 -0.317073 0.393264\nv 0.024712 -0.306445 0.398542\nv 0.038529 -0.305280 0.387261\nv 0.089296 -0.308082 0.358573\nv 0.149858 -0.297933 0.296202\nv 0.005707 0.057826 0.421702\nv 0.011386 0.063939 0.425865\nv 0.020789 0.048662 0.417811\nv 0.030621 0.035944 0.411270\nv 0.058800 0.015112 0.395213\nv 0.059162 0.002186 0.372280\nv 0.088650 -0.016209 0.362221\nv 0.078751 -0.024689 0.333949\nv 0.085518 -0.042209 0.331958\nv 0.087234 -0.054116 0.347613\nv 0.080898 -0.097543 0.299984\nv 0.060339 -0.133605 0.336120\nv 0.067283 -0.125843 0.313300\nv 0.080854 -0.105184 0.335236\nv 0.078100 -0.108415 0.311069\nv 0.045931 -0.143762 0.348619\nv 0.026083 -0.138818 0.343510\nv 0.042401 -0.140730 0.297440\nv 0.040447 -0.140161 0.282609\nv 0.034327 0.022569 0.389895\nv 0.011594 -0.137463 0.281652\nv 0.000308 -0.124813 0.334535\nv 0.000384 -0.110392 0.310937\nv 0.021432 -0.135313 0.167722\nv 0.032010 -0.138572 0.084296\nv 0.028126 -0.129905 0.083299\nv 0.017526 -0.101446 0.102146\nv 0.000496 -0.053048 0.314299\nv 0.058370 -0.148973 0.091428\nv 0.083915 -0.154534 0.112201\nv 0.094514 -0.150820 0.128310\nv 0.103795 -0.139274 0.130945\nv 0.112670 -0.130816 0.118271\nv 0.111679 -0.097698 0.151580\nv 0.115898 -0.080594 0.131717\nv 0.095464 -0.053672 0.256241\nv 0.082959 -0.034172 0.235387\nv 0.088945 -0.037348 0.158705\nv 0.050562 0.000095 0.311832\nv 0.030379 0.019364 0.302586\nv 0.035389 0.011449 0.221144\nv 0.028492 0.032699 0.356399\nv 0.000492 0.045262 0.406975\nv 0.018444 0.023794 0.337309\nv 0.009440 -0.040593 0.191367\nv 0.014824 -0.040380 0.075088\nv 0.017917 -0.017708 0.132102\nv 0.004708 0.005642 0.340861\nv 0.000472 -0.021591 0.342077\nv 0.019437 0.001298 0.234277\nv 0.060182 -0.159481 -0.256784\nv 0.034445 -0.153254 -0.242816\nv 0.025350 -0.156661 -0.252902\nv 0.058382 -0.166620 -0.285620\nv 0.066231 -0.161442 -0.328291\nv 0.051348 -0.151868 -0.362087\nv 0.047252 -0.150334 -0.392344\nv 0.074301 -0.145028 -0.391494\nv 0.051122 -0.157176 -0.407239\nv 0.012136 -0.150469 -0.436180\nv 0.020058 -0.169601 -0.454955\nv 0.000476 -0.154431 -0.447253\nv 0.031767 -0.162940 -0.274917\nv 0.036982 -0.163660 -0.302992\nv 0.022015 -0.147518 -0.326710\nv 0.026515 -0.142929 -0.364163\nv 0.027292 -0.145309 -0.407465\nv 0.048353 -0.144264 -0.238331\nv 0.017464 -0.130934 -0.218789\nv 0.009114 -0.139720 -0.230370\nv 0.000566 -0.111779 -0.196144\nv 0.012837 -0.083309 -0.178876\nv 0.019300 -0.116342 -0.209205\nv 0.016018 -0.055916 -0.148070\nv 0.000478 -0.070623 -0.156029\nv 0.022364 -0.038127 -0.110369\nv 0.020482 -0.033276 -0.078199\nv 0.000478 -0.045013 -0.086090\nv 0.000480 -0.047910 -0.034425\nv 0.027109 -0.031452 -0.037164\nv 0.029115 -0.018428 0.024335\nv 0.000480 -0.032320 0.032698\nv 0.030562 -0.021758 0.060198\nv 0.018113 -0.029887 0.057070\nv 0.000477 -0.045856 0.046504\nv 0.000480 -0.145103 -0.275142\nv 0.000479 -0.133216 -0.321019\nv 0.001390 -0.139507 -0.365901\nv 0.000584 -0.133251 -0.233102\nv 0.221682 -0.269567 -0.219432\nv 0.217204 -0.266701 -0.218483\nv 0.214830 -0.262576 -0.226412\nv 0.223623 -0.265157 -0.229457\nv 0.226531 -0.267251 -0.225406\nv 0.236628 -0.182022 -0.247541\nv 0.230816 -0.221345 -0.239190\nv 0.224037 -0.175456 -0.230773\nv 0.252202 -0.158273 -0.254945\nv 0.238528 -0.153750 -0.254573\nv 0.250110 -0.145309 -0.262546\nv 0.226387 -0.163388 -0.240004\nv 0.221871 -0.150282 -0.228289\nv 0.251565 -0.180046 -0.242320\nv 0.236471 -0.248510 -0.229020\nv 0.241421 -0.209583 -0.238903\nv 0.229909 -0.264738 -0.215147\nv 0.233961 -0.263807 -0.218900\nv 0.239200 -0.245936 -0.223591\nv 0.250073 -0.187396 -0.224004\nv 0.256083 -0.148213 -0.223367\nv 0.229885 -0.158893 -0.224492\nv 0.238838 -0.148087 -0.221686\nv 0.218841 -0.211967 -0.222133\nv 0.223168 -0.212970 -0.216275\nv 0.227288 -0.246735 -0.214209\nv 0.241501 -0.194685 -0.217273\nv 0.254244 -0.128916 -0.220425\nv 0.223025 -0.149050 -0.221894\nv 0.278862 -0.097032 -0.223011\nv 0.309829 -0.079215 -0.224537\nv 0.296225 -0.055656 -0.215714\nv 0.263701 -0.097098 -0.214222\nv 0.245885 -0.129505 -0.213594\nv 0.320278 -0.075016 -0.237377\nv 0.240545 -0.119227 -0.210690\nv 0.230835 -0.138524 -0.215131\nv 0.222526 -0.121071 -0.223741\nv 0.352298 -0.045542 -0.202815\nv 0.373607 -0.033970 -0.197231\nv 0.396925 -0.057598 -0.148204\nv 0.368428 -0.040213 -0.139935\nv 0.388411 -0.084841 -0.112877\nv 0.351886 -0.045081 -0.125394\nv 0.371679 -0.027182 -0.162690\nv 0.385374 -0.037224 -0.185071\nv 0.370714 -0.026821 -0.178765\nv 0.396764 -0.085788 -0.114004\nv 0.378450 -0.083122 -0.100902\nv 0.358808 -0.066232 -0.110140\nv 0.355097 -0.071639 -0.095414\nv 0.352516 -0.032987 -0.191968\nv 0.343618 -0.047000 -0.203695\nv 0.335681 -0.056414 -0.214282\nv 0.348741 -0.062391 -0.083516\nv 0.029276 -0.001606 0.150117\nv 0.040670 0.005664 0.171533\nv 0.067063 -0.009750 0.147073\nv 0.081696 -0.007016 0.076905\nv 0.108566 -0.024868 0.079874\nv 0.041158 -0.029395 -0.054900\nv 0.059853 -0.028307 -0.085620\nv 0.060123 -0.034448 -0.058092\nv 0.061443 -0.028369 -0.013341\nv 0.081822 -0.010749 0.038764\nv 0.053123 -0.012072 0.025521\nv 0.057186 -0.010136 0.066220\nv 0.033609 -0.039040 -0.175186\nv 0.044514 -0.024274 -0.171772\nv 0.051013 -0.009284 -0.143689\nv 0.034238 -0.028434 -0.117840\nv 0.044743 -0.063390 -0.201160\nv 0.122851 -0.153227 -0.360722\nv 0.118912 -0.151929 -0.329657\nv 0.123320 -0.143690 -0.295581\nv 0.074533 -0.160021 -0.273939\nv 0.112641 -0.142082 -0.282060\nv 0.099748 -0.142854 -0.268696\nv 0.084195 -0.140160 -0.250865\nv 0.088864 -0.082539 -0.230428\nv 0.074401 -0.051671 -0.208717\nv 0.084858 -0.023801 -0.185627\nv 0.070724 -0.011123 -0.166433\nv 0.125918 -0.026201 -0.185957\nv 0.156176 -0.005832 -0.156090\nv 0.105993 -0.058902 -0.220115\nv 0.100779 -0.119053 -0.256613\nv 0.110614 -0.085875 -0.252130\nv 0.123974 -0.114735 -0.264643\nv 0.145611 -0.138354 -0.293820\nv 0.156552 -0.156091 -0.330295\nv 0.185864 -0.159924 -0.317159\nv 0.221199 -0.167632 -0.324000\nv 0.242650 -0.170188 -0.319041\nv 0.244084 -0.137631 -0.299518\nv 0.236566 -0.130717 -0.284235\nv 0.204440 -0.132302 -0.290111\nv 0.253229 -0.130405 -0.288678\nv 0.233269 -0.135092 -0.268228\nv 0.223521 -0.120264 -0.268575\nv 0.262521 -0.130223 -0.281780\nv 0.323673 -0.029703 -0.230108\nv 0.321251 -0.067585 -0.221507\nv 0.318983 -0.050731 -0.213275\nv 0.319107 -0.008624 -0.200417\nv 0.283388 -0.006634 -0.207984\nv 0.308594 0.006203 -0.193734\nv 0.235191 -0.085147 -0.214299\nv 0.210215 -0.063517 -0.233110\nv 0.224526 -0.101676 -0.218273\nv 0.221167 -0.058540 -0.215150\nv 0.220844 -0.042851 -0.205289\nv 0.328086 0.009957 -0.173899\nv 0.350620 -0.019299 -0.175808\nv 0.336449 0.000266 -0.158614\nv 0.351174 -0.019841 -0.160176\nv 0.349248 -0.027454 -0.145441\nv 0.330296 -0.031882 -0.123188\nv 0.328796 0.000736 -0.148288\nv 0.339169 -0.043745 -0.107556\nv 0.336120 -0.033595 -0.116841\nv 0.336416 -0.041354 -0.100385\nv 0.320353 -0.038995 -0.091766\nv 0.317454 -0.036727 -0.103544\nv 0.296042 -0.029362 -0.089412\nv 0.301002 -0.024833 -0.110171\nv 0.288225 -0.012678 -0.125550\nv 0.301695 -0.010535 -0.130225\nv 0.304194 0.010820 -0.154286\nv 0.323548 0.016138 -0.163303\nv 0.305616 -0.024704 -0.072987\nv 0.288837 0.024811 -0.027561\nv 0.275752 0.036426 -0.005913\nv 0.291365 0.008575 -0.047194\nv 0.270527 0.023135 -0.044511\nv 0.265618 0.036894 0.010938\nv 0.261954 0.032089 -0.031272\nv 0.229324 0.028767 -0.004474\nv 0.220557 0.005643 0.049068\nv 0.201445 -0.000988 0.023532\nv 0.225149 0.025780 -0.042046\nv 0.204534 0.015114 -0.057887\nv 0.224878 0.018316 -0.065445\nv 0.228839 0.003067 -0.084682\nv 0.265821 -0.019252 -0.088672\nv 0.275893 -0.022789 -0.106729\nv 0.247956 -0.026002 -0.124891\nv 0.242788 -0.027184 -0.111896\nv 0.269883 0.013471 -0.159306\nv 0.292237 0.026160 -0.166906\nv 0.234952 -0.023859 -0.140195\nv 0.221237 -0.029440 -0.136587\nv 0.231482 -0.028601 -0.153780\nv 0.222190 -0.021403 -0.120924\nv 0.208398 0.017807 -0.083562\nv 0.205729 0.020089 -0.071611\nv 0.192133 0.004249 -0.060230\nv 0.201688 -0.012194 -0.133483\nv 0.198755 0.003591 -0.129206\nv 0.199196 -0.028680 -0.144285\nv 0.194150 0.022288 -0.119321\nv 0.190440 0.026193 -0.112623\nv 0.188669 0.030014 -0.103437\nv 0.184028 0.025710 -0.094828\nv 0.200948 -0.043159 -0.153837\nv 0.206608 -0.047778 -0.162789\nv 0.310277 0.013393 -0.174306\nv 0.263575 -0.007228 -0.182261\nv 0.283110 0.024177 -0.172607\nv 0.292422 0.021132 -0.182086\nv 0.233214 -0.022919 -0.173162\nv 0.233611 -0.017188 -0.186155\nv 0.236012 -0.020769 -0.196518\nv 0.260913 -0.008639 -0.197485\nv 0.155610 -0.030443 -0.191651\nv 0.172297 -0.043730 -0.198742\nv 0.178067 -0.018592 -0.154235\nv 0.192287 -0.048736 -0.169176\nv 0.194709 -0.056395 -0.177493\nv 0.198315 -0.055704 -0.184550\nv 0.203344 -0.051514 -0.200492\nv 0.180263 -0.042678 -0.215411\nv 0.139748 -0.043938 -0.213947\nv 0.160510 -0.043407 -0.209608\nv 0.150985 -0.055763 -0.232188\nv 0.179622 -0.057872 -0.241692\nv 0.185803 -0.039194 -0.221593\nv 0.205391 -0.052403 -0.214352\nv 0.193897 -0.044188 -0.227209\nv 0.223838 -0.142730 -0.249030\nv 0.203448 -0.073472 -0.248580\nv 0.128614 -0.065406 -0.241380\nv 0.199819 0.009176 -0.017200\nv 0.178622 -0.025279 -0.047821\nv 0.210233 0.005530 0.053263\nv 0.180720 -0.031119 0.001714\nv 0.169554 -0.078017 -0.017385\nv 0.167492 -0.056859 -0.045428\nv 0.159247 -0.065928 -0.046424\nv 0.188497 -0.011876 0.012920\nv 0.186463 -0.006036 0.028811\nv 0.189549 0.009141 0.047912\nv 0.228907 0.036687 0.111660\nv 0.240257 0.041527 0.105449\nv 0.240534 0.037694 0.116822\nv 0.232385 0.021938 0.123534\nv 0.204647 0.032764 0.081756\nv 0.225690 0.031782 0.112330\nv 0.195772 0.009956 0.067138\nv 0.202746 -0.161428 0.073388\nv 0.184314 -0.144220 0.046232\nv 0.214577 -0.190652 0.095740\nv 0.222702 -0.203799 0.118459\nv 0.197826 -0.196370 0.052372\nv 0.214182 -0.216299 0.076629\nv 0.186959 -0.218772 0.033085\nv 0.226383 -0.232106 0.123381\nv 0.222914 -0.232460 0.115392\nv 0.228013 -0.239790 0.109112\nv 0.219869 -0.259248 0.092986\nv 0.216214 -0.265457 0.095474\nv 0.069975 -0.004111 -0.146792\nv 0.090650 -0.004520 -0.122847\nv 0.105483 -0.015557 -0.096454\nv 0.162898 0.000096 -0.115858\nv 0.151086 -0.007911 -0.094797\nv 0.126476 -0.031022 -0.076226\nv 0.148880 0.000860 -0.136204\nv 0.180461 0.015370 -0.134877\nv 0.175013 0.017696 -0.123978\nv 0.175747 0.024191 -0.109346\nv 0.167032 0.004836 -0.089166\nv 0.166149 -0.022397 -0.064881\nv 0.092976 -0.049582 -0.060686\nv 0.082042 -0.050642 -0.041475\nv 0.110460 -0.083745 -0.037968\nv 0.137596 -0.085526 -0.042641\nv 0.131338 -0.120503 0.069367\nv 0.127685 -0.109967 0.031311\nv 0.122001 -0.068518 0.035044\nv 0.124355 -0.061070 0.059132\nv 0.105509 -0.066910 0.013207\nv 0.131120 -0.143849 0.046320\nv 0.099507 -0.030811 0.046691\nv 0.120097 -0.040749 0.061507\nv 0.091299 -0.030812 0.021590\nv 0.084024 -0.045101 -0.005476\nv 0.101321 -0.074126 -0.016334\nv 0.159954 -0.189804 0.042644\nv 0.131390 -0.158720 0.032271\nv 0.133749 -0.190555 0.021639\nv 0.141899 -0.203882 0.011952\nv 0.113215 -0.153011 0.009044\nv 0.106084 -0.118319 -0.000743\nv 0.105874 -0.137047 -0.010922\nv 0.121071 -0.170470 -0.000809\nv 0.107742 -0.105111 -0.024774\nv 0.179124 -0.017574 0.037868\nv 0.166505 -0.117926 -0.005770\nv 0.157977 -0.141527 -0.013345\nv 0.177736 -0.046975 0.041028\nv 0.169760 -0.145731 0.005406\nv 0.177032 -0.184839 0.017114\nv 0.168476 -0.182946 0.006135\nv 0.159322 -0.156581 -0.007397\nv 0.149210 -0.144105 -0.015670\nv 0.124447 -0.124496 -0.023387\nv 0.065220 -0.310746 0.332478\nv 0.050667 -0.314153 0.341201\nv 0.043597 -0.316781 0.348747\nv 0.078541 -0.319847 0.325358\nv 0.006343 -0.304469 0.348279\nv 0.010523 -0.316019 0.357996\nv 0.035160 -0.311907 0.352442\nv 0.000731 -0.309869 0.347010\nv -0.001869 -0.276926 0.334483\nv -0.000165 -0.185338 0.195172\nv 0.000476 -0.174651 0.138455\nv 0.130920 -0.097985 0.073390\nv 0.137573 -0.158699 0.105970\nv 0.067584 -0.172565 0.132838\nv 0.099892 -0.156406 0.119578\nv 0.124787 -0.135267 0.077209\nv 0.109938 -0.146438 0.117512\nv 0.064265 -0.165823 0.121094\nv 0.055277 -0.165236 0.107275\nv 0.042728 -0.158334 0.093606\nv 0.016479 -0.152303 0.093595\nv 0.024423 -0.128026 0.065874\nv 0.000479 -0.113830 0.072486\nv 0.016480 -0.100964 0.069149\nv 0.012736 -0.072208 0.070398\nv 0.000479 -0.148705 0.101545\nv 0.086186 -0.310078 0.329610\nv 0.080876 -0.320646 0.334630\nv 0.095132 -0.302792 0.317097\nv 0.098022 -0.306889 0.294610\nv 0.119303 -0.305988 0.311697\nv 0.064959 -0.308247 0.348433\nv 0.013361 -0.315751 0.369615\nv 0.031645 -0.306878 0.395989\nv 0.060439 -0.312124 0.361771\nv 0.201822 -0.265175 0.066936\nv 0.183492 -0.245952 0.035699\nv 0.160699 -0.207334 0.017016\nv 0.133450 -0.161869 -0.006195\nv 0.218275 -0.232277 0.094057\nv 0.000481 0.025972 0.385601\nv 0.000453 -0.322533 0.370233\nv -0.011570 0.073140 0.423223\nv -0.033501 0.115856 0.357439\nv -0.051119 0.116327 0.329343\nv -0.066952 0.083864 0.347062\nv -0.006041 0.114619 0.385447\nv -0.007214 0.133015 0.379074\nv -0.026957 0.142627 0.364823\nv -0.035190 0.160705 0.365352\nv -0.060612 0.138926 0.333236\nv -0.053428 0.124220 0.324234\nv -0.106348 0.162609 0.342275\nv -0.060518 0.194722 0.379488\nv -0.110871 0.178987 0.359552\nv -0.094635 0.198292 0.376938\nv -0.144910 0.205989 0.360379\nv -0.150705 0.232318 0.368654\nv -0.167602 0.202963 0.343194\nv -0.195773 0.231844 0.340018\nv -0.219225 0.275509 0.339646\nv -0.231779 0.256552 0.327582\nv -0.271447 0.292554 0.319582\nv -0.257388 0.267401 0.320962\nv -0.317658 0.281401 0.297291\nv -0.310875 0.261349 0.304855\nv -0.124723 0.053851 0.331424\nv -0.171874 0.044040 0.327770\nv -0.154236 0.031293 0.339183\nv -0.117934 0.039957 0.347984\nv -0.175761 0.008835 0.337024\nv -0.214955 0.041862 0.309887\nv -0.211103 0.033759 0.316622\nv -0.211257 0.018691 0.320320\nv -0.336758 0.249088 0.287607\nv -0.350016 0.272789 0.267807\nv -0.354974 0.227488 0.267645\nv -0.364487 0.241355 0.256225\nv -0.380314 0.197642 0.228153\nv -0.361580 0.191318 0.244724\nv -0.376818 0.097694 0.197184\nv -0.345602 0.111536 0.203844\nv -0.020709 0.088794 0.400624\nv -0.016222 0.164430 0.369129\nv -0.373908 0.146912 0.215018\nv -0.385720 0.149909 0.208894\nv -0.354075 0.153205 0.224552\nv -0.068627 0.047195 0.375377\nv -0.030107 0.045443 0.416772\nv -0.066854 0.020893 0.391507\nv -0.087484 0.047766 0.362200\nv -0.113690 0.048877 0.343187\nv -0.090518 0.070128 0.334049\nv -0.249967 0.030713 0.315789\nv -0.260332 0.040377 0.305653\nv -0.268004 0.049135 0.289074\nv -0.318746 0.022440 0.275498\nv -0.330423 0.039097 0.258834\nv -0.311578 0.040218 0.276257\nv -0.319134 0.054392 0.264520\nv -0.343157 0.066437 0.213859\nv -0.357267 0.016722 0.224873\nv -0.357820 0.046267 0.211778\nv -0.364479 0.077073 0.198260\nv -0.383357 0.051268 0.187625\nv -0.338271 0.093151 0.203335\nv -0.102627 0.031617 0.352536\nv -0.151975 0.009397 0.332081\nv -0.136821 -0.002035 0.330287\nv -0.168902 -0.011631 0.335774\nv -0.156856 -0.025652 0.328978\nv -0.131347 -0.052112 0.321980\nv -0.080852 0.011594 0.376934\nv -0.117868 -0.003336 0.343955\nv -0.102023 -0.014548 0.355921\nv -0.096124 -0.067519 0.340616\nv -0.162338 0.294764 0.369904\nv -0.235003 0.324213 0.336083\nv -0.281155 0.321541 0.310172\nv -0.312087 0.320230 0.284599\nv -0.363539 0.265849 0.249349\nv -0.380629 0.218270 0.217394\nv -0.387790 0.158716 0.197714\nv -0.167397 0.200227 0.339103\nv -0.092733 0.147180 0.318009\nv -0.064252 0.095386 0.329373\nv -0.053644 0.119095 0.312409\nv -0.282044 0.265686 0.312290\nv -0.332394 0.230211 0.284657\nv -0.344179 0.211578 0.269126\nv -0.345655 0.183734 0.240783\nv -0.345777 0.168045 0.232732\nv -0.338857 0.139086 0.213415\nv -0.331960 0.111096 0.200547\nv -0.335081 0.070728 0.214962\nv -0.324624 0.074128 0.208417\nv -0.313998 0.060703 0.256073\nv -0.288474 0.053543 0.271033\nv -0.218371 0.046118 0.300910\nv -0.131885 0.055452 0.319120\nv -0.114839 0.058737 0.297499\nv -0.109614 0.062855 0.259528\nv -0.090531 0.073541 0.280164\nv -0.134577 0.054385 0.274523\nv -0.202965 0.047790 0.273130\nv -0.231159 0.047383 0.267994\nv -0.273252 0.054937 0.247415\nv -0.276861 0.064383 0.222853\nv -0.334503 0.081415 0.206142\nv -0.319549 0.116897 0.190248\nv -0.283474 0.089277 0.166575\nv -0.210055 0.238807 0.328088\nv -0.232313 0.253082 0.307053\nv -0.263919 0.264229 0.308888\nv -0.292237 0.261797 0.307596\nv -0.298480 0.254407 0.290784\nv -0.333030 0.221437 0.275721\nv -0.065805 0.124827 0.303248\nv -0.066230 0.116470 0.284158\nv -0.057148 0.106536 0.303831\nv -0.163682 0.198670 0.305641\nv -0.193419 0.226175 0.301143\nv -0.232693 0.260189 0.262514\nv -0.253186 0.269855 0.273825\nv -0.275060 0.271757 0.265542\nv -0.290440 0.267726 0.250840\nv -0.341626 0.207795 0.260644\nv -0.324462 0.240642 0.245256\nv -0.315122 0.247888 0.224105\nv -0.305852 0.258526 0.233002\nv -0.329198 0.216371 0.210573\nv -0.314997 0.185412 0.199813\nv -0.321823 0.151696 0.201744\nv -0.127877 0.168459 0.266357\nv -0.093407 0.124811 0.187718\nv -0.081897 0.108709 0.234751\nv -0.097993 0.074431 0.249819\nv -0.243310 0.057119 0.224079\nv -0.173420 0.205304 0.262622\nv -0.197072 0.231638 0.254318\nv -0.258044 0.270474 0.240835\nv -0.239323 0.262750 0.217848\nv -0.269091 0.266712 0.215079\nv -0.281592 0.265400 0.207491\nv -0.311142 0.238488 0.187705\nv -0.285108 0.256224 0.158798\nv -0.269999 0.073203 0.177742\nv -0.267145 0.058630 0.232842\nv -0.094671 0.117345 0.181587\nv -0.117025 0.144934 0.173184\nv -0.108255 0.107480 0.185703\nv -0.143565 0.169982 0.196807\nv -0.167682 0.180809 0.168294\nv -0.180667 0.205465 0.225230\nv -0.213504 0.239445 0.193471\nv -0.234753 0.254667 0.181842\nv -0.257430 0.265108 0.168070\nv -0.245318 0.259832 0.142293\nv -0.260150 0.263191 0.138838\nv -0.265550 0.256145 0.133161\nv -0.284813 0.246018 0.149062\nv -0.119690 0.085916 0.187652\nv -0.105305 0.081271 0.217754\nv -0.160836 0.064940 0.206392\nv -0.233114 0.067165 0.148421\nv -0.252763 0.074424 0.154702\nv -0.275578 0.078677 0.167882\nv -0.276053 0.082565 0.155790\nv -0.249351 0.125040 0.143735\nv -0.256868 0.088113 0.144298\nv -0.280194 0.122449 0.166809\nv -0.267164 0.147350 0.161482\nv -0.259913 0.167340 0.153163\nv -0.249277 0.232680 0.117466\nv -0.245510 0.249940 0.117996\nv -0.228504 0.235706 0.099270\nv -0.241260 0.236411 0.108778\nv -0.236435 0.245537 0.135428\nv -0.222614 0.229181 0.130829\nv -0.223715 0.236512 0.109191\nv -0.217362 0.226732 0.141559\nv -0.222642 0.223371 0.160264\nv -0.196248 0.187516 0.118353\nv -0.207736 0.220224 0.162814\nv -0.108496 0.127529 0.161005\nv -0.115809 0.118045 0.149531\nv -0.158329 0.117245 0.100881\nv -0.145798 0.107221 0.135271\nv -0.187712 0.106063 0.099559\nv -0.174105 0.091077 0.129421\nv -0.132746 0.068526 0.205704\nv -0.186817 0.076871 0.143736\nv -0.207411 0.086954 0.100189\nv -0.222266 0.078381 0.111589\nv -0.242355 0.086575 0.128185\nv -0.223661 0.217188 0.090097\nv -0.217033 0.221021 0.091048\nv -0.208858 0.209732 0.088025\nv -0.195844 0.178895 0.098383\nv -0.163755 0.154539 0.125059\nv -0.185497 0.135352 0.080615\nv -0.176365 0.117615 0.083336\nv -0.187637 0.112950 0.081578\nv -0.196518 0.098887 0.100271\nv -0.218053 0.085623 0.101783\nv -0.223300 0.115386 0.110413\nv -0.209337 0.152447 0.083075\nv -0.205494 0.195875 0.080655\nv -0.190024 0.159243 0.085195\nv -0.194227 0.150282 0.076358\nv -0.194528 0.128729 0.074121\nv -0.203570 0.114320 0.094227\nv -0.215236 0.100790 0.103320\nv -0.094257 -0.097674 0.336450\nv -0.104779 -0.128071 0.327282\nv -0.089831 -0.135476 0.335779\nv -0.070301 -0.123550 0.335366\nv -0.067150 -0.155034 0.351920\nv -0.066008 -0.139221 0.347873\nv -0.046484 -0.147146 0.355972\nv -0.035866 -0.153803 0.369263\nv -0.006236 -0.161850 0.397889\nv -0.009515 -0.147017 0.388761\nv -0.018434 -0.139995 0.369462\nv -0.025996 -0.192590 0.377844\nv 0.000232 -0.246300 0.399046\nv -0.020867 -0.267986 0.392417\nv -0.012775 -0.305775 0.397150\nv -0.027731 -0.299776 0.398686\nv -0.038362 -0.271530 0.388649\nv -0.061484 -0.285296 0.376191\nv -0.041039 -0.290925 0.387082\nv -0.069488 -0.271515 0.373634\nv -0.069581 -0.304487 0.370234\nv -0.047040 -0.303060 0.372883\nv -0.081863 -0.297032 0.376558\nv -0.092027 -0.292763 0.367339\nv -0.095019 -0.300860 0.365242\nv -0.127790 -0.291115 0.345491\nv -0.106617 -0.302460 0.355586\nv -0.114342 -0.273835 0.353106\nv -0.127847 -0.299470 0.337910\nv -0.143922 -0.291628 0.314939\nv -0.142836 -0.300133 0.318428\nv -0.158344 -0.288776 0.299377\nv -0.156845 -0.295657 0.299011\nv -0.030249 -0.220981 0.376973\nv -0.145119 -0.273593 0.312169\nv -0.083130 -0.246514 0.356240\nv -0.348136 0.300853 0.251802\nv -0.361751 0.289978 0.224478\nv -0.175460 0.323213 0.364334\nv -0.120632 0.295724 0.382641\nv -0.034013 0.254275 0.386287\nv -0.111753 0.339269 0.377662\nv -0.173589 0.369305 0.358915\nv -0.046103 0.351246 0.378063\nv -0.082321 0.277657 0.387646\nv -0.035034 0.294186 0.384960\nv -0.293857 0.362995 0.289382\nv -0.336988 0.346127 0.248633\nv -0.359089 0.324628 0.221774\nv -0.367448 0.299335 0.197769\nv -0.367937 0.268370 0.205030\nv -0.380024 0.216903 0.205327\nv -0.368596 0.251037 0.159253\nv -0.369552 0.230124 0.180933\nv -0.384023 0.147472 0.183427\nv -0.366879 0.196268 0.171860\nv -0.353854 0.214739 0.153551\nv -0.112264 0.473213 0.348331\nv -0.243002 0.388664 0.324387\nv -0.386698 0.279284 0.120367\nv -0.392998 0.322264 0.133915\nv -0.410119 0.298269 0.068254\nv -0.346001 0.200656 0.112623\nv -0.403359 0.207404 0.009630\nv -0.412873 0.287676 0.050949\nv -0.448061 0.180446 -0.105498\nv -0.453481 0.304439 -0.039184\nv -0.469199 0.244876 -0.124618\nv -0.493127 0.215792 -0.242678\nv -0.483054 0.148911 -0.265883\nv -0.461113 0.100476 -0.236456\nv -0.467923 0.080991 -0.280363\nv -0.500091 0.218535 -0.306441\nv -0.482382 0.106431 -0.339300\nv -0.496960 0.223798 -0.378312\nv -0.482512 0.125273 -0.384941\nv -0.470703 0.060342 -0.385233\nv -0.484574 0.228674 -0.439284\nv -0.460266 0.196980 -0.500820\nv -0.455185 0.108345 -0.451478\nv -0.433513 0.108223 -0.518075\nv -0.144632 0.511282 0.333687\nv -0.208785 0.515129 0.312654\nv -0.246716 0.493137 0.302456\nv -0.273257 0.448610 0.294482\nv -0.307258 0.442641 0.267495\nv -0.347780 0.432477 0.220798\nv -0.377963 0.406814 0.179963\nv -0.414367 0.398897 0.098335\nv -0.441194 0.378626 0.032154\nv -0.425344 0.334249 0.053026\nv -0.471023 0.303656 -0.096246\nv -0.468378 0.356914 -0.061096\nv -0.482189 0.384150 -0.121539\nv -0.498658 0.268698 -0.244865\nv -0.503874 0.356197 -0.275313\nv -0.504893 0.347791 -0.356020\nv -0.495147 0.294753 -0.415165\nv -0.480494 0.308764 -0.471551\nv -0.455633 0.305418 -0.532046\nv -0.433498 0.176389 -0.548403\nv -0.383998 0.156617 -0.621364\nv -0.370520 0.093583 -0.608962\nv -0.336993 0.162091 -0.681125\nv -0.297632 0.076219 -0.677652\nv -0.280642 0.126762 -0.721123\nv -0.240175 0.149864 -0.764074\nv -0.224261 0.089391 -0.764253\nv -0.318788 0.206518 -0.709079\nv -0.188126 0.100219 -0.795178\nv -0.223228 0.195993 -0.779170\nv -0.155998 0.149554 -0.816062\nv -0.102772 0.112477 -0.836412\nv -0.051261 0.130634 -0.851744\nv -0.027189 0.092521 -0.853100\nv -0.417856 0.285280 -0.596632\nv -0.377792 0.286522 -0.654265\nv -0.371447 0.228338 -0.656292\nv -0.338958 0.295867 -0.694990\nv -0.223815 0.260984 -0.774182\nv -0.137327 0.172181 -0.822600\nv -0.152884 -0.073100 0.303384\nv -0.137067 -0.131125 0.297928\nv -0.183456 -0.007232 0.330607\nv -0.217476 0.005989 0.313073\nv -0.123100 -0.182528 0.314591\nv -0.090037 -0.193533 0.341134\nv -0.268285 0.016557 0.301208\nv -0.300507 -0.000436 0.282274\nv -0.327725 -0.004404 0.268195\nv -0.326569 -0.033780 0.264161\nv -0.164907 -0.116662 0.273903\nv -0.181901 -0.049777 0.295741\nv -0.207653 -0.031424 0.297388\nv -0.258183 -0.099855 0.262964\nv -0.311959 -0.114457 0.250493\nv -0.335357 -0.111428 0.234029\nv -0.365637 -0.091849 0.204450\nv -0.387364 0.035664 0.182776\nv -0.192438 -0.132713 0.256735\nv -0.232161 -0.123738 0.257107\nv -0.358838 -0.117471 0.207022\nv -0.388554 0.018184 0.183564\nv -0.400211 -0.021202 0.159537\nv -0.412663 -0.099325 0.136847\nv -0.210658 -0.168550 0.236891\nv -0.337077 -0.155768 0.207707\nv -0.298199 -0.156764 0.232248\nv -0.444006 -0.063540 0.082173\nv -0.433812 -0.020141 0.095641\nv -0.456195 -0.033442 0.018939\nv -0.436936 -0.012836 0.072173\nv -0.419259 -0.016970 0.124109\nv -0.458287 -0.051578 0.002430\nv -0.445601 -0.079704 0.069210\nv -0.439507 -0.097008 0.059853\nv -0.405964 -0.129826 0.135790\nv -0.402462 -0.145656 0.122745\nv -0.373726 -0.157640 0.163170\nv -0.358379 -0.168730 0.169684\nv -0.324265 -0.167812 0.202055\nv -0.260717 -0.175852 0.215757\nv -0.276568 -0.170122 0.222529\nv -0.238479 -0.171210 0.227585\nv -0.220218 -0.194519 0.214626\nv -0.186482 -0.175017 0.243988\nv -0.166458 -0.186171 0.253679\nv -0.160322 -0.197049 0.259074\nv -0.141903 -0.212264 0.292539\nv -0.129341 -0.222823 0.316566\nv -0.101771 -0.223393 0.341865\nv -0.053990 -0.215383 0.361631\nv -0.154435 -0.224923 0.277116\nv -0.195115 -0.216927 0.220533\nv -0.209726 -0.223366 0.204612\nv -0.221345 -0.274781 0.167624\nv -0.210240 -0.280721 0.144508\nv -0.179505 -0.288247 0.190349\nv -0.232437 -0.264775 0.142299\nv -0.225928 -0.270244 0.128530\nv -0.193643 -0.279024 0.202246\nv -0.181271 -0.273785 0.230652\nv -0.160965 -0.295102 0.225870\nv -0.166142 -0.289588 0.245228\nv -0.154844 -0.295281 0.240540\nv -0.168884 -0.279581 0.252353\nv -0.151968 -0.296479 0.274355\nv -0.160200 -0.239998 0.260255\nv -0.211276 -0.259602 0.196996\nv -0.231089 -0.259507 0.163787\nv -0.234020 -0.253881 0.133683\nv -0.171540 -0.220714 0.242245\nv -0.387859 0.108036 0.177322\nv -0.383950 0.094390 0.190384\nv -0.385862 0.067815 0.177184\nv -0.407806 -0.012248 0.141726\nv -0.424436 -0.012799 0.093732\nv -0.434308 -0.011874 0.066070\nv -0.459416 -0.048632 -0.058455\nv -0.460591 -0.037122 -0.033349\nv -0.447513 -0.063928 -0.057339\nv -0.441601 -0.036653 -0.124121\nv -0.432464 -0.064865 -0.108818\nv -0.427911 -0.027696 -0.167537\nv -0.424504 -0.015097 -0.198606\nv -0.394682 -0.030546 -0.205907\nv -0.428742 -0.012476 -0.221521\nv -0.389265 -0.025802 -0.218635\nv -0.431313 -0.001509 -0.202345\nv -0.429301 -0.020626 -0.244305\nv -0.389560 -0.023706 -0.234058\nv -0.394394 -0.029812 -0.253963\nv -0.438599 0.002058 -0.230800\nv -0.417835 -0.036631 -0.274053\nv -0.403561 -0.053767 -0.284759\nv -0.434066 -0.033525 -0.287190\nv -0.415115 -0.068223 -0.303716\nv -0.427858 -0.071291 -0.322259\nv -0.433171 0.025487 -0.176600\nv -0.441620 -0.024930 -0.129943\nv -0.443558 -0.022936 -0.101978\nv -0.347682 0.215244 0.134042\nv -0.356591 0.180209 0.064764\nv -0.402304 0.169620 -0.019787\nv -0.397674 0.105326 -0.055215\nv -0.413190 0.098161 -0.098431\nv -0.439500 0.130028 -0.136258\nv -0.436414 0.082791 -0.175605\nv -0.428873 0.095754 -0.127604\nv -0.464058 0.009962 -0.313073\nv -0.383552 0.070052 0.169894\nv -0.389955 0.029344 0.170255\nv -0.398647 0.002531 0.156308\nv -0.404556 -0.008058 0.139551\nv -0.423018 -0.016791 0.075622\nv -0.409159 -0.018271 0.087063\nv -0.400062 -0.013665 0.115704\nv -0.392548 -0.004565 0.130180\nv -0.387679 0.006764 0.140106\nv -0.381559 0.029484 0.157681\nv -0.384146 0.015201 0.147954\nv -0.375460 0.084838 0.170010\nv -0.370044 0.119960 0.174139\nv -0.364003 0.094713 0.168675\nv -0.435464 0.040485 -0.118039\nv -0.345605 0.156330 0.147540\nv -0.336626 0.151070 0.120400\nv -0.343642 0.140360 0.074546\nv -0.357194 0.122683 0.026364\nv -0.381731 0.122787 -0.014086\nv -0.413467 0.067558 -0.108761\nv -0.401640 0.018796 -0.098377\nv -0.382457 0.037147 -0.090397\nv -0.385762 0.063845 -0.081864\nv -0.341360 0.100806 0.022185\nv -0.335407 0.121955 0.075370\nv -0.332580 0.123786 0.125821\nv -0.347961 0.108649 0.151351\nv -0.341186 0.092271 0.161807\nv -0.345764 0.079610 0.164067\nv -0.345384 0.062545 0.161767\nv -0.366600 0.017696 0.154739\nv -0.355505 0.044683 0.161684\nv -0.298278 0.107823 0.098506\nv -0.315891 0.112857 0.119365\nv -0.280950 0.096257 0.093175\nv -0.360918 0.082722 -0.013926\nv -0.350735 0.034556 -0.046741\nv -0.382679 -0.013219 -0.093044\nv -0.455632 -0.043054 -0.070692\nv -0.451672 -0.040594 -0.064760\nv -0.449287 -0.036206 -0.084450\nv -0.457135 -0.030656 -0.004895\nv -0.323656 0.103115 0.142919\nv -0.293514 0.099552 0.127093\nv -0.307807 0.090014 0.145772\nv -0.276111 0.092522 0.112746\nv -0.268133 0.072568 0.129503\nv -0.288603 0.090215 0.135848\nv -0.250978 0.053046 0.121352\nv -0.257311 0.056994 0.093010\nv -0.241003 0.026841 0.129008\nv -0.237111 -0.013810 0.122368\nv -0.249954 0.044999 0.151442\nv -0.269582 0.071389 0.082615\nv -0.289415 0.080508 0.062673\nv -0.337424 0.065114 -0.006406\nv -0.362533 -0.012191 -0.084297\nv -0.423266 -0.049707 -0.049838\nv -0.444180 -0.039659 -0.015790\nv -0.430346 -0.047432 -0.005476\nv -0.427695 -0.052654 -0.030665\nv -0.426542 -0.020919 0.050311\nv -0.432594 -0.034234 0.016359\nv -0.402653 -0.030362 -0.085656\nv -0.377010 -0.021298 -0.091424\nv -0.307604 0.054042 0.004495\nv -0.282841 0.045799 0.019304\nv -0.253927 0.051495 0.070108\nv -0.250986 0.042672 0.099233\nv -0.238641 0.024364 0.059339\nv -0.248778 0.025888 0.039593\nv -0.280551 0.042659 0.014265\nv -0.340403 0.035637 -0.034589\nv -0.325730 0.014785 -0.046363\nv -0.316322 0.032959 -0.031949\nv -0.401556 -0.041842 -0.068184\nv -0.381288 -0.043203 -0.074216\nv -0.377352 -0.030627 -0.081078\nv -0.359043 -0.019954 -0.078325\nv -0.362221 -0.037307 -0.075982\nv -0.342849 -0.021804 -0.068226\nv -0.418895 -0.060623 -0.050399\nv -0.365681 -0.068667 -0.080967\nv -0.327446 -0.015346 -0.063972\nv -0.057153 0.587696 0.313207\nv -0.217409 0.567536 0.287091\nv -0.162077 0.562009 0.308742\nv -0.266441 0.548616 0.264401\nv -0.299117 0.497007 0.259246\nv -0.308084 0.538249 0.226557\nv -0.053591 0.643346 0.280579\nv -0.139764 0.611531 0.283219\nv -0.194552 0.638921 0.238908\nv -0.255143 0.588033 0.244964\nv -0.231889 0.636731 0.215663\nv -0.309584 0.620992 0.139199\nv -0.059506 0.695882 0.227848\nv -0.122113 0.665686 0.242668\nv -0.212378 0.670007 0.190755\nv -0.261152 0.644536 0.176466\nv -0.069368 0.724942 0.190809\nv -0.158860 0.679765 0.210641\nv -0.130197 0.763117 0.105157\nv -0.227373 0.700666 0.127058\nv -0.300016 0.648757 0.109958\nv -0.362278 0.460625 0.189739\nv -0.359011 0.515551 0.161785\nv -0.417266 0.469473 0.070643\nv -0.470186 0.447836 -0.085391\nv -0.441976 0.436376 0.021055\nv -0.467211 0.406770 -0.056270\nv -0.496405 0.418382 -0.235934\nv -0.499455 0.419658 -0.350457\nv -0.480603 0.446229 -0.441097\nv -0.478393 0.392271 -0.475339\nv -0.435918 0.388997 -0.570738\nv -0.442499 0.460430 -0.545498\nv -0.377443 0.339179 -0.652436\nv -0.309284 0.290481 -0.719678\nv -0.278646 0.284163 -0.740980\nv -0.221907 0.373502 -0.760011\nv -0.174168 0.302158 -0.787278\nv -0.104412 0.293622 -0.807441\nv -0.049268 0.341970 -0.808049\nv -0.401109 0.521514 0.071535\nv -0.420382 0.525533 0.017818\nv -0.380598 0.574818 0.063335\nv -0.346899 0.580344 0.121745\nv -0.456853 0.506330 -0.089602\nv -0.483956 0.471284 -0.215846\nv -0.465654 0.523355 -0.192737\nv -0.474429 0.516698 -0.309742\nv -0.490217 0.467653 -0.341334\nv -0.464241 0.521237 -0.421393\nv -0.458894 0.481575 -0.492611\nv -0.387309 0.495864 -0.613058\nv -0.296761 0.493017 -0.703341\nv -0.340375 0.495944 -0.664227\nv -0.250041 0.477898 -0.736535\nv -0.203712 0.435852 -0.763573\nv -0.155466 0.406303 -0.779319\nv -0.119516 0.397059 -0.787623\nv -0.083011 0.412711 -0.791854\nv -0.351251 0.630491 0.049967\nv -0.394427 0.600008 -0.013814\nv -0.424106 0.593843 -0.128420\nv -0.450663 0.563023 -0.230551\nv -0.422089 0.613846 -0.255166\nv -0.446675 0.572061 -0.363834\nv -0.431970 0.567105 -0.472984\nv -0.432371 0.529845 -0.527337\nv -0.403158 0.555943 -0.557931\nv -0.348346 0.550931 -0.631091\nv -0.142502 0.444518 -0.779687\nv -0.164848 0.517436 -0.760617\nv -0.098096 0.451866 -0.791551\nv -0.119175 0.457421 -0.780426\nv -0.301704 0.688754 0.026383\nv -0.364333 0.642643 -0.015654\nv -0.331717 0.686593 -0.040579\nv -0.397149 0.634532 -0.124629\nv -0.415737 0.621764 -0.297386\nv -0.369237 0.668449 -0.317691\nv -0.409908 0.620771 -0.384386\nv -0.410995 0.597818 -0.471452\nv -0.378144 0.630343 -0.476407\nv -0.343062 0.617999 -0.567154\nv -0.380027 0.587259 -0.557869\nv -0.271385 0.542769 -0.701331\nv -0.261253 0.588804 -0.677416\nv -0.204694 0.512464 -0.748309\nv -0.201463 0.560949 -0.726651\nv -0.142687 0.497712 -0.769198\nv -0.112125 0.532189 -0.761870\nv -0.049568 0.531752 -0.764988\nv -0.081719 0.488656 -0.779269\nv -0.041651 0.486618 -0.780212\nv -0.030813 0.531219 -0.760947\nv -0.069210 0.624795 -0.699396\nv -0.045197 0.647327 -0.694599\nv -0.087628 0.648693 -0.691099\nv -0.113530 0.595374 -0.726612\nv -0.141322 0.653761 -0.678884\nv -0.172563 0.611739 -0.703979\nv -0.202066 0.685767 -0.618557\nv -0.235251 0.634172 -0.650842\nv -0.233694 0.678386 -0.599764\nv -0.248064 0.690986 -0.569706\nv -0.260533 0.705017 -0.516586\nv -0.320725 0.669170 -0.505599\nv -0.345143 0.678038 -0.398434\nv -0.273544 0.716153 -0.467074\nv -0.304614 0.720068 -0.334474\nv -0.320710 0.712977 -0.284167\nv -0.366827 0.673974 -0.276652\nv -0.321427 0.712984 -0.253570\nv -0.369044 0.675129 -0.211778\nv -0.349188 0.688072 -0.172383\nv -0.315366 0.714892 -0.119225\nv -0.356707 0.679624 -0.129596\nv -0.288235 0.718522 -0.024413\nv -0.234201 0.723115 0.061338\nv -0.196090 0.751793 0.066088\nv -0.156226 0.764551 0.087140\nv -0.045026 0.739809 -0.611856\nv -0.066861 0.710556 -0.639120\nv -0.131243 0.707255 -0.624979\nv -0.091902 0.746332 -0.586630\nv -0.161618 0.721466 -0.589310\nv -0.193648 0.734323 -0.534433\nv -0.110386 0.774078 -0.521118\nv -0.218214 0.748545 -0.465095\nv -0.155430 0.782458 -0.445464\nv -0.246817 0.753900 -0.357155\nv -0.266708 0.749437 -0.267621\nv -0.214619 0.776581 -0.314362\nv -0.263649 0.750034 -0.124947\nv -0.211636 0.779944 -0.137191\nv -0.250540 0.749051 -0.049197\nv -0.197961 0.778540 -0.054980\nv -0.216667 0.746967 0.025400\nv -0.177887 0.775423 0.002688\nv -0.053496 0.778711 0.107815\nv -0.145954 0.781079 0.062473\nv -0.168881 0.776868 0.035351\nv -0.046803 0.765252 -0.570817\nv -0.018446 0.794640 -0.521612\nv -0.055423 0.805655 -0.472170\nv -0.106881 0.810342 -0.382273\nv -0.164493 0.800129 -0.266656\nv -0.109533 0.818965 -0.253053\nv -0.148390 0.806530 -0.138564\nv -0.155540 0.798134 -0.069915\nv -0.095914 0.820801 -0.105299\nv -0.139501 0.795632 -0.020546\nv -0.128710 0.796951 0.004884\nv -0.068036 0.817019 -0.025689\nv -0.111582 0.797015 0.031848\nv -0.025465 0.834740 -0.333184\nv -0.023451 0.839959 -0.266982\nv -0.018436 0.839103 -0.188241\nv -0.035346 0.829861 -0.084977\nv -0.455154 -0.017432 -0.315063\nv -0.442908 -0.033352 -0.303851\nv -0.472479 0.053568 -0.357026\nv -0.465254 0.009008 -0.343477\nv -0.397182 0.068154 -0.552031\nv -0.408658 -0.003403 -0.476467\nv -0.309314 0.040281 -0.635592\nv -0.204660 0.076678 -0.772608\nv -0.176969 0.049568 -0.771607\nv -0.106421 0.038660 -0.811148\nv -0.150503 0.053501 -0.794652\nv -0.055998 0.023292 -0.824718\nv -0.425741 -0.012752 -0.420113\nv -0.392568 -0.004113 -0.511051\nv -0.367052 0.021945 -0.558475\nv -0.231669 0.022114 -0.699651\nv -0.197563 0.024946 -0.730689\nv -0.085765 0.009491 -0.801933\nv -0.033116 -0.023512 -0.802106\nv -0.022718 -0.007912 -0.817155\nv -0.434487 -0.027998 -0.384013\nv -0.429508 -0.072738 -0.340846\nv -0.404865 -0.068403 -0.444467\nv -0.392249 -0.062116 -0.480753\nv -0.410209 -0.032639 -0.462677\nv -0.349408 -0.069913 -0.535080\nv -0.276914 -0.052085 -0.622698\nv -0.154271 -0.001503 -0.738921\nv -0.093571 -0.025344 -0.755721\nv -0.063824 -0.045509 -0.754838\nv -0.424268 -0.078961 -0.341273\nv -0.432506 -0.079937 -0.319414\nv -0.380851 -0.055724 -0.277238\nv -0.402736 -0.082871 -0.300565\nv -0.415053 -0.085822 -0.319846\nv -0.420209 -0.074518 -0.381114\nv -0.416357 -0.077788 -0.425408\nv -0.408072 -0.100731 -0.406276\nv -0.413382 -0.112345 -0.344787\nv -0.402423 -0.084979 -0.439322\nv -0.405604 -0.098213 -0.424049\nv -0.376028 -0.114033 -0.474881\nv -0.382894 -0.110078 -0.284364\nv -0.400599 -0.145384 -0.370550\nv -0.386091 -0.133374 -0.430722\nv -0.399004 -0.167651 -0.324595\nv -0.394640 -0.132127 -0.298713\nv -0.384161 -0.186458 -0.303034\nv -0.370036 -0.182767 -0.287525\nv -0.389003 -0.190101 -0.317374\nv -0.384601 -0.197957 -0.334672\nv -0.374233 -0.191933 -0.379465\nv -0.358638 -0.119485 -0.271397\nv -0.366059 -0.030712 -0.259988\nv -0.372688 -0.023458 -0.251945\nv -0.330606 -0.055591 -0.255133\nv -0.358400 -0.045571 -0.264326\nv -0.353261 -0.149166 -0.273316\nv -0.331642 -0.161634 -0.266808\nv -0.313003 -0.160184 -0.260254\nv -0.320213 -0.117684 -0.241350\nv -0.329976 -0.025109 -0.252221\nv -0.316689 -0.024847 -0.243657\nv -0.326446 0.001825 -0.242268\nv -0.352119 -0.006313 -0.237084\nv -0.365993 -0.029426 -0.212962\nv -0.348394 -0.040905 -0.212028\nv -0.382642 -0.035104 -0.204254\nv -0.397329 -0.044649 -0.179043\nv -0.409321 -0.059158 -0.152412\nv -0.404310 -0.081299 -0.122469\nv -0.398121 -0.087290 -0.093834\nv -0.424163 -0.076251 -0.095659\nv -0.438308 -0.068290 -0.030865\nv -0.444414 -0.064653 -0.005910\nv -0.439992 -0.070252 0.014242\nv -0.446361 -0.074418 0.027485\nv -0.433425 -0.100271 0.054177\nv -0.394273 -0.150025 0.115252\nv -0.351479 -0.172756 0.164042\nv -0.315148 -0.169828 0.191698\nv -0.255606 -0.179255 0.205907\nv -0.264713 -0.173302 0.193201\nv -0.224783 -0.198028 0.200327\nv -0.219665 -0.212112 0.190673\nv -0.427223 -0.096132 0.050375\nv -0.398519 -0.116506 0.087215\nv -0.391375 -0.143237 0.106732\nv -0.378964 -0.120017 0.114078\nv -0.346762 -0.134001 0.150940\nv -0.349849 -0.170382 0.157963\nv -0.335248 -0.156531 0.162064\nv -0.308281 -0.167236 0.182572\nv -0.300959 -0.158638 0.176686\nv -0.267517 -0.166938 0.185431\nv -0.424307 -0.077602 0.035001\nv -0.430028 -0.062013 0.000047\nv -0.425775 -0.068228 -0.023042\nv -0.409363 -0.085616 -0.076109\nv -0.421297 -0.075825 -0.043670\nv -0.388132 -0.081895 -0.080374\nv -0.404209 -0.083755 -0.073801\nv -0.409451 -0.070562 -0.062888\nv -0.074390 -0.222577 0.190653\nv -0.101317 -0.217481 0.152002\nv -0.091736 -0.186743 0.138522\nv -0.049052 -0.189639 0.166650\nv -0.032510 -0.215647 0.231960\nv -0.043271 -0.227639 0.243468\nv -0.069413 -0.264647 0.268218\nv -0.012689 -0.251988 0.285581\nv -0.022353 -0.284430 0.313880\nv -0.063202 -0.294208 0.305829\nv -0.155576 -0.228718 0.105101\nv -0.168609 -0.199760 0.079161\nv -0.127351 -0.197457 0.124984\nv -0.146196 -0.260040 0.122506\nv -0.184117 -0.226634 0.081737\nv -0.102041 -0.255041 0.173516\nv -0.081115 -0.250909 0.227405\nv -0.097263 -0.276476 0.238232\nv -0.078028 -0.289044 0.278787\nv -0.079541 -0.302183 0.303322\nv -0.226173 -0.225746 0.167441\nv -0.250705 -0.175659 0.187185\nv -0.230681 -0.188186 0.179811\nv -0.224925 -0.204760 0.169064\nv -0.224018 -0.210301 0.136437\nv -0.223541 -0.263905 0.111009\nv -0.234569 -0.205092 0.154114\nv -0.227156 -0.186902 0.162996\nv -0.233939 -0.163949 0.165450\nv -0.262513 -0.157671 0.175745\nv -0.254635 -0.147403 0.174601\nv -0.273343 -0.151990 0.177094\nv -0.295599 -0.123721 0.171319\nv -0.265334 -0.108908 0.167367\nv -0.323763 -0.116798 0.164350\nv -0.296156 -0.045009 0.173350\nv -0.303811 0.019572 0.174094\nv -0.228041 -0.164412 0.149086\nv -0.217237 -0.187787 0.110099\nv -0.233432 -0.143854 0.151350\nv -0.254691 -0.127769 0.166374\nv -0.272484 -0.066197 0.165964\nv -0.279513 0.044768 0.168179\nv -0.225256 -0.149304 0.120783\nv -0.236757 -0.084353 0.139673\nv -0.252282 -0.085766 0.160329\nv -0.267597 0.032993 0.164840\nv -0.228783 -0.083642 0.119915\nv -0.239238 -0.010165 0.137708\nv -0.255499 0.039573 0.157396\nv -0.268514 0.054508 0.159699\nv -0.256352 0.054977 0.148750\nv -0.348163 -0.035254 0.141064\nv -0.303069 0.060906 0.167502\nv -0.322819 0.060736 0.160652\nv -0.314891 0.082983 0.157124\nv -0.291027 0.071762 0.151300\nv -0.367368 -0.037614 0.137778\nv -0.410381 -0.086748 0.067545\nv -0.416333 -0.056454 0.046671\nv -0.404615 -0.057419 0.079509\nv -0.398279 -0.087336 0.079585\nv -0.403317 -0.039384 0.081888\nv -0.394550 -0.040310 0.106477\nv -0.424484 -0.060679 -0.022426\nv -0.425551 -0.059850 0.009773\nv -0.421937 -0.030425 0.054471\nv -0.426193 -0.027761 0.043667\nv -0.379927 -0.034409 0.125268\nv -0.377553 0.001535 0.138194\nv -0.006058 -0.267747 0.313677\nv -0.062751 -0.309943 0.321329\nv -0.075835 -0.308096 0.315118\nv -0.019030 -0.310095 0.339664\nv -0.006644 -0.304923 0.348704\nv -0.185133 -0.224308 0.063973\nv -0.193573 -0.242264 0.057748\nv -0.163321 -0.190594 0.070477\nv -0.192662 -0.257929 0.056072\nv -0.191141 -0.265638 0.073304\nv -0.174103 -0.246208 0.033817\nv -0.182698 -0.264145 0.042333\nv -0.169411 -0.265532 0.101519\nv -0.160407 -0.271545 0.123097\nv -0.115165 -0.272834 0.186897\nv -0.109392 -0.286211 0.242620\nv -0.080136 -0.297067 0.275491\nv -0.091467 -0.299014 0.271331\nv -0.346983 -0.212762 -0.279256\nv -0.363757 -0.217460 -0.360753\nv -0.336836 -0.216605 -0.395933\nv -0.365076 -0.096300 -0.503825\nv -0.338358 -0.115833 -0.520778\nv -0.342806 -0.160492 -0.471176\nv -0.325523 -0.186747 -0.460660\nv -0.312852 -0.085141 -0.563705\nv -0.282599 -0.124449 -0.552421\nv -0.306567 -0.159646 -0.497298\nv -0.303849 -0.181645 -0.473198\nv -0.312634 -0.201737 -0.445919\nv -0.259671 -0.092092 -0.610104\nv -0.226426 -0.049057 -0.664283\nv -0.206250 -0.077663 -0.658134\nv -0.107700 -0.085168 -0.704947\nv -0.074214 -0.085195 -0.711258\nv -0.043239 -0.095709 -0.704990\nv -0.027771 -0.072895 -0.738180\nv -0.055261 -0.131516 -0.659794\nv -0.097349 -0.123577 -0.671421\nv -0.130344 -0.125323 -0.655601\nv -0.213048 -0.117930 -0.614626\nv -0.178181 -0.135414 -0.623890\nv -0.300516 -0.101450 -0.561510\nv -0.279352 -0.152145 -0.514847\nv -0.232525 -0.151600 -0.544386\nv -0.173044 -0.154197 -0.589096\nv -0.121016 -0.155425 -0.613800\nv -0.087916 -0.165553 -0.593611\nv -0.035856 -0.151046 -0.591562\nv -0.258793 -0.167399 -0.493392\nv -0.187668 -0.171149 -0.566631\nv -0.184772 -0.174375 -0.543560\nv -0.233343 -0.172085 -0.521877\nv -0.144374 -0.172278 -0.581418\nv -0.119315 -0.179967 -0.554878\nv -0.267077 -0.182163 -0.454004\nv -0.228593 -0.176734 -0.489057\nv -0.136530 -0.184252 -0.508142\nv -0.064048 -0.179090 -0.527792\nv -0.319761 -0.235756 -0.373814\nv -0.328299 -0.250535 -0.341255\nv -0.356695 -0.231957 -0.340375\nv -0.332920 -0.253173 -0.300914\nv -0.326201 -0.255323 -0.289494\nv -0.325564 -0.243969 -0.281651\nv -0.305916 -0.217174 -0.406056\nv -0.275798 -0.196617 -0.420227\nv -0.240032 0.033527 0.083029\nv -0.327071 -0.258691 -0.304201\nv -0.310517 -0.221256 -0.272999\nv -0.314454 -0.140346 -0.251672\nv -0.316824 -0.248063 -0.350104\nv -0.307193 -0.236861 -0.366847\nv -0.289516 -0.205910 -0.396940\nv -0.290785 -0.244733 -0.336759\nv -0.299635 -0.253174 -0.320723\nv -0.315064 -0.260600 -0.301585\nv -0.311892 -0.255338 -0.287571\nv -0.301141 -0.127768 -0.243918\nv -0.288217 -0.145658 -0.260310\nv -0.295108 -0.164974 -0.268543\nv -0.300545 -0.233883 -0.278790\nv -0.190163 -0.268324 0.059860\nv -0.185597 -0.271509 0.101630\nv -0.107994 -0.282863 0.208736\nv -0.137261 -0.292480 0.174866\nv -0.106586 -0.287709 0.230007\nv -0.031043 -0.179685 -0.469738\nv -0.072847 -0.179281 -0.486926\nv -0.136015 -0.183215 -0.485445\nv -0.171212 -0.189091 -0.455361\nv -0.108605 -0.173446 -0.453617\nv -0.215812 -0.191594 -0.446208\nv -0.282878 -0.160877 -0.276665\nv -0.292281 -0.234743 -0.288138\nv -0.293003 -0.247049 -0.308030\nv -0.277782 -0.202932 -0.374942\nv -0.276674 -0.142731 -0.260422\nv -0.261959 -0.133703 -0.288611\nv -0.264723 -0.139194 -0.266911\nv -0.263793 -0.145583 -0.253550\nv -0.265906 -0.176598 -0.305529\nv -0.267752 -0.191975 -0.317781\nv -0.280859 -0.223788 -0.328182\nv -0.270872 -0.199602 -0.333217\nv -0.268356 -0.195846 -0.355270\nv -0.276989 -0.132116 -0.240085\nv -0.260093 -0.147801 -0.233669\nv -0.280162 -0.119368 -0.230452\nv -0.311072 -0.103278 -0.233026\nv -0.320063 -0.095626 -0.235456\nv -0.040265 -0.176443 -0.444476\nv -0.059138 -0.177409 -0.433123\nv -0.073248 -0.179546 -0.449239\nv -0.136205 -0.172399 -0.431706\nv -0.212372 -0.191203 -0.403847\nv -0.262316 -0.198200 -0.381197\nv -0.118779 -0.151805 -0.407880\nv -0.088292 -0.142532 -0.406340\nv -0.219992 -0.182066 -0.370922\nv -0.246209 -0.186601 -0.349878\nv -0.023842 -0.306446 0.398539\nv -0.037659 -0.305280 0.387261\nv -0.088427 -0.308082 0.358573\nv -0.148989 -0.297934 0.296200\nv -0.009247 0.065005 0.426487\nv -0.004456 0.058151 0.421852\nv -0.028223 0.038805 0.412623\nv -0.016839 0.048922 0.417268\nv -0.059108 0.016155 0.395278\nv -0.047293 0.016741 0.396016\nv -0.087780 -0.016209 0.362221\nv -0.057950 0.002613 0.372755\nv -0.077881 -0.024689 0.333949\nv -0.086363 -0.054123 0.347611\nv -0.084653 -0.042132 0.332004\nv -0.081552 -0.078737 0.307868\nv -0.046815 -0.142388 0.332653\nv -0.062537 -0.133975 0.342565\nv -0.064232 -0.127349 0.311773\nv -0.076058 -0.114321 0.309107\nv -0.079986 -0.105180 0.335237\nv -0.034223 -0.141001 0.304129\nv -0.003191 -0.133652 0.355995\nv -0.039834 -0.141316 0.265656\nv -0.053512 -0.134749 0.322769\nv -0.043238 -0.138811 0.293032\nv -0.029260 0.029558 0.400872\nv -0.028150 0.024846 0.384565\nv -0.009656 -0.137332 0.286507\nv -0.003555 -0.127817 0.292259\nv -0.019275 -0.128285 0.160307\nv -0.025266 -0.139394 0.163441\nv -0.030835 -0.138440 0.084140\nv -0.027167 -0.129418 0.083423\nv -0.014546 -0.116174 0.151110\nv -0.016556 -0.100125 0.099537\nv 0.000616 -0.088475 0.307266\nv -0.055438 -0.148539 0.090253\nv -0.082024 -0.154503 0.111565\nv -0.093644 -0.150820 0.128310\nv -0.088351 -0.126664 0.213361\nv -0.110637 -0.130822 0.117308\nv -0.102040 -0.139820 0.129054\nv -0.111738 -0.099701 0.147318\nv -0.115028 -0.080594 0.131717\nv -0.094530 -0.053779 0.255783\nv -0.082114 -0.034257 0.235755\nv -0.088141 -0.037441 0.158620\nv -0.048520 0.001001 0.310732\nv -0.055059 -0.008574 0.171083\nv -0.029322 0.019191 0.302710\nv -0.030512 0.023527 0.356223\nv -0.036651 0.008262 0.186608\nv -0.028055 0.032288 0.355730\nv -0.017094 0.024210 0.338455\nv -0.008830 -0.040328 0.187553\nv -0.013953 -0.040385 0.075029\nv -0.017048 -0.017708 0.132102\nv 0.000508 -0.018163 0.344929\nv -0.003840 0.005727 0.340981\nv -0.018297 0.001457 0.236474\nv -0.037882 -0.152057 -0.242005\nv -0.040669 -0.161205 -0.256898\nv -0.057116 -0.166689 -0.284544\nv -0.069652 -0.157673 -0.260599\nv -0.065414 -0.161427 -0.328355\nv -0.050478 -0.151869 -0.362085\nv -0.046382 -0.150334 -0.392344\nv -0.073431 -0.145028 -0.391494\nv -0.050252 -0.157175 -0.407238\nv -0.019115 -0.169589 -0.455001\nv -0.030720 -0.162869 -0.275609\nv -0.020265 -0.152830 -0.248653\nv -0.036110 -0.163621 -0.303175\nv -0.021143 -0.147508 -0.326711\nv -0.028261 -0.141674 -0.378304\nv -0.026424 -0.145308 -0.407461\nv -0.010979 -0.149606 -0.435003\nv -0.047322 -0.144762 -0.238505\nv -0.014277 -0.129779 -0.217008\nv -0.009356 -0.139078 -0.228223\nv -0.011926 -0.083359 -0.178873\nv -0.018427 -0.116340 -0.209203\nv -0.015093 -0.055972 -0.148055\nv -0.023292 -0.033790 -0.097404\nv -0.026155 -0.031507 -0.037315\nv -0.028330 -0.018400 0.024349\nv -0.021255 -0.025802 0.055876\nv -0.016891 -0.027745 0.075634\nv -0.015350 -0.141728 -0.357645\nv -0.220811 -0.269567 -0.219433\nv -0.216336 -0.266701 -0.218481\nv -0.224175 -0.266082 -0.229109\nv -0.213947 -0.262632 -0.226347\nv -0.232427 -0.210963 -0.241357\nv -0.229422 -0.182389 -0.241117\nv -0.222829 -0.177808 -0.230580\nv -0.237658 -0.153750 -0.254573\nv -0.250176 -0.150393 -0.257861\nv -0.225427 -0.162991 -0.240120\nv -0.221290 -0.158132 -0.233309\nv -0.250696 -0.180046 -0.242318\nv -0.235601 -0.248511 -0.229022\nv -0.240467 -0.204261 -0.241113\nv -0.233092 -0.263807 -0.218901\nv -0.229039 -0.264738 -0.215147\nv -0.238331 -0.245933 -0.223592\nv -0.249205 -0.187389 -0.224005\nv -0.255214 -0.148214 -0.223365\nv -0.237967 -0.148087 -0.221686\nv -0.228987 -0.158933 -0.224492\nv -0.217970 -0.211971 -0.222133\nv -0.222298 -0.212978 -0.216275\nv -0.226419 -0.246734 -0.214209\nv -0.240631 -0.194687 -0.217273\nv -0.253374 -0.128914 -0.220425\nv -0.223669 -0.148033 -0.221211\nv -0.277992 -0.097033 -0.223011\nv -0.308959 -0.079214 -0.224537\nv -0.295355 -0.055657 -0.215714\nv -0.262831 -0.097099 -0.214222\nv -0.245017 -0.129503 -0.213594\nv -0.319409 -0.075016 -0.237377\nv -0.239675 -0.119227 -0.210690\nv -0.229966 -0.138524 -0.215131\nv -0.221657 -0.121075 -0.223741\nv -0.351429 -0.045541 -0.202814\nv -0.372738 -0.033970 -0.197231\nv -0.395218 -0.055703 -0.150363\nv -0.367560 -0.040213 -0.139935\nv -0.387257 -0.083606 -0.114723\nv -0.370808 -0.027182 -0.162684\nv -0.384503 -0.037224 -0.185075\nv -0.369847 -0.026822 -0.178765\nv -0.382541 -0.085364 -0.102716\nv -0.357939 -0.066232 -0.110141\nv -0.354435 -0.071837 -0.095116\nv -0.351644 -0.032988 -0.191969\nv -0.342748 -0.047000 -0.203694\nv -0.334812 -0.056414 -0.214282\nv -0.349867 -0.066522 -0.087178\nv -0.028487 -0.001283 0.151829\nv -0.103329 -0.019900 0.084202\nv -0.080060 -0.006537 0.076588\nv -0.039263 -0.029265 -0.072656\nv -0.059899 -0.028520 -0.085429\nv -0.041044 -0.024439 -0.016753\nv -0.060019 -0.034665 -0.056942\nv -0.060572 -0.028482 -0.013705\nv -0.057850 -0.010090 0.037058\nv -0.048930 -0.010440 0.076730\nv -0.081902 -0.010416 0.040978\nv -0.032742 -0.039034 -0.175184\nv -0.033368 -0.028435 -0.117839\nv -0.050394 -0.009151 -0.142356\nv -0.043644 -0.024274 -0.171773\nv -0.043873 -0.063391 -0.201159\nv -0.121980 -0.153227 -0.360722\nv -0.118044 -0.151929 -0.329657\nv -0.122450 -0.143690 -0.295581\nv -0.090149 -0.155997 -0.294826\nv -0.098879 -0.142855 -0.268696\nv -0.111769 -0.142083 -0.282061\nv -0.083321 -0.140163 -0.250865\nv -0.087993 -0.082538 -0.230428\nv -0.073532 -0.051671 -0.208717\nv -0.069979 -0.011072 -0.166389\nv -0.083988 -0.023801 -0.185627\nv -0.126435 -0.033708 -0.195166\nv -0.105124 -0.058901 -0.220114\nv -0.155306 -0.005832 -0.156090\nv -0.099910 -0.119054 -0.256613\nv -0.109745 -0.085876 -0.252131\nv -0.127869 -0.107432 -0.262683\nv -0.144402 -0.138035 -0.293171\nv -0.155682 -0.156091 -0.330296\nv -0.177378 -0.156602 -0.313751\nv -0.220330 -0.167632 -0.324000\nv -0.243216 -0.137631 -0.299518\nv -0.241780 -0.170188 -0.319041\nv -0.203570 -0.132302 -0.290111\nv -0.235697 -0.130717 -0.284235\nv -0.252359 -0.130405 -0.288678\nv -0.232401 -0.135093 -0.268228\nv -0.222651 -0.120264 -0.268575\nv -0.261652 -0.130224 -0.281780\nv -0.322805 -0.029696 -0.230110\nv -0.320380 -0.067585 -0.221507\nv -0.318112 -0.050731 -0.213275\nv -0.318237 -0.008624 -0.200417\nv -0.255403 -0.025534 -0.207566\nv -0.284912 -0.001352 -0.205084\nv -0.307652 0.005919 -0.194081\nv -0.234321 -0.085147 -0.214299\nv -0.209346 -0.063517 -0.233108\nv -0.220298 -0.058540 -0.215150\nv -0.225679 -0.043625 -0.205406\nv -0.223657 -0.101676 -0.218273\nv -0.324006 0.008481 -0.179567\nv -0.326386 0.014472 -0.165409\nv -0.349751 -0.019298 -0.175806\nv -0.335580 0.000264 -0.158612\nv -0.350306 -0.019842 -0.160176\nv -0.348380 -0.027456 -0.145441\nv -0.329426 -0.031882 -0.123188\nv -0.351015 -0.045082 -0.125392\nv -0.327926 0.000735 -0.148286\nv -0.338297 -0.043742 -0.107557\nv -0.335250 -0.033594 -0.116841\nv -0.335608 -0.041382 -0.100424\nv -0.342000 -0.048482 -0.076448\nv -0.319485 -0.038995 -0.091766\nv -0.316584 -0.036727 -0.103544\nv -0.300132 -0.024834 -0.110170\nv -0.295171 -0.029362 -0.089411\nv -0.287356 -0.012676 -0.125553\nv -0.300825 -0.010535 -0.130225\nv -0.310270 0.010700 -0.154257\nv -0.292484 0.008531 -0.046324\nv -0.304712 -0.024684 -0.072971\nv -0.287966 0.024813 -0.027558\nv -0.274887 0.036426 -0.005917\nv -0.263687 0.029667 -0.038333\nv -0.265736 0.037500 0.008112\nv -0.230927 0.028980 -0.000435\nv -0.223521 0.007543 0.043852\nv -0.223987 0.017017 0.007588\nv -0.225626 0.027722 -0.026197\nv -0.213228 0.020388 -0.035292\nv -0.209739 0.017597 -0.011780\nv -0.219323 0.021851 -0.060300\nv -0.223193 0.023778 -0.037288\nv -0.235822 0.020760 -0.057090\nv -0.227972 0.003064 -0.084684\nv -0.264949 -0.019254 -0.088674\nv -0.275021 -0.022790 -0.106728\nv -0.253205 -0.023519 -0.125025\nv -0.241918 -0.027184 -0.111896\nv -0.290891 0.026194 -0.167028\nv -0.267560 0.012401 -0.159332\nv -0.234788 -0.026891 -0.132401\nv -0.238349 -0.022487 -0.163626\nv -0.220645 -0.030247 -0.138814\nv -0.221319 -0.021402 -0.120924\nv -0.207392 0.018049 -0.083290\nv -0.201224 0.013351 -0.059371\nv -0.195269 0.020494 -0.084271\nv -0.200307 -0.010615 -0.132435\nv -0.201224 0.001144 -0.129676\nv -0.191220 0.024582 -0.118718\nv -0.189384 0.029450 -0.102595\nv -0.179061 0.027120 -0.102544\nv -0.223128 -0.039409 -0.157949\nv -0.200344 -0.052086 -0.167767\nv -0.201782 -0.036381 -0.147656\nv -0.315703 0.012677 -0.172585\nv -0.279438 0.022670 -0.172334\nv -0.293617 0.020275 -0.181831\nv -0.224427 -0.028641 -0.174560\nv -0.233584 -0.016976 -0.185526\nv -0.250046 -0.012398 -0.197262\nv -0.176729 -0.017984 -0.153689\nv -0.155259 -0.030486 -0.191751\nv -0.191450 -0.048754 -0.169171\nv -0.171692 -0.043837 -0.198534\nv -0.191985 -0.055900 -0.181284\nv -0.202709 -0.052098 -0.198334\nv -0.189147 -0.042348 -0.213946\nv -0.160548 -0.043660 -0.210321\nv -0.150470 -0.051970 -0.227522\nv -0.181160 -0.043130 -0.221259\nv -0.176389 -0.055323 -0.242082\nv -0.204144 -0.052219 -0.214327\nv -0.193334 -0.044335 -0.227072\nv -0.202479 -0.073508 -0.248686\nv -0.127744 -0.065407 -0.241381\nv -0.198142 0.009033 -0.023644\nv -0.184429 -0.012590 -0.033848\nv -0.177098 -0.023873 -0.050968\nv -0.199030 -0.001865 0.024185\nv -0.208738 0.003824 0.050070\nv -0.166257 -0.056741 -0.047100\nv -0.168684 -0.078017 -0.017389\nv -0.158889 -0.062890 -0.047560\nv -0.179849 -0.031122 0.001713\nv -0.187627 -0.011876 0.012920\nv -0.185594 -0.006036 0.028811\nv -0.188678 0.009141 0.047912\nv -0.222503 0.035112 0.105662\nv -0.216580 0.035208 0.097519\nv -0.225623 0.035163 0.112087\nv -0.239387 0.041527 0.105448\nv -0.241852 0.028800 0.115500\nv -0.236382 0.037394 0.120535\nv -0.205164 0.034011 0.084260\nv -0.217535 -0.052450 0.098354\nv -0.193984 -0.021880 0.066483\nv -0.230209 0.002846 0.122573\nv -0.233017 -0.046354 0.118176\nv -0.215524 -0.134671 0.098409\nv -0.229744 -0.129496 0.113005\nv -0.220400 -0.122710 0.089525\nv -0.216610 -0.058312 0.089616\nv -0.203825 -0.146082 0.078351\nv -0.195789 -0.127745 0.065662\nv -0.200342 -0.172310 0.069633\nv -0.220484 -0.257921 0.094348\nv -0.201492 -0.271649 0.108868\nv -0.072388 -0.005016 -0.127665\nv -0.069517 -0.003897 -0.146839\nv -0.120627 -0.011577 -0.098868\nv -0.152967 0.002036 -0.116806\nv -0.084846 -0.045144 -0.064493\nv -0.125607 -0.031022 -0.076226\nv -0.155362 -0.024543 -0.070654\nv -0.158806 -0.011770 -0.094797\nv -0.146689 0.000418 -0.136703\nv -0.178542 0.014619 -0.135681\nv -0.173660 0.017605 -0.123041\nv -0.171179 0.003808 -0.081661\nv -0.174156 -0.017105 -0.061343\nv -0.081173 -0.050642 -0.041475\nv -0.102356 -0.052831 -0.060694\nv -0.109591 -0.083745 -0.037968\nv -0.138801 -0.082788 -0.044205\nv -0.127623 -0.080316 0.053612\nv -0.127667 -0.130738 0.048053\nv -0.130520 -0.100018 0.038226\nv -0.118262 -0.108050 0.025855\nv -0.117171 -0.064913 0.035288\nv -0.098485 -0.030330 0.046453\nv -0.119459 -0.040334 0.059804\nv -0.104639 -0.066910 0.013207\nv -0.090646 -0.031662 0.020929\nv -0.082323 -0.045554 -0.007801\nv -0.101269 -0.075598 -0.016434\nv -0.136316 -0.165625 0.037471\nv -0.134055 -0.193573 0.019974\nv -0.137083 -0.196273 0.007695\nv -0.115043 -0.166824 0.007631\nv -0.105917 -0.120037 0.001873\nv -0.105037 -0.130814 -0.014190\nv -0.118244 -0.168865 -0.001497\nv -0.165635 -0.117931 -0.005771\nv -0.177576 -0.020877 0.038950\nv -0.157107 -0.141530 -0.013344\nv -0.179671 -0.135001 0.040273\nv -0.168891 -0.145729 0.005408\nv -0.177262 -0.186860 0.019445\nv -0.167605 -0.182941 0.006132\nv -0.158452 -0.156582 -0.007397\nv -0.148341 -0.144109 -0.015669\nv -0.123574 -0.124496 -0.023386\nv -0.184559 -0.210256 0.029950\nv -0.064350 -0.310746 0.332478\nv -0.049798 -0.314153 0.341200\nv -0.042727 -0.316781 0.348747\nv -0.034288 -0.311907 0.352440\nv -0.077651 -0.319849 0.325486\nv -0.009524 -0.316070 0.358152\nv -0.126850 -0.091913 0.082256\nv -0.133473 -0.092313 0.071096\nv -0.130789 -0.119659 0.070988\nv -0.136589 -0.179526 0.110737\nv -0.152664 -0.177726 0.096368\nv -0.066718 -0.172564 0.132838\nv -0.099020 -0.156407 0.119579\nv -0.123872 -0.135347 0.077404\nv -0.135417 -0.156578 0.105321\nv -0.108944 -0.146376 0.117475\nv -0.063395 -0.165824 0.121094\nv -0.054498 -0.165251 0.107324\nv -0.041858 -0.158334 0.093606\nv -0.015602 -0.152308 0.093600\nv -0.023555 -0.128026 0.065874\nv -0.015610 -0.100961 0.069149\nv -0.011866 -0.072200 0.070389\nv -0.080006 -0.320646 0.334630\nv -0.085390 -0.310121 0.330341\nv -0.094589 -0.302789 0.317359\nv -0.118431 -0.305987 0.311694\nv -0.097162 -0.306888 0.294614\nv -0.135858 -0.293464 0.234799\nv -0.064089 -0.308247 0.348433\nv -0.012493 -0.315752 0.369612\nv -0.030777 -0.306880 0.395986\nv -0.059568 -0.312124 0.361773\nv -0.181579 -0.287933 0.157443\nv -0.207403 -0.265074 0.078594\nv -0.182622 -0.245949 0.035698\nv -0.159830 -0.207333 0.017016\nv -0.132581 -0.161869 -0.006195\nv 0.000517 0.029098 0.389168\nvt 0.965130 0.377155\nvt 0.966513 0.376090\nvt 0.966977 0.376532\nvt 0.582676 0.961532\nvt 0.582190 0.959856\nvt 0.582613 0.959932\nvt 0.582648 0.959809\nvt 0.582676 0.959702\nvt 0.966126 0.375903\nvt 0.966171 0.375783\nvt 0.964382 0.380468\nvt 0.965857 0.350405\nvt 0.967740 0.350995\nvt 0.967282 0.351444\nvt 0.577775 0.959702\nvt 0.577709 0.961316\nvt 0.577288 0.961397\nvt 0.577746 0.961439\nvt 0.577775 0.961546\nvt 0.966946 0.351758\nvt 0.966899 0.351639\nvt 0.964980 0.347106\nvt 0.577343 0.983349\nvt 0.579000 0.971384\nvt 0.581487 0.977343\nvt 0.769431 0.277433\nvt 0.767763 0.286603\nvt 0.767468 0.279200\nvt 0.969162 0.679830\nvt 0.971679 0.682852\nvt 0.970587 0.685393\nvt 0.575173 0.985671\nvt 0.574138 0.983356\nvt 0.970483 0.667732\nvt 0.972965 0.670883\nvt 0.902720 0.959249\nvt 0.904193 0.964020\nvt 0.900954 0.961196\nvt 0.969741 0.655404\nvt 0.972380 0.643677\nvt 0.973411 0.647113\nvt 0.770226 0.300857\nvt 0.767792 0.292357\nvt 0.772016 0.294372\nvt 0.981848 0.584859\nvt 0.981054 0.589557\nvt 0.978352 0.583582\nvt 0.970470 0.646694\nvt 0.969064 0.640718\nvt 0.968806 0.060978\nvt 0.965801 0.061873\nvt 0.966713 0.055204\nvt 0.972177 0.655291\nvt 0.906828 0.924853\nvt 0.905082 0.930941\nvt 0.905062 0.926881\nvt 0.967547 0.073322\nvt 0.963757 0.087352\nvt 0.964927 0.073947\nvt 0.965904 0.068737\nvt 0.907828 0.925759\nvt 0.907526 0.930750\nvt 0.909428 0.926705\nvt 0.966548 0.086367\nvt 0.964132 0.098420\nvt 0.769929 0.292105\nvt 0.902101 0.952932\nvt 0.905329 0.954539\nvt 0.968608 0.068119\nvt 0.771936 0.285922\nvt 0.905940 0.961594\nvt 0.773228 0.300663\nvt 0.574919 0.962278\nvt 0.577730 0.961669\nvt 0.905146 0.941399\nvt 0.899592 0.943228\nvt 0.899495 0.952344\nvt 0.897479 0.951072\nvt 0.909426 0.955461\nvt 0.910370 0.943051\nvt 0.763335 0.292567\nvt 0.775946 0.297790\nvt 0.774415 0.304061\nvt 0.768355 0.308563\nvt 0.573614 0.972530\nvt 0.101962 0.998040\nvt 0.099876 0.998246\nvt 0.100500 0.990987\nvt 0.969312 0.054281\nvt 0.974358 0.655046\nvt 0.575580 0.986853\nvt 0.576749 0.986513\nvt 0.979585 0.591402\nvt 0.977462 0.589481\nvt 0.773237 0.292965\nvt 0.764733 0.284388\nvt 0.962375 0.074197\nvt 0.967258 0.666107\nvt 0.982584 0.580083\nvt 0.980529 0.580290\nvt 0.961098 0.063023\nvt 0.908711 0.961940\nvt 0.966652 0.656878\nvt 0.962064 0.094453\nvt 0.961901 0.083936\nvt 0.101325 0.989299\nvt 0.101124 0.988933\nvt 0.766115 0.309474\nvt 0.763631 0.303338\nvt 0.968870 0.651707\nvt 0.960066 0.072745\nvt 0.966521 0.641763\nvt 0.966110 0.645816\nvt 0.975605 0.582306\nvt 0.972936 0.685340\nvt 0.578009 0.985623\nvt 0.265823 0.954281\nvt 0.266872 0.955592\nvt 0.265851 0.956409\nvt 0.935213 0.973986\nvt 0.940366 0.973631\nvt 0.940181 0.976777\nvt 0.689212 0.952689\nvt 0.690256 0.963133\nvt 0.686429 0.952149\nvt 0.982932 0.305351\nvt 0.986828 0.301895\nvt 0.988475 0.304621\nvt 0.241010 0.941509\nvt 0.240787 0.934028\nvt 0.242868 0.934951\nvt 0.240555 0.946425\nvt 0.238705 0.955463\nvt 0.238368 0.946824\nvt 0.685117 0.924941\nvt 0.686566 0.923827\nvt 0.686221 0.930366\nvt 0.234967 0.973383\nvt 0.237689 0.973711\nvt 0.236625 0.975612\nvt 0.266990 0.962534\nvt 0.269139 0.968403\nvt 0.267716 0.968208\nvt 0.688763 0.927728\nvt 0.938705 0.987609\nvt 0.940860 0.991288\nvt 0.936413 0.989838\nvt 0.934341 0.987889\nvt 0.942781 0.991380\nvt 0.941130 0.987548\nvt 0.969776 0.725845\nvt 0.970572 0.711562\nvt 0.972320 0.721020\nvt 0.687445 0.947018\nvt 0.268990 0.952488\nvt 0.691495 0.927104\nvt 0.238595 0.941318\nvt 0.971279 0.725430\nvt 0.134803 0.963222\nvt 0.132492 0.976754\nvt 0.130685 0.974013\nvt 0.933700 0.980520\nvt 0.934990 0.982807\nvt 0.968950 0.698127\nvt 0.972693 0.712678\nvt 0.687869 0.937489\nvt 0.684876 0.942643\nvt 0.687629 0.964239\nvt 0.968624 0.737062\nvt 0.697988 0.956447\nvt 0.700761 0.958961\nvt 0.696956 0.960064\nvt 0.988526 0.563272\nvt 0.992364 0.570515\nvt 0.984141 0.567370\nvt 0.985322 0.571682\nvt 0.985993 0.575222\nvt 0.235271 0.942069\nvt 0.236231 0.932439\nvt 0.970730 0.737976\nvt 0.982997 0.307820\nvt 0.991654 0.306699\nvt 0.267693 0.951380\nvt 0.689778 0.923837\nvt 0.973788 0.729547\nvt 0.612961 0.973304\nvt 0.612986 0.978811\nvt 0.609849 0.974446\nvt 0.995035 0.575887\nvt 0.235135 0.947336\nvt 0.234341 0.950177\nvt 0.235058 0.974932\nvt 0.692953 0.936418\nvt 0.698783 0.948875\nvt 0.694839 0.950587\nvt 0.237310 0.955249\nvt 0.236976 0.965137\nvt 0.234555 0.955621\nvt 0.138404 0.955655\nvt 0.139449 0.967512\nvt 0.139025 0.978426\nvt 0.700842 0.954409\nvt 0.695273 0.952747\nvt 0.992262 0.563697\nvt 0.137106 0.955589\nvt 0.994597 0.561248\nvt 0.990907 0.560943\nvt 0.993517 0.560187\nvt 0.233535 0.941859\nvt 0.973822 0.705143\nvt 0.971006 0.696984\nvt 0.141697 0.955857\nvt 0.940158 0.980714\nvt 0.937984 0.983361\nvt 0.973380 0.724480\nvt 0.975754 0.725470\nvt 0.143184 0.966458\nvt 0.609830 0.979970\nvt 0.685093 0.964110\nvt 0.684295 0.955277\nvt 0.991649 0.303886\nvt 0.264492 0.953503\nvt 0.266126 0.950746\nvt 0.991673 0.292820\nvt 0.991409 0.298302\nvt 0.986766 0.294175\nvt 0.969601 0.696249\nvt 0.238980 0.970790\nvt 0.973389 0.739377\nvt 0.234802 0.965008\nvt 0.986393 0.576837\nvt 0.687871 0.922631\nvt 0.975212 0.714481\nvt 0.990582 0.288916\nvt 0.987799 0.289438\nvt 0.943407 0.983963\nvt 0.944415 0.983834\nvt 0.933546 0.976362\nvt 0.697716 0.943833\nvt 0.685302 0.922685\nvt 0.240660 0.961856\nvt 0.130507 0.976289\nvt 0.944123 0.979356\nvt 0.981291 0.200585\nvt 0.984596 0.198660\nvt 0.987837 0.200117\nvt 0.984320 0.205303\nvt 0.980611 0.207317\nvt 0.992058 0.545255\nvt 0.987322 0.545396\nvt 0.990514 0.542863\nvt 0.932578 0.960665\nvt 0.932134 0.959874\nvt 0.932578 0.958483\nvt 0.968590 0.119712\nvt 0.968226 0.129221\nvt 0.967063 0.120304\nvt 0.966578 0.149662\nvt 0.968475 0.147472\nvt 0.967472 0.150319\nvt 0.990314 0.206486\nvt 0.991568 0.204332\nvt 0.991867 0.207776\nvt 0.967079 0.043287\nvt 0.965368 0.042405\nvt 0.968478 0.031153\nvt 0.969241 0.014952\nvt 0.968601 0.003048\nvt 0.971566 0.017095\nvt 0.958140 0.543711\nvt 0.962097 0.542692\nvt 0.961323 0.554352\nvt 0.993670 0.559080\nvt 0.984762 0.559565\nvt 0.992649 0.557496\nvt 0.985737 0.277177\nvt 0.986769 0.270212\nvt 0.988659 0.274460\nvt 0.992207 0.272946\nvt 0.987993 0.268620\nvt 0.991155 0.268660\nvt 0.986691 0.215947\nvt 0.989169 0.217726\nvt 0.985885 0.217750\nvt 0.970455 0.026330\nvt 0.969818 0.119485\nvt 0.962604 0.560198\nvt 0.963795 0.554957\nvt 0.961433 0.584960\nvt 0.960661 0.582062\nvt 0.962376 0.584296\nvt 0.956830 0.582452\nvt 0.956192 0.578381\nvt 0.991420 0.287276\nvt 0.986916 0.282549\nvt 0.991919 0.285624\nvt 0.969949 0.107533\nvt 0.969186 0.114190\nvt 0.966876 0.114571\nvt 0.983191 0.285062\nvt 0.987816 0.285024\nvt 0.961424 0.569988\nvt 0.964642 0.565718\nvt 0.952723 0.550961\nvt 0.948853 0.546122\nvt 0.953458 0.545493\nvt 0.988784 0.220677\nvt 0.990645 0.218503\nvt 0.990645 0.222679\nvt 0.964530 0.542519\nvt 0.971888 0.034891\nvt 0.973111 0.045172\nvt 0.970313 0.045276\nvt 0.983235 0.288014\nvt 0.963288 0.115754\nvt 0.962338 0.106384\nvt 0.989372 0.277379\nvt 0.986753 0.208225\nvt 0.987595 0.203219\nvt 0.954527 0.555285\nvt 0.962835 0.124219\nvt 0.964294 0.121479\nvt 0.511612 0.942203\nvt 0.511844 0.953619\nvt 0.507115 0.941170\nvt 0.991428 0.552380\nvt 0.966766 0.129103\nvt 0.967035 0.139378\nvt 0.963813 0.130014\nvt 0.955729 0.570581\nvt 0.949985 0.557049\nvt 0.514647 0.965682\nvt 0.517170 0.957620\nvt 0.518601 0.942992\nvt 0.970544 0.030265\nvt 0.974183 0.031171\nvt 0.969758 0.000390\nvt 0.971851 0.002965\nvt 0.974042 0.018566\nvt 0.961127 0.115522\nvt 0.988200 0.213519\nvt 0.983966 0.211027\nvt 0.510176 0.965852\nvt 0.962227 0.120393\nvt 0.948054 0.550442\nvt 0.507516 0.952147\nvt 0.980902 0.212491\nvt 0.982235 0.215612\nvt 0.190733 0.994931\nvt 0.190451 0.989710\nvt 0.191094 0.990058\nvt 0.250564 0.992416\nvt 0.250426 0.989471\nvt 0.251451 0.989360\nvt 0.966069 0.106021\nvt 0.958448 0.585164\nvt 0.988859 0.281292\nvt 0.991801 0.283049\nvt 0.251460 0.992957\nvt 0.969509 0.142727\nvt 0.964494 0.139609\nvt 0.965009 0.148402\nvt 0.253414 0.989294\nvt 0.252971 0.993979\nvt 0.987609 0.198392\nvt 0.964782 0.551823\nvt 0.506016 0.941492\nvt 0.975150 0.024721\nvt 0.520454 0.946180\nvt 0.951524 0.568721\nvt 0.990290 0.210694\nvt 0.725882 0.311958\nvt 0.728024 0.310235\nvt 0.728024 0.313022\nvt 0.993385 0.543555\nvt 0.520157 0.943126\nvt 0.984161 0.552577\nvt 0.985971 0.335400\nvt 0.982821 0.332083\nvt 0.982695 0.323506\nvt 0.306992 0.962822\nvt 0.305610 0.962946\nvt 0.303470 0.952425\nvt 0.968404 0.919978\nvt 0.966637 0.929344\nvt 0.964979 0.926976\nvt 0.988475 0.337326\nvt 0.989128 0.334810\nvt 0.962794 0.915807\nvt 0.964298 0.911820\nvt 0.959443 0.772620\nvt 0.958878 0.769231\nvt 0.961664 0.768080\nvt 0.963856 0.899489\nvt 0.959858 0.891673\nvt 0.961393 0.887420\nvt 0.303814 0.938017\nvt 0.306530 0.944171\nvt 0.302638 0.946752\nvt 0.878002 0.993053\nvt 0.874315 0.993168\nvt 0.878700 0.988313\nvt 0.963104 0.891359\nvt 0.963981 0.884677\nvt 0.959828 0.821817\nvt 0.962502 0.816072\nvt 0.962791 0.822800\nvt 0.961545 0.899655\nvt 0.965804 0.861352\nvt 0.965000 0.859680\nvt 0.966517 0.858610\nvt 0.960831 0.834184\nvt 0.963292 0.834897\nvt 0.964591 0.848546\nvt 0.962317 0.829674\nvt 0.960395 0.806223\nvt 0.958278 0.800831\nvt 0.960608 0.801232\nvt 0.961916 0.805704\nvt 0.304794 0.946700\nvt 0.961409 0.777514\nvt 0.957959 0.778785\nvt 0.959654 0.828150\nvt 0.306724 0.954213\nvt 0.963043 0.770632\nvt 0.306816 0.937789\nvt 0.986477 0.313518\nvt 0.982722 0.313271\nvt 0.959503 0.790470\nvt 0.966926 0.843630\nvt 0.965957 0.835209\nvt 0.969056 0.835278\nvt 0.965833 0.777046\nvt 0.966054 0.792491\nvt 0.298162 0.946532\nvt 0.959394 0.807048\nvt 0.309960 0.940229\nvt 0.307528 0.934253\nvt 0.300860 0.930660\nvt 0.988202 0.323637\nvt 0.984829 0.340108\nvt 0.983510 0.347845\nvt 0.982342 0.340023\nvt 0.303294 0.930656\nvt 0.967709 0.781815\nvt 0.988335 0.338530\nvt 0.987118 0.338417\nvt 0.956028 0.778064\nvt 0.955114 0.790005\nvt 0.875321 0.987272\nvt 0.877928 0.986115\nvt 0.980258 0.313640\nvt 0.301001 0.954688\nvt 0.967583 0.909833\nvt 0.877991 0.997744\nvt 0.875408 0.997037\nvt 0.957346 0.772384\nvt 0.967878 0.824050\nvt 0.966015 0.770593\nvt 0.967163 0.900317\nvt 0.984457 0.349483\nvt 0.984273 0.349844\nvt 0.969070 0.891750\nvt 0.297609 0.937552\nvt 0.968761 0.833654\nvt 0.963526 0.853907\nvt 0.966996 0.885602\nvt 0.966466 0.818115\nvt 0.959593 0.896990\nvt 0.964233 0.929657\nvt 0.989202 0.318049\nvt 0.989506 0.323416\nvt 0.585949 0.989857\nvt 0.590952 0.986910\nvt 0.591199 0.990081\nvt 0.555830 0.954471\nvt 0.558489 0.953599\nvt 0.555642 0.964928\nvt 0.983727 0.743634\nvt 0.988990 0.744163\nvt 0.987346 0.746890\nvt 0.967224 0.966754\nvt 0.968454 0.973091\nvt 0.966275 0.973867\nvt 0.967166 0.961512\nvt 0.965206 0.960860\nvt 0.966356 0.952280\nvt 0.557137 0.925512\nvt 0.556983 0.932065\nvt 0.555978 0.925586\nvt 0.963800 0.932737\nvt 0.965265 0.932281\nvt 0.966405 0.933991\nvt 0.964794 0.168136\nvt 0.960756 0.161302\nvt 0.960466 0.157393\nvt 0.969686 0.571921\nvt 0.971562 0.569243\nvt 0.968967 0.581790\nvt 0.554218 0.929710\nvt 0.589268 0.976000\nvt 0.586930 0.973811\nvt 0.590988 0.972359\nvt 0.584898 0.975825\nvt 0.593222 0.972210\nvt 0.591675 0.976050\nvt 0.968512 0.556009\nvt 0.970791 0.560927\nvt 0.557211 0.948665\nvt 0.961878 0.590763\nvt 0.960042 0.590433\nvt 0.962319 0.586538\nvt 0.551192 0.929474\nvt 0.965057 0.966371\nvt 0.969624 0.556545\nvt 0.962221 0.154649\nvt 0.585639 0.980956\nvt 0.584400 0.983283\nvt 0.556040 0.939285\nvt 0.559289 0.944107\nvt 0.558258 0.964973\nvt 0.966399 0.544969\nvt 0.547160 0.959176\nvt 0.548496 0.962637\nvt 0.544389 0.961959\nvt 0.216520 0.981164\nvt 0.221670 0.984692\nvt 0.214043 0.988869\nvt 0.221315 0.989196\nvt 0.221330 0.992888\nvt 0.961656 0.965307\nvt 0.961543 0.974963\nvt 0.968321 0.544045\nvt 0.959380 0.965442\nvt 0.958914 0.973214\nvt 0.961045 0.586579\nvt 0.552468 0.926202\nvt 0.971983 0.552418\nvt 0.900114 0.221109\nvt 0.899742 0.215660\nvt 0.905329 0.218919\nvt 0.212440 0.994784\nvt 0.961805 0.960036\nvt 0.961316 0.957137\nvt 0.550725 0.938792\nvt 0.549950 0.953027\nvt 0.545492 0.951713\nvt 0.964957 0.952375\nvt 0.965172 0.942478\nvt 0.962029 0.951740\nvt 0.968085 0.175651\nvt 0.969395 0.163885\nvt 0.906132 0.222027\nvt 0.549699 0.955215\nvt 0.543949 0.957466\nvt 0.212872 0.982076\nvt 0.968763 0.152938\nvt 0.973348 0.579296\nvt 0.971100 0.584926\nvt 0.971939 0.175236\nvt 0.590797 0.983069\nvt 0.588596 0.980391\nvt 0.971883 0.557433\nvt 0.974479 0.556263\nvt 0.972472 0.162687\nvt 0.906486 0.213810\nvt 0.971384 0.542507\nvt 0.974397 0.543159\nvt 0.992154 0.742117\nvt 0.992160 0.744926\nvt 0.959272 0.586761\nvt 0.958340 0.589704\nvt 0.992183 0.756070\nvt 0.987283 0.754668\nvt 0.991553 0.750870\nvt 0.969637 0.585594\nvt 0.983443 0.741217\nvt 0.967198 0.936912\nvt 0.962674 0.942234\nvt 0.221111 0.995455\nvt 0.559469 0.956582\nvt 0.213909 0.979369\nvt 0.211096 0.980315\nvt 0.553682 0.924815\nvt 0.975395 0.562469\nvt 0.974389 0.567303\nvt 0.991095 0.759981\nvt 0.988054 0.759567\nvt 0.593931 0.979838\nvt 0.594925 0.979983\nvt 0.584341 0.987449\nvt 0.546857 0.940615\nvt 0.557016 0.924298\nvt 0.960256 0.155122\nvt 0.962780 0.934659\nvt 0.594548 0.984549\nvt 0.981480 0.123307\nvt 0.988022 0.123692\nvt 0.984815 0.125188\nvt 0.984410 0.118572\nvt 0.980677 0.116583\nvt 0.991505 0.532441\nvt 0.989743 0.534568\nvt 0.986736 0.532045\nvt 0.949516 0.527242\nvt 0.950950 0.528101\nvt 0.948392 0.532428\nvt 0.966066 0.430852\nvt 0.967598 0.431298\nvt 0.967342 0.440274\nvt 0.971639 0.460456\nvt 0.970878 0.461194\nvt 0.969447 0.458508\nvt 0.250155 0.975724\nvt 0.247078 0.979857\nvt 0.248215 0.974435\nvt 0.969250 0.240704\nvt 0.967699 0.239486\nvt 0.971222 0.226157\nvt 0.992094 0.520065\nvt 0.984146 0.517250\nvt 0.993138 0.518456\nvt 0.959708 0.540946\nvt 0.962664 0.530184\nvt 0.963686 0.541738\nvt 0.249954 0.982592\nvt 0.248673 0.987246\nvt 0.253499 0.984140\nvt 0.252449 0.988425\nvt 0.986618 0.107771\nvt 0.985775 0.105998\nvt 0.989047 0.106002\nvt 0.969207 0.253822\nvt 0.967817 0.248900\nvt 0.965173 0.430773\nvt 0.963878 0.524306\nvt 0.964953 0.529514\nvt 0.968428 0.223618\nvt 0.970284 0.223174\nvt 0.967001 0.227369\nvt 0.961319 0.502650\nvt 0.956817 0.506639\nvt 0.956863 0.503097\nvt 0.252714 0.969733\nvt 0.253214 0.971389\nvt 0.964250 0.418570\nvt 0.967092 0.425576\nvt 0.964940 0.425395\nvt 0.244389 0.971897\nvt 0.249114 0.971958\nvt 0.962517 0.514636\nvt 0.964740 0.513178\nvt 0.954041 0.534027\nvt 0.954856 0.539421\nvt 0.949290 0.538906\nvt 0.982940 0.527802\nvt 0.983548 0.524585\nvt 0.970436 0.266187\nvt 0.967483 0.266811\nvt 0.965524 0.542035\nvt 0.965549 0.257251\nvt 0.963073 0.267268\nvt 0.244567 0.969168\nvt 0.973204 0.425965\nvt 0.971308 0.417065\nvt 0.973999 0.418449\nvt 0.970869 0.426409\nvt 0.250664 0.979694\nvt 0.990326 0.117467\nvt 0.987722 0.120600\nvt 0.986766 0.115684\nvt 0.955790 0.529630\nvt 0.972332 0.434430\nvt 0.970583 0.432200\nvt 0.266325 0.972902\nvt 0.264236 0.972467\nvt 0.266325 0.968599\nvt 0.990879 0.525278\nvt 0.968695 0.440029\nvt 0.969797 0.450273\nvt 0.971887 0.440648\nvt 0.956699 0.514349\nvt 0.090067 0.958114\nvt 0.086773 0.950138\nvt 0.091709 0.945707\nvt 0.090832 0.934339\nvt 0.083924 0.935712\nvt 0.963292 0.253288\nvt 0.967243 0.252798\nvt 0.964423 0.241606\nvt 0.988156 0.110224\nvt 0.983964 0.112808\nvt 0.094281 0.958696\nvt 0.972687 0.430919\nvt 0.096156 0.944289\nvt 0.095263 0.932926\nvt 0.980885 0.111363\nvt 0.982167 0.108196\nvt 0.296337 0.696496\nvt 0.295644 0.693685\nvt 0.296337 0.692021\nvt 0.985935 0.340599\nvt 0.986721 0.343635\nvt 0.985717 0.343543\nvt 0.966484 0.267960\nvt 0.967951 0.416731\nvt 0.958797 0.499662\nvt 0.961890 0.499709\nvt 0.253095 0.973985\nvt 0.986840 0.340068\nvt 0.967801 0.453846\nvt 0.972494 0.449914\nvt 0.973105 0.459051\nvt 0.988600 0.343812\nvt 0.988401 0.339171\nvt 0.987822 0.125436\nvt 0.271995 0.991247\nvt 0.272876 0.998153\nvt 0.270434 0.996697\nvt 0.963146 0.245299\nvt 0.082389 0.939037\nvt 0.991834 0.116225\nvt 0.951469 0.516496\nvt 0.990231 0.113239\nvt 0.992829 0.534138\nvt 0.082395 0.935974\nvt 0.080573 0.970181\nvt 0.077745 0.974652\nvt 0.075822 0.972877\nvt 0.074032 0.967854\nvt 0.077463 0.968593\nvt 0.986867 0.129791\nvt 0.986537 0.135792\nvt 0.985293 0.133006\nvt 0.983602 0.126469\nvt 0.982603 0.129476\nvt 0.980906 0.128015\nvt 0.835242 0.991908\nvt 0.824380 0.991403\nvt 0.834352 0.990326\nvt 0.271284 0.944417\nvt 0.269798 0.934887\nvt 0.271343 0.933838\nvt 0.697872 0.980497\nvt 0.695535 0.983392\nvt 0.695795 0.973536\nvt 0.074810 0.958545\nvt 0.078070 0.957029\nvt 0.079444 0.959365\nvt 0.990617 0.144205\nvt 0.986713 0.144654\nvt 0.991268 0.140851\nvt 0.969067 0.202186\nvt 0.966063 0.206608\nvt 0.966576 0.202743\nvt 0.948208 0.301893\nvt 0.946449 0.309024\nvt 0.945685 0.303912\nvt 0.273562 0.946883\nvt 0.272130 0.946642\nvt 0.968133 0.197367\nvt 0.374033 0.987190\nvt 0.373664 0.988437\nvt 0.370506 0.989030\nvt 0.081267 0.973869\nvt 0.276157 0.948643\nvt 0.275990 0.954594\nvt 0.963918 0.181139\nvt 0.960496 0.179750\nvt 0.962024 0.178538\nvt 0.691739 0.975142\nvt 0.692366 0.967158\nvt 0.695192 0.968200\nvt 0.765114 0.995915\nvt 0.762668 0.996715\nvt 0.762894 0.992824\nvt 0.074576 0.961733\nvt 0.073490 0.961562\nvt 0.984495 0.140975\nvt 0.985441 0.143931\nvt 0.958059 0.105236\nvt 0.957042 0.105236\nvt 0.957631 0.102847\nvt 0.291079 0.679564\nvt 0.292175 0.675037\nvt 0.292175 0.682822\nvt 0.697236 0.973042\nvt 0.946770 0.300937\nvt 0.944825 0.303663\nvt 0.068940 0.967840\nvt 0.824283 0.993797\nvt 0.990521 0.128323\nvt 0.966986 0.217387\nvt 0.963622 0.219030\nvt 0.961170 0.211727\nvt 0.275943 0.939918\nvt 0.078891 0.965246\nvt 0.081623 0.964518\nvt 0.963914 0.202551\nvt 0.964744 0.196792\nvt 0.279313 0.956649\nvt 0.276400 0.960609\nvt 0.989320 0.080830\nvt 0.983563 0.087745\nvt 0.982408 0.078522\nvt 0.947659 0.312810\nvt 0.953533 0.302174\nvt 0.953565 0.311096\nvt 0.954717 0.299985\nvt 0.948190 0.296926\nvt 0.962498 0.192498\nvt 0.964712 0.187116\nvt 0.967459 0.194039\nvt 0.761763 0.993076\nvt 0.765502 0.988438\nvt 0.989619 0.135617\nvt 0.987434 0.138667\nvt 0.958787 0.210563\nvt 0.962050 0.201976\nvt 0.960578 0.187685\nvt 0.068655 0.972618\nvt 0.064179 0.968879\nvt 0.955903 0.312168\nvt 0.372687 0.998151\nvt 0.370082 0.996131\nvt 0.372099 0.995686\nvt 0.958384 0.303533\nvt 0.081651 0.971515\nvt 0.827954 0.995063\nvt 0.993360 0.085389\nvt 0.991960 0.085320\nvt 0.944787 0.298796\nvt 0.688928 0.973468\nvt 0.760820 0.996807\nvt 0.760355 0.993862\nvt 0.685045 0.978704\nvt 0.960081 0.206557\nvt 0.696196 0.965960\nvt 0.991536 0.130989\nvt 0.274638 0.972220\nvt 0.274452 0.968410\nvt 0.275899 0.971953\nvt 0.277859 0.966020\nvt 0.986487 0.074772\nvt 0.077381 0.956209\nvt 0.684163 0.981092\nvt 0.688088 0.984338\nvt 0.076546 0.964617\nvt 0.960422 0.217671\nvt 0.693334 0.965022\nvt 0.985841 0.088104\nvt 0.959539 0.301472\nvt 0.075937 0.974091\nvt 0.958219 0.293802\nvt 0.960045 0.293774\nvt 0.278746 0.946707\nvt 0.993756 0.089424\nvt 0.064838 0.972307\nvt 0.945240 0.307728\nvt 0.958138 0.311350\nvt 0.959954 0.204780\nvt 0.969047 0.216275\nvt 0.835351 0.983050\nvt 0.830367 0.986087\nvt 0.991250 0.136193\nvt 0.272258 0.675297\nvt 0.272947 0.672145\nvt 0.272947 0.675689\nvt 0.981244 0.088751\nvt 0.275742 0.932757\nvt 0.991762 0.088332\nvt 0.275791 0.931730\nvt 0.279523 0.932743\nvt 0.969811 0.199604\nvt 0.277709 0.969110\nvt 0.993795 0.609283\nvt 0.994128 0.607623\nvt 0.995674 0.606832\nvt 0.862476 0.591213\nvt 0.864815 0.586309\nvt 0.864611 0.590447\nvt 0.991852 0.849394\nvt 0.989621 0.851723\nvt 0.990238 0.846977\nvt 0.977000 0.201456\nvt 0.973166 0.213722\nvt 0.975027 0.201232\nvt 0.980482 0.844875\nvt 0.981458 0.840248\nvt 0.983366 0.842416\nvt 0.976501 0.191022\nvt 0.975100 0.190966\nvt 0.974004 0.189564\nvt 0.002398 0.987838\nvt 0.001463 0.986848\nvt 0.003285 0.985405\nvt 0.001143 0.977862\nvt 0.002125 0.974020\nvt 0.004224 0.973612\nvt 0.231029 0.945211\nvt 0.229880 0.947904\nvt 0.228096 0.944217\nvt 0.988311 0.901592\nvt 0.986605 0.906418\nvt 0.986468 0.900391\nvt 0.983329 0.893081\nvt 0.984574 0.885903\nvt 0.987226 0.887854\nvt 0.854636 0.995741\nvt 0.858120 0.996179\nvt 0.855718 0.997306\nvt 0.228890 0.952977\nvt 0.849412 0.984969\nvt 0.851709 0.981923\nvt 0.851081 0.987798\nvt 0.984018 0.847274\nvt 0.984272 0.850254\nvt 0.981439 0.847446\nvt 0.316412 0.991794\nvt 0.314772 0.992491\nvt 0.314226 0.982919\nvt 0.973792 0.180986\nvt 0.006653 0.984712\nvt 0.228096 0.967151\nvt 0.223860 0.967568\nvt 0.225687 0.960433\nvt 0.011867 0.988619\nvt 0.995991 0.610316\nvt 0.995003 0.612068\nvt 0.994996 0.609245\nvt 0.981230 0.905083\nvt 0.980356 0.902718\nvt 0.983952 0.906390\nvt 0.978501 0.184464\nvt 0.977946 0.192240\nvt 0.979682 0.191261\nvt 0.979323 0.198807\nvt 0.972466 0.200556\nvt 0.970934 0.192438\nvt 0.971015 0.183247\nvt 0.970233 0.190052\nvt 0.319046 0.992294\nvt 0.986847 0.844429\nvt 0.986920 0.851424\nvt 0.004503 0.979369\nvt 0.000797 0.981602\nvt 0.859208 0.590783\nvt 0.859254 0.584360\nvt 0.974726 0.214797\nvt 0.987856 0.885213\nvt 0.982032 0.900748\nvt 0.223301 0.953555\nvt 0.225421 0.946659\nvt 0.226400 0.951157\nvt 0.225360 0.939899\nvt 0.227409 0.933653\nvt 0.228903 0.962882\nvt 0.232866 0.953879\nvt 0.232722 0.965815\nvt 0.989441 0.844157\nvt 0.225499 0.944163\nvt 0.313058 0.994779\nvt 0.311555 0.987231\nvt 0.993634 0.611901\nvt 0.222723 0.957500\nvt 0.973603 0.215586\nvt 0.011862 0.986604\nvt 0.975692 0.179611\nvt 0.977907 0.178389\nvt 0.857354 0.986124\nvt 0.855047 0.986005\nvt 0.987623 0.841402\nvt 0.008302 0.979911\nvt 0.231681 0.951911\nvt 0.230824 0.966540\nvt 0.979367 0.897342\nvt 0.986381 0.884351\nvt 0.316870 0.983269\nvt 0.918285 0.585332\nvt 0.921419 0.582240\nvt 0.922808 0.583414\nvt 0.921937 0.585253\nvt 0.921488 0.588385\nvt 0.924032 0.591599\nvt 0.919461 0.588733\nvt 0.851425 0.991426\nvt 0.012689 0.982238\nvt 0.295542 0.704599\nvt 0.296337 0.703948\nvt 0.296337 0.707454\nvt 0.006509 0.973962\nvt 0.008037 0.976651\nvt 0.988626 0.907018\nvt 0.225128 0.933938\nvt 0.863470 0.584025\nvt 0.272926 0.679347\nvt 0.272258 0.679050\nvt 0.272926 0.675689\nvt 0.233035 0.947336\nvt 0.849068 0.987476\nvt 0.322313 0.994254\nvt 0.321186 0.988321\nvt 0.988890 0.916503\nvt 0.990614 0.913795\nvt 0.994147 0.923414\nvt 0.996796 0.921996\nvt 0.995897 0.925449\nvt 0.995181 0.318355\nvt 0.996853 0.318517\nvt 0.994558 0.328961\nvt 0.990371 0.349925\nvt 0.988233 0.352200\nvt 0.989806 0.346269\nvt 0.978510 0.334273\nvt 0.979381 0.317182\nvt 0.979785 0.326459\nvt 0.975032 0.394149\nvt 0.975313 0.404932\nvt 0.972907 0.393369\nvt 0.997460 0.232905\nvt 0.995179 0.240864\nvt 0.996284 0.224596\nvt 0.991678 0.345160\nvt 0.987203 0.358384\nvt 0.989746 0.354937\nvt 0.993063 0.345390\nvt 0.994541 0.314020\nvt 0.979598 0.334771\nvt 0.996897 0.313981\nvt 0.993348 0.908336\nvt 0.996860 0.908256\nvt 0.990709 0.363057\nvt 0.988643 0.366092\nvt 0.988248 0.363265\nvt 0.979528 0.374012\nvt 0.978960 0.385709\nvt 0.974535 0.386250\nvt 0.997095 0.914824\nvt 0.979122 0.340353\nvt 0.976916 0.319275\nvt 0.993161 0.349815\nvt 0.993132 0.358213\nvt 0.978081 0.393717\nvt 0.976680 0.406014\nvt 0.989186 0.233584\nvt 0.992323 0.236634\nvt 0.991405 0.240500\nvt 0.995164 0.223222\nvt 0.996773 0.222814\nvt 0.994401 0.224454\nvt 0.993035 0.363967\nvt 0.991999 0.367360\nvt 0.975771 0.333505\nvt 0.972716 0.333490\nvt 0.970649 0.339129\nvt 0.974788 0.344267\nvt 0.994385 0.925689\nvt 0.996197 0.332171\nvt 0.995109 0.333603\nvt 0.978803 0.344757\nvt 0.977843 0.351093\nvt 0.976626 0.349633\nvt 0.978805 0.313742\nvt 0.992220 0.326928\nvt 0.971239 0.333506\nvt 0.997576 0.240065\nvt 0.972262 0.376693\nvt 0.977767 0.368192\nvt 0.990634 0.329057\nvt 0.990024 0.326527\nvt 0.979864 0.369000\nvt 0.971369 0.345654\nvt 0.972291 0.385852\nvt 0.974753 0.369981\nvt 0.975742 0.317582\nvt 0.857192 0.310104\nvt 0.857405 0.312601\nvt 0.854988 0.310253\nvt 0.992600 0.344429\nvt 0.951292 0.692289\nvt 0.948909 0.686741\nvt 0.952004 0.688463\nvt 0.946188 0.688993\nvt 0.989470 0.919090\nvt 0.128961 0.959688\nvt 0.124328 0.956594\nvt 0.126101 0.955363\nvt 0.125868 0.961374\nvt 0.122452 0.962317\nvt 0.986562 0.264625\nvt 0.985071 0.261352\nvt 0.986382 0.258359\nvt 0.983323 0.267224\nvt 0.980528 0.265964\nvt 0.982053 0.264570\nvt 0.944439 0.693378\nvt 0.942802 0.692629\nvt 0.942635 0.682688\nvt 0.594031 0.947330\nvt 0.592223 0.947030\nvt 0.591703 0.941911\nvt 0.586473 0.971508\nvt 0.585445 0.970343\nvt 0.588621 0.968874\nvt 0.962985 0.296399\nvt 0.962474 0.306840\nvt 0.961227 0.305927\nvt 0.309799 0.970677\nvt 0.308651 0.978715\nvt 0.307876 0.967430\nvt 0.123457 0.971755\nvt 0.127933 0.970662\nvt 0.126583 0.973081\nvt 0.990648 0.249878\nvt 0.991142 0.253137\nvt 0.986774 0.249491\nvt 0.432370 0.965369\nvt 0.434884 0.967389\nvt 0.434135 0.972502\nvt 0.965393 0.293994\nvt 0.964000 0.294236\nvt 0.593591 0.952210\nvt 0.867786 0.582875\nvt 0.867786 0.584305\nvt 0.867054 0.583026\nvt 0.129622 0.955974\nvt 0.999220 0.059462\nvt 0.998477 0.064776\nvt 0.997766 0.062956\nvt 0.773468 0.987948\nvt 0.770873 0.991759\nvt 0.770891 0.987883\nvt 0.121970 0.968728\nvt 0.123054 0.968537\nvt 0.592314 0.932079\nvt 0.594772 0.934340\nvt 0.984470 0.253209\nvt 0.985239 0.250392\nvt 0.522723 0.745647\nvt 0.523168 0.743210\nvt 0.523654 0.745647\nvt 0.968123 0.292306\nvt 0.418091 0.950499\nvt 0.419317 0.947275\nvt 0.419317 0.955082\nvt 0.309594 0.978348\nvt 0.433799 0.964411\nvt 0.435728 0.967137\nvt 0.117206 0.961914\nvt 0.944955 0.682398\nvt 0.586522 0.931648\nvt 0.584300 0.938862\nvt 0.585012 0.932620\nvt 0.586927 0.938214\nvt 0.589435 0.930973\nvt 0.967380 0.300896\nvt 0.480246 0.951082\nvt 0.481207 0.949098\nvt 0.481207 0.951006\nvt 0.590137 0.953227\nvt 0.589385 0.947458\nvt 0.971717 0.285017\nvt 0.968127 0.286382\nvt 0.968730 0.280409\nvt 0.783837 0.984381\nvt 0.790874 0.981569\nvt 0.789323 0.991372\nvt 0.432962 0.976295\nvt 0.427066 0.974577\nvt 0.427087 0.965883\nvt 0.300931 0.977995\nvt 0.303311 0.972601\nvt 0.307506 0.982265\nvt 0.425847 0.963453\nvt 0.432344 0.960394\nvt 0.587851 0.957392\nvt 0.592975 0.956007\nvt 0.589733 0.962926\nvt 0.987340 0.255535\nvt 0.989422 0.258432\nvt 0.587401 0.948011\nvt 0.114734 0.956425\nvt 0.112553 0.960597\nvt 0.424746 0.975651\nvt 0.294638 0.414136\nvt 0.293813 0.417417\nvt 0.291758 0.416992\nvt 0.295933 0.424538\nvt 0.292723 0.423975\nvt 0.422126 0.966952\nvt 0.130026 0.958314\nvt 0.970911 0.294392\nvt 0.970981 0.308157\nvt 0.779564 0.989022\nvt 0.780927 0.988947\nvt 0.435746 0.962265\nvt 0.304895 0.983523\nvt 0.768568 0.990725\nvt 0.769043 0.987784\nvt 0.297341 0.971918\nvt 0.585621 0.943379\nvt 0.308768 0.984846\nvt 0.127315 0.964519\nvt 0.990163 0.266067\nvt 0.991235 0.263296\nvt 0.967644 0.268970\nvt 0.968916 0.269238\nvt 0.967568 0.272898\nvt 0.970568 0.275117\nvt 0.769734 0.991307\nvt 0.786433 0.978668\nvt 0.125382 0.973535\nvt 0.296398 0.969533\nvt 0.300303 0.966379\nvt 0.124989 0.965421\nvt 0.305832 0.985673\nvt 0.787101 0.991625\nvt 0.421003 0.964933\nvt 0.420192 0.959347\nvt 0.422241 0.957248\nvt 0.779107 0.993049\nvt 0.585291 0.945176\nvt 0.422490 0.974828\nvt 0.584543 0.969190\nvt 0.586005 0.960295\nvt 0.935712 0.694235\nvt 0.938089 0.689059\nvt 0.991052 0.257751\nvt 0.295577 0.707828\nvt 0.296337 0.707454\nvt 0.296337 0.711003\nvt 0.791668 0.992381\nvt 0.966897 0.307995\nvt 0.979573 0.259459\nvt 0.781084 0.991954\nvt 0.967227 0.309002\nvt 0.291818 0.412088\nvt 0.970617 0.272076\nvt 0.100713 0.967876\nvt 0.100254 0.966454\nvt 0.101677 0.967630\nvt 0.855770 0.584126\nvt 0.857902 0.584915\nvt 0.858109 0.589061\nvt 0.972527 0.792947\nvt 0.971928 0.803003\nvt 0.969933 0.802492\nvt 0.984266 0.673152\nvt 0.985532 0.670475\nvt 0.986868 0.675001\nvt 0.974575 0.782434\nvt 0.972841 0.782708\nvt 0.971638 0.770248\nvt 0.995067 0.666482\nvt 0.991754 0.664493\nvt 0.993395 0.662150\nvt 0.425275 0.977389\nvt 0.426162 0.979794\nvt 0.424629 0.979917\nvt 0.424133 0.987773\nvt 0.427174 0.991948\nvt 0.424555 0.991087\nvt 0.106186 0.955599\nvt 0.104532 0.955995\nvt 0.106448 0.952312\nvt 0.988290 0.913300\nvt 0.986587 0.914546\nvt 0.986584 0.908509\nvt 0.970868 0.792740\nvt 0.340785 0.981806\nvt 0.340579 0.983385\nvt 0.338099 0.981951\nvt 0.983476 0.921821\nvt 0.987432 0.927109\nvt 0.984704 0.929087\nvt 0.105512 0.947235\nvt 0.331896 0.994557\nvt 0.333489 0.991634\nvt 0.334032 0.997477\nvt 0.991760 0.669768\nvt 0.994443 0.669129\nvt 0.992023 0.672617\nvt 0.801084 0.304875\nvt 0.792263 0.302032\nvt 0.801968 0.303356\nvt 0.429499 0.980404\nvt 0.105085 0.933135\nvt 0.102243 0.938594\nvt 0.100612 0.932395\nvt 0.098213 0.941996\nvt 0.098151 0.933940\nvt 0.981527 0.909679\nvt 0.983926 0.908497\nvt 0.980125 0.912248\nvt 0.974118 0.792418\nvt 0.977363 0.785378\nvt 0.977527 0.793127\nvt 0.968550 0.790381\nvt 0.970532 0.783382\nvt 0.968202 0.801295\nvt 0.967819 0.793193\nvt 0.801270 0.307528\nvt 0.100671 0.943001\nvt 0.102728 0.948983\nvt 0.988473 0.667586\nvt 0.989525 0.674221\nvt 0.423841 0.984166\nvt 0.427455 0.986134\nvt 0.803091 0.301578\nvt 0.804070 0.302077\nvt 0.852487 0.584520\nvt 0.852552 0.590953\nvt 0.099463 0.946713\nvt 0.972750 0.769293\nvt 0.975257 0.772443\nvt 0.982130 0.914123\nvt 0.101658 0.953593\nvt 0.101527 0.955980\nvt 0.105783 0.937297\nvt 0.109196 0.939053\nvt 0.109012 0.946153\nvt 0.637183 0.311858\nvt 0.637183 0.313077\nvt 0.636081 0.312186\nvt 0.823454 0.970197\nvt 0.821641 0.972803\nvt 0.822102 0.970191\nvt 0.987766 0.930019\nvt 0.795596 0.300498\nvt 0.823018 0.973213\nvt 0.434063 0.978975\nvt 0.435075 0.976955\nvt 0.974954 0.797234\nvt 0.974284 0.805497\nvt 0.340620 0.993338\nvt 0.337557 0.993211\nvt 0.988730 0.664383\nvt 0.972036 0.768254\nvt 0.431178 0.985352\nvt 0.108060 0.948264\nvt 0.107425 0.933961\nvt 0.979414 0.917492\nvt 0.986513 0.930597\nvt 0.792513 0.304622\nvt 0.557012 0.988357\nvt 0.560902 0.992370\nvt 0.559388 0.993249\nvt 0.560495 0.990357\nvt 0.562639 0.994652\nvt 0.560811 0.987202\nvt 0.823612 0.982264\nvt 0.823509 0.975470\nvt 0.824062 0.980308\nvt 0.435993 0.983492\nvt 0.295507 0.699327\nvt 0.296337 0.696496\nvt 0.296337 0.700016\nvt 0.430908 0.988852\nvt 0.429592 0.991524\nvt 0.206451 0.926182\nvt 0.205508 0.923534\nvt 0.206451 0.921463\nvt 0.988597 0.929670\nvt 0.988164 0.907647\nvt 0.336914 0.983593\nvt 0.102920 0.967021\nvt 0.988474 0.930869\nvt 0.856787 0.591337\nvt 0.990910 0.675717\nvt 0.559193 0.985817\nvt 0.557971 0.987181\nvt 0.977906 0.805185\nvt 0.331565 0.992052\nvt 0.429949 0.984471\nvt 0.802817 0.310981\nvt 0.797219 0.309593\nvt 0.989658 0.799277\nvt 0.995135 0.792605\nvt 0.991257 0.802068\nvt 0.996968 0.790653\nvt 0.997727 0.794153\nvt 0.944225 0.588541\nvt 0.944933 0.580250\nvt 0.946602 0.589570\nvt 0.928475 0.977556\nvt 0.929011 0.981702\nvt 0.926349 0.975313\nvt 0.978330 0.831371\nvt 0.978763 0.839197\nvt 0.977480 0.847432\nvt 0.414600 0.989365\nvt 0.414491 0.986036\nvt 0.418903 0.995567\nvt 0.422733 0.988098\nvt 0.420802 0.995656\nvt 0.421266 0.979423\nvt 0.931493 0.981908\nvt 0.925057 0.968794\nvt 0.927618 0.972573\nvt 0.978675 0.126817\nvt 0.979968 0.119770\nvt 0.979948 0.126407\nvt 0.979359 0.830931\nvt 0.977846 0.118282\nvt 0.997409 0.807817\nvt 0.993787 0.807667\nvt 0.928627 0.964246\nvt 0.926215 0.964148\nvt 0.926660 0.961235\nvt 0.979734 0.138565\nvt 0.973893 0.125548\nvt 0.998063 0.801753\nvt 0.980535 0.461322\nvt 0.976489 0.460956\nvt 0.979699 0.459396\nvt 0.975304 0.846149\nvt 0.931424 0.969550\nvt 0.931289 0.977511\nvt 0.974709 0.117702\nvt 0.977693 0.105766\nvt 0.417486 0.979283\nvt 0.418072 0.983225\nvt 0.419512 0.996870\nvt 0.421034 0.997489\nvt 0.931020 0.959094\nvt 0.931067 0.963268\nvt 0.930861 0.982839\nvt 0.975539 0.831948\nvt 0.972331 0.831721\nvt 0.979360 0.825414\nvt 0.976219 0.106801\nvt 0.970576 0.825936\nvt 0.975340 0.821150\nvt 0.995548 0.790313\nvt 0.945216 0.575776\nvt 0.946589 0.577091\nvt 0.976916 0.851182\nvt 0.942601 0.582368\nvt 0.970695 0.831720\nvt 0.977062 0.143577\nvt 0.971685 0.133853\nvt 0.939949 0.582682\nvt 0.940910 0.580316\nvt 0.979292 0.143031\nvt 0.972167 0.819039\nvt 0.978375 0.815060\nvt 0.979400 0.820943\nvt 0.971744 0.125811\nvt 0.973813 0.141338\nvt 0.974004 0.848673\nvt 0.851786 0.310696\nvt 0.853927 0.310302\nvt 0.852084 0.313189\nvt 0.972760 0.118138\nvt 0.979251 0.455525\nvt 0.974457 0.459175\nvt 0.978816 0.109148\nvt 0.209601 0.942308\nvt 0.209072 0.949402\nvt 0.208428 0.942579\nvt 0.218629 0.949015\nvt 0.218351 0.941723\nvt 0.219497 0.941443\nvt 0.995160 0.722989\nvt 0.997756 0.721680\nvt 0.997089 0.724291\nvt 0.993478 0.740992\nvt 0.997497 0.741377\nvt 0.997571 0.743373\nvt 0.993039 0.424724\nvt 0.996201 0.426395\nvt 0.994821 0.427893\nvt 0.213620 0.946957\nvt 0.214120 0.943207\nvt 0.692659 0.985543\nvt 0.692880 0.991192\nvt 0.686713 0.988273\nvt 0.981652 0.758645\nvt 0.979454 0.758513\nvt 0.979928 0.751554\nvt 0.220758 0.935890\nvt 0.775315 0.989267\nvt 0.775095 0.986832\nvt 0.778089 0.987690\nvt 0.972447 0.757245\nvt 0.973121 0.750919\nvt 0.970057 0.756262\nvt 0.971638 0.750260\nvt 0.994859 0.731581\nvt 0.996568 0.733078\nvt 0.994876 0.734175\nvt 0.971729 0.763165\nvt 0.970135 0.763856\nvt 0.969402 0.759347\nvt 0.993980 0.753638\nvt 0.994155 0.751168\nvt 0.997515 0.752910\nvt 0.993579 0.423485\nvt 0.957120 0.759913\nvt 0.960159 0.756988\nvt 0.959072 0.764375\nvt 0.993201 0.336880\nvt 0.991540 0.340799\nvt 0.991615 0.336289\nvt 0.688448 0.994388\nvt 0.805065 0.986808\nvt 0.797138 0.991006\nvt 0.797619 0.988000\nvt 0.993207 0.746174\nvt 0.996762 0.746498\nvt 0.774134 0.994475\nvt 0.778234 0.989650\nvt 0.777350 0.993952\nvt 0.778237 0.996710\nvt 0.996150 0.418678\nvt 0.995992 0.423646\nvt 0.997740 0.750676\nvt 0.959220 0.751189\nvt 0.957907 0.749011\nvt 0.964483 0.751790\nvt 0.993673 0.743029\nvt 0.216650 0.958601\nvt 0.215436 0.948470\nvt 0.217704 0.956621\nvt 0.209667 0.937874\nvt 0.217116 0.936491\nvt 0.996485 0.727055\nvt 0.997236 0.731251\nvt 0.133422 0.992480\nvt 0.140785 0.993673\nvt 0.134760 0.993613\nvt 0.774897 0.997398\nvt 0.209804 0.933953\nvt 0.138878 0.981050\nvt 0.140185 0.984025\nvt 0.135850 0.982720\nvt 0.994185 0.726986\nvt 0.689376 0.985814\nvt 0.981698 0.763762\nvt 0.978804 0.764807\nvt 0.804123 0.992795\nvt 0.684875 0.992634\nvt 0.523850 0.694877\nvt 0.523145 0.697949\nvt 0.522932 0.691601\nvt 0.140711 0.991297\nvt 0.136177 0.981187\nvt 0.967720 0.759670\nvt 0.966884 0.759889\nvt 0.967369 0.754332\nvt 0.221439 0.933012\nvt 0.220101 0.933215\nvt 0.976846 0.765042\nvt 0.965734 0.742556\nvt 0.967643 0.747034\nvt 0.964963 0.747054\nvt 0.143370 0.994437\nvt 0.142642 0.991837\nvt 0.143499 0.993318\nvt 0.578735 0.959702\nvt 0.578713 0.961201\nvt 0.578265 0.960542\nvt 0.740654 0.984529\nvt 0.744835 0.985743\nvt 0.743949 0.988044\nvt 0.524544 0.700285\nvt 0.523581 0.689420\nvt 0.805601 0.984498\nvt 0.738957 0.987054\nvt 0.207698 0.949706\nvt 0.207812 0.957124\nvt 0.993760 0.418604\nvt 0.738437 0.984503\nvt 0.967094 0.751838\nvt 0.966623 0.764478\nvt 0.963566 0.756769\nvt 0.975238 0.747261\nvt 0.989709 0.339724\nvt 0.989909 0.337031\nvt 0.217578 0.932432\nvt 0.957188 0.744702\nvt 0.961439 0.742589\nvt 0.132981 0.986603\nvt 0.957809 0.764921\nvt 0.980117 0.744391\nvt 0.214040 0.934049\nvt 0.742013 0.997320\nvt 0.739393 0.993778\nvt 0.744771 0.997268\nvt 0.997944 0.420317\nvt 0.796704 0.988032\nvt 0.796360 0.990345\nvt 0.982055 0.751349\nvt 0.799695 0.986205\nvt 0.523905 0.701050\nvt 0.131365 0.994349\nvt 0.977361 0.741006\nvt 0.979877 0.741369\nvt 0.976875 0.742491\nvt 0.131561 0.992479\nvt 0.806113 0.994213\nvt 0.806898 0.993039\nvt 0.807160 0.995972\nvt 0.997003 0.427819\nvt 0.996274 0.428871\nvt 0.997537 0.416719\nvt 0.998104 0.417446\nvt 0.777742 0.999255\nvt 0.997003 0.754002\nvt 0.972130 0.765197\nvt 0.207414 0.938148\nvt 0.967986 0.765528\nvt 0.776964 0.986390\nvt 0.980742 0.766407\nvt 0.209086 0.933187\nvt 0.207052 0.934064\nvt 0.995397 0.417095\nvt 0.797837 0.986839\nvt 0.958824 0.767209\nvt 0.956464 0.757102\nvt 0.807383 0.983907\nvt 0.806826 0.987877\nvt 0.956122 0.750548\nvt 0.955456 0.746455\nvt 0.955088 0.742056\nvt 0.743859 0.994718\nvt 0.578333 0.961471\nvt 0.981194 0.744553\nvt 0.775094 0.999577\nvt 0.957185 0.741384\nvt 0.805111 0.995438\nvt 0.968713 0.743648\nvt 0.993798 0.732926\nvt 0.961647 0.755559\nvt 0.992861 0.416190\nvt 0.972852 0.747504\nvt 0.693204 0.996174\nvt 0.211246 0.949090\nvt 0.208779 0.957799\nvt 0.217100 0.959560\nvt 0.995691 0.334329\nvt 0.208280 0.959418\nvt 0.997034 0.734245\nvt 0.993900 0.724327\nvt 0.219943 0.932239\nvt 0.967438 0.767253\nvt 0.362584 0.983233\nvt 0.353965 0.980850\nvt 0.361936 0.981535\nvt 0.650427 0.289937\nvt 0.650862 0.297718\nvt 0.649848 0.301258\nvt 0.660608 0.289007\nvt 0.662066 0.298304\nvt 0.660379 0.298089\nvt 0.658015 0.289232\nvt 0.657800 0.294213\nvt 0.717154 0.296979\nvt 0.717085 0.294041\nvt 0.719072 0.297045\nvt 0.646960 0.962649\nvt 0.648266 0.962199\nvt 0.646708 0.964677\nvt 0.649697 0.962176\nvt 0.648455 0.966292\nvt 0.645827 0.969807\nvt 0.644488 0.969429\nvt 0.656062 0.963056\nvt 0.657729 0.963411\nvt 0.657287 0.966243\nvt 0.654986 0.295758\nvt 0.721666 0.294686\nvt 0.717607 0.287928\nvt 0.360462 0.966622\nvt 0.359727 0.973838\nvt 0.354775 0.967859\nvt 0.608169 0.291515\nvt 0.598562 0.297959\nvt 0.601390 0.290856\nvt 0.595342 0.297133\nvt 0.594052 0.296621\nvt 0.596652 0.289965\nvt 0.990488 0.499385\nvt 0.985616 0.498779\nvt 0.986627 0.497086\nvt 0.593834 0.301321\nvt 0.639612 0.965418\nvt 0.640006 0.962784\nvt 0.641582 0.963475\nvt 0.598643 0.289666\nvt 0.596205 0.305473\nvt 0.594542 0.306236\nvt 0.660808 0.283196\nvt 0.661004 0.278408\nvt 0.662434 0.279600\nvt 0.645328 0.964581\nvt 0.838507 0.963470\nvt 0.838355 0.966065\nvt 0.827012 0.967385\nvt 0.652848 0.980615\nvt 0.653089 0.976858\nvt 0.656946 0.980130\nvt 0.652244 0.962346\nvt 0.996181 0.120598\nvt 0.994574 0.121550\nvt 0.993320 0.116724\nvt 0.656860 0.284966\nvt 0.658381 0.278121\nvt 0.955223 0.415990\nvt 0.954546 0.414488\nvt 0.955223 0.414249\nvt 0.727627 0.308024\nvt 0.727142 0.309627\nvt 0.723614 0.307989\nvt 0.727547 0.286443\nvt 0.724821 0.290350\nvt 0.725279 0.281313\nvt 0.602315 0.285359\nvt 0.609124 0.286281\nvt 0.353263 0.977097\nvt 0.786892 0.308287\nvt 0.784708 0.312228\nvt 0.784494 0.309342\nvt 0.653613 0.297508\nvt 0.652009 0.309164\nvt 0.651145 0.309015\nvt 0.651776 0.969749\nvt 0.656893 0.970600\nvt 0.638157 0.972381\nvt 0.642501 0.966701\nvt 0.994785 0.110617\nvt 0.995882 0.116426\nvt 0.657436 0.976541\nvt 0.640999 0.972593\nvt 0.725721 0.297146\nvt 0.727510 0.299678\nvt 0.720456 0.299744\nvt 0.652308 0.965187\nvt 0.833698 0.979009\nvt 0.826686 0.973524\nvt 0.838317 0.979611\nvt 0.036109 0.981569\nvt 0.045198 0.987588\nvt 0.039705 0.985750\nvt 0.649586 0.283718\nvt 0.648174 0.969942\nvt 0.649362 0.975923\nvt 0.647253 0.976905\nvt 0.717077 0.302983\nvt 0.718771 0.306840\nvt 0.715641 0.308037\nvt 0.642381 0.976024\nvt 0.639215 0.976836\nvt 0.824736 0.968404\nvt 0.837867 0.976944\nvt 0.787716 0.312324\nvt 0.348758 0.976883\nvt 0.349956 0.970939\nvt 0.611225 0.291428\nvt 0.609022 0.298910\nvt 0.295978 0.977430\nvt 0.294683 0.980250\nvt 0.295377 0.973852\nvt 0.043564 0.983402\nvt 0.043945 0.973544\nvt 0.046755 0.974968\nvt 0.824548 0.972328\nvt 0.716251 0.287992\nvt 0.721899 0.990629\nvt 0.720723 0.991546\nvt 0.719981 0.990389\nvt 0.662270 0.278585\nvt 0.599035 0.306948\nvt 0.609556 0.305968\nvt 0.605079 0.306894\nvt 0.609905 0.308056\nvt 0.652515 0.290604\nvt 0.728153 0.304959\nvt 0.047337 0.977340\nvt 0.047186 0.983267\nvt 0.946724 0.414675\nvt 0.946924 0.415990\nvt 0.945972 0.415639\nvt 0.989795 0.502925\nvt 0.992416 0.112542\nvt 0.295985 0.983812\nvt 0.361857 0.978087\nvt 0.984110 0.503116\nvt 0.721347 0.984311\nvt 0.722470 0.985188\nvt 0.720157 0.986069\nvt 0.983197 0.500626\nvt 0.983990 0.497988\nvt 0.992157 0.117198\nvt 0.721032 0.291017\nvt 0.839518 0.966069\nvt 0.839033 0.974234\nvt 0.645372 0.976321\nvt 0.034662 0.980599\nvt 0.035053 0.976651\nvt 0.035720 0.976999\nvt 0.717924 0.309570\nvt 0.656983 0.297004\nvt 0.655778 0.296111\nvt 0.650195 0.279136\nvt 0.654087 0.279762\nvt 0.986940 0.515381\nvt 0.985361 0.511899\nvt 0.992271 0.515663\nvt 0.611354 0.297736\nvt 0.611795 0.304702\nvt 0.997427 0.111266\nvt 0.038708 0.974133\nvt 0.649729 0.979589\nvt 0.648726 0.981137\nvt 0.646698 0.979826\nvt 0.718403 0.286060\nvt 0.294672 0.984090\nvt 0.603094 0.280735\nvt 0.598352 0.286055\nvt 0.600639 0.281928\nvt 0.840270 0.979246\nvt 0.641929 0.979613\nvt 0.641326 0.980414\nvt 0.639070 0.979572\nvt 0.609479 0.280799\nvt 0.604215 0.278135\nvt 0.608187 0.278082\nvt 0.660166 0.310325\nvt 0.660074 0.306240\nvt 0.660990 0.309675\nvt 0.660848 0.311558\nvt 0.717234 0.297682\nvt 0.992743 0.108642\nvt 0.995424 0.107982\nvt 0.036413 0.975065\nvt 0.728079 0.289570\nvt 0.596141 0.307566\nvt 0.592925 0.298815\nvt 0.592764 0.301950\nvt 0.730042 0.305909\nvt 0.729807 0.308377\nvt 0.990838 0.512380\nvt 0.658553 0.967520\nvt 0.045536 0.985248\nvt 0.723294 0.292026\nvt 0.997734 0.109395\nvt 0.992414 0.107141\nvt 0.047886 0.988342\nvt 0.716157 0.280072\nvt 0.725016 0.288819\nvt 0.997391 0.122866\nvt 0.996635 0.124071\nvt 0.647314 0.280507\nvt 0.046190 0.971397\nvt 0.651490 0.311447\nvt 0.658488 0.298786\nvt 0.048052 0.970597\nvt 0.728385 0.297540\nvt 0.715551 0.281292\nvt 0.825613 0.974036\nvt 0.649029 0.289447\nvt 0.611052 0.285518\nvt 0.997788 0.125270\nvt 0.994376 0.123397\nvt 0.839444 0.974767\nvt 0.840384 0.962293\nvt 0.716776 0.280147\nvt 0.725676 0.995568\nvt 0.897718 0.813611\nvt 0.888820 0.811735\nvt 0.893953 0.811208\nvt 0.897043 0.811752\nvt 0.947792 0.197834\nvt 0.949007 0.200182\nvt 0.945922 0.201908\nvt 0.956272 0.192038\nvt 0.957447 0.203434\nvt 0.955559 0.202840\nvt 0.954577 0.191733\nvt 0.527753 0.948894\nvt 0.527860 0.944783\nvt 0.529989 0.948518\nvt 0.020810 0.945326\nvt 0.023229 0.945033\nvt 0.022732 0.947403\nvt 0.531925 0.946751\nvt 0.528382 0.937354\nvt 0.895293 0.796262\nvt 0.894834 0.799620\nvt 0.885356 0.799915\nvt 0.219819 0.977176\nvt 0.221335 0.978585\nvt 0.218537 0.978328\nvt 0.914695 0.945452\nvt 0.912951 0.944918\nvt 0.917297 0.934202\nvt 0.541040 0.948994\nvt 0.538347 0.947151\nvt 0.540981 0.937403\nvt 0.956409 0.183298\nvt 0.914158 0.953069\nvt 0.912479 0.948314\nvt 0.973736 0.976280\nvt 0.973835 0.973768\nvt 0.976148 0.974702\nvt 0.893945 0.807173\nvt 0.886207 0.807886\nvt 0.921898 0.937076\nvt 0.918401 0.946666\nvt 0.918943 0.936224\nvt 0.016353 0.990677\nvt 0.018186 0.990081\nvt 0.019413 0.992098\nvt 0.973117 0.991651\nvt 0.973332 0.989924\nvt 0.977102 0.990246\nvt 0.020082 0.963209\nvt 0.020233 0.960268\nvt 0.022637 0.962714\nvt 0.023766 0.964090\nvt 0.027133 0.964302\nvt 0.955132 0.178618\nvt 0.957811 0.179567\nvt 0.019677 0.947762\nvt 0.017868 0.947454\nvt 0.016608 0.952911\nvt 0.019137 0.951719\nvt 0.018073 0.953627\nvt 0.537491 0.940831\nvt 0.526774 0.937448\nvt 0.976567 0.992194\nvt 0.026286 0.946912\nvt 0.026157 0.945078\nvt 0.029988 0.945903\nvt 0.027248 0.960591\nvt 0.030896 0.963029\nvt 0.929670 0.931954\nvt 0.930261 0.938150\nvt 0.050041 0.966508\nvt 0.038690 0.966703\nvt 0.048224 0.954187\nvt 0.048473 0.969350\nvt 0.037588 0.969451\nvt 0.025628 0.953182\nvt 0.030762 0.954064\nvt 0.971866 0.984036\nvt 0.975616 0.984287\nvt 0.031758 0.959224\nvt 0.977413 0.978170\nvt 0.216079 0.963618\nvt 0.206338 0.970311\nvt 0.207379 0.966047\nvt 0.014222 0.981289\nvt 0.016424 0.983253\nvt 0.016785 0.988032\nvt 0.032642 0.950629\nvt 0.880875 0.806257\nvt 0.042853 0.953468\nvt 0.021336 0.953551\nvt 0.022815 0.959474\nvt 0.017985 0.958497\nvt 0.923063 0.926569\nvt 0.929871 0.947248\nvt 0.931198 0.956191\nvt 0.927228 0.954950\nvt 0.047011 0.951068\nvt 0.523953 0.660639\nvt 0.522761 0.661280\nvt 0.523563 0.651690\nvt 0.441207 0.987302\nvt 0.439284 0.992110\nvt 0.437057 0.988800\nvt 0.524745 0.652717\nvt 0.217860 0.972984\nvt 0.207257 0.972599\nvt 0.216799 0.975903\nvt 0.035724 0.961999\nvt 0.040932 0.953027\nvt 0.035066 0.967650\nvt 0.532623 0.941057\nvt 0.958070 0.182532\nvt 0.888537 0.796948\nvt 0.918269 0.957191\nvt 0.925189 0.957072\nvt 0.930163 0.958252\nvt 0.043402 0.950885\nvt 0.022225 0.949896\nvt 0.205357 0.970381\nvt 0.896830 0.808843\nvt 0.981524 0.395511\nvt 0.989484 0.394261\nvt 0.988478 0.397972\nvt 0.952026 0.179090\nvt 0.943564 0.186220\nvt 0.948007 0.181024\nvt 0.524602 0.664498\nvt 0.529893 0.962563\nvt 0.527991 0.955640\nvt 0.531655 0.956455\nvt 0.956706 0.211293\nvt 0.955065 0.216725\nvt 0.953010 0.187656\nvt 0.949367 0.192462\nvt 0.015296 0.976542\nvt 0.017590 0.976757\nvt 0.944719 0.211739\nvt 0.014783 0.987770\nvt 0.437284 0.992974\nvt 0.945374 0.216524\nvt 0.942715 0.205937\nvt 0.943134 0.193528\nvt 0.209479 0.964239\nvt 0.218185 0.961037\nvt 0.535914 0.962821\nvt 0.534065 0.959951\nvt 0.539623 0.962733\nvt 0.220693 0.973108\nvt 0.033633 0.963218\nvt 0.944995 0.194084\nvt 0.951553 0.202104\nvt 0.976499 0.987773\nvt 0.943879 0.216407\nvt 0.985437 0.411218\nvt 0.981481 0.407201\nvt 0.990481 0.410896\nvt 0.931688 0.947918\nvt 0.932185 0.952791\nvt 0.205316 0.967232\nvt 0.532066 0.951007\nvt 0.535315 0.942345\nvt 0.931605 0.946694\nvt 0.436562 0.988362\nvt 0.981649 0.401245\nvt 0.989013 0.407882\nvt 0.032388 0.965219\nvt 0.529312 0.935038\nvt 0.018269 0.960690\nvt 0.523018 0.664696\nvt 0.205965 0.965831\nvt 0.929832 0.925028\nvt 0.925548 0.921772\nvt 0.928252 0.921848\nvt 0.919998 0.958030\nvt 0.541381 0.957255\nvt 0.921395 0.925519\nvt 0.923801 0.922532\nvt 0.525830 0.925076\nvt 0.526738 0.926979\nvt 0.525948 0.928212\nvt 0.956552 0.216346\nvt 0.955902 0.219780\nvt 0.911986 0.950408\nvt 0.020734 0.979351\nvt 0.526248 0.961792\nvt 0.538048 0.928471\nvt 0.017480 0.973871\nvt 0.543646 0.959031\nvt 0.543089 0.962426\nvt 0.939782 0.183171\nvt 0.947232 0.205550\nvt 0.033379 0.954291\nvt 0.536452 0.925344\nvt 0.537236 0.925342\nvt 0.958176 0.199311\nvt 0.958067 0.206422\nvt 0.527934 0.963722\nvt 0.941957 0.193158\nvt 0.982383 0.392514\nvt 0.019004 0.987013\nvt 0.020294 0.990907\nvt 0.018571 0.983570\nvt 0.915322 0.957907\nvt 0.941724 0.180539\nvt 0.942837 0.179393\nvt 0.944362 0.179871\nvt 0.032881 0.947151\nvt 0.525144 0.958677\nvt 0.053208 0.970198\nvt 0.540354 0.951448\nvt 0.439057 0.994231\nvt 0.883473 0.809840\nvt 0.019787 0.975232\nvt 0.219190 0.962552\nvt 0.220801 0.963541\nvt 0.944712 0.219669\nvt 0.438957 0.986274\nvt 0.931417 0.931113\nvt 0.444289 0.983681\nvt 0.881165 0.808292\nvt 0.035161 0.970243\nvt 0.021627 0.964828\nvt 0.221667 0.959817\nvt 0.219843 0.960258\nvt 0.051984 0.966870\nvt 0.753397 0.943147\nvt 0.755023 0.943442\nvt 0.754656 0.950697\nvt 0.744668 0.950050\nvt 0.743612 0.942544\nvt 0.744630 0.942770\nvt 0.997166 0.554452\nvt 0.998245 0.552295\nvt 0.999227 0.555091\nvt 0.993246 0.281358\nvt 0.997333 0.279069\nvt 0.997260 0.281064\nvt 0.994239 0.629711\nvt 0.996446 0.626811\nvt 0.997604 0.628495\nvt 0.749547 0.947884\nvt 0.748859 0.944158\nvt 0.751843 0.949126\nvt 0.460034 0.962374\nvt 0.461819 0.953955\nvt 0.462375 0.962576\nvt 0.572549 0.996293\nvt 0.567510 0.994217\nvt 0.572446 0.994563\nvt 0.572211 0.987719\nvt 0.742528 0.937923\nvt 0.996705 0.570855\nvt 0.999479 0.572374\nvt 0.996323 0.573197\nvt 0.817220 0.971266\nvt 0.810491 0.972005\nvt 0.810252 0.965631\nvt 0.808991 0.971508\nvt 0.808218 0.966391\nvt 0.996427 0.544846\nvt 0.996484 0.542575\nvt 0.998188 0.543470\nvt 0.809998 0.959578\nvt 0.807559 0.963351\nvt 0.808324 0.959171\nvt 0.998280 0.638149\nvt 0.996481 0.636128\nvt 0.998269 0.636217\nvt 0.993833 0.268694\nvt 0.997467 0.270863\nvt 0.993951 0.271134\nvt 0.996769 0.268804\nvt 0.994603 0.631012\nvt 0.452388 0.955627\nvt 0.454563 0.949534\nvt 0.455528 0.956790\nvt 0.755668 0.959236\nvt 0.926653 0.218061\nvt 0.925236 0.219289\nvt 0.925745 0.214753\nvt 0.567549 0.987015\nvt 0.360759 0.992959\nvt 0.352916 0.991064\nvt 0.352757 0.988338\nvt 0.707099 0.992828\nvt 0.709118 0.986132\nvt 0.711012 0.983739\nvt 0.996520 0.275992\nvt 0.992972 0.276223\nvt 0.995525 0.565564\nvt 0.999624 0.570416\nvt 0.817182 0.964223\nvt 0.817494 0.957870\nvt 0.999627 0.563352\nvt 0.998739 0.566128\nvt 0.997013 0.631211\nvt 0.993441 0.279329\nvt 0.718019 0.988507\nvt 0.718745 0.993171\nvt 0.716238 0.983833\nvt 0.747340 0.959750\nvt 0.746158 0.957677\nvt 0.748008 0.949548\nvt 0.753087 0.938729\nvt 0.744991 0.937653\nvt 0.997792 0.549555\nvt 0.998780 0.545349\nvt 0.716938 0.993131\nvt 0.715601 0.994235\nvt 0.709542 0.994163\nvt 0.996288 0.562628\nvt 0.752858 0.934813\nvt 0.712104 0.981471\nvt 0.714916 0.983325\nvt 0.995496 0.549439\nvt 0.819942 0.958915\nvt 0.359815 0.986948\nvt 0.563765 0.989038\nvt 0.523954 0.667206\nvt 0.523328 0.674816\nvt 0.522840 0.667986\nvt 0.463321 0.948833\nvt 0.462536 0.948279\nvt 0.463032 0.946384\nvt 0.709665 0.991790\nvt 0.714623 0.981615\nvt 0.463319 0.954923\nvt 0.741467 0.934237\nvt 0.742766 0.933682\nvt 0.741439 0.935002\nvt 0.460355 0.971759\nvt 0.460354 0.967125\nvt 0.462956 0.967447\nvt 0.995274 0.625606\nvt 0.997968 0.622340\nvt 0.998843 0.624559\nvt 0.711362 0.981620\nvt 0.361192 0.995335\nvt 0.992964 0.623136\nvt 0.819686 0.964394\nvt 0.755705 0.950466\nvt 0.756297 0.958607\nvt 0.994254 0.635792\nvt 0.459163 0.957350\nvt 0.812399 0.975710\nvt 0.923582 0.218110\nvt 0.923589 0.215985\nvt 0.923786 0.215317\nvt 0.352028 0.988962\nvt 0.352377 0.991343\nvt 0.523999 0.665508\nvt 0.452408 0.969170\nvt 0.456464 0.971434\nvt 0.998702 0.613011\nvt 0.997994 0.615176\nvt 0.994795 0.613345\nvt 0.817171 0.978655\nvt 0.745025 0.933597\nvt 0.748590 0.935016\nvt 0.993332 0.616431\nvt 0.819548 0.971841\nvt 0.354714 0.993228\nvt 0.452994 0.948829\nvt 0.718738 0.994862\nvt 0.361810 0.985619\nvt 0.362860 0.983893\nvt 0.362594 0.986768\nvt 0.998019 0.626056\nvt 0.998595 0.627201\nvt 0.999133 0.560793\nvt 0.816868 0.981674\nvt 0.814318 0.981929\nvt 0.815027 0.957860\nvt 0.810384 0.957635\nvt 0.452032 0.965677\nvt 0.755916 0.938195\nvt 0.998357 0.573673\nvt 0.819476 0.956551\nvt 0.454175 0.946637\nvt 0.996004 0.553188\nvt 0.753677 0.933982\nvt 0.813155 0.979611\nvt 0.755740 0.934846\nvt 0.995578 0.637635\nvt 0.454739 0.963182\nvt 0.363081 0.995940\nvt 0.362521 0.991922\nvt 0.449892 0.971985\nvt 0.844930 0.583013\nvt 0.845317 0.583320\nvt 0.844923 0.583938\nvt 0.818376 0.978595\nvt 0.996485 0.560447\nvt 0.452108 0.972468\nvt 0.360813 0.984470\nvt 0.463134 0.971173\nvt 0.995440 0.543483\nvt 0.457225 0.958485\nvt 0.993096 0.638288\nvt 0.810676 0.976610\nvt 0.572388 0.985110\nvt 0.451632 0.963235\nvt 0.746972 0.960497\nvt 0.998373 0.542475\nvt 0.706904 0.994870\nvt 0.995065 0.552046\nvt 0.907146 0.965483\nvt 0.909160 0.966485\nvt 0.902138 0.966555\nvt 0.630767 0.287187\nvt 0.635312 0.298134\nvt 0.633879 0.298496\nvt 0.636574 0.289074\nvt 0.637384 0.293996\nvt 0.851344 0.980978\nvt 0.851138 0.978915\nvt 0.852688 0.981438\nvt 0.852875 0.977340\nvt 0.854110 0.981495\nvt 0.850241 0.973838\nvt 0.848902 0.974223\nvt 0.856624 0.981505\nvt 0.861639 0.977677\nvt 0.860532 0.980849\nvt 0.862079 0.980523\nvt 0.640509 0.295199\nvt 0.643170 0.295884\nvt 0.690982 0.293002\nvt 0.687427 0.299918\nvt 0.689213 0.290795\nvt 0.686881 0.293931\nvt 0.907339 0.982001\nvt 0.901307 0.976232\nvt 0.906941 0.974274\nvt 0.698788 0.293231\nvt 0.698340 0.297399\nvt 0.698039 0.289469\nvt 0.993454 0.166134\nvt 0.990509 0.168456\nvt 0.988634 0.167072\nvt 0.614265 0.289749\nvt 0.613141 0.290522\nvt 0.612665 0.285652\nvt 0.265887 0.947161\nvt 0.267855 0.949139\nvt 0.266024 0.950190\nvt 0.627989 0.287035\nvt 0.620360 0.295624\nvt 0.617407 0.288691\nvt 0.617665 0.297014\nvt 0.616093 0.297357\nvt 0.614849 0.281324\nvt 0.613171 0.280899\nvt 0.632843 0.283063\nvt 0.628468 0.279840\nvt 0.632357 0.278660\nvt 0.849753 0.979029\nvt 0.928606 0.811884\nvt 0.917676 0.807911\nvt 0.928943 0.809443\nvt 0.857327 0.963189\nvt 0.861296 0.963757\nvt 0.857471 0.966937\nvt 0.417627 0.895452\nvt 0.414542 0.899307\nvt 0.415797 0.894454\nvt 0.637142 0.284717\nvt 0.635042 0.278063\nvt 0.634022 0.289109\nvt 0.647073 0.279510\nvt 0.647030 0.283314\nvt 0.644524 0.282627\nvt 0.696607 0.279430\nvt 0.692439 0.279634\nvt 0.696415 0.277817\nvt 0.646233 0.298981\nvt 0.646483 0.307873\nvt 0.627250 0.294550\nvt 0.621861 0.301653\nvt 0.628360 0.299638\nvt 0.770799 0.982731\nvt 0.762731 0.981198\nvt 0.761560 0.976013\nvt 0.922275 0.810831\nvt 0.861225 0.973397\nvt 0.856134 0.974132\nvt 0.264441 0.940056\nvt 0.268774 0.945921\nvt 0.416008 0.905429\nvt 0.417104 0.899634\nvt 0.861787 0.967355\nvt 0.267483 0.939999\nvt 0.695003 0.290361\nvt 0.696708 0.287774\nvt 0.856678 0.978662\nvt 0.922867 0.797309\nvt 0.928907 0.795748\nvt 0.917271 0.801614\nvt 0.644578 0.288902\nvt 0.852575 0.973760\nvt 0.851677 0.966673\nvt 0.853776 0.967700\nvt 0.928720 0.798888\nvt 0.929926 0.800943\nvt 0.686012 0.284920\nvt 0.684509 0.280124\nvt 0.687491 0.280976\nvt 0.268628 0.936626\nvt 0.265490 0.935709\nvt 0.915321 0.806793\nvt 0.902120 0.980940\nvt 0.769599 0.974103\nvt 0.897449 0.977474\nvt 0.896002 0.971150\nvt 0.630579 0.294628\nvt 0.957727 0.972152\nvt 0.957477 0.976927\nvt 0.956070 0.967962\nvt 0.915133 0.802803\nvt 0.686375 0.299924\nvt 0.701417 0.984798\nvt 0.698723 0.985846\nvt 0.700247 0.983893\nvt 0.628988 0.277704\nvt 0.617631 0.279639\nvt 0.623725 0.279249\nvt 0.622339 0.307569\nvt 0.623257 0.307242\nvt 0.624365 0.308510\nvt 0.642362 0.289800\nvt 0.697190 0.282470\nvt 0.688928 0.286703\nvt 0.930941 0.813159\nvt 0.929383 0.812959\nvt 0.642908 0.298576\nvt 0.657643 0.313150\nvt 0.657086 0.312577\nvt 0.657643 0.312187\nvt 0.760397 0.976231\nvt 0.761757 0.974617\nvt 0.992348 0.162722\nvt 0.413639 0.903511\nvt 0.957823 0.963695\nvt 0.909035 0.968784\nvt 0.769804 0.985063\nvt 0.986612 0.162918\nvt 0.699658 0.991669\nvt 0.698398 0.989080\nvt 0.700498 0.990566\nvt 0.637246 0.308586\nvt 0.635223 0.304899\nvt 0.900729 0.968590\nvt 0.706367 0.981174\nvt 0.706573 0.981695\nvt 0.987085 0.167931\nvt 0.985990 0.165441\nvt 0.413380 0.898835\nvt 0.690676 0.296692\nvt 0.930237 0.809793\nvt 0.849791 0.967280\nvt 0.696959 0.308989\nvt 0.696368 0.307746\nvt 0.697671 0.302589\nvt 0.686741 0.278282\nvt 0.639768 0.295639\nvt 0.638415 0.297231\nvt 0.770883 0.970246\nvt 0.639447 0.279219\nvt 0.643483 0.278149\nvt 0.988886 0.149553\nvt 0.993573 0.149310\nvt 0.986795 0.154013\nvt 0.418650 0.904798\nvt 0.854135 0.964057\nvt 0.851074 0.963776\nvt 0.852796 0.962636\nvt 0.688439 0.301752\nvt 0.956228 0.963355\nvt 0.760531 0.980039\nvt 0.930859 0.796018\nvt 0.627822 0.308001\nvt 0.268202 0.932947\nvt 0.265343 0.932951\nvt 0.267599 0.932145\nvt 0.628950 0.305522\nvt 0.637100 0.311612\nvt 0.636487 0.309667\nvt 0.686850 0.290838\nvt 0.695058 0.296970\nvt 0.414060 0.907411\nvt 0.416594 0.908119\nvt 0.773747 0.987288\nvt 0.772980 0.981139\nvt 0.614766 0.279223\nvt 0.612047 0.288884\nvt 0.699075 0.284487\nvt 0.647231 0.306339\nvt 0.698984 0.278985\nvt 0.992249 0.153191\nvt 0.862710 0.976348\nvt 0.771861 0.972145\nvt 0.773711 0.969400\nvt 0.692957 0.295591\nvt 0.418956 0.906676\nvt 0.414102 0.909413\nvt 0.686924 0.307800\nvt 0.695135 0.298724\nvt 0.418613 0.893154\nvt 0.417858 0.891943\nvt 0.618693 0.302355\nvt 0.772868 0.974502\nvt 0.771884 0.986477\nvt 0.646636 0.310326\nvt 0.646000 0.308598\nvt 0.704898 0.995094\nvt 0.915772 0.801540\nvt 0.645908 0.288576\nvt 0.630399 0.300244\nvt 0.879697 0.583087\nvt 0.879697 0.584368\nvt 0.879348 0.583514\nvt 0.415573 0.892628\nvt 0.687550 0.308046\nvt 0.175499 0.954025\nvt 0.171730 0.956095\nvt 0.166628 0.955417\nvt 0.174838 0.955640\nvt 0.944512 0.787551\nvt 0.946526 0.791621\nvt 0.943305 0.789895\nvt 0.935917 0.781752\nvt 0.936569 0.792554\nvt 0.934768 0.793148\nvt 0.937526 0.781445\nvt 0.599741 0.972468\nvt 0.601655 0.970410\nvt 0.602144 0.972820\nvt 0.635301 0.945477\nvt 0.638771 0.936144\nvt 0.639240 0.943648\nvt 0.172440 0.971149\nvt 0.163213 0.967473\nvt 0.172120 0.967739\nvt 0.416200 0.961074\nvt 0.414926 0.959946\nvt 0.417717 0.959695\nvt 0.624220 0.947141\nvt 0.625555 0.935304\nvt 0.625667 0.947399\nvt 0.628635 0.945696\nvt 0.935629 0.773011\nvt 0.666115 0.936002\nvt 0.664120 0.933685\nvt 0.665729 0.928381\nvt 0.364902 0.960753\nvt 0.367312 0.962371\nvt 0.365000 0.963277\nvt 0.163852 0.959199\nvt 0.171552 0.960130\nvt 0.672999 0.944249\nvt 0.670029 0.945167\nvt 0.669811 0.934706\nvt 0.598622 0.958389\nvt 0.597991 0.955001\nvt 0.600158 0.954938\nvt 0.934387 0.769283\nvt 0.936979 0.768331\nvt 0.598616 0.969995\nvt 0.596802 0.970324\nvt 0.595522 0.964922\nvt 0.596990 0.964190\nvt 0.598054 0.966101\nvt 0.629277 0.939397\nvt 0.640238 0.936564\nvt 0.368263 0.946774\nvt 0.364339 0.945654\nvt 0.367728 0.944819\nvt 0.605967 0.953844\nvt 0.609739 0.955025\nvt 0.606109 0.957405\nvt 0.681591 0.942980\nvt 0.680852 0.949205\nvt 0.763528 0.965273\nvt 0.765724 0.952743\nvt 0.775135 0.965468\nvt 0.765126 0.968071\nvt 0.776260 0.968216\nvt 0.609575 0.964138\nvt 0.604465 0.964935\nvt 0.363029 0.952991\nvt 0.366776 0.952792\nvt 0.610589 0.958886\nvt 0.368574 0.958914\nvt 0.413919 0.973547\nvt 0.403567 0.971455\nvt 0.402512 0.967116\nvt 0.996602 0.776548\nvt 0.993123 0.782415\nvt 0.994549 0.777833\nvt 0.604949 0.969643\nvt 0.609488 0.968279\nvt 0.158463 0.960657\nvt 0.771204 0.952224\nvt 0.600235 0.964334\nvt 0.601733 0.958315\nvt 0.364417 0.948452\nvt 0.674098 0.954745\nvt 0.668630 0.947110\nvt 0.681596 0.933871\nvt 0.678938 0.926206\nvt 0.683302 0.924888\nvt 0.766825 0.949964\nvt 0.793654 0.971912\nvt 0.793526 0.981210\nvt 0.792417 0.971215\nvt 0.625768 0.960095\nvt 0.630567 0.961416\nvt 0.627120 0.962197\nvt 0.912107 0.994013\nvt 0.906431 0.990034\nvt 0.909086 0.987134\nvt 0.794612 0.979841\nvt 0.414209 0.965150\nvt 0.413150 0.962225\nvt 0.403460 0.964932\nvt 0.948808 0.775932\nvt 0.944214 0.770811\nvt 0.950704 0.770529\nvt 0.776967 0.959060\nvt 0.778707 0.966419\nvt 0.772837 0.951504\nvt 0.634457 0.939744\nvt 0.612265 0.968072\nvt 0.934163 0.770508\nvt 0.165725 0.970249\nvt 0.670222 0.923986\nvt 0.676906 0.924128\nvt 0.682077 0.922827\nvt 0.629552 0.937436\nvt 0.628189 0.926991\nvt 0.770649 0.949641\nvt 0.601004 0.967918\nvt 0.401528 0.967029\nvt 0.174497 0.958044\nvt 0.984560 0.072938\nvt 0.989134 0.068354\nvt 0.990321 0.071985\nvt 0.940098 0.768802\nvt 0.794510 0.967305\nvt 0.982634 0.068578\nvt 0.636894 0.961394\nvt 0.635517 0.955195\nvt 0.639145 0.954470\nvt 0.937648 0.805910\nvt 0.935692 0.801019\nvt 0.942849 0.782175\nvt 0.938994 0.777366\nvt 0.996030 0.771182\nvt 0.993754 0.771273\nvt 0.948085 0.801455\nvt 0.906609 0.986960\nvt 0.605072 0.972657\nvt 0.947777 0.806312\nvt 0.950000 0.795090\nvt 0.949516 0.783163\nvt 0.596944 0.957749\nvt 0.414856 0.976632\nvt 0.406076 0.973859\nvt 0.636352 0.947530\nvt 0.638604 0.947191\nvt 0.632855 0.958620\nvt 0.417036 0.965105\nvt 0.612453 0.954922\nvt 0.947419 0.783796\nvt 0.992809 0.784921\nvt 0.990508 0.786160\nvt 0.991331 0.782319\nvt 0.940722 0.791816\nvt 0.949326 0.769410\nvt 0.368149 0.949181\nvt 0.949202 0.806716\nvt 0.985393 0.054411\nvt 0.990895 0.054376\nvt 0.981525 0.059048\nvt 0.683705 0.934043\nvt 0.684067 0.926955\nvt 0.981733 0.072327\nvt 0.994746 0.783274\nvt 0.401483 0.970175\nvt 0.635195 0.949733\nvt 0.623844 0.961803\nvt 0.631652 0.940958\nvt 0.683362 0.934374\nvt 0.905881 0.990415\nvt 0.989154 0.058397\nvt 0.981562 0.063807\nvt 0.610303 0.953052\nvt 0.637721 0.933796\nvt 0.792967 0.966919\nvt 0.996839 0.786036\nvt 0.417172 0.974741\nvt 0.402143 0.971630\nvt 0.626312 0.950121\nvt 0.624009 0.948634\nvt 0.681179 0.955852\nvt 0.679511 0.959321\nvt 0.676674 0.959488\nvt 0.625326 0.955721\nvt 0.671819 0.954226\nvt 0.675190 0.958983\nvt 0.908063 0.993129\nvt 0.906730 0.992567\nvt 0.936933 0.809501\nvt 0.936538 0.806929\nvt 0.622923 0.956162\nvt 0.952569 0.776918\nvt 0.953338 0.772140\nvt 0.991042 0.773414\nvt 0.640551 0.960650\nvt 0.994030 0.768374\nvt 0.622234 0.960271\nvt 0.761624 0.964945\nvt 0.982950 0.495239\nvt 0.981963 0.494235\nvt 0.983080 0.493086\nvt 0.403580 0.972897\nvt 0.683763 0.943421\nvt 0.610394 0.971876\nvt 0.682927 0.950164\nvt 0.638738 0.962531\nvt 0.951222 0.782139\nvt 0.992390 0.777996\nvt 0.666533 0.924097\nvt 0.602736 0.954506\nvt 0.997496 0.767975\nvt 0.760466 0.969053\nvt 0.640753 0.926603\nvt 0.909034 0.985131\nvt 0.159155 0.958327\nvt 0.991650 0.769598\nvt 0.948579 0.809374\nvt 0.913405 0.997483\nvt 0.778721 0.969008\nvt 0.991691 0.785903\nvt 0.418055 0.978550\nvt 0.415645 0.978029\nvt 0.639908 0.925600\nvt 0.367869 0.966646\nvt 0.366951 0.963602\nvt 0.368767 0.964296\nvt 0.096639 0.986434\nvt 0.095033 0.984727\nvt 0.097374 0.984482\nvt 0.941962 0.955073\nvt 0.938653 0.956267\nvt 0.938980 0.956131\nvt 0.944912 0.954329\nvt 0.944810 0.958770\nvt 0.367767 0.976216\nvt 0.364692 0.976738\nvt 0.364642 0.974683\nvt 0.450407 0.989592\nvt 0.454013 0.988578\nvt 0.452455 0.994282\nvt 0.744927 0.975427\nvt 0.744926 0.971553\nvt 0.746324 0.972482\nvt 0.570157 0.979462\nvt 0.571640 0.981389\nvt 0.568412 0.980587\nvt 0.572593 0.979611\nvt 0.572379 0.976007\nvt 0.562014 0.981910\nvt 0.560006 0.983542\nvt 0.560416 0.981737\nvt 0.571321 0.968574\nvt 0.569115 0.968553\nvt 0.934436 0.958894\nvt 0.934169 0.954879\nvt 0.936304 0.955502\nvt 0.922945 0.306237\nvt 0.925632 0.305983\nvt 0.922119 0.308241\nvt 0.092523 0.989834\nvt 0.093509 0.986305\nvt 0.095190 0.987314\nvt 0.943944 0.962763\nvt 0.395123 0.951136\nvt 0.398109 0.950032\nvt 0.399414 0.951891\nvt 0.481207 0.959916\nvt 0.481207 0.962280\nvt 0.480815 0.961563\nvt 0.935890 0.948651\nvt 0.389187 0.952329\nvt 0.391414 0.956545\nvt 0.390267 0.962842\nvt 0.939500 0.953855\nvt 0.938864 0.952912\nvt 0.897131 0.950381\nvt 0.897131 0.952074\nvt 0.896449 0.952237\nvt 0.367953 0.973900\nvt 0.363615 0.969106\nvt 0.949800 0.591573\nvt 0.948343 0.587362\nvt 0.951465 0.587284\nvt 0.095087 0.989715\nvt 0.093555 0.995596\nvt 0.896546 0.950540\nvt 0.367066 0.969175\nvt 0.925417 0.311314\nvt 0.925390 0.307828\nvt 0.295484 0.554333\nvt 0.296286 0.551639\nvt 0.296286 0.555872\nvt 0.369004 0.973421\nvt 0.364431 0.966044\nvt 0.908661 0.216917\nvt 0.913868 0.214383\nvt 0.914474 0.217836\nvt 0.934986 0.967137\nvt 0.942043 0.968597\nvt 0.935430 0.972495\nvt 0.757628 0.995333\nvt 0.757563 0.991492\nvt 0.758810 0.994143\nvt 0.564817 0.981890\nvt 0.562519 0.983429\nvt 0.949411 0.585983\nvt 0.083420 0.992413\nvt 0.085280 0.990673\nvt 0.086874 0.996939\nvt 0.667967 0.310741\nvt 0.666839 0.311978\nvt 0.663002 0.308728\nvt 0.567807 0.977286\nvt 0.564022 0.979887\nvt 0.747013 0.968574\nvt 0.754082 0.971145\nvt 0.751286 0.976079\nvt 0.672236 0.310765\nvt 0.670661 0.310488\nvt 0.671429 0.306606\nvt 0.091282 0.990343\nvt 0.562355 0.970370\nvt 0.562829 0.966339\nvt 0.562575 0.973882\nvt 0.943922 0.972521\nvt 0.944960 0.969288\nvt 0.945607 0.971964\nvt 0.561334 0.979903\nvt 0.392320 0.952308\nvt 0.397565 0.954729\nvt 0.847957 0.308219\nvt 0.848357 0.308052\nvt 0.848357 0.308861\nvt 0.082090 0.992357\nvt 0.082551 0.993771\nvt 0.082419 0.994293\nvt 0.745088 0.968964\nvt 0.368217 0.969473\nvt 0.669001 0.305725\nvt 0.088399 0.993761\nvt 0.089315 0.993043\nvt 0.090673 0.995356\nvt 0.091920 0.994631\nvt 0.747422 0.962276\nvt 0.744220 0.963150\nvt 0.745469 0.960798\nvt 0.391115 0.949937\nvt 0.941206 0.962604\nvt 0.392608 0.962838\nvt 0.390325 0.968131\nvt 0.089244 0.995887\nvt 0.393767 0.969227\nvt 0.391231 0.972483\nvt 0.389899 0.972992\nvt 0.755346 0.982046\nvt 0.749248 0.979992\nvt 0.755098 0.979902\nvt 0.934721 0.947812\nvt 0.087335 0.990550\nvt 0.088212 0.986327\nvt 0.755888 0.972420\nvt 0.755300 0.975862\nvt 0.671582 0.312187\nvt 0.398314 0.971216\nvt 0.398571 0.963509\nvt 0.399213 0.973247\nvt 0.449206 0.991584\nvt 0.990862 0.541108\nvt 0.989791 0.541820\nvt 0.987545 0.539896\nvt 0.758932 0.991108\nvt 0.667683 0.303148\nvt 0.667799 0.307663\nvt 0.295716 0.740718\nvt 0.295716 0.746329\nvt 0.295518 0.743667\nvt 0.743735 0.960905\nvt 0.747103 0.978339\nvt 0.988633 0.536981\nvt 0.990271 0.537324\nvt 0.990162 0.539211\nvt 0.567337 0.962994\nvt 0.756408 0.966293\nvt 0.397471 0.974998\nvt 0.396040 0.971946\nvt 0.661661 0.311976\nvt 0.661661 0.313172\nvt 0.661480 0.312604\nvt 0.399741 0.955601\nvt 0.938658 0.971539\nvt 0.941933 0.972504\nvt 0.753812 0.962284\nvt 0.945344 0.963010\nvt 0.096253 0.994259\nvt 0.089906 0.984344\nvt 0.090415 0.984767\nvt 0.569556 0.982043\nvt 0.387327 0.952392\nvt 0.387951 0.950712\nvt 0.364475 0.977595\nvt 0.663921 0.305035\nvt 0.391240 0.974631\nvt 0.909365 0.213062\nvt 0.912801 0.213078\nvt 0.922227 0.311632\nvt 0.394923 0.970338\nvt 0.754237 0.983637\nvt 0.751102 0.983286\nvt 0.751632 0.982640\nvt 0.966254 0.689018\nvt 0.968116 0.689375\nvt 0.965622 0.690814\nvt 0.083168 0.994706\nvt 0.083718 0.996939\nvt 0.290828 0.939307\nvt 0.290828 0.942403\nvt 0.290394 0.939921\nvt 0.560016 0.980988\nvt 0.015584 0.965182\nvt 0.014567 0.962520\nvt 0.015736 0.963779\nvt 0.915567 0.219156\nvt 0.915931 0.216386\nvt 0.933032 0.971559\nvt 0.933184 0.968498\nvt 0.398387 0.975375\nvt 0.397133 0.976708\nvt 0.921065 0.309418\nvt 0.937663 0.948932\nvt 0.569909 0.962057\nvt 0.097114 0.995764\nvt 0.095516 0.996856\nvt 0.454071 0.997432\nvt 0.450332 0.996302\nvt 0.364536 0.963826\nvt 0.561713 0.967424\nvt 0.089438 0.988904\nvt 0.945245 0.949212\nvt 0.388839 0.972889\nvt 0.396493 0.974252\nvt 0.935558 0.962843\nvt 0.666579 0.302513\nvt 0.390038 0.975097\nvt 0.389114 0.977282\nvt 0.399888 0.963874\nvt 0.934156 0.962311\nvt 0.016063 0.958121\nvt 0.755999 0.980955\nvt 0.946082 0.950830\nvt 0.091152 0.984113\nvt 0.944564 0.949475\nvt 0.941191 0.953882\nvt 0.086127 0.998032\nvt 0.912868 0.220594\nvt 0.908461 0.219375\nvt 0.998241 0.074115\nvt 0.998902 0.078026\nvt 0.998263 0.076731\nvt 0.665770 0.302363\nvt 0.933431 0.966945\nvt 0.934177 0.962608\nvt 0.969555 0.695146\nvt 0.966576 0.693521\nvt 0.747118 0.980260\nvt 0.748698 0.982338\nvt 0.908221 0.214431\nvt 0.757982 0.989931\nvt 0.671875 0.303418\nvt 0.668181 0.303003\nvt 0.396122 0.978279\nvt 0.945704 0.947275\nvt 0.759920 0.998289\nvt 0.757410 0.990291\nvt 0.943781 0.945074\nvt 0.968933 0.687627\nvt 0.960382 0.370794\nvt 0.959758 0.370794\nvt 0.960322 0.369170\nvt 0.703656 0.294277\nvt 0.704182 0.290030\nvt 0.706924 0.290289\nvt 0.683164 0.963689\nvt 0.682631 0.960382\nvt 0.683853 0.960662\nvt 0.262581 0.990900\nvt 0.259436 0.985991\nvt 0.261273 0.986098\nvt 0.523886 0.969812\nvt 0.523431 0.967547\nvt 0.524774 0.967260\nvt 0.901000 0.797918\nvt 0.898770 0.799041\nvt 0.899527 0.795383\nvt 0.756697 0.295450\nvt 0.757844 0.291276\nvt 0.757995 0.293065\nvt 0.753728 0.294436\nvt 0.711166 0.288608\nvt 0.711939 0.292029\nvt 0.708877 0.291416\nvt 0.712307 0.288465\nvt 0.713180 0.292633\nvt 0.751471 0.292859\nvt 0.751859 0.296664\nvt 0.749778 0.299187\nvt 0.747970 0.294007\nvt 0.746570 0.299039\nvt 0.989839 0.094229\nvt 0.991979 0.093959\nvt 0.991838 0.100857\nvt 0.701959 0.287562\nvt 0.701745 0.294329\nvt 0.750464 0.284292\nvt 0.748610 0.289478\nvt 0.748049 0.281599\nvt 0.907699 0.809433\nvt 0.905455 0.809235\nvt 0.902124 0.807447\nvt 0.908338 0.805448\nvt 0.912756 0.809218\nvt 0.900281 0.803107\nvt 0.291556 0.917725\nvt 0.294475 0.918258\nvt 0.291496 0.919311\nvt 0.680099 0.961692\nvt 0.679947 0.960132\nvt 0.749172 0.278745\nvt 0.747443 0.279479\nvt 0.295387 0.905279\nvt 0.292542 0.905798\nvt 0.292135 0.902475\nvt 0.522574 0.982765\nvt 0.524157 0.980541\nvt 0.524087 0.982880\nvt 0.258614 0.975641\nvt 0.261199 0.977133\nvt 0.255363 0.975822\nvt 0.680932 0.974236\nvt 0.683332 0.976270\nvt 0.680867 0.977053\nvt 0.263419 0.992995\nvt 0.260851 0.990959\nvt 0.282162 0.984861\nvt 0.288351 0.983340\nvt 0.288134 0.987414\nvt 0.294537 0.901979\nvt 0.759734 0.300809\nvt 0.760130 0.297672\nvt 0.968357 0.220614\nvt 0.969811 0.219417\nvt 0.969811 0.222754\nvt 0.760171 0.303825\nvt 0.757760 0.298138\nvt 0.993127 0.871129\nvt 0.993832 0.871843\nvt 0.990696 0.870925\nvt 0.262156 0.979681\nvt 0.293978 0.911560\nvt 0.290797 0.912176\nvt 0.683622 0.973098\nvt 0.679211 0.967333\nvt 0.222453 0.978794\nvt 0.225854 0.972548\nvt 0.230402 0.974522\nvt 0.682155 0.967544\nvt 0.521119 0.970011\nvt 0.521019 0.974352\nvt 0.519283 0.975061\nvt 0.295568 0.915200\nvt 0.758838 0.287321\nvt 0.750683 0.289187\nvt 0.758721 0.283505\nvt 0.752037 0.302691\nvt 0.263687 0.980622\nvt 0.262727 0.986005\nvt 0.989204 0.872844\nvt 0.285175 0.981627\nvt 0.227421 0.968727\nvt 0.955725 0.981726\nvt 0.955356 0.986994\nvt 0.954575 0.982300\nvt 0.224210 0.984605\nvt 0.227219 0.985487\nvt 0.224500 0.985363\nvt 0.902372 0.802511\nvt 0.900818 0.806566\nvt 0.226959 0.982817\nvt 0.223327 0.982239\nvt 0.988390 0.878250\nvt 0.993109 0.875862\nvt 0.986103 0.094034\nvt 0.987461 0.098230\nvt 0.712619 0.294930\nvt 0.151267 0.991933\nvt 0.146848 0.992487\nvt 0.148282 0.989538\nvt 0.907041 0.797072\nvt 0.288793 0.988826\nvt 0.285107 0.987618\nvt 0.787671 0.997802\nvt 0.786228 0.996343\nvt 0.787720 0.994485\nvt 0.954967 0.988648\nvt 0.263747 0.989442\nvt 0.912357 0.805980\nvt 0.712533 0.283743\nvt 0.713158 0.285277\nvt 0.963368 0.219821\nvt 0.961990 0.221351\nvt 0.962078 0.219680\nvt 0.995529 0.094038\nvt 0.995332 0.103048\nvt 0.953185 0.990555\nvt 0.955410 0.993374\nvt 0.750673 0.304518\nvt 0.714061 0.307272\nvt 0.712927 0.299716\nvt 0.714559 0.304730\nvt 0.424533 0.992806\nvt 0.425480 0.996846\nvt 0.423345 0.994527\nvt 0.153371 0.988341\nvt 0.280277 0.984317\nvt 0.280885 0.980733\nvt 0.944715 0.987963\nvt 0.945145 0.986184\nvt 0.946027 0.986688\nvt 0.293367 0.975453\nvt 0.289265 0.977084\nvt 0.289274 0.974544\nvt 0.474603 0.997503\nvt 0.472556 0.993980\nvt 0.473148 0.993280\nvt 0.991901 0.103324\nvt 0.225900 0.969626\nvt 0.713801 0.295570\nvt 0.947245 0.990125\nvt 0.944968 0.990261\nvt 0.293548 0.989262\nvt 0.476878 0.997785\nvt 0.477023 0.993345\nvt 0.153864 0.991227\nvt 0.285280 0.978439\nvt 0.752775 0.295585\nvt 0.151256 0.996393\nvt 0.146410 0.994974\nvt 0.153418 0.984495\nvt 0.152717 0.983969\nvt 0.914572 0.803231\nvt 0.913681 0.807676\nvt 0.955321 0.995657\nvt 0.947940 0.994321\nvt 0.951469 0.993689\nvt 0.477390 0.990491\nvt 0.754732 0.279455\nvt 0.758900 0.278891\nvt 0.913576 0.799285\nvt 0.913848 0.812415\nvt 0.282426 0.986523\nvt 0.969294 0.996312\nvt 0.970976 0.991878\nvt 0.970405 0.996030\nvt 0.699246 0.284989\nvt 0.701098 0.282917\nvt 0.701710 0.285447\nvt 0.521071 0.979991\nvt 0.951010 0.988633\nvt 0.952224 0.986329\nvt 0.995646 0.104723\nvt 0.474153 0.997472\nvt 0.262985 0.976114\nvt 0.263889 0.977506\nvt 0.901064 0.795525\nvt 0.293011 0.984748\nvt 0.292814 0.981524\nvt 0.293375 0.981894\nvt 0.259676 0.979409\nvt 0.949725 0.982744\nvt 0.911620 0.797400\nvt 0.751479 0.278658\nvt 0.258367 0.982193\nvt 0.710333 0.294542\nvt 0.758131 0.277742\nvt 0.986213 0.090741\nvt 0.761435 0.279303\nvt 0.760751 0.283685\nvt 0.704282 0.279964\nvt 0.705975 0.278041\nvt 0.705768 0.280354\nvt 0.704261 0.287379\nvt 0.703569 0.284456\nvt 0.711495 0.306604\nvt 0.709927 0.299464\nvt 0.520806 0.982532\nvt 0.519427 0.981893\nvt 0.701742 0.299246\nvt 0.702833 0.304704\nvt 0.701221 0.307324\nvt 0.295281 0.911881\nvt 0.989591 0.871152\nvt 0.995252 0.874641\nvt 0.994578 0.882686\nvt 0.713022 0.308465\nvt 0.710872 0.308460\nvt 0.293024 0.977788\nvt 0.523569 0.975067\nvt 0.231876 0.972785\nvt 0.153963 0.996743\nvt 0.758272 0.288399\nvt 0.521902 0.968213\nvt 0.949556 0.991666\nvt 0.706904 0.307707\nvt 0.703398 0.308475\nvt 0.702964 0.307682\nvt 0.760127 0.288084\nvt 0.989551 0.882463\nvt 0.992877 0.883552\nvt 0.986552 0.880720\nvt 0.946949 0.991917\nvt 0.473369 0.990824\nvt 0.281265 0.979404\nvt 0.283730 0.978097\nvt 0.296319 0.580027\nvt 0.296319 0.583608\nvt 0.295760 0.580130\nvt 0.987047 0.874842\nvt 0.996509 0.881687\nvt 0.759955 0.277751\nvt 0.713805 0.280123\nvt 0.714655 0.281003\nvt 0.761402 0.303952\nvt 0.990026 0.091037\nvt 0.947597 0.579688\nvt 0.948012 0.578383\nvt 0.948012 0.581409\nvt 0.761000 0.306354\nvt 0.759916 0.937637\nvt 0.760062 0.938979\nvt 0.760035 0.940292\nvt 0.985263 0.092522\nvt 0.987493 0.100884\nvt 0.706392 0.278424\nvt 0.996748 0.878367\nvt 0.752335 0.307196\nvt 0.751184 0.306956\nvt 0.475926 0.987354\nvt 0.969902 0.998321\nvt 0.993479 0.091484\nvt 0.952686 0.981653\nvt 0.148144 0.986004\nvt 0.290955 0.403453\nvt 0.291034 0.399533\nvt 0.291480 0.404993\nvt 0.714580 0.278858\nvt 0.538716 0.968841\nvt 0.536714 0.969072\nvt 0.538297 0.965387\nvt 0.703213 0.941325\nvt 0.702655 0.944916\nvt 0.702483 0.942673\nvt 0.722235 0.942819\nvt 0.724977 0.943259\nvt 0.727512 0.943510\nvt 0.971901 0.363806\nvt 0.973277 0.366591\nvt 0.970665 0.365904\nvt 0.992616 0.395211\nvt 0.992759 0.393364\nvt 0.995983 0.392355\nvt 0.080584 0.934802\nvt 0.075677 0.936624\nvt 0.075155 0.935613\nvt 0.678785 0.984965\nvt 0.680339 0.982463\nvt 0.680147 0.984653\nvt 0.538469 0.979194\nvt 0.540065 0.973346\nvt 0.541004 0.979468\nvt 0.973379 0.099005\nvt 0.977517 0.104210\nvt 0.973055 0.104250\nvt 0.706267 0.950472\nvt 0.704707 0.947898\nvt 0.706007 0.946675\nvt 0.068129 0.955452\nvt 0.066530 0.953497\nvt 0.069211 0.953942\nvt 0.734108 0.951406\nvt 0.735414 0.950920\nvt 0.736132 0.957967\nvt 0.521223 0.946917\nvt 0.521491 0.945781\nvt 0.521497 0.947501\nvt 0.995942 0.407668\nvt 0.992867 0.408916\nvt 0.996538 0.405343\nvt 0.067620 0.935611\nvt 0.065630 0.935828\nvt 0.067672 0.934737\nvt 0.070192 0.935867\nvt 0.681810 0.996344\nvt 0.679748 0.996884\nvt 0.682145 0.993957\nvt 0.736845 0.954953\nvt 0.978999 0.099524\nvt 0.980620 0.103894\nvt 0.981823 0.099146\nvt 0.983803 0.104304\nvt 0.066360 0.937812\nvt 0.069424 0.937415\nvt 0.067938 0.945101\nvt 0.525960 0.965506\nvt 0.525134 0.963962\nvt 0.527274 0.965337\nvt 0.535970 0.973297\nvt 0.707578 0.928279\nvt 0.705541 0.932009\nvt 0.705313 0.928447\nvt 0.681511 0.996944\nvt 0.704673 0.927929\nvt 0.706089 0.927285\nvt 0.737287 0.961270\nvt 0.736192 0.962604\nvt 0.068495 0.949006\nvt 0.070841 0.948572\nvt 0.703135 0.940651\nvt 0.704679 0.937404\nvt 0.706665 0.935295\nvt 0.533991 0.979131\nvt 0.527276 0.974062\nvt 0.539005 0.980850\nvt 0.578855 0.926399\nvt 0.582120 0.924710\nvt 0.582692 0.926061\nvt 0.716669 0.958034\nvt 0.711018 0.947992\nvt 0.712778 0.947452\nvt 0.972406 0.092424\nvt 0.527280 0.971212\nvt 0.580855 0.933075\nvt 0.577307 0.934878\nvt 0.579320 0.929576\nvt 0.994981 0.399162\nvt 0.992836 0.406104\nvt 0.991262 0.400458\nvt 0.072642 0.943779\nvt 0.077160 0.939500\nvt 0.077958 0.943226\nvt 0.582196 0.928501\nvt 0.896078 0.992806\nvt 0.897356 0.986911\nvt 0.904198 0.993683\nvt 0.726630 0.946586\nvt 0.731788 0.947916\nvt 0.724537 0.946950\nvt 0.679520 0.989285\nvt 0.677161 0.989741\nvt 0.582796 0.936222\nvt 0.578425 0.940387\nvt 0.051006 0.981888\nvt 0.053276 0.976797\nvt 0.051995 0.982283\nvt 0.979055 0.091761\nvt 0.979937 0.352750\nvt 0.982908 0.354335\nvt 0.983539 0.360442\nvt 0.869097 0.987601\nvt 0.870678 0.986655\nvt 0.867794 0.990034\nvt 0.628987 0.964657\nvt 0.625835 0.978325\nvt 0.623048 0.978483\nvt 0.728956 0.961099\nvt 0.725530 0.962490\nvt 0.725514 0.959914\nvt 0.973520 0.090376\nvt 0.532065 0.966948\nvt 0.904689 0.985202\nvt 0.981125 0.364876\nvt 0.977992 0.367025\nvt 0.680971 0.989090\nvt 0.077943 0.932976\nvt 0.074911 0.934554\nvt 0.632887 0.963811\nvt 0.634547 0.977696\nvt 0.983731 0.352285\nvt 0.080787 0.946670\nvt 0.078321 0.951069\nvt 0.734352 0.936097\nvt 0.731348 0.941438\nvt 0.993540 0.307953\nvt 0.995865 0.312339\nvt 0.993059 0.310984\nvt 0.727042 0.931922\nvt 0.721761 0.940599\nvt 0.727648 0.927473\nvt 0.715056 0.947663\nvt 0.717594 0.956945\nvt 0.629337 0.963383\nvt 0.632004 0.962883\nvt 0.050844 0.973625\nvt 0.053209 0.971268\nvt 0.713842 0.935434\nvt 0.716408 0.935912\nvt 0.714276 0.939796\nvt 0.076415 0.937690\nvt 0.996253 0.398976\nvt 0.997453 0.403703\nvt 0.637316 0.972108\nvt 0.637961 0.977745\nvt 0.636798 0.976239\nvt 0.527120 0.980137\nvt 0.984594 0.352892\nvt 0.985366 0.366241\nvt 0.729252 0.944361\nvt 0.627914 0.980629\nvt 0.066968 0.955519\nvt 0.733464 0.962121\nvt 0.732227 0.956359\nvt 0.074510 0.953749\nvt 0.736524 0.929590\nvt 0.737058 0.931083\nvt 0.996667 0.394807\nvt 0.997322 0.391775\nvt 0.868741 0.991293\nvt 0.868108 0.997007\nvt 0.865952 0.993444\nvt 0.898819 0.994473\nvt 0.992520 0.392910\nvt 0.714885 0.927435\nvt 0.711498 0.929275\nvt 0.711640 0.928536\nvt 0.678999 0.994847\nvt 0.726391 0.955267\nvt 0.080864 0.938265\nvt 0.708802 0.946811\nvt 0.080547 0.949561\nvt 0.063596 0.946063\nvt 0.066211 0.948339\nvt 0.525493 0.978546\nvt 0.677538 0.996142\nvt 0.696576 0.993881\nvt 0.697939 0.998040\nvt 0.694791 0.997996\nvt 0.526120 0.970048\nvt 0.525610 0.972349\nvt 0.981595 0.351453\nvt 0.995132 0.391726\nvt 0.980826 0.351397\nvt 0.866184 0.996823\nvt 0.866782 0.997496\nvt 0.865486 0.994778\nvt 0.992659 0.308109\nvt 0.736772 0.933592\nvt 0.733628 0.940099\nvt 0.081394 0.932831\nvt 0.984568 0.101390\nvt 0.981097 0.092938\nvt 0.583002 0.939621\nvt 0.581277 0.941246\nvt 0.578540 0.942077\nvt 0.708247 0.961981\nvt 0.708815 0.958650\nvt 0.709143 0.963266\nvt 0.064852 0.941893\nvt 0.064857 0.939178\nvt 0.535325 0.966881\nvt 0.723112 0.941476\nvt 0.756758 0.861296\nvt 0.756409 0.859685\nvt 0.756758 0.858045\nvt 0.709172 0.941634\nvt 0.582290 0.933186\nvt 0.728027 0.928651\nvt 0.970389 0.363342\nvt 0.717686 0.928546\nvt 0.676174 0.989841\nvt 0.676834 0.987369\nvt 0.682446 0.982469\nvt 0.681371 0.986050\nvt 0.718014 0.961249\nvt 0.627251 0.965701\nvt 0.081354 0.942074\nvt 0.972138 0.360052\nvt 0.970814 0.361234\nvt 0.050154 0.986014\nvt 0.965352 0.637675\nvt 0.965454 0.639771\nvt 0.964318 0.639792\nvt 0.697715 0.999273\nvt 0.983789 0.366285\nvt 0.712634 0.940977\nvt 0.714472 0.940832\nvt 0.713570 0.944364\nvt 0.707620 0.948765\nvt 0.994896 0.304603\nvt 0.625771 0.969239\nvt 0.970800 0.098765\nvt 0.632235 0.980369\nvt 0.730541 0.945566\nvt 0.734265 0.948647\nvt 0.705521 0.951650\nvt 0.995904 0.305619\nvt 0.707405 0.943872\nvt 0.051430 0.971028\nvt 0.708369 0.927036\nvt 0.697663 0.987861\nvt 0.694350 0.990974\nvt 0.694222 0.988110\nvt 0.904983 0.996338\nvt 0.725010 0.951727\nvt 0.622067 0.981026\nvt 0.051828 0.986309\nvt 0.904943 0.983038\nvt 0.064577 0.937576\nvt 0.637184 0.980903\nvt 0.521252 0.950286\nvt 0.521497 0.949244\nvt 0.521497 0.951128\nvt 0.063574 0.949400\nvt 0.682096 0.981277\nvt 0.635537 0.967048\nvt 0.970632 0.104862\nvt 0.996795 0.432690\nvt 0.998536 0.429672\nvt 0.998610 0.435939\nvt 0.993438 0.311795\nvt 0.970157 0.102302\nvt 0.367949 0.988415\nvt 0.368576 0.991233\nvt 0.367417 0.991262\nvt 0.997046 0.643495\nvt 0.993991 0.640418\nvt 0.996585 0.640864\nvt 0.507698 0.988194\nvt 0.511319 0.987720\nvt 0.510625 0.989991\nvt 0.004563 0.954962\nvt 0.007016 0.956217\nvt 0.007637 0.956641\nvt 0.002462 0.963031\nvt 0.001382 0.954478\nvt 0.001645 0.959293\nvt 0.367435 0.978750\nvt 0.364462 0.980607\nvt 0.364393 0.978509\nvt 0.520345 0.996664\nvt 0.522532 0.994324\nvt 0.522601 0.996069\nvt 0.509045 0.996757\nvt 0.511541 0.997265\nvt 0.883019 0.979244\nvt 0.884746 0.980440\nvt 0.881649 0.981116\nvt 0.881070 0.979228\nvt 0.881510 0.975097\nvt 0.891274 0.982041\nvt 0.892902 0.981899\nvt 0.893375 0.983703\nvt 0.883006 0.968430\nvt 0.885222 0.968506\nvt 0.011694 0.963039\nvt 0.010029 0.955862\nvt 0.012393 0.954538\nvt 0.116828 0.989535\nvt 0.117611 0.987578\nvt 0.117755 0.989974\nvt 0.786711 0.976640\nvt 0.791180 0.976474\nvt 0.789893 0.977801\nvt 0.789066 0.952803\nvt 0.790187 0.952563\nvt 0.790026 0.957062\nvt 0.783129 0.955008\nvt 0.785055 0.957412\nvt 0.785552 0.958531\nvt 0.010901 0.949077\nvt 0.780193 0.974439\nvt 0.781642 0.964778\nvt 0.782748 0.971152\nvt 0.346534 0.983926\nvt 0.348213 0.985481\nvt 0.344127 0.989532\nvt 0.904370 0.521895\nvt 0.902773 0.522297\nvt 0.904107 0.520119\nvt 0.996022 0.646505\nvt 0.994988 0.650795\nvt 0.993312 0.645773\nvt 0.367721 0.981084\nvt 0.363621 0.986185\nvt 0.896420 0.305748\nvt 0.899225 0.310550\nvt 0.894298 0.309832\nvt 0.523755 0.989705\nvt 0.521000 0.989526\nvt 0.997107 0.650658\nvt 0.367017 0.985824\nvt 0.993916 0.642314\nvt 0.295484 0.557442\nvt 0.296324 0.555872\nvt 0.296324 0.560056\nvt 0.368762 0.981435\nvt 0.364585 0.989297\nvt 0.898756 0.217039\nvt 0.892929 0.217640\nvt 0.893846 0.213826\nvt 0.011244 0.967502\nvt 0.010816 0.972387\nvt 0.003866 0.969025\nvt 0.071938 0.992794\nvt 0.073123 0.994087\nvt 0.071893 0.996702\nvt 0.888669 0.982006\nvt 0.890805 0.983555\nvt 0.894657 0.311672\nvt 0.346060 0.991177\nvt 0.899966 0.522089\nvt 0.895125 0.524430\nvt 0.898906 0.520942\nvt 0.885607 0.977187\nvt 0.889307 0.979935\nvt 0.121070 0.982178\nvt 0.127579 0.975743\nvt 0.127499 0.980653\nvt 0.119833 0.978729\nvt 0.903630 0.526227\nvt 0.892606 0.971395\nvt 0.891532 0.974072\nvt 0.891850 0.965803\nvt 0.002076 0.972884\nvt 0.000297 0.972119\nvt 0.000985 0.969832\nvt 0.892066 0.980069\nvt 0.789123 0.973068\nvt 0.782510 0.976095\nvt 0.519888 0.986693\nvt 0.342754 0.989293\nvt 0.343039 0.987732\nvt 0.343191 0.988248\nvt 0.118990 0.981824\nvt 0.368120 0.985378\nvt 0.901220 0.527197\nvt 0.121621 0.988878\nvt 0.349064 0.987987\nvt 0.351388 0.986270\nvt 0.350031 0.988675\nvt 0.004394 0.963187\nvt 0.781999 0.959572\nvt 0.784112 0.964884\nvt 0.349821 0.985798\nvt 0.781594 0.954705\nvt 0.294114 0.959974\nvt 0.295901 0.961099\nvt 0.292692 0.966292\nvt 0.012071 0.948122\nvt 0.348487 0.992853\nvt 0.522168 0.985890\nvt 0.524439 0.989412\nvt 0.791813 0.955063\nvt 0.790380 0.964318\nvt 0.506117 0.993126\nvt 0.782502 0.977894\nvt 0.073264 0.997094\nvt 0.899951 0.525351\nvt 0.899957 0.529873\nvt 0.296314 0.766573\nvt 0.296119 0.763625\nvt 0.296314 0.760968\nvt 0.296218 0.972975\nvt 0.294604 0.972361\nvt 0.293007 0.968966\nvt 0.995028 0.652763\nvt 0.887709 0.963032\nvt 0.788312 0.956059\nvt 0.295310 0.959463\nvt 0.294320 0.958561\nvt 0.791972 0.973213\nvt 0.007394 0.971937\nvt 0.004044 0.972909\nvt 0.129698 0.975727\nvt 0.899651 0.311488\nvt 0.519728 0.994047\nvt 0.001149 0.962381\nvt 0.884014 0.981872\nvt 0.363920 0.977601\nvt 0.997450 0.653358\nvt 0.994456 0.654110\nvt 0.129535 0.987436\nvt 0.896137 0.528118\nvt 0.129874 0.979251\nvt 0.782905 0.953084\nvt 0.895257 0.212790\nvt 0.898230 0.213136\nvt 0.786917 0.957454\nvt 0.292184 0.960063\nvt 0.291651 0.962897\nvt 0.290821 0.963021\nvt 0.966235 0.366210\nvt 0.965233 0.364256\nvt 0.967720 0.365761\nvt 0.343776 0.987287\nvt 0.344055 0.985287\nvt 0.013454 0.968840\nvt 0.893375 0.981035\nvt 0.893313 0.967676\nvt 0.892364 0.964146\nvt 0.008808 0.963066\nvt 0.011587 0.973320\nvt 0.891838 0.218893\nvt 0.891574 0.216019\nvt 0.013181 0.972092\nvt 0.524281 0.996544\nvt 0.788741 0.949953\nvt 0.788353 0.950312\nvt 0.009193 0.949275\nvt 0.885388 0.962168\nvt 0.364783 0.991546\nvt 0.350274 0.992808\nvt 0.577051 0.931443\nvt 0.576744 0.931182\nvt 0.577051 0.929141\nvt 0.001545 0.949256\nvt 0.351401 0.996903\nvt 0.349537 0.996273\nvt 0.780714 0.954932\nvt 0.788309 0.954348\nvt 0.519873 0.984331\nvt 0.898867 0.530550\nvt 0.781857 0.952547\nvt 0.781232 0.950541\nvt 0.791918 0.963601\nvt 0.012472 0.959189\nvt 0.012332 0.962957\nvt 0.000306 0.950048\nvt 0.351574 0.996304\nvt 0.894470 0.220517\nvt 0.898893 0.219531\nvt 0.998133 0.058194\nvt 0.998090 0.055375\nvt 0.999023 0.053799\nvt 0.897258 0.530060\nvt 0.969152 0.360014\nvt 0.967230 0.360424\nvt 0.291363 0.967972\nvt 0.779521 0.976708\nvt 0.126899 0.989627\nvt 0.290398 0.965554\nvt 0.899317 0.214576\nvt 0.072250 0.998097\nvt 0.904168 0.529375\nvt 0.900298 0.530275\nvt 0.520791 0.984006\nvt 0.000845 0.947657\nvt 0.074210 0.989912\nvt 0.071749 0.997862\nvt 0.003339 0.951677\nvt 0.004321 0.952395\nvt 0.002809 0.945510\nvt 0.968540 0.367499\nvt 0.959758 0.374094\nvt 0.959787 0.372486\nvt 0.960378 0.374094\nvt 0.735746 0.292937\nvt 0.738100 0.296179\nvt 0.735284 0.296461\nvt 0.990312 0.043832\nvt 0.992169 0.047099\nvt 0.990667 0.047874\nvt 0.991888 0.044791\nvt 0.991597 0.039841\nvt 0.993289 0.039112\nvt 0.993307 0.838185\nvt 0.992319 0.835572\nvt 0.993637 0.835931\nvt 0.786801 0.290072\nvt 0.788248 0.292406\nvt 0.788102 0.294206\nvt 0.783844 0.291179\nvt 0.742557 0.297832\nvt 0.740110 0.295037\nvt 0.743116 0.294375\nvt 0.847989 0.956820\nvt 0.848275 0.958856\nvt 0.847757 0.958514\nvt 0.781495 0.292843\nvt 0.781781 0.289026\nvt 0.779634 0.286568\nvt 0.777910 0.290760\nvt 0.777142 0.286286\nvt 0.648549 0.992997\nvt 0.650417 0.986404\nvt 0.650701 0.993257\nvt 0.732873 0.298926\nvt 0.732427 0.291978\nvt 0.780317 0.301501\nvt 0.778079 0.304156\nvt 0.778978 0.296386\nvt 0.733198 0.286821\nvt 0.731746 0.288204\nvt 0.731195 0.285432\nvt 0.724408 0.970810\nvt 0.725317 0.976641\nvt 0.724183 0.973056\nvt 0.728445 0.970903\nvt 0.725456 0.965831\nvt 0.937884 0.080202\nvt 0.937789 0.078597\nvt 0.940778 0.079443\nvt 0.741322 0.977594\nvt 0.738652 0.977953\nvt 0.738804 0.976396\nvt 0.779198 0.307116\nvt 0.777824 0.306611\nvt 0.941976 0.092586\nvt 0.938999 0.095244\nvt 0.939158 0.092326\nvt 0.994104 0.851095\nvt 0.992631 0.851684\nvt 0.992613 0.848881\nvt 0.731751 0.279433\nvt 0.739638 0.963830\nvt 0.739362 0.960956\nvt 0.742013 0.961594\nvt 0.993546 0.044288\nvt 0.070148 0.979881\nvt 0.076119 0.977099\nvt 0.076336 0.981222\nvt 0.941156 0.095925\nvt 0.789906 0.284590\nvt 0.790419 0.287582\nvt 0.961877 0.366471\nvt 0.963603 0.363268\nvt 0.964819 0.367078\nvt 0.787987 0.287323\nvt 0.790358 0.281546\nvt 0.750304 0.983919\nvt 0.752728 0.984221\nvt 0.749472 0.984472\nvt 0.988648 0.033872\nvt 0.940418 0.086129\nvt 0.937241 0.085768\nvt 0.742301 0.964760\nvt 0.737906 0.970662\nvt 0.979223 0.778641\nvt 0.986873 0.783144\nvt 0.982289 0.785073\nvt 0.740826 0.970258\nvt 0.941930 0.082428\nvt 0.789017 0.298163\nvt 0.788694 0.302022\nvt 0.780713 0.296554\nvt 0.781949 0.282970\nvt 0.990178 0.040055\nvt 0.987535 0.035357\nvt 0.741846 0.974208\nvt 0.753812 0.986411\nvt 0.073281 0.983395\nvt 0.984259 0.789053\nvt 0.995220 0.590884\nvt 0.994099 0.590535\nvt 0.994879 0.585848\nvt 0.981481 0.773078\nvt 0.983854 0.774607\nvt 0.878070 0.582860\nvt 0.878070 0.584368\nvt 0.877548 0.584259\nvt 0.753580 0.991881\nvt 0.749379 0.988558\nvt 0.644824 0.993304\nvt 0.646082 0.989032\nvt 0.743698 0.291445\nvt 0.744249 0.293594\nvt 0.733523 0.987794\nvt 0.730590 0.990347\nvt 0.729120 0.987258\nvt 0.077151 0.975264\nvt 0.073093 0.976957\nvt 0.210214 0.993861\nvt 0.210264 0.997188\nvt 0.208770 0.995242\nvt 0.994491 0.584194\nvt 0.734999 0.976608\nvt 0.728677 0.966844\nvt 0.743619 0.303472\nvt 0.744354 0.301096\nvt 0.946172 0.103016\nvt 0.947437 0.103008\nvt 0.947397 0.104356\nvt 0.654296 0.993375\nvt 0.653894 0.984320\nvt 0.733415 0.980878\nvt 0.729362 0.978818\nvt 0.992708 0.582286\nvt 0.994935 0.579462\nvt 0.780833 0.280857\nvt 0.745181 0.279869\nvt 0.745472 0.281628\nvt 0.744033 0.286682\nvt 0.960400 0.364901\nvt 0.962103 0.361659\nvt 0.735689 0.991480\nvt 0.068993 0.984163\nvt 0.068401 0.980212\nvt 0.984228 0.585014\nvt 0.985540 0.586278\nvt 0.984659 0.586783\nvt 0.081352 0.989066\nvt 0.077536 0.989912\nvt 0.077251 0.987513\nvt 0.991961 0.034444\nvt 0.991377 0.030501\nvt 0.994442 0.028624\nvt 0.482528 0.988011\nvt 0.480880 0.992315\nvt 0.480288 0.991616\nvt 0.650293 0.983897\nvt 0.982212 0.788090\nvt 0.733785 0.291931\nvt 0.741498 0.291887\nvt 0.727257 0.965227\nvt 0.986528 0.582812\nvt 0.984481 0.582709\nvt 0.081533 0.975215\nvt 0.484637 0.987797\nvt 0.484784 0.992220\nvt 0.736114 0.988514\nvt 0.073218 0.986165\nvt 0.782811 0.290066\nvt 0.733414 0.983215\nvt 0.728638 0.984683\nvt 0.735830 0.995385\nvt 0.733711 0.995361\nvt 0.731803 0.965130\nvt 0.995034 0.577107\nvt 0.990994 0.579138\nvt 0.987466 0.578493\nvt 0.485154 0.995059\nvt 0.784615 0.306212\nvt 0.788971 0.306634\nvt 0.735489 0.966815\nvt 0.722627 0.964240\nvt 0.070411 0.978182\nvt 0.736840 0.979816\nvt 0.730159 0.301499\nvt 0.732639 0.301041\nvt 0.732003 0.303571\nvt 0.995982 0.842465\nvt 0.995669 0.848285\nvt 0.990530 0.584257\nvt 0.991744 0.586556\nvt 0.654204 0.982449\nvt 0.481895 0.988125\nvt 0.988764 0.031226\nvt 0.986494 0.032524\nvt 0.987035 0.030880\nvt 0.736523 0.974014\nvt 0.736616 0.981332\nvt 0.080996 0.979765\nvt 0.081360 0.982639\nvt 0.080799 0.983007\nvt 0.989267 0.590153\nvt 0.736976 0.969084\nvt 0.781399 0.307116\nvt 0.788285 0.307800\nvt 0.645632 0.996005\nvt 0.791207 0.302337\nvt 0.791702 0.307033\nvt 0.735004 0.306448\nvt 0.736444 0.305986\nvt 0.736554 0.308325\nvt 0.725939 0.978071\nvt 0.735171 0.299078\nvt 0.733999 0.302596\nvt 0.741132 0.286988\nvt 0.742496 0.279810\nvt 0.997714 0.850808\nvt 0.995845 0.851509\nvt 0.733721 0.281806\nvt 0.941704 0.085659\nvt 0.755663 0.988837\nvt 0.756409 0.993155\nvt 0.754950 0.994689\nvt 0.753779 0.984674\nvt 0.997602 0.844104\nvt 0.995877 0.838266\nvt 0.746538 0.994933\nvt 0.747540 0.986923\nvt 0.743855 0.277909\nvt 0.741526 0.277971\nvt 0.081009 0.986750\nvt 0.983913 0.772583\nvt 0.993909 0.842802\nvt 0.988191 0.784881\nvt 0.736084 0.982884\nvt 0.788437 0.297094\nvt 0.995080 0.836810\nvt 0.989071 0.581234\nvt 0.737786 0.278720\nvt 0.733699 0.278807\nvt 0.733768 0.278022\nvt 0.790434 0.297363\nvt 0.751627 0.995772\nvt 0.747766 0.996152\nvt 0.070168 0.985766\nvt 0.986465 0.581019\nvt 0.481118 0.994747\nvt 0.069252 0.985362\nvt 0.203625 0.914547\nvt 0.202742 0.913885\nvt 0.203625 0.910986\nvt 0.209602 0.993181\nvt 0.745267 0.992973\nvt 0.790296 0.307715\nvt 0.744699 0.306192\nvt 0.745409 0.304616\nvt 0.791606 0.281378\nvt 0.648624 0.995844\nvt 0.959994 0.359537\nvt 0.791451 0.279523\nvt 0.942566 0.099160\nvt 0.942156 0.096490\nvt 0.942645 0.096933\nvt 0.644004 0.994762\nvt 0.646838 0.985218\nvt 0.984722 0.581796\nvt 0.745326 0.990263\nvt 0.483921 0.997710\nvt 0.254874 0.993561\nvt 0.255402 0.994742\nvt 0.254524 0.994916\nvt 0.742329 0.300838\nvt 0.651683 0.995634\nvt 0.782989 0.286470\nvt 0.730557 0.993876\nvt 0.782400 0.277976\nvt 0.745342 0.307464\nvt 0.313406 0.969774\nvt 0.314061 0.966992\nvt 0.315118 0.970736\nvt 0.881257 0.945282\nvt 0.888256 0.943739\nvt 0.884078 0.944816\nvt 0.939400 0.588611\nvt 0.937533 0.590515\nvt 0.937162 0.587735\nvt 0.993485 0.264780\nvt 0.996910 0.267486\nvt 0.993671 0.266638\nvt 0.960285 0.864619\nvt 0.965282 0.864504\nvt 0.964936 0.865574\nvt 0.581538 0.946419\nvt 0.580210 0.945972\nvt 0.580867 0.944364\nvt 0.313957 0.980808\nvt 0.311459 0.981116\nvt 0.312662 0.975195\nvt 0.886254 0.944913\nvt 0.460304 0.982309\nvt 0.460563 0.987554\nvt 0.455989 0.987514\nvt 0.852048 0.938071\nvt 0.851773 0.941874\nvt 0.850432 0.940666\nvt 0.974271 0.883371\nvt 0.972818 0.881875\nvt 0.975138 0.881271\nvt 0.893396 0.933633\nvt 0.895613 0.930259\nvt 0.894863 0.936668\nvt 0.290444 0.892872\nvt 0.290739 0.891808\nvt 0.290737 0.893998\nvt 0.996514 0.252069\nvt 0.997161 0.254381\nvt 0.993421 0.251024\nvt 0.997641 0.252955\nvt 0.970375 0.864110\nvt 0.577496 0.957635\nvt 0.577471 0.955423\nvt 0.578508 0.958194\nvt 0.896139 0.933023\nvt 0.454561 0.982829\nvt 0.452824 0.987198\nvt 0.451759 0.982450\nvt 0.449885 0.987514\nvt 0.974304 0.865534\nvt 0.971301 0.865544\nvt 0.972878 0.863521\nvt 0.973025 0.872425\nvt 0.326666 0.966942\nvt 0.325087 0.966942\nvt 0.327238 0.965569\nvt 0.325592 0.972761\nvt 0.326412 0.971073\nvt 0.316401 0.974903\nvt 0.852668 0.960549\nvt 0.851775 0.961289\nvt 0.850502 0.960375\nvt 0.959114 0.864164\nvt 0.958807 0.862435\nvt 0.326412 0.971387\nvt 0.326875 0.974212\nvt 0.972842 0.876902\nvt 0.970566 0.876767\nvt 0.959585 0.874081\nvt 0.959584 0.871706\nvt 0.960514 0.876104\nvt 0.848450 0.944356\nvt 0.849119 0.947113\nvt 0.318418 0.980744\nvt 0.324970 0.975206\nvt 0.313444 0.982467\nvt 0.863414 0.930313\nvt 0.858943 0.940997\nvt 0.857161 0.940475\nvt 0.461525 0.975730\nvt 0.319306 0.971758\nvt 0.366080 0.935827\nvt 0.364511 0.939637\nvt 0.362501 0.934194\nvt 0.995739 0.260526\nvt 0.992003 0.259455\nvt 0.993496 0.253832\nvt 0.968379 0.872258\nvt 0.963078 0.872404\nvt 0.963606 0.868613\nvt 0.367592 0.940629\nvt 0.808273 0.986396\nvt 0.816383 0.986717\nvt 0.809981 0.992036\nvt 0.885516 0.941464\nvt 0.882830 0.941063\nvt 0.890951 0.940095\nvt 0.582723 0.951400\nvt 0.580414 0.950793\nvt 0.363668 0.928775\nvt 0.368020 0.932687\nvt 0.193520 0.979290\nvt 0.194488 0.978626\nvt 0.195309 0.983150\nvt 0.454977 0.975183\nvt 0.929370 0.577039\nvt 0.926190 0.584361\nvt 0.926663 0.578300\nvt 0.855105 0.929809\nvt 0.853588 0.939710\nvt 0.817167 0.984619\nvt 0.956130 0.482450\nvt 0.962425 0.496314\nvt 0.959594 0.496152\nvt 0.887907 0.926927\nvt 0.884368 0.928152\nvt 0.883926 0.925271\nvt 0.460487 0.973681\nvt 0.320300 0.968554\nvt 0.817393 0.993978\nvt 0.890372 0.946209\nvt 0.928698 0.588773\nvt 0.931918 0.590914\nvt 0.578920 0.950740\nvt 0.962424 0.862374\nvt 0.965252 0.863416\nvt 0.952228 0.481607\nvt 0.950394 0.494977\nvt 0.325331 0.979556\nvt 0.925814 0.576254\nvt 0.962555 0.879715\nvt 0.961991 0.876617\nvt 0.893737 0.951890\nvt 0.993766 0.455942\nvt 0.993186 0.452936\nvt 0.995951 0.451460\nvt 0.885861 0.956111\nvt 0.886251 0.960484\nvt 0.880686 0.947506\nvt 0.856697 0.947662\nvt 0.860350 0.953852\nvt 0.853718 0.952969\nvt 0.864434 0.931151\nvt 0.861478 0.940760\nvt 0.953081 0.498193\nvt 0.948186 0.498785\nvt 0.951919 0.497171\nvt 0.953089 0.480677\nvt 0.955767 0.481176\nvt 0.192897 0.986364\nvt 0.195277 0.988681\nvt 0.937753 0.583978\nvt 0.860619 0.947507\nvt 0.863458 0.952946\nvt 0.964294 0.866727\nvt 0.998105 0.255915\nvt 0.997006 0.260591\nvt 0.948224 0.490635\nvt 0.948612 0.493830\nvt 0.947475 0.495912\nvt 0.323610 0.982361\nvt 0.924727 0.588372\nvt 0.924972 0.576851\nvt 0.957550 0.498461\nvt 0.974739 0.883299\nvt 0.317031 0.968485\nvt 0.967595 0.882378\nvt 0.895698 0.958724\nvt 0.896244 0.957166\nvt 0.997459 0.264580\nvt 0.998070 0.267930\nvt 0.382294 0.993997\nvt 0.379620 0.991722\nvt 0.381991 0.988288\nvt 0.973542 0.883028\nvt 0.364291 0.942633\nvt 0.811530 0.984344\nvt 0.993440 0.267079\nvt 0.861021 0.961016\nvt 0.857602 0.959960\nvt 0.857383 0.959229\nvt 0.891965 0.985435\nvt 0.894506 0.986112\nvt 0.890778 0.987125\nvt 0.580432 0.956275\nvt 0.885387 0.932797\nvt 0.960470 0.868868\nvt 0.854784 0.941676\nvt 0.972552 0.862754\nvt 0.581598 0.957843\nvt 0.893146 0.990382\nvt 0.367770 0.943012\nvt 0.366227 0.944414\nvt 0.929945 0.576422\nvt 0.927953 0.575431\nvt 0.974214 0.877266\nvt 0.996073 0.268126\nvt 0.928739 0.575375\nvt 0.380051 0.988372\nvt 0.381042 0.987574\nvt 0.379231 0.990372\nvt 0.992886 0.455797\nvt 0.893117 0.937618\nvt 0.893016 0.947905\nvt 0.895278 0.952901\nvt 0.449577 0.983887\nvt 0.452838 0.976258\nvt 0.368228 0.929316\nvt 0.363785 0.927086\nvt 0.366507 0.927780\nvt 0.854589 0.926923\nvt 0.855757 0.925150\nvt 0.882498 0.927541\nvt 0.958703 0.867737\nvt 0.882108 0.946725\nvt 0.892537 0.929286\nvt 0.756761 0.854790\nvt 0.756761 0.858045\nvt 0.756409 0.856402\nvt 0.855030 0.946390\nvt 0.896507 0.944128\nvt 0.897091 0.943546\nvt 0.897131 0.945138\nvt 0.886750 0.960088\nvt 0.960137 0.879005\nvt 0.864296 0.959888\nvt 0.177037 0.966878\nvt 0.176189 0.966050\nvt 0.176510 0.962193\nvt 0.583697 0.951623\nvt 0.583263 0.949066\nvt 0.383982 0.998670\nvt 0.381275 0.995192\nvt 0.578219 0.943793\nvt 0.578889 0.947382\nvt 0.865041 0.926964\nvt 0.958539 0.484722\nvt 0.583264 0.958415\nvt 0.583822 0.959702\nvt 0.939358 0.585477\nvt 0.647283 0.313164\nvt 0.646483 0.311785\nvt 0.647283 0.311828\nvt 0.894283 0.984850\nvt 0.926072 0.590162\nvt 0.851471 0.955924\nvt 0.995099 0.458972\nvt 0.891950 0.926148\nvt 0.462973 0.982070\nvt 0.850222 0.948212\nvt 0.856438 0.947371\nvt 0.893348 0.939358\nvt 0.889784 0.942465\nvt 0.851570 0.936352\nvt 0.996432 0.458168\nvt 0.974401 0.863451\nvt 0.883677 0.936373\nvt 0.193482 0.988928\nvt 0.854113 0.961513\nvt 0.894230 0.996366\nvt 0.890798 0.996291\nvt 0.890923 0.993410\nvt 0.894495 0.925246\nvt 0.891344 0.924922\nvt 0.859918 0.944061\nvt 0.818026 0.982440\nvt 0.963404 0.498855\nvt 0.193797 0.973576\nvt 0.193226 0.976928\nvt 0.191723 0.974039\nvt 0.579511 0.943436\nvt 0.815154 0.995184\nvt 0.205506 0.950908\nvt 0.205746 0.950062\nvt 0.205746 0.951955\nvt 0.862773 0.961888\nvt 0.858152 0.947884\nvt 0.949704 0.484861\nvt 0.463158 0.988166\nvt 0.993541 0.452107\nvt 0.896115 0.927008\nvt 0.463637 0.985606\nvt 0.332623 0.979915\nvt 0.331321 0.975375\nvt 0.332255 0.974970\nvt 0.929425 0.994546\nvt 0.931528 0.995895\nvt 0.928570 0.997338\nvt 0.926136 0.995926\nvt 0.926766 0.997518\nvt 0.994533 0.174800\nvt 0.996288 0.178846\nvt 0.995234 0.180603\nvt 0.358309 0.962306\nvt 0.358899 0.956391\nvt 0.361489 0.958175\nvt 0.927277 0.983992\nvt 0.924828 0.992912\nvt 0.285975 0.957276\nvt 0.283202 0.945103\nvt 0.286349 0.942238\nvt 0.360632 0.943478\nvt 0.358204 0.942125\nvt 0.284413 0.942352\nvt 0.332273 0.969534\nvt 0.331289 0.973977\nvt 0.337441 0.966592\nvt 0.338556 0.974353\nvt 0.287330 0.972433\nvt 0.284492 0.963953\nvt 0.355864 0.952715\nvt 0.351109 0.949459\nvt 0.348304 0.955909\nvt 0.354824 0.960398\nvt 0.354164 0.938860\nvt 0.360815 0.930218\nvt 0.977501 0.250495\nvt 0.973503 0.253012\nvt 0.976528 0.249981\nvt 0.998072 0.170220\nvt 0.997882 0.173308\nvt 0.996364 0.170321\nvt 0.358789 0.928927\nvt 0.360689 0.927362\nvt 0.343824 0.979399\nvt 0.289587 0.935849\nvt 0.289515 0.941885\nvt 0.287087 0.937960\nvt 0.997263 0.866471\nvt 0.996970 0.860961\nvt 0.998585 0.861386\nvt 0.344845 0.970462\nvt 0.345484 0.974455\nvt 0.406452 0.991377\nvt 0.405883 0.983225\nvt 0.408177 0.986798\nvt 0.924986 0.995675\nvt 0.289280 0.954311\nvt 0.347420 0.975370\nvt 0.345416 0.979747\nvt 0.340722 0.965041\nvt 0.344885 0.967675\nvt 0.979012 0.235819\nvt 0.979202 0.248256\nvt 0.976213 0.261752\nvt 0.978793 0.257263\nvt 0.976134 0.263726\nvt 0.347216 0.970105\nvt 0.343449 0.980943\nvt 0.287488 0.932754\nvt 0.971424 0.244575\nvt 0.972248 0.232429\nvt 0.973980 0.226101\nvt 0.993509 0.177939\nvt 0.976536 0.257464\nvt 0.973472 0.259455\nvt 0.973898 0.264485\nvt 0.976346 0.226583\nvt 0.977867 0.228408\nvt 0.999797 0.870360\nvt 0.997408 0.870003\nvt 0.997925 0.868854\nvt 0.403877 0.981309\nvt 0.401989 0.986202\nvt 0.407608 0.979890\nvt 0.290248 0.937799\nvt 0.289863 0.962957\nvt 0.335545 0.981317\nvt 0.931718 0.993387\nvt 0.349308 0.950128\nvt 0.280552 0.945488\nvt 0.976002 0.224171\nvt 0.973047 0.251328\nvt 0.411769 0.992878\nvt 0.413776 0.993653\nvt 0.977771 0.237142\nvt 0.285906 0.972242\nvt 0.923891 0.983322\nvt 0.924802 0.982839\nvt 0.281466 0.948152\nvt 0.287199 0.974331\nvt 0.925536 0.996853\nvt 0.361948 0.947137\nvt 0.289283 0.969722\nvt 0.402434 0.993155\nvt 0.401305 0.993492\nvt 0.994903 0.181422\nvt 0.993432 0.180346\nvt 0.999079 0.857826\nvt 0.996794 0.858487\nvt 0.283312 0.958674\nvt 0.286465 0.933418\nvt 0.362076 0.928452\nvt 0.361684 0.926961\nvt 0.931744 0.984782\nvt 0.941982 0.294703\nvt 0.943047 0.297796\nvt 0.937025 0.294919\nvt 0.942216 0.310651\nvt 0.943225 0.311012\nvt 0.941589 0.312458\nvt 0.994521 0.932058\nvt 0.992714 0.936271\nvt 0.992628 0.934331\nvt 0.995075 0.934382\nvt 0.967905 0.384181\nvt 0.970176 0.384404\nvt 0.970146 0.398489\nvt 0.963359 0.378966\nvt 0.961125 0.383721\nvt 0.936848 0.310951\nvt 0.936614 0.305015\nvt 0.989269 0.854320\nvt 0.993257 0.853585\nvt 0.991927 0.856114\nvt 0.992266 0.869321\nvt 0.989734 0.867090\nvt 0.965374 0.601179\nvt 0.967486 0.594735\nvt 0.965118 0.609220\nvt 0.996288 0.935383\nvt 0.995377 0.942119\nvt 0.966348 0.407554\nvt 0.965827 0.412146\nvt 0.962267 0.404100\nvt 0.967295 0.412171\nvt 0.973487 0.607722\nvt 0.972569 0.624361\nvt 0.971684 0.609975\nvt 0.974282 0.629568\nvt 0.972582 0.631426\nvt 0.964600 0.383574\nvt 0.961539 0.385863\nvt 0.966583 0.381518\nvt 0.969441 0.593578\nvt 0.974135 0.623195\nvt 0.932001 0.295859\nvt 0.929396 0.303883\nvt 0.570399 0.951010\nvt 0.563049 0.952201\nvt 0.565440 0.939460\nvt 0.571694 0.959493\nvt 0.561046 0.959982\nvt 0.570012 0.939419\nvt 0.566927 0.926796\nvt 0.569050 0.927304\nvt 0.023806 0.990465\nvt 0.022344 0.996451\nvt 0.021803 0.991718\nvt 0.965256 0.625433\nvt 0.969272 0.625798\nvt 0.969665 0.631562\nvt 0.944121 0.299960\nvt 0.932821 0.311058\nvt 0.926588 0.302097\nvt 0.562603 0.941335\nvt 0.943586 0.295802\nvt 0.927023 0.305117\nvt 0.573750 0.952113\nvt 0.986984 0.856877\nvt 0.995894 0.932142\nvt 0.995319 0.865244\nvt 0.994120 0.870048\nvt 0.392877 0.989968\nvt 0.388424 0.991764\nvt 0.388399 0.983676\nvt 0.962144 0.391412\nvt 0.967804 0.612238\nvt 0.966482 0.371076\nvt 0.967642 0.369921\nvt 0.970171 0.374936\nvt 0.565740 0.928580\nvt 0.970360 0.636583\nvt 0.971705 0.635623\nvt 0.561028 0.954476\nvt 0.391952 0.980783\nvt 0.960939 0.396400\nvt 0.967593 0.630270\nvt 0.966380 0.627796\nvt 0.935631 0.293452\nvt 0.560155 0.953850\nvt 0.974129 0.621865\nvt 0.991863 0.943429\nvt 0.930591 0.295497\nvt 0.927991 0.298160\nvt 0.568695 0.924541\nvt 0.567437 0.924781\nvt 0.968751 0.591633\nvt 0.969676 0.592233\nvt 0.972917 0.602247\nvt 0.937759 0.312523\nvt 0.987173 0.868519\nvt 0.989341 0.870444\nvt 0.574994 0.959551\nvt 0.929157 0.309449\nvt 0.988667 0.944554\nvt 0.989990 0.939939\nvt 0.398684 0.987000\nvt 0.398802 0.991112\nvt 0.965609 0.413712\nvt 0.965117 0.374221\nvt 0.400392 0.992608\nvt 0.995270 0.854147\nvt 0.394495 0.980250\nvt 0.963252 0.409786\nvt 0.571747 0.940458\nvt 0.021585 0.989036\nvt 0.966105 0.368825\nvt 0.022156 0.986336\nvt 0.023841 0.986418\nvt 0.967877 0.592602\nvt 0.969483 0.635649\nvt 0.564375 0.961571\nvt 0.387185 0.987907\nvt 0.260545 0.974450\nvt 0.260233 0.969652\nvt 0.261692 0.968688\nvt 0.658459 0.993900\nvt 0.659652 0.996674\nvt 0.656498 0.995479\nvt 0.661808 0.994964\nvt 0.661968 0.996359\nvt 0.993870 0.972472\nvt 0.995599 0.978388\nvt 0.993837 0.977197\nvt 0.336373 0.961775\nvt 0.334265 0.956873\nvt 0.337608 0.955941\nvt 0.659886 0.983328\nvt 0.662901 0.991881\nvt 0.260745 0.949335\nvt 0.261133 0.964414\nvt 0.257978 0.961451\nvt 0.339786 0.943077\nvt 0.342545 0.942417\nvt 0.259167 0.964244\nvt 0.712592 0.966203\nvt 0.718273 0.970041\nvt 0.711855 0.974001\nvt 0.261720 0.934242\nvt 0.259188 0.942609\nvt 0.346571 0.951238\nvt 0.341559 0.953197\nvt 0.347011 0.958992\nvt 0.340229 0.960849\nvt 0.347198 0.940518\nvt 0.343377 0.930267\nvt 0.980087 0.511634\nvt 0.979170 0.512169\nvt 0.976054 0.508726\nvt 0.257930 0.947722\nvt 0.257356 0.943377\nvt 0.344831 0.928175\nvt 0.718023 0.979288\nvt 0.706895 0.979260\nvt 0.718124 0.974345\nvt 0.263319 0.970418\nvt 0.263334 0.964550\nvt 0.113571 0.979380\nvt 0.115395 0.984445\nvt 0.114234 0.984812\nvt 0.705408 0.970401\nvt 0.704972 0.974411\nvt 0.616803 0.993099\nvt 0.615154 0.988474\nvt 0.617487 0.984954\nvt 0.662940 0.994641\nvt 0.263559 0.953018\nvt 0.703272 0.975769\nvt 0.705321 0.979682\nvt 0.709240 0.964806\nvt 0.705214 0.967628\nvt 0.982418 0.526647\nvt 0.982274 0.513958\nvt 0.978444 0.500414\nvt 0.978659 0.498655\nvt 0.981615 0.505408\nvt 0.702848 0.971249\nvt 0.707343 0.980784\nvt 0.261770 0.973874\nvt 0.995075 0.961674\nvt 0.996121 0.975159\nvt 0.978784 0.504695\nvt 0.975811 0.502639\nvt 0.976203 0.497730\nvt 0.980397 0.538488\nvt 0.979812 0.537036\nvt 0.260463 0.933906\nvt 0.261466 0.932145\nvt 0.116245 0.974898\nvt 0.113988 0.976835\nvt 0.113602 0.975521\nvt 0.619557 0.983059\nvt 0.621090 0.987805\nvt 0.616332 0.981499\nvt 0.333971 0.963337\nvt 0.342330 0.928150\nvt 0.336926 0.946402\nvt 0.715198 0.980813\nvt 0.343573 0.927062\nvt 0.656134 0.993011\nvt 0.255031 0.961017\nvt 0.996398 0.960639\nvt 0.611735 0.994318\nvt 0.609438 0.995198\nvt 0.617600 0.980353\nvt 0.980963 0.524965\nvt 0.663204 0.982390\nvt 0.662263 0.981982\nvt 0.256015 0.958124\nvt 0.996624 0.978451\nvt 0.996991 0.977050\nvt 0.116119 0.987822\nvt 0.113702 0.986831\nvt 0.991229 0.970233\nvt 0.620275 0.994282\nvt 0.655495 0.985498\nvt 0.977736 0.532436\nvt 0.976563 0.510596\nvt 0.193215 0.972167\nvt 0.188262 0.971977\nvt 0.194278 0.969061\nvt 0.966166 0.357988\nvt 0.967268 0.356459\nvt 0.966825 0.358718\nvt 0.964790 0.313690\nvt 0.965144 0.315419\nvt 0.963031 0.316590\nvt 0.982475 0.176182\nvt 0.980600 0.172092\nvt 0.982947 0.173884\nvt 0.968231 0.343333\nvt 0.969733 0.329120\nvt 0.970123 0.343493\nvt 0.968759 0.529982\nvt 0.967514 0.536360\nvt 0.966888 0.528227\nvt 0.963981 0.348756\nvt 0.961167 0.343853\nvt 0.193448 0.956241\nvt 0.187848 0.961895\nvt 0.188083 0.955985\nvt 0.236489 0.992529\nvt 0.239130 0.990626\nvt 0.240515 0.993192\nvt 0.239470 0.977480\nvt 0.236945 0.979758\nvt 0.982961 0.167276\nvt 0.984477 0.172948\nvt 0.965885 0.319997\nvt 0.961923 0.323523\nvt 0.967306 0.317823\nvt 0.966757 0.512585\nvt 0.968645 0.514914\nvt 0.965767 0.534435\nvt 0.961651 0.341769\nvt 0.965027 0.344000\nvt 0.967149 0.346018\nvt 0.969899 0.499860\nvt 0.183238 0.971047\nvt 0.180631 0.963028\nvt 0.950687 0.403363\nvt 0.956580 0.392069\nvt 0.958038 0.405196\nvt 0.948689 0.411739\nvt 0.959127 0.412583\nvt 0.952043 0.391870\nvt 0.956119 0.380276\nvt 0.953703 0.379761\nvt 0.978001 0.154255\nvt 0.978183 0.151888\nvt 0.982656 0.149985\nvt 0.974566 0.530803\nvt 0.970454 0.536601\nvt 0.971128 0.531319\nvt 0.195353 0.966902\nvt 0.959993 0.407389\nvt 0.972657 0.499823\nvt 0.971360 0.497445\nvt 0.184153 0.955892\nvt 0.177825 0.964832\nvt 0.961279 0.334604\nvt 0.960365 0.328301\nvt 0.675113 0.988793\nvt 0.670345 0.992534\nvt 0.672893 0.983358\nvt 0.959022 0.393933\nvt 0.194452 0.971728\nvt 0.178259 0.961813\nvt 0.946999 0.404423\nvt 0.234082 0.989976\nvt 0.984048 0.175959\nvt 0.241322 0.976747\nvt 0.242514 0.981480\nvt 0.674847 0.993741\nvt 0.972440 0.517312\nvt 0.970156 0.351206\nvt 0.968328 0.357307\nvt 0.969489 0.540956\nvt 0.967793 0.540224\nvt 0.668463 0.983941\nvt 0.186869 0.973463\nvt 0.965840 0.526043\nvt 0.181829 0.971418\nvt 0.179228 0.968765\nvt 0.954125 0.377080\nvt 0.955672 0.377837\nvt 0.973649 0.532934\nvt 0.967278 0.507115\nvt 0.974645 0.515558\nvt 0.194456 0.955880\nvt 0.190818 0.954457\nvt 0.234402 0.978455\nvt 0.237071 0.976512\nvt 0.945161 0.411665\nvt 0.180835 0.957346\nvt 0.664596 0.994290\nvt 0.665116 0.987716\nvt 0.953059 0.378181\nvt 0.965805 0.353340\nvt 0.663437 0.994410\nvt 0.242471 0.992565\nvt 0.984556 0.160375\nvt 0.977830 0.164833\nvt 0.950073 0.392895\nvt 0.975774 0.153018\nvt 0.974212 0.155057\nvt 0.974593 0.156282\nvt 0.981750 0.162708\nvt 0.970236 0.540952\nvt 0.955697 0.414045\nvt 0.977724 0.167365\nvt 0.188149 0.974720\nvt 0.185730 0.976597\nvt 0.178376 0.976839\nvt 0.033941 0.972703\nvt 0.032849 0.976478\nvt 0.032353 0.971264\nvt 0.203482 0.982322\nvt 0.201949 0.980904\nvt 0.202804 0.977890\nvt 0.979059 0.714993\nvt 0.981061 0.709047\nvt 0.981184 0.717634\nvt 0.033687 0.978615\nvt 0.030979 0.980611\nvt 0.185015 0.980258\nvt 0.189217 0.975870\nvt 0.021423 0.970760\nvt 0.022055 0.968292\nvt 0.025235 0.969495\nvt 0.023860 0.966518\nvt 0.983238 0.697856\nvt 0.984578 0.700488\nvt 0.982033 0.702031\nvt 0.109234 0.933033\nvt 0.109874 0.931886\nvt 0.109883 0.934338\nvt 0.203180 0.964596\nvt 0.199202 0.965861\nvt 0.202911 0.958295\nvt 0.987630 0.632500\nvt 0.990611 0.621388\nvt 0.988684 0.632552\nvt 0.988195 0.622094\nvt 0.991056 0.613083\nvt 0.027874 0.985712\nvt 0.023809 0.984016\nvt 0.022245 0.975916\nvt 0.198477 0.977369\nvt 0.197158 0.970598\nvt 0.200102 0.975244\nvt 0.028005 0.979619\nvt 0.983933 0.626732\nvt 0.984306 0.624425\nvt 0.986651 0.632958\nvt 0.967885 0.591369\nvt 0.968528 0.587512\nvt 0.971411 0.588225\nvt 0.200127 0.968431\nvt 0.031191 0.984246\nvt 0.184628 0.986445\nvt 0.177713 0.980585\nvt 0.244492 0.947927\nvt 0.246402 0.938938\nvt 0.248682 0.946326\nvt 0.243632 0.950317\nvt 0.245503 0.952618\nvt 0.201896 0.971802\nvt 0.252625 0.957016\nvt 0.249506 0.956387\nvt 0.250904 0.944625\nvt 0.983679 0.729536\nvt 0.981349 0.726088\nvt 0.987930 0.615895\nvt 0.977380 0.712664\nvt 0.978703 0.705658\nvt 0.987856 0.633860\nvt 0.243160 0.953597\nvt 0.188094 0.987220\nvt 0.189061 0.979746\nvt 0.247967 0.958673\nvt 0.247234 0.933794\nvt 0.247686 0.943124\nvt 0.248617 0.933113\nvt 0.992271 0.622761\nvt 0.251693 0.962739\nvt 0.970661 0.591589\nvt 0.203126 0.955148\nvt 0.204546 0.956995\nvt 0.248007 0.932418\nvt 0.984426 0.707146\nvt 0.179399 0.975069\nvt 0.177149 0.976057\nvt 0.979177 0.723696\nvt 0.196518 0.968598\nvt 0.195801 0.966681\nvt 0.185305 0.989184\nvt 0.254271 0.955761\nvt 0.031656 0.975089\nvt 0.187842 0.973669\nvt 0.984582 0.731332\nvt 0.983629 0.731504\nvt 0.291469 0.939307\nvt 0.290394 0.935352\nvt 0.291469 0.934071\nvt 0.248966 0.963011\nvt 0.249695 0.967333\nvt 0.977585 0.714867\nvt 0.204581 0.981158\nvt 0.204419 0.982434\nvt 0.984922 0.729941\nvt 0.993271 0.717983\nvt 0.995152 0.714983\nvt 0.996697 0.720709\nvt 0.983675 0.718351\nvt 0.253624 0.946185\nvt 0.248468 0.966753\nvt 0.985675 0.618355\nvt 0.984306 0.617813\nvt 0.251928 0.965290\nvt 0.997430 0.718269\nvt 0.897131 0.950381\nvt 0.896655 0.948776\nvt 0.897131 0.947696\nvt 0.178661 0.983867\nvt 0.982416 0.696436\nvt 0.200702 0.957493\nvt 0.481334 0.981313\nvt 0.482636 0.986532\nvt 0.480739 0.985064\nvt 0.527468 0.983618\nvt 0.529773 0.981109\nvt 0.534006 0.982208\nvt 0.975489 0.662573\nvt 0.977305 0.665588\nvt 0.976108 0.669356\nvt 0.481590 0.986910\nvt 0.480744 0.986367\nvt 0.533843 0.993295\nvt 0.536760 0.982750\nvt 0.536613 0.981355\nvt 0.305248 0.994460\nvt 0.307360 0.996440\nvt 0.306142 0.997758\nvt 0.975957 0.437872\nvt 0.975024 0.434199\nvt 0.976181 0.432828\nvt 0.982181 0.434895\nvt 0.982897 0.438267\nvt 0.980923 0.438179\nvt 0.534848 0.995077\nvt 0.527714 0.994123\nvt 0.529508 0.995326\nvt 0.975043 0.428713\nvt 0.976771 0.427167\nvt 0.975516 0.431670\nvt 0.481960 0.976410\nvt 0.480338 0.980587\nvt 0.981249 0.668785\nvt 0.983049 0.660882\nvt 0.983295 0.667211\nvt 0.979971 0.641338\nvt 0.979115 0.653164\nvt 0.976585 0.653583\nvt 0.490654 0.974111\nvt 0.092679 0.971703\nvt 0.091859 0.977958\nvt 0.085401 0.977380\nvt 0.083211 0.983568\nvt 0.092352 0.983280\nvt 0.087263 0.971752\nvt 0.681716 0.305518\nvt 0.679312 0.311367\nvt 0.677836 0.304123\nvt 0.089815 0.961146\nvt 0.087759 0.963204\nvt 0.088817 0.959511\nvt 0.094543 0.979700\nvt 0.095016 0.983939\nvt 0.995371 0.019585\nvt 0.996927 0.025176\nvt 0.996034 0.026061\nvt 0.083437 0.978306\nvt 0.296337 0.717519\nvt 0.296337 0.720883\nvt 0.295645 0.719787\nvt 0.980395 0.676607\nvt 0.979549 0.676404\nvt 0.976782 0.673276\nvt 0.492511 0.972438\nvt 0.494073 0.980228\nvt 0.307619 0.991466\nvt 0.979511 0.442743\nvt 0.977226 0.440942\nvt 0.307110 0.998111\nvt 0.978908 0.451333\nvt 0.982502 0.445727\nvt 0.087577 0.960643\nvt 0.981556 0.641587\nvt 0.993810 0.020124\nvt 0.992932 0.019085\nvt 0.305355 0.996885\nvt 0.977629 0.445736\nvt 0.492657 0.986990\nvt 0.493949 0.985525\nvt 0.494041 0.986792\nvt 0.974474 0.432532\nvt 0.982565 0.426601\nvt 0.981162 0.418040\nvt 0.982225 0.419963\nvt 0.981703 0.431358\nvt 0.094293 0.974101\nvt 0.085411 0.972397\nvt 0.093338 0.970155\nvt 0.082291 0.983086\nvt 0.982860 0.442367\nvt 0.481207 0.951221\nvt 0.481207 0.953543\nvt 0.480502 0.952471\nvt 0.673722 0.311468\nvt 0.974375 0.438010\nvt 0.489931 0.971941\nvt 0.483756 0.973484\nvt 0.979540 0.417954\nvt 0.978349 0.419184\nvt 0.983188 0.651106\nvt 0.535912 0.993526\nvt 0.980454 0.416028\nvt 0.981029 0.416095\nvt 0.479974 0.981536\nvt 0.983389 0.646991\nvt 0.983364 0.426769\nvt 0.085506 0.971107\nvt 0.086412 0.969186\nvt 0.977912 0.449787\nvt 0.307498 0.987098\nvt 0.303606 0.987311\nvt 0.682468 0.310054\nvt 0.681909 0.312529\nvt 0.997707 0.027837\nvt 0.537212 0.983496\nvt 0.998928 0.926472\nvt 0.998400 0.930976\nvt 0.997624 0.929291\nvt 0.307876 0.997732\nvt 0.081910 0.983982\nvt 0.489495 0.981087\nvt 0.309770 0.989360\nvt 0.682226 0.312911\nvt 0.981597 0.434310\nvt 0.983004 0.431144\nvt 0.676025 0.303329\nvt 0.968662 0.991228\nvt 0.960889 0.989495\nvt 0.967090 0.988737\nvt 0.980514 0.188683\nvt 0.981231 0.186117\nvt 0.983029 0.191024\nvt 0.986531 0.932009\nvt 0.987353 0.933768\nvt 0.984966 0.933364\nvt 0.978896 0.088490\nvt 0.978278 0.089051\nvt 0.977176 0.083430\nvt 0.975152 0.070667\nvt 0.977284 0.067993\nvt 0.977082 0.076440\nvt 0.982976 0.193364\nvt 0.986272 0.194112\nvt 0.977626 0.059551\nvt 0.978720 0.054719\nvt 0.979808 0.055744\nvt 0.985160 0.937144\nvt 0.847221 0.939481\nvt 0.848250 0.937249\nvt 0.847903 0.940916\nvt 0.985999 0.949940\nvt 0.985060 0.956075\nvt 0.981618 0.948292\nvt 0.970024 0.989980\nvt 0.987110 0.936500\nvt 0.984441 0.942138\nvt 0.979161 0.084409\nvt 0.986078 0.425226\nvt 0.986302 0.416840\nvt 0.988441 0.426248\nvt 0.970574 0.071435\nvt 0.975278 0.061962\nvt 0.973502 0.071083\nvt 0.981613 0.936621\nvt 0.982929 0.938885\nvt 0.979548 0.943330\nvt 0.970183 0.065975\nvt 0.971950 0.079208\nvt 0.972313 0.073202\nvt 0.975181 0.081294\nvt 0.982227 0.945209\nvt 0.987394 0.197785\nvt 0.965863 0.979161\nvt 0.966381 0.985223\nvt 0.959743 0.984765\nvt 0.988891 0.436871\nvt 0.987515 0.436579\nvt 0.991844 0.429405\nvt 0.497186 0.960942\nvt 0.501737 0.962400\nvt 0.499308 0.969893\nvt 0.496118 0.958834\nvt 0.498049 0.956356\nvt 0.941826 0.096485\nvt 0.941387 0.100894\nvt 0.938158 0.101800\nvt 0.504694 0.951496\nvt 0.503865 0.964034\nvt 0.501894 0.952334\nvt 0.989262 0.420022\nvt 0.986948 0.180881\nvt 0.986394 0.178432\nvt 0.987380 0.437969\nvt 0.495293 0.955123\nvt 0.969352 0.978252\nvt 0.970432 0.985525\nvt 0.500256 0.950132\nvt 0.500843 0.965686\nvt 0.500613 0.975143\nvt 0.986358 0.437102\nvt 0.985256 0.434609\nvt 0.983760 0.428430\nvt 0.987133 0.433045\nvt 0.502620 0.973231\nvt 0.502103 0.975696\nvt 0.503331 0.945597\nvt 0.104156 0.928568\nvt 0.104658 0.925926\nvt 0.104804 0.928649\nvt 0.985149 0.959238\nvt 0.986548 0.957986\nvt 0.979653 0.053476\nvt 0.980162 0.078342\nvt 0.990416 0.181771\nvt 0.991581 0.185684\nvt 0.960997 0.990665\nvt 0.958817 0.989855\nvt 0.979057 0.945416\nvt 0.978206 0.947697\nvt 0.966883 0.976151\nvt 0.984740 0.196921\nvt 0.983558 0.189257\nvt 0.988495 0.192027\nvt 0.702386 0.936436\nvt 0.702386 0.941847\nvt 0.701266 0.940153\nvt 0.500679 0.945794\nvt 0.500359 0.941225\nvt 0.959703 0.987241\nvt 0.990784 0.197722\nvt 0.987477 0.931947\nvt 0.941197 0.103540\nvt 0.937829 0.104896\nvt 0.978888 0.065632\nvt 0.505951 0.961413\nvt 0.498801 0.942133\nvt 0.991171 0.422828\nvt 0.991889 0.422446\nvt 0.503230 0.943253\nvt 0.970490 0.991227\nvt 0.979332 0.067522\nvt 0.961102 0.981268\nvt 0.982832 0.956769\nvt 0.987825 0.687662\nvt 0.988465 0.691388\nvt 0.986604 0.692930\nvt 0.983039 0.572467\nvt 0.980639 0.577339\nvt 0.982534 0.570873\nvt 0.983283 0.564144\nvt 0.981287 0.567163\nvt 0.987670 0.693267\nvt 0.988512 0.692691\nvt 0.630902 0.983590\nvt 0.633704 0.994097\nvt 0.630895 0.994548\nvt 0.633226 0.995401\nvt 0.108956 0.923675\nvt 0.110617 0.920775\nvt 0.111523 0.922274\nvt 0.948496 0.958915\nvt 0.948807 0.963938\nvt 0.947590 0.962598\nvt 0.954734 0.961842\nvt 0.953483 0.958553\nvt 0.955387 0.957255\nvt 0.631943 0.981786\nvt 0.624807 0.982425\nvt 0.626625 0.981290\nvt 0.947464 0.967913\nvt 0.948023 0.965162\nvt 0.949335 0.969646\nvt 0.987067 0.682722\nvt 0.989142 0.687607\nvt 0.977377 0.570361\nvt 0.975792 0.569259\nvt 0.975954 0.562564\nvt 0.979804 0.543238\nvt 0.982392 0.555270\nvt 0.979876 0.554845\nvt 0.978323 0.680832\nvt 0.440991 0.968013\nvt 0.446742 0.975543\nvt 0.440334 0.974313\nvt 0.447344 0.982122\nvt 0.438603 0.979321\nvt 0.446238 0.969583\nvt 0.446480 0.958657\nvt 0.447960 0.961256\nvt 0.447853 0.957351\nvt 0.436374 0.979248\nvt 0.437664 0.974992\nvt 0.448423 0.977092\nvt 0.954031 0.962490\nvt 0.979048 0.577986\nvt 0.978231 0.578195\nvt 0.975291 0.687463\nvt 0.976528 0.679233\nvt 0.110433 0.927207\nvt 0.949844 0.955784\nvt 0.952171 0.953935\nvt 0.111673 0.920649\nvt 0.951446 0.945365\nvt 0.955013 0.950977\nvt 0.448741 0.958784\nvt 0.978236 0.543495\nvt 0.981083 0.677984\nvt 0.985226 0.679935\nvt 0.978827 0.678618\nvt 0.795721 0.986106\nvt 0.794078 0.986250\nvt 0.796170 0.984173\nvt 0.109496 0.921679\nvt 0.949918 0.950908\nvt 0.976767 0.693781\nvt 0.975423 0.693637\nvt 0.975494 0.692276\nvt 0.946900 0.964344\nvt 0.025304 0.989269\nvt 0.029184 0.987207\nvt 0.027639 0.994943\nvt 0.954947 0.970247\nvt 0.954630 0.976913\nvt 0.953639 0.978813\nvt 0.954236 0.965408\nvt 0.438930 0.969917\nvt 0.448338 0.971355\nvt 0.624448 0.992831\nvt 0.982399 0.550367\nvt 0.448473 0.981551\nvt 0.955384 0.954348\nvt 0.897131 0.934907\nvt 0.896476 0.933632\nvt 0.897131 0.932562\nvt 0.033243 0.994234\nvt 0.946827 0.958845\nvt 0.952040 0.978901\nvt 0.950818 0.977692\nvt 0.976403 0.552699\nvt 0.632973 0.983391\nvt 0.953444 0.980794\nvt 0.952661 0.980811\nvt 0.112010 0.930701\nvt 0.447736 0.967347\nvt 0.448142 0.969452\nvt 0.950560 0.945488\nvt 0.109132 0.931416\nvt 0.105599 0.930137\nvt 0.024518 0.993580\nvt 0.025049 0.996217\nvt 0.795039 0.994716\nvt 0.794941 0.991807\nvt 0.796036 0.992702\nvt 0.634163 0.993365\nvt 0.206304 0.959516\nvt 0.204956 0.956649\nvt 0.205743 0.954993\nvt 0.112317 0.921222\nvt 0.448808 0.982672\nvt 0.979731 0.687757\nvt 0.024731 0.995889\nvt 0.955441 0.965655\nvt 0.031569 0.987023\nvt 0.370579 0.981194\nvt 0.371637 0.986523\nvt 0.369984 0.984945\nvt 0.980423 0.983532\nvt 0.982728 0.981024\nvt 0.986963 0.982122\nvt 0.975082 0.614019\nvt 0.976897 0.617036\nvt 0.975701 0.620805\nvt 0.370836 0.986792\nvt 0.369989 0.986249\nvt 0.986089 0.993728\nvt 0.988154 0.993755\nvt 0.989787 0.982272\nvt 0.989568 0.981269\nvt 0.982465 0.995241\nvt 0.987281 0.995246\nvt 0.298421 0.994464\nvt 0.300534 0.996441\nvt 0.299315 0.997758\nvt 0.957042 0.105236\nvt 0.956015 0.105217\nvt 0.956565 0.102874\nvt 0.756761 0.871316\nvt 0.756437 0.870294\nvt 0.756761 0.867937\nvt 0.979967 0.286564\nvt 0.980110 0.283826\nvt 0.981407 0.283731\nvt 0.974327 0.290125\nvt 0.973394 0.286453\nvt 0.974551 0.285082\nvt 0.980670 0.994038\nvt 0.973414 0.280968\nvt 0.975141 0.279421\nvt 0.973886 0.283924\nvt 0.371206 0.976292\nvt 0.369583 0.980468\nvt 0.980843 0.620234\nvt 0.982641 0.612330\nvt 0.982888 0.618658\nvt 0.979564 0.592786\nvt 0.978707 0.604613\nvt 0.976178 0.605031\nvt 0.382796 0.986660\nvt 0.380296 0.984833\nvt 0.379899 0.973993\nvt 0.920781 0.971075\nvt 0.920358 0.977397\nvt 0.913900 0.976818\nvt 0.911711 0.983005\nvt 0.920852 0.982717\nvt 0.914257 0.972078\nvt 0.918315 0.960584\nvt 0.916259 0.962644\nvt 0.917317 0.958949\nvt 0.923043 0.979138\nvt 0.923517 0.983377\nvt 0.456621 0.989508\nvt 0.458180 0.995102\nvt 0.457287 0.995986\nvt 0.911937 0.977743\nvt 0.979988 0.628054\nvt 0.979142 0.627851\nvt 0.976377 0.624730\nvt 0.381757 0.972320\nvt 0.383318 0.980112\nvt 0.300793 0.991465\nvt 0.981267 0.290520\nvt 0.977882 0.294997\nvt 0.975600 0.293195\nvt 0.300283 0.998111\nvt 0.976828 0.302472\nvt 0.980872 0.297981\nvt 0.916076 0.960079\nvt 0.981148 0.593033\nvt 0.455064 0.990050\nvt 0.454185 0.989010\nvt 0.298528 0.996884\nvt 0.975999 0.297991\nvt 0.972844 0.284785\nvt 0.990167 0.983410\nvt 0.554489 0.988645\nvt 0.552255 0.994501\nvt 0.550531 0.986831\nvt 0.981243 0.279604\nvt 0.979532 0.270293\nvt 0.980595 0.272218\nvt 0.922793 0.973539\nvt 0.921837 0.969590\nvt 0.910791 0.982524\nvt 0.979704 0.289360\nvt 0.981231 0.294621\nvt 0.206451 0.950062\nvt 0.206451 0.952384\nvt 0.205746 0.951312\nvt 0.546662 0.994604\nvt 0.972746 0.290264\nvt 0.379176 0.971822\nvt 0.373002 0.973366\nvt 0.977909 0.270208\nvt 0.976720 0.271434\nvt 0.982781 0.602554\nvt 0.978825 0.268282\nvt 0.979399 0.268349\nvt 0.369219 0.981417\nvt 0.977253 0.304547\nvt 0.976899 0.304305\nvt 0.982982 0.598439\nvt 0.300606 0.987068\nvt 0.296848 0.987357\nvt 0.555411 0.993187\nvt 0.554851 0.995663\nvt 0.915031 0.969788\nvt 0.458959 0.997763\nvt 0.988924 0.993904\nvt 0.998832 0.456546\nvt 0.998202 0.461217\nvt 0.997528 0.459365\nvt 0.383556 0.985510\nvt 0.301050 0.997732\nvt 0.910410 0.983420\nvt 0.378739 0.980969\nvt 0.302943 0.989359\nvt 0.555169 0.996045\nvt 0.548969 0.986462\nvt 0.383158 0.672040\nvt 0.389504 0.665286\nvt 0.400673 0.676292\nvt 0.937337 0.406249\nvt 0.943165 0.410571\nvt 0.931546 0.412702\nvt 0.926480 0.389697\nvt 0.933496 0.394825\nvt 0.930855 0.387075\nvt 0.916791 0.365648\nvt 0.922198 0.352619\nvt 0.928319 0.370788\nvt 0.373793 0.666430\nvt 0.382413 0.657410\nvt 0.913815 0.408321\nvt 0.922772 0.400015\nvt 0.386840 0.654930\nvt 0.381794 0.644007\nvt 0.918967 0.387976\nvt 0.905520 0.387468\nvt 0.398224 0.688018\nvt 0.375368 0.690261\nvt 0.382297 0.699624\nvt 0.365876 0.714902\nvt 0.365777 0.725516\nvt 0.353851 0.729010\nvt 0.368804 0.738570\nvt 0.338850 0.750230\nvt 0.358037 0.773571\nvt 0.368590 0.756749\nvt 0.375458 0.772309\nvt 0.375978 0.783971\nvt 0.400196 0.802243\nvt 0.386245 0.799666\nvt 0.413505 0.825532\nvt 0.415371 0.818050\nvt 0.371885 0.680441\nvt 0.349957 0.685071\nvt 0.355463 0.678324\nvt 0.355749 0.708968\nvt 0.339089 0.723515\nvt 0.354473 0.786037\nvt 0.397992 0.821619\nvt 0.387626 0.823293\nvt 0.376773 0.821520\nvt 0.405568 0.833829\nvt 0.902778 0.400571\nvt 0.904499 0.407368\nvt 0.899003 0.391590\nvt 0.355037 0.658645\nvt 0.358122 0.665896\nvt 0.365601 0.645463\nvt 0.375997 0.637903\nvt 0.326365 0.710143\nvt 0.341720 0.685607\nvt 0.325324 0.719837\nvt 0.338303 0.775506\nvt 0.326970 0.762656\nvt 0.352008 0.799142\nvt 0.337924 0.791186\nvt 0.374845 0.803997\nvt 0.312394 0.749301\nvt 0.309502 0.770797\nvt 0.347466 0.811977\nvt 0.339729 0.815836\nvt 0.325417 0.799646\nvt 0.361852 0.820407\nvt 0.354246 0.825498\nvt 0.348109 0.831214\nvt 0.341556 0.834654\nvt 0.318676 0.797375\nvt 0.330691 0.820846\nvt 0.299158 0.751451\nvt 0.273620 0.829395\nvt 0.278592 0.834836\nvt 0.272620 0.839733\nvt 0.387233 0.704936\nvt 0.380486 0.717364\nvt 0.404044 0.695073\nvt 0.415040 0.676204\nvt 0.406022 0.672370\nvt 0.414046 0.671211\nvt 0.939354 0.423465\nvt 0.947471 0.415990\nvt 0.945759 0.421184\nvt 0.941232 0.432688\nvt 0.927375 0.429475\nvt 0.927500 0.437606\nvt 0.741034 0.916631\nvt 0.738156 0.911655\nvt 0.742464 0.905509\nvt 0.739167 0.903229\nvt 0.743234 0.912134\nvt 0.744316 0.915757\nvt 0.745912 0.918706\nvt 0.745134 0.920604\nvt 0.741427 0.923958\nvt 0.744399 0.927840\nvt 0.753869 0.929325\nvt 0.753895 0.933232\nvt 0.419070 0.674964\nvt 0.414926 0.685160\nvt 0.412678 0.685848\nvt 0.408782 0.692669\nvt 0.394639 0.695203\nvt 0.394053 0.705156\nvt 0.391030 0.706590\nvt 0.398279 0.701662\nvt 0.400410 0.701259\nvt 0.387471 0.712900\nvt 0.382379 0.719606\nvt 0.378232 0.721151\nvt 0.642550 0.995212\nvt 0.637123 0.996145\nvt 0.642356 0.992765\nvt 0.281671 0.836842\nvt 0.277625 0.846160\nvt 0.283617 0.841679\nvt 0.272730 0.853076\nvt 0.277042 0.856069\nvt 0.281214 0.858780\nvt 0.277958 0.864638\nvt 0.271832 0.863975\nvt 0.269540 0.856121\nvt 0.271494 0.879595\nvt 0.277179 0.880469\nvt 0.274086 0.882524\nvt 0.845637 0.427571\nvt 0.837614 0.424096\nvt 0.843115 0.419363\nvt 0.282242 0.872773\nvt 0.279380 0.875243\nvt 0.276820 0.891264\nvt 0.271978 0.892869\nvt 0.285675 0.916418\nvt 0.319015 0.713580\nvt 0.312432 0.721426\nvt 0.325921 0.702975\nvt 0.471833 0.986978\nvt 0.463637 0.982211\nvt 0.471818 0.978756\nvt 0.348328 0.669799\nvt 0.342071 0.671172\nvt 0.348374 0.658628\nvt 0.356482 0.644892\nvt 0.912208 0.427267\nvt 0.907398 0.441118\nvt 0.903038 0.437230\nvt 0.372157 0.632841\nvt 0.364237 0.635763\nvt 0.894976 0.449399\nvt 0.896545 0.439900\nvt 0.899310 0.432982\nvt 0.904152 0.467419\nvt 0.899582 0.474000\nvt 0.899866 0.451225\nvt 0.894910 0.475946\nvt 0.884571 0.346434\nvt 0.888353 0.348527\nvt 0.862856 0.359970\nvt 0.862859 0.355572\nvt 0.868221 0.374379\nvt 0.857996 0.380753\nvt 0.846771 0.362976\nvt 0.843957 0.390589\nvt 0.839765 0.371163\nvt 0.833744 0.406194\nvt 0.820489 0.413752\nvt 0.825660 0.386531\nvt 0.828534 0.421058\nvt 0.819301 0.426514\nvt 0.832055 0.437490\nvt 0.817326 0.436325\nvt 0.833041 0.427198\nvt 0.845043 0.256260\nvt 0.864976 0.250518\nvt 0.877427 0.253418\nvt 0.846156 0.269249\nvt 0.864133 0.496707\nvt 0.865419 0.477918\nvt 0.877510 0.486790\nvt 0.877842 0.496133\nvt 0.841770 0.245047\nvt 0.855594 0.237261\nvt 0.835032 0.255473\nvt 0.554177 0.707882\nvt 0.548984 0.696497\nvt 0.557585 0.690015\nvt 0.833274 0.244821\nvt 0.837421 0.234639\nvt 0.545191 0.707001\nvt 0.551360 0.732913\nvt 0.545177 0.737572\nvt 0.534222 0.714876\nvt 0.529292 0.728175\nvt 0.529366 0.709782\nvt 0.538433 0.690877\nvt 0.534927 0.699514\nvt 0.529962 0.696883\nvt 0.536211 0.683882\nvt 0.542615 0.684976\nvt 0.552075 0.686164\nvt 0.853916 0.513416\nvt 0.847671 0.521714\nvt 0.851779 0.505443\nvt 0.856389 0.489450\nvt 0.859858 0.505321\nvt 0.547315 0.674082\nvt 0.550839 0.677435\nvt 0.844609 0.530492\nvt 0.837656 0.523823\nvt 0.838902 0.519494\nvt 0.842615 0.501843\nvt 0.835901 0.472828\nvt 0.850780 0.475221\nvt 0.826236 0.507977\nvt 0.827963 0.505065\nvt 0.829854 0.466274\nvt 0.839791 0.463474\nvt 0.818204 0.469554\nvt 0.821982 0.455919\nvt 0.826160 0.445772\nvt 0.565915 0.669411\nvt 0.569864 0.661585\nvt 0.578471 0.663568\nvt 0.571327 0.670205\nvt 0.824225 0.488616\nvt 0.836719 0.489791\nvt 0.979416 0.800216\nvt 0.981580 0.792092\nvt 0.989314 0.790160\nvt 0.588152 0.655830\nvt 0.590576 0.649171\nvt 0.813917 0.483929\nvt 0.807088 0.479120\nvt 0.807348 0.471968\nvt 0.821425 0.477863\nvt 0.813686 0.443039\nvt 0.800430 0.446725\nvt 0.789457 0.452154\nvt 0.594458 0.649849\nvt 0.602862 0.643466\nvt 0.617929 0.638626\nvt 0.643087 0.631432\nvt 0.655132 0.628466\nvt 0.655934 0.631721\nvt 0.637791 0.629603\nvt 0.633778 0.633769\nvt 0.620719 0.635345\nvt 0.649644 0.636832\nvt 0.779916 0.418777\nvt 0.787880 0.419858\nvt 0.783354 0.424929\nvt 0.636895 0.637669\nvt 0.782580 0.441909\nvt 0.789560 0.440563\nvt 0.790115 0.427596\nvt 0.798902 0.436339\nvt 0.803553 0.428509\nvt 0.792305 0.417963\nvt 0.809080 0.414334\nvt 0.816550 0.401140\nvt 0.794500 0.408427\nvt 0.805239 0.401710\nvt 0.782588 0.410327\nvt 0.663578 0.630420\nvt 0.666925 0.627136\nvt 0.681652 0.623837\nvt 0.685812 0.619193\nvt 0.798962 0.398958\nvt 0.798692 0.388232\nvt 0.815163 0.393263\nvt 0.812987 0.383877\nvt 0.801720 0.376729\nvt 0.801104 0.372812\nvt 0.811865 0.362968\nvt 0.797672 0.373809\nvt 0.803251 0.360265\nvt 0.835195 0.355380\nvt 0.820667 0.376896\nvt 0.831101 0.377170\nvt 0.821710 0.363676\nvt 0.814047 0.351118\nvt 0.807906 0.359564\nvt 0.821531 0.353983\nvt 0.827905 0.349374\nvt 0.820110 0.347863\nvt 0.807544 0.343575\nvt 0.815042 0.341600\nvt 0.731002 0.614021\nvt 0.711132 0.613742\nvt 0.733615 0.610531\nvt 0.708337 0.609691\nvt 0.714642 0.604536\nvt 0.729926 0.606675\nvt 0.704471 0.605790\nvt 0.702526 0.613878\nvt 0.686325 0.610808\nvt 0.693167 0.611407\nvt 0.669330 0.621924\nvt 0.646087 0.625506\nvt 0.298008 0.757755\nvt 0.305479 0.776549\nvt 0.637349 0.626963\nvt 0.296337 0.744071\nvt 0.300057 0.732602\nvt 0.304929 0.726483\nvt 0.622008 0.308855\nvt 0.622008 0.312975\nvt 0.618100 0.310741\nvt 0.988212 0.660570\nvt 0.985515 0.648754\nvt 0.991650 0.654621\nvt 0.992772 0.648257\nvt 0.077800 0.995229\nvt 0.081736 0.989912\nvt 0.081910 0.995229\nvt 0.464813 0.977639\nvt 0.558270 0.664858\nvt 0.999421 0.450748\nvt 0.999421 0.456546\nvt 0.997528 0.453388\nvt 0.540877 0.673613\nvt 0.531022 0.683762\nvt 0.916288 0.428823\nvt 0.525217 0.698821\nvt 0.909975 0.443789\nvt 0.909628 0.458738\nvt 0.912819 0.467570\nvt 0.909463 0.475694\nvt 0.852467 0.413126\nvt 0.844502 0.407190\nvt 0.857456 0.405511\nvt 0.862683 0.389860\nvt 0.849816 0.399621\nvt 0.848443 0.415284\nvt 0.879693 0.237902\nvt 0.878880 0.246425\nvt 0.873377 0.235250\nvt 0.868414 0.236791\nvt 0.875312 0.229625\nvt 0.878833 0.233841\nvt 0.871114 0.231036\nvt 0.890299 0.483272\nvt 0.893015 0.487268\nvt 0.889155 0.490011\nvt 0.884725 0.257676\nvt 0.882688 0.269305\nvt 0.882783 0.255878\nvt 0.888308 0.478147\nvt 0.892234 0.480714\nvt 0.876284 0.474456\nvt 0.863892 0.463901\nvt 0.853962 0.453413\nvt 0.849943 0.447298\nvt 0.841524 0.437630\nvt 0.753239 0.596482\nvt 0.750891 0.611992\nvt 0.735650 0.596624\nvt 0.725174 0.600229\nvt 0.348325 0.841569\nvt 0.342436 0.845302\nvt 0.352018 0.853666\nvt 0.352440 0.860762\nvt 0.757835 0.602383\nvt 0.756855 0.610682\nvt 0.759311 0.617928\nvt 0.751842 0.617686\nvt 0.815826 0.305132\nvt 0.812500 0.299688\nvt 0.815846 0.284829\nvt 0.818344 0.318815\nvt 0.811656 0.321722\nvt 0.817512 0.314657\nvt 0.820878 0.298208\nvt 0.820435 0.306727\nvt 0.819386 0.308764\nvt 0.818133 0.289405\nvt 0.354134 0.865065\nvt 0.349462 0.864955\nvt 0.357853 0.863993\nvt 0.358609 0.857609\nvt 0.359631 0.862218\nvt 0.356350 0.857566\nvt 0.505452 0.903255\nvt 0.505072 0.908294\nvt 0.496281 0.906992\nvt 0.484635 0.919947\nvt 0.483077 0.916120\nvt 0.493755 0.912633\nvt 0.482218 0.920363\nvt 0.822610 0.315991\nvt 0.824057 0.321916\nvt 0.821236 0.326108\nvt 0.820086 0.313193\nvt 0.494624 0.903748\nvt 0.821239 0.282514\nvt 0.817299 0.279103\nvt 0.820819 0.278987\nvt 0.501360 0.901390\nvt 0.818952 0.340817\nvt 0.824412 0.328139\nvt 0.355242 0.849999\nvt 0.511405 0.906208\nvt 0.516441 0.912302\nvt 0.513512 0.914904\nvt 0.502855 0.917065\nvt 0.500033 0.926295\nvt 0.506862 0.922189\nvt 0.505234 0.930799\nvt 0.498949 0.932912\nvt 0.824754 0.342672\nvt 0.510613 0.924230\nvt 0.843949 0.357145\nvt 0.830315 0.345618\nvt 0.832771 0.350553\nvt 0.293629 0.773743\nvt 0.287220 0.785127\nvt 0.289481 0.769084\nvt 0.882870 0.366215\nvt 0.891703 0.353172\nvt 0.516869 0.925755\nvt 0.515216 0.929023\nvt 0.366783 0.823833\nvt 0.356412 0.831207\nvt 0.293473 0.765555\nvt 0.295696 0.762475\nvt 0.295721 0.766916\nvt 0.293676 0.760968\nvt 0.516090 0.937711\nvt 0.513282 0.937535\nvt 0.513166 0.932048\nvt 0.386921 0.824376\nvt 0.295152 0.785786\nvt 0.293138 0.784160\nvt 0.294891 0.778350\nvt 0.998683 0.365649\nvt 0.996640 0.364394\nvt 0.997559 0.361550\nvt 0.129897 0.997124\nvt 0.129001 0.997234\nvt 0.130915 0.994559\nvt 0.891414 0.358066\nvt 0.894613 0.353155\nvt 0.875273 0.377960\nvt 0.871979 0.380437\nvt 0.884128 0.366722\nvt 0.867145 0.391512\nvt 0.060242 0.995897\nvt 0.055896 0.989214\nvt 0.060527 0.986994\nvt 0.056404 0.993805\nvt 0.991797 0.168456\nvt 0.990562 0.172995\nvt 0.986151 0.171258\nvt 0.288619 0.860463\nvt 0.285790 0.865704\nvt 0.289744 0.848155\nvt 0.289879 0.838784\nvt 0.289108 0.834379\nvt 0.634174 0.988481\nvt 0.641940 0.984995\nvt 0.982031 0.634112\nvt 0.974380 0.630392\nvt 0.982712 0.629131\nvt 0.180412 0.990368\nvt 0.180412 0.996080\nvt 0.177037 0.993036\nvt 0.755066 0.313183\nvt 0.750626 0.313183\nvt 0.753917 0.308176\nvt 0.269517 0.984816\nvt 0.265300 0.988735\nvt 0.265877 0.985555\nvt 0.266304 0.982951\nvt 0.275367 0.979495\nvt 0.275625 0.985868\nvt 0.753622 0.921054\nvt 0.750143 0.917083\nvt 0.882784 0.251166\nvt 0.886461 0.242949\nvt 0.274768 0.973607\nvt 0.993286 0.702838\nvt 0.986795 0.712098\nvt 0.987233 0.703228\nvt 0.994933 0.695752\nvt 0.995346 0.704240\nvt 0.748070 0.902775\nvt 0.748150 0.906631\nvt 0.941125 0.457229\nvt 0.925469 0.448967\nvt 0.939587 0.440534\nvt 0.742732 0.893780\nvt 0.747806 0.893747\nvt 0.919141 0.325255\nvt 0.930689 0.315781\nvt 0.935168 0.326356\nvt 0.941726 0.316170\nvt 0.927910 0.346201\nvt 0.927108 0.354449\nvt 0.929007 0.333726\nvt 0.914886 0.348824\nvt 0.917359 0.334232\nvt 0.846978 0.791184\nvt 0.837200 0.785693\nvt 0.846129 0.779515\nvt 0.905490 0.335835\nvt 0.906326 0.368454\nvt 0.900757 0.350240\nvt 0.859971 0.762534\nvt 0.838985 0.762758\nvt 0.828970 0.739148\nvt 0.842109 0.734744\nvt 0.844850 0.752682\nvt 0.910410 0.906043\nvt 0.914985 0.906902\nvt 0.911352 0.915591\nvt 0.828586 0.728731\nvt 0.817245 0.726356\nvt 0.831515 0.715918\nvt 0.831528 0.698539\nvt 0.821712 0.683331\nvt 0.838964 0.682562\nvt 0.848428 0.655741\nvt 0.861488 0.651954\nvt 0.838819 0.671829\nvt 0.874222 0.628424\nvt 0.859459 0.633486\nvt 0.879761 0.630670\nvt 0.876014 0.635496\nvt 0.835882 0.772657\nvt 0.819628 0.745901\nvt 0.814943 0.769965\nvt 0.803192 0.732878\nvt 0.802839 0.707046\nvt 0.818270 0.671572\nvt 0.837480 0.652437\nvt 0.866339 0.620869\nvt 0.867965 0.621799\nvt 0.897001 0.366034\nvt 0.895116 0.348600\nvt 0.897576 0.335855\nvt 0.822275 0.787503\nvt 0.819173 0.794647\nvt 0.829282 0.806521\nvt 0.998368 0.521401\nvt 0.998368 0.531838\nvt 0.993887 0.518584\nvt 0.836728 0.810749\nvt 0.843957 0.802853\nvt 0.907743 0.325963\nvt 0.791076 0.746831\nvt 0.789883 0.737436\nvt 0.802480 0.682813\nvt 0.801903 0.667581\nvt 0.815598 0.658923\nvt 0.824344 0.637192\nvt 0.810717 0.646561\nvt 0.783709 0.743886\nvt 0.776802 0.709590\nvt 0.791188 0.695826\nvt 0.773309 0.688620\nvt 0.802951 0.643222\nvt 0.816860 0.632757\nvt 0.810915 0.627686\nvt 0.804209 0.624611\nvt 0.781891 0.662123\nvt 0.793430 0.638553\nvt 0.919373 0.907904\nvt 0.920244 0.915015\nvt 0.856498 0.755862\nvt 0.849079 0.746850\nvt 0.865362 0.755150\nvt 0.862058 0.773482\nvt 0.945759 0.493592\nvt 0.939354 0.491459\nvt 0.941232 0.481888\nvt 0.927375 0.485486\nvt 0.927500 0.477237\nvt 0.939587 0.473971\nvt 0.925616 0.480923\nvt 0.738156 0.875864\nvt 0.741034 0.870996\nvt 0.742464 0.882231\nvt 0.743234 0.875505\nvt 0.742645 0.878929\nvt 0.739167 0.884334\nvt 0.744316 0.871857\nvt 0.745912 0.868912\nvt 0.745134 0.866919\nvt 0.741431 0.862296\nvt 0.744399 0.859495\nvt 0.744365 0.882455\nvt 0.753557 0.853621\nvt 0.753869 0.857686\nvt 0.873524 0.763298\nvt 0.875724 0.772375\nvt 0.870465 0.758256\nvt 0.871802 0.760423\nvt 0.855008 0.746347\nvt 0.858791 0.748727\nvt 0.495204 0.983078\nvt 0.496666 0.977184\nvt 0.497422 0.986592\nvt 0.861673 0.749337\nvt 0.848400 0.738639\nvt 0.843439 0.732264\nvt 0.840234 0.730043\nvt 0.924974 0.907998\nvt 0.922755 0.909879\nvt 0.920294 0.898667\nvt 0.919118 0.888657\nvt 0.926374 0.902905\nvt 0.915054 0.891869\nvt 0.913723 0.880980\nvt 0.919342 0.879816\nvt 0.913030 0.865475\nvt 0.915585 0.862490\nvt 0.917849 0.866231\nvt 0.919943 0.871921\nvt 0.061942 0.788803\nvt 0.068147 0.778872\nvt 0.067745 0.792393\nvt 0.072041 0.792201\nvt 0.075516 0.794472\nvt 0.077080 0.802621\nvt 0.911335 0.862093\nvt 0.913197 0.852263\nvt 0.918253 0.853782\nvt 0.927472 0.828963\nvt 0.777062 0.736618\nvt 0.790748 0.753842\nvt 0.806816 0.769946\nvt 0.799521 0.767283\nvt 0.106324 0.987624\nvt 0.098329 0.982441\nvt 0.105653 0.978353\nvt 0.097654 0.975680\nvt 0.820292 0.776085\nvt 0.807338 0.785146\nvt 0.813347 0.786101\nvt 0.820452 0.807733\nvt 0.812575 0.795052\nvt 0.912140 0.505720\nvt 0.912983 0.514742\nvt 0.906385 0.504967\nvt 0.831525 0.814257\nvt 0.906483 0.491777\nvt 0.900932 0.491016\nvt 0.895989 0.492563\nvt 0.900897 0.504829\nvt 0.956785 0.225930\nvt 0.960723 0.232506\nvt 0.957738 0.253567\nvt 0.091656 0.857515\nvt 0.081289 0.847613\nvt 0.102169 0.862409\nvt 0.086465 0.834081\nvt 0.105722 0.860723\nvt 0.065759 0.843483\nvt 0.076549 0.827163\nvt 0.052349 0.801112\nvt 0.062651 0.816756\nvt 0.039181 0.792985\nvt 0.037075 0.783909\nvt 0.046484 0.786797\nvt 0.035441 0.771263\nvt 0.049669 0.771252\nvt 0.037513 0.780689\nvt 0.044019 0.762770\nvt 0.083253 0.733961\nvt 0.081639 0.747483\nvt 0.068888 0.735584\nvt 0.074751 0.722009\nvt 0.864976 0.279653\nvt 0.876862 0.278311\nvt 0.867966 0.294905\nvt 0.855591 0.293350\nvt 0.082199 0.715588\nvt 0.094962 0.726282\nvt 0.844122 0.276291\nvt 0.841770 0.284669\nvt 0.837420 0.295400\nvt 0.829404 0.268602\nvt 0.834232 0.278917\nvt 0.557480 0.737666\nvt 0.566923 0.754006\nvt 0.557584 0.755088\nvt 0.534319 0.734086\nvt 0.548984 0.748610\nvt 0.534927 0.745614\nvt 0.529700 0.744150\nvt 0.538433 0.754297\nvt 0.536211 0.761345\nvt 0.542615 0.760264\nvt 0.083914 0.709500\nvt 0.095002 0.717413\nvt 0.070864 0.705888\nvt 0.075192 0.705592\nvt 0.547315 0.771289\nvt 0.550843 0.767952\nvt 0.553641 0.766561\nvt 0.067505 0.689520\nvt 0.059407 0.690807\nvt 0.064517 0.684072\nvt 0.056037 0.720035\nvt 0.062157 0.708604\nvt 0.054272 0.736894\nvt 0.057712 0.746403\nvt 0.048499 0.704114\nvt 0.051744 0.695064\nvt 0.565915 0.776171\nvt 0.040628 0.752301\nvt 0.568101 0.773699\nvt 0.578471 0.782136\nvt 0.044514 0.719940\nvt 0.980236 0.000000\nvt 0.986731 0.008451\nvt 0.976351 0.011628\nvt 0.040559 0.714677\nvt 0.986410 0.021646\nvt 0.588769 0.789975\nvt 0.569864 0.784048\nvt 0.035181 0.723367\nvt 0.041024 0.730411\nvt 0.038372 0.738096\nvt 0.028491 0.734622\nvt 0.032202 0.764346\nvt 0.020324 0.759290\nvt 0.010524 0.752791\nvt 0.655132 0.817914\nvt 0.643088 0.814960\nvt 0.655919 0.814600\nvt 0.637791 0.816801\nvt 0.633778 0.812616\nvt 0.620719 0.810968\nvt 0.617930 0.807637\nvt 0.621957 0.805822\nvt 0.632514 0.808569\nvt 0.012812 0.742693\nvt 0.028811 0.727384\nvt 0.655983 0.810289\nvt 0.649888 0.809462\nvt 0.009888 0.764395\nvt 0.004380 0.765670\nvt 0.009705 0.777358\nvt 0.011752 0.786879\nvt 0.007525 0.784686\nvt 0.018325 0.769496\nvt 0.022518 0.777581\nvt 0.028197 0.791536\nvt 0.116675 0.998000\nvt 0.112155 0.990811\nvt 0.116675 0.988380\nvt 0.014122 0.796142\nvt 0.024606 0.803397\nvt 0.035631 0.804755\nvt 0.000299 0.784883\nvt 0.663578 0.815882\nvt 0.020571 0.831062\nvt 0.018207 0.815976\nvt 0.021157 0.827329\nvt 0.996727 0.000000\nvt 0.999296 0.010014\nvt 0.996710 0.012003\nvt 0.666925 0.819157\nvt 0.681651 0.822262\nvt 0.685812 0.826890\nvt 0.018370 0.805674\nvt 0.002746 0.793331\nvt 0.034537 0.812143\nvt 0.030778 0.841502\nvt 0.026772 0.844589\nvt 0.044660 0.819461\nvt 0.058970 0.835042\nvt 0.050202 0.828780\nvt 0.054356 0.850069\nvt 0.039776 0.828435\nvt 0.032328 0.821114\nvt 0.040634 0.841383\nvt 0.032353 0.853408\nvt 0.046770 0.855611\nvt 0.040231 0.850869\nvt 0.025409 0.857575\nvt 0.032573 0.863079\nvt 0.037136 0.879277\nvt 0.033888 0.886350\nvt 0.713050 0.832400\nvt 0.729864 0.831492\nvt 0.733615 0.835286\nvt 0.750891 0.833727\nvt 0.751647 0.828052\nvt 0.729925 0.839137\nvt 0.693167 0.834600\nvt 0.702526 0.832083\nvt 0.708336 0.836223\nvt 0.686325 0.835220\nvt 0.704471 0.840089\nvt 0.761677 0.701710\nvt 0.763193 0.707967\nvt 0.646088 0.820872\nvt 0.769164 0.731879\nvt 0.763943 0.726007\nvt 0.987649 0.438681\nvt 0.985036 0.450874\nvt 0.983994 0.439570\nvt 0.593164 0.805342\nvt 0.590575 0.796693\nvt 0.596294 0.803174\nvt 0.579625 0.796931\nvt 0.109816 0.984355\nvt 0.111091 0.970332\nvt 0.563351 0.788077\nvt 0.558270 0.780634\nvt 0.551459 0.780718\nvt 0.540877 0.771678\nvt 0.923807 0.516791\nvt 0.920380 0.517738\nvt 0.916288 0.506430\nvt 0.531022 0.761392\nvt 0.909975 0.491173\nvt 0.525958 0.732210\nvt 0.525217 0.746220\nvt 0.068678 0.808274\nvt 0.063322 0.800662\nvt 0.081503 0.818481\nvt 0.056045 0.784108\nvt 0.878879 0.283968\nvt 0.879692 0.292782\nvt 0.873375 0.295725\nvt 0.878832 0.297086\nvt 0.875310 0.301535\nvt 0.107651 0.730481\nvt 0.112317 0.728837\nvt 0.109779 0.732968\nvt 0.870631 0.300133\nvt 0.882783 0.274266\nvt 0.162951 0.975821\nvt 0.165489 0.979447\nvt 0.161218 0.986457\nvt 0.093926 0.738045\nvt 0.106118 0.724098\nvt 0.088255 0.746985\nvt 0.071465 0.757178\nvt 0.081327 0.755487\nvt 0.067656 0.762751\nvt 0.059084 0.771695\nvt 0.203400 0.993654\nvt 0.202628 0.996472\nvt 0.195407 0.990459\nvt 0.753239 0.849066\nvt 0.732945 0.846563\nvt 0.796692 0.617891\nvt 0.804664 0.614022\nvt 0.793281 0.633382\nvt 0.814588 0.605673\nvt 0.811042 0.617628\nvt 0.756855 0.834970\nvt 0.481636 0.950478\nvt 0.484832 0.945179\nvt 0.485151 0.965292\nvt 0.759311 0.827715\nvt 0.489937 0.952114\nvt 0.489412 0.943562\nvt 0.492725 0.950245\nvt 0.487329 0.960846\nvt 0.815985 0.593552\nvt 0.809881 0.595924\nvt 0.812244 0.591608\nvt 0.819481 0.594804\nvt 0.820792 0.601278\nvt 0.818704 0.601548\nvt 0.814483 0.598469\nvt 0.371620 0.929876\nvt 0.376691 0.930730\nvt 0.372928 0.936378\nvt 0.377596 0.922038\nvt 0.392780 0.914541\nvt 0.385513 0.931099\nvt 0.383682 0.921098\nvt 0.041545 0.886819\nvt 0.039656 0.883654\nvt 0.041696 0.883768\nvt 0.040603 0.877343\nvt 0.038024 0.889398\nvt 0.389458 0.912067\nvt 0.374683 0.919790\nvt 0.380298 0.913453\nvt 0.490589 0.967495\nvt 0.492224 0.969694\nvt 0.490277 0.970845\nvt 0.370749 0.925573\nvt 0.493916 0.964735\nvt 0.492863 0.960589\nvt 0.036347 0.864135\nvt 0.038424 0.856907\nvt 0.817908 0.609105\nvt 0.396392 0.919362\nvt 0.400776 0.931631\nvt 0.400747 0.924963\nvt 0.402908 0.930482\nvt 0.389370 0.936344\nvt 0.394880 0.931055\nvt 0.397903 0.937218\nvt 0.049479 0.859228\nvt 0.046248 0.862053\nvt 0.380691 0.940763\nvt 0.062981 0.848937\nvt 0.954255 0.268680\nvt 0.958417 0.272209\nvt 0.955920 0.276687\nvt 0.052045 0.854539\nvt 0.958627 0.277537\nvt 0.954090 0.281887\nvt 0.958337 0.263988\nvt 0.951725 0.250669\nvt 0.100691 0.843053\nvt 0.109044 0.856438\nvt 0.390221 0.946904\nvt 0.377355 0.942960\nvt 0.393974 0.946011\nvt 0.390443 0.940417\nvt 0.397510 0.944690\nvt 0.820369 0.624666\nvt 0.825276 0.630591\nvt 0.818817 0.627003\nvt 0.829023 0.633472\nvt 0.838827 0.635064\nvt 0.817080 0.621021\nvt 0.402536 0.948754\nvt 0.403163 0.946696\nvt 0.960809 0.275300\nvt 0.960542 0.270812\nvt 0.836969 0.633318\nvt 0.846248 0.632103\nvt 0.849400 0.632610\nvt 0.848561 0.631516\nvt 0.961209 0.310555\nvt 0.963718 0.310579\nvt 0.962627 0.313150\nvt 0.960235 0.230035\nvt 0.393123 0.998876\nvt 0.391762 0.995347\nvt 0.393546 0.994697\nvt 0.978209 0.807348\nvt 0.976225 0.808735\nvt 0.976744 0.806260\nvt 0.391800 0.992799\nvt 0.990155 0.636991\nvt 0.990785 0.639960\nvt 0.988358 0.638599\nvt 0.767032 0.310643\nvt 0.768961 0.313183\nvt 0.766530 0.313183\nvt 0.109037 0.851539\nvt 0.995371 0.539482\nvt 0.998529 0.532179\nvt 0.998283 0.540474\nvt 0.926688 0.822718\nvt 0.932587 0.815674\nvt 0.102203 0.842506\nvt 0.092656 0.828867\nvt 0.086288 0.816982\nvt 0.060401 0.773899\nvt 0.050866 0.781157\nvt 0.929201 0.886014\nvt 0.922816 0.885615\nvt 0.925951 0.881869\nvt 0.055959 0.780922\nvt 0.957837 0.691221\nvt 0.959129 0.695663\nvt 0.953137 0.693218\nvt 0.931615 0.895888\nvt 0.959129 0.686343\nvt 0.932351 0.905391\nvt 0.196385 0.985606\nvt 0.203577 0.983739\nvt 0.203759 0.986019\nvt 0.990919 0.478187\nvt 0.987138 0.470314\nvt 0.994408 0.477245\nvt 0.995389 0.471630\nvt 0.171527 0.984875\nvt 0.175751 0.988814\nvt 0.172492 0.988310\nvt 0.165600 0.985994\nvt 0.756225 0.860929\nvt 0.753622 0.865742\nvt 0.756100 0.856871\nvt 0.751588 0.869800\nvt 0.206451 0.948115\nvt 0.206451 0.950062\nvt 0.205585 0.948720\nvt 0.172571 0.993854\nvt 0.175183 0.988878\nvt 0.175564 0.994533\nvt 0.503482 0.986992\nvt 0.505415 0.985517\nvt 0.498030 0.990503\nvt 0.505066 0.994187\nvt 0.497371 0.994232\nvt 0.879900 0.301923\nvt 0.880602 0.305121\nvt 0.878841 0.307973\nvt 0.748151 0.880597\nvt 0.886543 0.278718\nvt 0.886567 0.282744\nvt 0.887282 0.276241\nvt 0.885923 0.265047\nvt 0.925469 0.465981\nvt 0.737858 0.893655\nvt 0.372068 0.726448\nvt 0.419234 0.822048\nvt 0.418631 0.825095\nvt 0.407182 0.832786\nvt 0.330855 0.825988\nvt 0.927606 0.426366\nvt 0.925616 0.434034\nvt 0.742644 0.908758\nvt 0.739844 0.922187\nvt 0.744366 0.905238\nvt 0.418347 0.672343\nvt 0.411203 0.689236\nvt 0.985131 0.706413\nvt 0.374287 0.760286\nvt 0.284888 0.922810\nvt 0.334499 0.688708\nvt 0.477882 0.984628\nvt 0.880185 0.344481\nvt 0.829435 0.258846\nvt 0.566923 0.691006\nvt 0.983254 0.811828\nvt 0.989630 0.803349\nvt 0.818810 0.496185\nvt 0.629435 0.637368\nvt 0.621957 0.640438\nvt 0.787510 0.458263\nvt 0.697799 0.617993\nvt 0.669733 0.628163\nvt 0.660370 0.618558\nvt 0.984548 0.659883\nvt 0.993026 0.640161\nvt 0.593164 0.640482\nvt 0.596294 0.642739\nvt 0.579625 0.648768\nvt 0.476226 0.970250\nvt 0.563351 0.657425\nvt 0.551459 0.664662\nvt 0.599578 0.994370\nvt 0.595034 0.990256\nvt 0.599578 0.988842\nvt 0.923807 0.418938\nvt 0.920380 0.417900\nvt 0.525958 0.712837\nvt 0.882590 0.242191\nvt 0.879901 0.228969\nvt 0.894855 0.485186\nvt 0.277779 0.975937\nvt 0.279830 0.986422\nvt 0.870295 0.464684\nvt 0.878436 0.472092\nvt 0.863607 0.455624\nvt 0.853513 0.451693\nvt 0.857992 0.453675\nvt 0.751626 0.591717\nvt 0.758830 0.620908\nvt 0.823651 0.299952\nvt 0.813227 0.282691\nvt 0.825904 0.318731\nvt 0.488266 0.924742\nvt 0.484437 0.923576\nvt 0.823852 0.307494\nvt 0.481289 0.915660\nvt 0.483015 0.909906\nvt 0.486755 0.907681\nvt 0.823630 0.289496\nvt 0.822758 0.280062\nvt 0.824563 0.285148\nvt 0.820192 0.344100\nvt 0.496900 0.934187\nvt 0.488957 0.927939\nvt 0.504683 0.935454\nvt 0.507649 0.934148\nvt 0.290726 0.761134\nvt 0.853286 0.357317\nvt 0.354600 0.837555\nvt 0.358172 0.833397\nvt 0.363065 0.827001\nvt 0.375054 0.823330\nvt 0.384733 0.823802\nvt 0.295621 0.805321\nvt 0.963729 0.311798\nvt 0.965171 0.309480\nvt 0.966221 0.312014\nvt 0.292008 0.811905\nvt 0.295210 0.807784\nvt 0.997207 0.366626\nvt 0.993074 0.386972\nvt 0.993479 0.390989\nvt 0.991638 0.390408\nvt 0.891027 0.349920\nvt 0.993917 0.145182\nvt 0.992120 0.143688\nvt 0.994546 0.142333\nvt 0.129475 0.994320\nvt 0.770934 0.310700\nvt 0.771425 0.313183\nvt 0.768961 0.313183\nvt 0.130099 0.990027\nvt 0.996581 0.356445\nvt 0.993794 0.357680\nvt 0.993494 0.349327\nvt 0.290418 0.929978\nvt 0.844973 0.437011\nvt 0.991797 0.177870\nvt 0.635242 0.993497\nvt 0.981210 0.638203\nvt 0.976445 0.638649\nvt 0.916003 0.522334\nvt 0.921706 0.520328\nvt 0.920650 0.524866\nvt 0.268686 0.988184\nvt 0.756225 0.925851\nvt 0.756100 0.929930\nvt 0.752541 0.917363\nvt 0.981821 0.415365\nvt 0.980809 0.415654\nvt 0.981197 0.412927\nvt 0.425480 0.994908\nvt 0.427877 0.992315\nvt 0.427523 0.997693\nvt 0.987629 0.699409\nvt 0.986874 0.695797\nvt 0.878843 0.222761\nvt 0.880604 0.225558\nvt 0.886888 0.249908\nvt 0.886568 0.246883\nvt 0.887282 0.253557\nvt 0.927986 0.457442\nvt 0.999453 0.472187\nvt 0.996040 0.465772\nvt 0.999453 0.461575\nvt 0.832442 0.726235\nvt 0.879062 0.628395\nvt 0.788950 0.659786\nvt 0.994945 0.959442\nvt 0.991555 0.954662\nvt 0.994945 0.951780\nvt 0.947471 0.498967\nvt 0.608878 0.996745\nvt 0.605724 0.993034\nvt 0.608878 0.988842\nvt 0.927606 0.488678\nvt 0.739844 0.865225\nvt 0.927522 0.491227\nvt 0.931442 0.493816\nvt 0.879524 0.773214\nvt 0.876029 0.765762\nvt 0.753776 0.850696\nvt 0.749153 0.852901\nvt 0.911428 0.889987\nvt 0.836917 0.694633\nvt 0.811515 0.779850\nvt 0.837792 0.584621\nvt 0.844625 0.583941\nvt 0.844625 0.591306\nvt 0.984990 0.045811\nvt 0.979941 0.042318\nvt 0.985956 0.035816\nvt 0.552077 0.759029\nvt 0.564403 0.760735\nvt 0.056821 0.688558\nvt 0.048442 0.742770\nvt 0.983783 0.028075\nvt 0.976968 0.021981\nvt 0.595027 0.795640\nvt 0.588129 0.783970\nvt 0.602859 0.802581\nvt 0.003876 0.779251\nvt 0.644410 0.804346\nvt 0.697798 0.827970\nvt 0.022781 0.841173\nvt 0.017576 0.829671\nvt 0.029194 0.882523\nvt 0.714642 0.841301\nvt 0.998726 0.980871\nvt 0.997228 0.978319\nvt 0.998726 0.970785\nvt 0.669330 0.824310\nvt 0.660370 0.827649\nvt 0.768552 0.682810\nvt 0.637351 0.819416\nvt 0.760080 0.715045\nvt 0.991203 0.444536\nvt 0.780352 0.312574\nvt 0.781440 0.308247\nvt 0.784408 0.309334\nvt 0.992389 0.450960\nvt 0.992643 0.459235\nvt 0.291540 0.994956\nvt 0.287255 0.994956\nvt 0.287416 0.989713\nvt 0.999398 0.386047\nvt 0.997496 0.383290\nvt 0.999398 0.380153\nvt 0.967837 0.591573\nvt 0.962964 0.591573\nvt 0.966409 0.586281\nvt 0.090421 0.828344\nvt 0.882783 0.279022\nvt 0.883235 0.288902\nvt 0.105777 0.735263\nvt 0.165926 0.973480\nvt 0.096363 0.740308\nvt 0.071205 0.758718\nvt 0.757835 0.843182\nvt 0.758830 0.824709\nvt 0.755713 0.823475\nvt 0.488378 0.941435\nvt 0.369310 0.931391\nvt 0.033007 0.890350\nvt 0.492887 0.942578\nvt 0.494757 0.944423\nvt 0.487077 0.970325\nvt 0.038620 0.863541\nvt 0.043163 0.862148\nvt 0.395787 0.948809\nvt 0.959771 0.251933\nvt 0.959464 0.259353\nvt 0.977090 0.811722\nvt 0.827779 0.313127\nvt 0.825994 0.310895\nvt 0.828648 0.312995\nvt 0.827335 0.310289\nvt 0.825845 0.306353\nvt 0.112075 0.856561\nvt 0.064344 0.769909\nvt 0.978595 0.050715\nvt 0.983109 0.050036\nvt 0.932056 0.909981\nvt 0.709821 0.309056\nvt 0.710049 0.313148\nvt 0.706769 0.313148\nvt 0.979948 0.496522\nvt 0.977884 0.494197\nvt 0.979982 0.493023\nvt 0.986175 0.478822\nvt 0.991392 0.464980\nvt 0.995998 0.463912\nvt 0.833671 0.313189\nvt 0.835180 0.308035\nvt 0.838010 0.313189\nvt 0.755066 0.308934\nvt 0.759348 0.308533\nvt 0.759348 0.313183\nvt 0.175046 0.985571\nvt 0.174553 0.982933\nvt 0.174837 0.998632\nvt 0.886460 0.286849\nvt 0.990093 0.415947\nvt 0.988708 0.413356\nvt 0.990093 0.412410\nvt 0.748070 0.884416\nvt 0.117641 0.570358\nvt 0.112195 0.580000\nvt 0.110937 0.571255\nvt 0.939220 0.289461\nvt 0.940285 0.281270\nvt 0.946934 0.292388\nvt 0.109232 0.558402\nvt 0.113505 0.552805\nvt 0.117752 0.557819\nvt 0.115334 0.563278\nvt 0.097727 0.563792\nvt 0.105341 0.554369\nvt 0.942995 0.279861\nvt 0.838763 0.817247\nvt 0.818832 0.818894\nvt 0.831777 0.814257\nvt 0.806212 0.829088\nvt 0.803938 0.824839\nvt 0.817479 0.827395\nvt 0.801618 0.838340\nvt 0.072338 0.516955\nvt 0.080356 0.518947\nvt 0.076296 0.521782\nvt 0.062505 0.566197\nvt 0.077817 0.566021\nvt 0.080636 0.569373\nvt 0.067355 0.571997\nvt 0.059335 0.575546\nvt 0.049959 0.565269\nvt 0.026001 0.493692\nvt 0.034637 0.488445\nvt 0.036034 0.494063\nvt 0.182472 0.008419\nvt 0.187021 0.020042\nvt 0.174361 0.007039\nvt 0.179108 0.003823\nvt 0.191154 0.016739\nvt 0.118964 0.550924\nvt 0.120753 0.557048\nvt 0.111916 0.547696\nvt 0.117447 0.546430\nvt 0.107767 0.537389\nvt 0.730052 0.312842\nvt 0.733158 0.308919\nvt 0.733158 0.313190\nvt 0.962495 0.100700\nvt 0.962495 0.105102\nvt 0.959862 0.102100\nvt 0.766885 0.905232\nvt 0.762860 0.892129\nvt 0.769461 0.900142\nvt 0.093733 0.577204\nvt 0.105016 0.586789\nvt 0.092670 0.586799\nvt 0.088405 0.574446\nvt 0.089381 0.565210\nvt 0.078719 0.572847\nvt 0.039840 0.563678\nvt 0.036125 0.558226\nvt 0.049775 0.561297\nvt 0.034291 0.553260\nvt 0.030096 0.557620\nvt 0.019947 0.545341\nvt 0.017667 0.555063\nvt 0.018444 0.549585\nvt 0.234844 0.022675\nvt 0.240904 0.021375\nvt 0.238834 0.032140\nvt 0.249272 0.033912\nvt 0.232054 0.031503\nvt 0.005527 0.521628\nvt 0.016774 0.525286\nvt 0.007871 0.527876\nvt 0.082277 0.576737\nvt 0.073201 0.574124\nvt 0.067060 0.577483\nvt 0.059292 0.581111\nvt 0.064253 0.586195\nvt 0.071380 0.581510\nvt 0.069203 0.593946\nvt 0.076965 0.584994\nvt 0.087986 0.586452\nvt 0.079152 0.602731\nvt 0.116096 0.523308\nvt 0.104002 0.514473\nvt 0.095875 0.533699\nvt 0.063880 0.484939\nvt 0.063917 0.502056\nvt 0.054160 0.490046\nvt 0.052141 0.481982\nvt 0.043321 0.478612\nvt 0.025636 0.486127\nvt 0.030778 0.475595\nvt 0.159917 0.006432\nvt 0.166213 0.003325\nvt 0.169256 0.010652\nvt 0.183112 0.023115\nvt 0.200130 0.032519\nvt 0.203174 0.029875\nvt 0.807693 0.836537\nvt 0.821897 0.833036\nvt 0.933859 0.280334\nvt 0.931836 0.285936\nvt 0.941596 0.276257\nvt 0.768450 0.858060\nvt 0.764819 0.862245\nvt 0.770583 0.854534\nvt 0.025965 0.497499\nvt 0.020421 0.496419\nvt 0.763424 0.880964\nvt 0.767615 0.890746\nvt 0.760080 0.884075\nvt 0.769505 0.895372\nvt 0.777527 0.902405\nvt 0.774977 0.906277\nvt 0.015720 0.520522\nvt 0.019551 0.521292\nvt 0.016357 0.533198\nvt 0.012874 0.534335\nvt 0.017156 0.529580\nvt 0.020376 0.532283\nvt 0.021207 0.542121\nvt 0.028957 0.548207\nvt 0.619928 0.916968\nvt 0.613637 0.914706\nvt 0.621454 0.909129\nvt 0.048812 0.558459\nvt 0.076656 0.563992\nvt 0.619433 0.851874\nvt 0.620527 0.859639\nvt 0.618400 0.865956\nvt 0.929330 0.284546\nvt 0.926543 0.282278\nvt 0.612393 0.863000\nvt 0.604307 0.864415\nvt 0.607365 0.871152\nvt 0.619371 0.894349\nvt 0.611091 0.890978\nvt 0.033520 0.539909\nvt 0.024701 0.518479\nvt 0.032063 0.525210\nvt 0.783058 0.844365\nvt 0.793024 0.838317\nvt 0.790960 0.843465\nvt 0.785609 0.849779\nvt 0.776540 0.848763\nvt 0.761889 0.872758\nvt 0.764829 0.873461\nvt 0.841071 0.841484\nvt 0.837513 0.830386\nvt 0.843103 0.839063\nvt 0.829732 0.838287\nvt 0.917410 0.231277\nvt 0.925739 0.224467\nvt 0.923803 0.227704\nvt 0.797155 0.848199\nvt 0.782969 0.859469\nvt 0.776989 0.852649\nvt 0.778633 0.863465\nvt 0.769008 0.864209\nvt 0.776106 0.870946\nvt 0.769630 0.873768\nvt 0.764881 0.882070\nvt 0.846708 0.560821\nvt 0.859039 0.553374\nvt 0.854346 0.564344\nvt 0.877177 0.578484\nvt 0.875251 0.581145\nvt 0.869695 0.574345\nvt 0.860262 0.569779\nvt 0.868304 0.567575\nvt 0.929505 0.257613\nvt 0.941146 0.252348\nvt 0.938325 0.273440\nvt 0.605630 0.905877\nvt 0.594861 0.883256\nvt 0.808829 0.854602\nvt 0.808749 0.845823\nvt 0.826026 0.856651\nvt 0.813537 0.863361\nvt 0.969810 0.694619\nvt 0.974293 0.688117\nvt 0.974293 0.695623\nvt 0.795967 0.874547\nvt 0.791740 0.860529\nvt 0.802065 0.867444\nvt 0.786070 0.868411\nvt 0.786745 0.876770\nvt 0.784224 0.880835\nvt 0.790493 0.894299\nvt 0.778339 0.888204\nvt 0.774528 0.882283\nvt 0.031433 0.511181\nvt 0.038299 0.510199\nvt 0.033469 0.545219\nvt 0.035973 0.543295\nvt 0.613372 0.900507\nvt 0.609931 0.913421\nvt 0.941584 0.267267\nvt 0.945750 0.237044\nvt 0.947880 0.239025\nvt 0.945485 0.268669\nvt 0.949515 0.244760\nvt 0.093923 0.538476\nvt 0.088413 0.533690\nvt 0.092635 0.531631\nvt 0.830070 0.874425\nvt 0.841160 0.878469\nvt 0.818835 0.878862\nvt 0.909161 0.258469\nvt 0.916937 0.240115\nvt 0.913828 0.249589\nvt 0.805150 0.883553\nvt 0.795463 0.886855\nvt 0.803005 0.892801\nvt 0.799732 0.894541\nvt 0.775138 0.878442\nvt 0.799054 0.897995\nvt 0.078712 0.545238\nvt 0.083329 0.539759\nvt 0.086654 0.545558\nvt 0.087592 0.550408\nvt 0.083684 0.554143\nvt 0.595965 0.873867\nvt 0.933197 0.247176\nvt 0.937155 0.239054\nvt 0.942414 0.238085\nvt 0.591228 0.908368\nvt 0.597427 0.915679\nvt 0.609302 0.917181\nvt 0.040531 0.531414\nvt 0.042172 0.527487\nvt 0.901710 0.591599\nvt 0.896292 0.585450\nvt 0.901710 0.584111\nvt 0.444103 0.929139\nvt 0.440489 0.952739\nvt 0.432740 0.948828\nvt 0.984932 0.218466\nvt 0.984932 0.222679\nvt 0.982982 0.219893\nvt 0.807702 0.898898\nvt 0.813499 0.900020\nvt 0.896302 0.274933\nvt 0.893076 0.263338\nvt 0.903085 0.249293\nvt 0.864433 0.550403\nvt 0.863056 0.545074\nvt 0.868372 0.560706\nvt 0.871612 0.535462\nvt 0.877533 0.535957\nvt 0.829495 0.885957\nvt 0.825058 0.896588\nvt 0.949695 0.230663\nvt 0.947383 0.228025\nvt 0.086777 0.525688\nvt 0.070080 0.514967\nvt 0.077245 0.524898\nvt 0.087079 0.536082\nvt 0.071502 0.532397\nvt 0.069858 0.544108\nvt 0.062784 0.531641\nvt 0.063951 0.520463\nvt 0.585279 0.895652\nvt 0.584469 0.908136\nvt 0.056816 0.537274\nvt 0.045267 0.533176\nvt 0.052919 0.524862\nvt 0.441956 0.900916\nvt 0.440788 0.905155\nvt 0.432390 0.903470\nvt 0.042208 0.524440\nvt 0.432717 0.911891\nvt 0.445971 0.918577\nvt 0.815617 0.903767\nvt 0.810758 0.902178\nvt 0.888403 0.281775\nvt 0.889883 0.289983\nvt 0.887775 0.286117\nvt 0.891937 0.291495\nvt 0.833162 0.905835\nvt 0.835099 0.897883\nvt 0.841847 0.903036\nvt 0.847146 0.882894\nvt 0.067230 0.516007\nvt 0.055575 0.521640\nvt 0.058605 0.521970\nvt 0.429630 0.908766\nvt 0.428062 0.903231\nvt 0.422540 0.927208\nvt 0.524419 0.748336\nvt 0.523033 0.749200\nvt 0.523079 0.745732\nvt 0.837252 0.908975\nvt 0.910449 0.302683\nvt 0.918863 0.299840\nvt 0.914338 0.305731\nvt 0.066844 0.511383\nvt 0.074869 0.516564\nvt 0.064252 0.512301\nvt 0.064375 0.505755\nvt 0.062711 0.516962\nvt 0.060845 0.514206\nvt 0.056044 0.517739\nvt 0.427329 0.915891\nvt 0.056703 0.511589\nvt 0.068423 0.507866\nvt 0.908466 0.304158\nvt 0.896348 0.296189\nvt 0.904584 0.298613\nvt 0.065712 0.491224\nvt 0.064114 0.487285\nvt 0.419542 0.915356\nvt 0.077711 0.611330\nvt 0.072413 0.617166\nvt 0.066301 0.605377\nvt 0.077246 0.621736\nvt 0.083208 0.619240\nvt 0.082097 0.630225\nvt 0.083591 0.625821\nvt 0.080958 0.648940\nvt 0.071257 0.635988\nvt 0.091517 0.634479\nvt 0.098836 0.641915\nvt 0.094660 0.633254\nvt 0.091629 0.648062\nvt 0.089638 0.667932\nvt 0.088825 0.654636\nvt 0.096469 0.665011\nvt 0.092337 0.683320\nvt 0.088534 0.681296\nvt 0.083392 0.669062\nvt 0.084596 0.678564\nvt 0.080739 0.674070\nvt 0.074379 0.665426\nvt 0.973271 0.857204\nvt 0.974741 0.861517\nvt 0.970448 0.858325\nvt 0.932003 0.559042\nvt 0.928105 0.554576\nvt 0.931592 0.551918\nvt 0.075028 0.670766\nvt 0.068660 0.671214\nvt 0.930543 0.562731\nvt 0.928984 0.559856\nvt 0.060115 0.660971\nvt 0.064097 0.670528\nvt 0.055440 0.663056\nvt 0.059640 0.667556\nvt 0.127550 0.685645\nvt 0.130808 0.684327\nvt 0.135259 0.689622\nvt 0.601790 0.995958\nvt 0.601420 0.998092\nvt 0.599867 0.992724\nvt 0.065655 0.668723\nvt 0.067079 0.645190\nvt 0.159281 0.011238\nvt 0.079725 0.498164\nvt 0.093784 0.506493\nvt 0.099908 0.492245\nvt 0.082946 0.478339\nvt 0.130701 0.502255\nvt 0.120908 0.511565\nvt 0.127474 0.527553\nvt 0.062643 0.468620\nvt 0.167637 0.025818\nvt 0.161336 0.017904\nvt 0.182301 0.026920\nvt 0.177320 0.034201\nvt 0.169704 0.039732\nvt 0.156716 0.025688\nvt 0.199591 0.037688\nvt 0.189650 0.038654\nvt 0.183218 0.045752\nvt 0.108340 0.453297\nvt 0.179287 0.050309\nvt 0.159530 0.049356\nvt 0.182966 0.058216\nvt 0.159198 0.072375\nvt 0.151375 0.064051\nvt 0.144276 0.094886\nvt 0.174501 0.086448\nvt 0.176633 0.122014\nvt 0.157374 0.124818\nvt 0.159210 0.161964\nvt 0.176995 0.173089\nvt 0.196074 0.164826\nvt 0.154274 0.182293\nvt 0.199737 0.181769\nvt 0.187445 0.196405\nvt 0.148625 0.201042\nvt 0.177922 0.208322\nvt 0.151125 0.242490\nvt 0.134437 0.225510\nvt 0.180278 0.232910\nvt 0.142105 0.461397\nvt 0.091191 0.440822\nvt 0.071620 0.435392\nvt 0.058613 0.443293\nvt 0.045984 0.465371\nvt 0.047455 0.438890\nvt 0.116784 0.002121\nvt 0.143998 0.008231\nvt 0.118071 0.012205\nvt 0.150059 0.017191\nvt 0.120662 0.023858\nvt 0.116853 0.046762\nvt 0.144396 0.043584\nvt 0.138842 0.066293\nvt 0.125294 0.070208\nvt 0.142007 0.112984\nvt 0.113032 0.118740\nvt 0.125814 0.099180\nvt 0.142156 0.159870\nvt 0.125202 0.210150\nvt 0.100315 0.224300\nvt 0.124884 0.246954\nvt 0.097853 0.248345\nvt 0.151742 0.302024\nvt 0.171736 0.283936\nvt 0.171237 0.296823\nvt 0.800318 0.115658\nvt 0.783983 0.105322\nvt 0.804730 0.095479\nvt 0.463637 0.969388\nvt 0.467174 0.959183\nvt 0.474166 0.968005\nvt 0.783822 0.119486\nvt 0.769412 0.113839\nvt 0.743228 0.105872\nvt 0.711282 0.115836\nvt 0.711560 0.106038\nvt 0.848289 0.876558\nvt 0.153004 0.258830\nvt 0.118612 0.266445\nvt 0.137994 0.287036\nvt 0.129923 0.306233\nvt 0.104273 0.295063\nvt 0.114377 0.286308\nvt 0.793663 0.073662\nvt 0.807373 0.073334\nvt 0.780978 0.090687\nvt 0.769844 0.079419\nvt 0.760698 0.098309\nvt 0.755179 0.090196\nvt 0.728761 0.097058\nvt 0.712029 0.096444\nvt 0.711599 0.075016\nvt 0.100417 0.648341\nvt 0.101354 0.629960\nvt 0.103218 0.634696\nvt 0.100008 0.635936\nvt 0.063675 0.595077\nvt 0.255006 0.646042\nvt 0.259681 0.641899\nvt 0.263584 0.646854\nvt 0.246659 0.645535\nvt 0.251539 0.637089\nvt 0.272052 0.638409\nvt 0.269859 0.645083\nvt 0.279159 0.629239\nvt 0.282132 0.634912\nvt 0.062235 0.628610\nvt 0.060390 0.617209\nvt 0.022794 0.563097\nvt 0.034647 0.564098\nvt 0.012450 0.558755\nvt 0.014783 0.569744\nvt 0.010406 0.567345\nvt 0.251439 0.020829\nvt 0.245215 0.018763\nvt 0.122135 0.731574\nvt 0.136419 0.722283\nvt 0.122968 0.738756\nvt 0.244655 0.624743\nvt 0.245765 0.632160\nvt 0.258451 0.631909\nvt 0.266828 0.619875\nvt 0.032756 0.568594\nvt 0.039368 0.586550\nvt 0.026313 0.586113\nvt 0.012179 0.586284\nvt 0.261293 0.026025\nvt 0.280430 0.046635\nvt 0.237256 0.041743\nvt 0.239439 0.037195\nvt 0.001394 0.535269\nvt 0.002243 0.525824\nvt 0.247663 0.618819\nvt 0.248589 0.611100\nvt 0.267018 0.602223\nvt 0.271112 0.613464\nvt 0.256561 0.605558\nvt 0.029561 0.593999\nvt 0.013127 0.592935\nvt 0.286664 0.587208\nvt 0.286500 0.595238\nvt 0.280567 0.593287\nvt 0.284726 0.038936\nvt 0.241695 0.045595\nvt 0.252040 0.056706\nvt 0.608492 0.977682\nvt 0.607858 0.983193\nvt 0.602345 0.983232\nvt 0.249261 0.604375\nvt 0.254241 0.594450\nvt 0.260563 0.595874\nvt 0.286066 0.064648\nvt 0.271360 0.065221\nvt 0.263198 0.080017\nvt 0.250342 0.072800\nvt 0.254647 0.096450\nvt 0.247044 0.078774\nvt 0.249177 0.104968\nvt 0.268790 0.086096\nvt 0.277755 0.068955\nvt 0.288184 0.073040\nvt 0.288849 0.047972\nvt 0.294678 0.060667\nvt 0.283645 0.560790\nvt 0.281732 0.575859\nvt 0.276574 0.574423\nvt 0.264646 0.587351\nvt 0.265854 0.582594\nvt 0.274114 0.586414\nvt 0.256782 0.586746\nvt 0.242600 0.603189\nvt 0.246107 0.590549\nvt 0.602306 0.976197\nvt 0.596508 0.973302\nvt 0.598839 0.984468\nvt 0.595034 0.976319\nvt 0.123367 0.721151\nvt 0.136041 0.712545\nvt 0.126162 0.708136\nvt 0.059309 0.639888\nvt 0.071039 0.655368\nvt 0.133904 0.693909\nvt 0.143129 0.711057\nvt 0.144979 0.718145\nvt 0.139438 0.725576\nvt 0.241806 0.590296\nvt 0.243162 0.584752\nvt 0.941035 0.019789\nvt 0.932282 0.019429\nvt 0.936775 0.009761\nvt 0.932688 0.030232\nvt 0.939038 0.031822\nvt 0.932466 0.039783\nvt 0.938004 0.045602\nvt 0.933180 0.045805\nvt 0.154166 0.699287\nvt 0.155569 0.706123\nvt 0.150617 0.700856\nvt 0.937623 0.054676\nvt 0.140496 0.690416\nvt 0.139122 0.692972\nvt 0.163087 0.713837\nvt 0.170588 0.714428\nvt 0.171534 0.718689\nvt 0.177249 0.718606\nvt 0.177466 0.724589\nvt 0.156757 0.724134\nvt 0.151794 0.716541\nvt 0.223434 0.039261\nvt 0.214810 0.041319\nvt 0.248723 0.057954\nvt 0.247787 0.071040\nvt 0.249126 0.061974\nvt 0.514578 0.827393\nvt 0.514349 0.821355\nvt 0.516922 0.828922\nvt 0.249004 0.118575\nvt 0.250804 0.121282\nvt 0.260844 0.098042\nvt 0.253894 0.122020\nvt 0.251930 0.137881\nvt 0.241013 0.153894\nvt 0.238304 0.151683\nvt 0.244233 0.137456\nvt 0.232364 0.162567\nvt 0.368064 0.920139\nvt 0.356405 0.921284\nvt 0.362836 0.913618\nvt 0.783832 0.947830\nvt 0.791939 0.942740\nvt 0.792041 0.947597\nvt 0.230301 0.168789\nvt 0.228048 0.163644\nvt 0.787450 0.940951\nvt 0.778923 0.940371\nvt 0.784349 0.927865\nvt 0.791446 0.929672\nvt 0.229399 0.170753\nvt 0.223926 0.167462\nvt 0.777296 0.933966\nvt 0.776600 0.925945\nvt 0.786285 0.924072\nvt 0.220472 0.151012\nvt 0.239271 0.141391\nvt 0.185764 0.097971\nvt 0.201653 0.113380\nvt 0.202579 0.125660\nvt 0.191614 0.135140\nvt 0.201977 0.134705\nvt 0.203249 0.149899\nvt 0.205827 0.038708\nvt 0.227398 0.043938\nvt 0.238308 0.048424\nvt 0.224663 0.045746\nvt 0.522107 0.836690\nvt 0.519048 0.839394\nvt 0.522874 0.846906\nvt 0.520419 0.843820\nvt 0.524129 0.841381\nvt 0.247021 0.059846\nvt 0.243752 0.058566\nvt 0.245913 0.053666\nvt 0.980924 0.222679\nvt 0.982238 0.218598\nvt 0.982928 0.222285\nvt 0.241357 0.055407\nvt 0.237946 0.051867\nvt 0.228312 0.047454\nvt 0.230310 0.912184\nvt 0.236375 0.916662\nvt 0.230709 0.924512\nvt 0.220239 0.135542\nvt 0.200794 0.050541\nvt 0.216536 0.045190\nvt 0.197440 0.057958\nvt 0.203225 0.073212\nvt 0.185742 0.073422\nvt 0.200940 0.086046\nvt 0.200242 0.099048\nvt 0.239888 0.133038\nvt 0.902376 0.542304\nvt 0.917230 0.531358\nvt 0.913089 0.542033\nvt 0.903092 0.555191\nvt 0.912108 0.554851\nvt 0.215225 0.122047\nvt 0.210371 0.130520\nvt 0.210044 0.104603\nvt 0.206789 0.057767\nvt 0.212387 0.050023\nvt 0.421915 0.913597\nvt 0.060250 0.510245\nvt 0.232575 0.930055\nvt 0.241283 0.911758\nvt 0.995400 0.761363\nvt 0.993077 0.757890\nvt 0.997893 0.755798\nvt 0.953334 0.591573\nvt 0.953577 0.586390\nvt 0.957664 0.588117\nvt 0.306065 0.408360\nvt 0.312914 0.413304\nvt 0.301677 0.419847\nvt 0.318183 0.416105\nvt 0.299764 0.433126\nvt 0.300428 0.405524\nvt 0.311170 0.427119\nvt 0.905537 0.570673\nvt 0.516350 0.778379\nvt 0.515438 0.783527\nvt 0.513672 0.783839\nvt 0.245225 0.127946\nvt 0.515267 0.796233\nvt 0.248956 0.920475\nvt 0.247066 0.928548\nvt 0.241709 0.921465\nvt 0.252004 0.914938\nvt 0.258386 0.920191\nvt 0.242826 0.914936\nvt 0.312622 0.406602\nvt 0.316620 0.410967\nvt 0.134406 0.822885\nvt 0.137164 0.817568\nvt 0.139684 0.825108\nvt 0.129906 0.819398\nvt 0.130981 0.814251\nvt 0.998989 0.808288\nvt 0.998989 0.814153\nvt 0.996825 0.809837\nvt 0.131524 0.807549\nvt 0.139971 0.811842\nvt 0.131951 0.804097\nvt 0.141147 0.802164\nvt 0.144996 0.821283\nvt 0.149647 0.826651\nvt 0.303504 0.457744\nvt 0.298104 0.456728\nvt 0.228691 0.119662\nvt 0.220724 0.127731\nvt 0.233851 0.123968\nvt 0.519941 0.786237\nvt 0.517348 0.816200\nvt 0.517595 0.821568\nvt 0.892813 0.566307\nvt 0.885032 0.564825\nvt 0.881865 0.557080\nvt 0.887291 0.553582\nvt 0.901638 0.566741\nvt 0.900642 0.568772\nvt 0.149709 0.816297\nvt 0.146300 0.811487\nvt 0.150567 0.821496\nvt 0.327192 0.429211\nvt 0.317976 0.426226\nvt 0.322680 0.419857\nvt 0.315937 0.434744\nvt 0.316259 0.441184\nvt 0.305408 0.459766\nvt 0.316210 0.447203\nvt 0.307499 0.459696\nvt 0.325058 0.441389\nvt 0.158994 0.812966\nvt 0.156244 0.818082\nvt 0.334284 0.432501\nvt 0.306374 0.470163\nvt 0.313308 0.461130\nvt 0.899388 0.574328\nvt 0.894697 0.574463\nvt 0.888774 0.570364\nvt 0.903872 0.574335\nvt 0.909194 0.572999\nvt 0.906448 0.579129\nvt 0.881063 0.570406\nvt 0.878262 0.566988\nvt 0.880607 0.563679\nvt 0.812423 0.546791\nvt 0.817849 0.540453\nvt 0.815370 0.551302\nvt 0.885111 0.573753\nvt 0.887305 0.578872\nvt 0.894154 0.579695\nvt 0.912553 0.577138\nvt 0.312616 0.470140\nvt 0.305457 0.477127\nvt 0.108122 0.435624\nvt 0.145852 0.444379\nvt 0.132954 0.423342\nvt 0.149679 0.422354\nvt 0.076931 0.415605\nvt 0.097217 0.417532\nvt 0.051560 0.422961\nvt 0.061960 0.425889\nvt 0.134029 0.399027\nvt 0.152522 0.401711\nvt 0.114386 0.421384\nvt 0.085012 0.403646\nvt 0.108619 0.392116\nvt 0.067958 0.399434\nvt 0.089802 0.385717\nvt 0.076053 0.381880\nvt 0.058763 0.410944\nvt 0.054943 0.399445\nvt 0.145743 0.381000\nvt 0.159183 0.378187\nvt 0.127880 0.380676\nvt 0.099620 0.376044\nvt 0.080678 0.371575\nvt 0.060015 0.381323\nvt 0.152810 0.369104\nvt 0.142464 0.365306\nvt 0.096367 0.354274\nvt 0.100356 0.020048\nvt 0.100487 0.003404\nvt 0.095024 0.050223\nvt 0.109458 0.069757\nvt 0.110962 0.094968\nvt 0.093471 0.109099\nvt 0.091242 0.097287\nvt 0.096619 0.085197\nvt 0.093996 0.130934\nvt 0.096432 0.144318\nvt 0.113884 0.161813\nvt 0.086497 0.178552\nvt 0.092882 0.162119\nvt 0.086260 0.192264\nvt 0.112062 0.188948\nvt 0.068154 0.240948\nvt 0.079742 0.215626\nvt 0.070918 0.263707\nvt 0.096378 0.273686\nvt 0.766821 0.053579\nvt 0.080035 0.013226\nvt 0.088258 0.004685\nvt 0.088018 0.018776\nvt 0.079009 0.052318\nvt 0.065636 0.034995\nvt 0.079322 0.018683\nvt 0.061701 0.022630\nvt 0.071200 0.111008\nvt 0.070201 0.097916\nvt 0.068923 0.131494\nvt 0.078167 0.163878\nvt 0.068508 0.150769\nvt 0.062300 0.180650\nvt 0.060366 0.166069\nvt 0.061548 0.202808\nvt 0.047091 0.235104\nvt 0.056477 0.221635\nvt 0.043608 0.261447\nvt 0.047271 0.281403\nvt 0.055161 0.301962\nvt 0.109263 0.308062\nvt 0.791471 0.049426\nvt 0.794835 0.024979\nvt 0.780136 0.030509\nvt 0.753252 0.033177\nvt 0.756643 0.021510\nvt 0.239571 0.675020\nvt 0.241410 0.658523\nvt 0.243317 0.680917\nvt 0.255296 0.662235\nvt 0.262879 0.681432\nvt 0.052224 0.032020\nvt 0.060682 0.053801\nvt 0.047859 0.038752\nvt 0.080502 0.068012\nvt 0.059528 0.073289\nvt 0.076839 0.085711\nvt 0.047491 0.085646\nvt 0.049894 0.058576\nvt 0.056274 0.104629\nvt 0.047222 0.145593\nvt 0.038513 0.110273\nvt 0.038501 0.175914\nvt 0.031820 0.170275\nvt 0.039086 0.188593\nvt 0.040937 0.196541\nvt 0.037817 0.225261\nvt 0.041788 0.206459\nvt 0.037320 0.244723\nvt 0.044715 0.299795\nvt 0.568120 0.334217\nvt 0.586123 0.336077\nvt 0.568307 0.344460\nvt 0.772759 0.014521\nvt 0.756672 0.016327\nvt 0.737196 0.022578\nvt 0.743197 0.018101\nvt 0.711064 0.013262\nvt 0.722893 0.034590\nvt 0.703303 0.034014\nvt 0.054949 0.353547\nvt 0.063777 0.345066\nvt 0.072478 0.346641\nvt 0.058530 0.362918\nvt 0.076700 0.352865\nvt 0.042171 0.054058\nvt 0.029834 0.059621\nvt 0.038905 0.074418\nvt 0.027283 0.091117\nvt 0.033358 0.147675\nvt 0.019035 0.129319\nvt 0.017993 0.142799\nvt 0.042207 0.159336\nvt 0.027847 0.187530\nvt 0.028883 0.214130\nvt 0.524928 0.413633\nvt 0.526759 0.406436\nvt 0.531820 0.430278\nvt 0.028543 0.232675\nvt 0.029725 0.248778\nvt 0.031476 0.269847\nvt 0.550498 0.358019\nvt 0.561376 0.361163\nvt 0.546832 0.374493\nvt 0.580204 0.356726\nvt 0.595699 0.345378\nvt 0.602207 0.328487\nvt 0.612207 0.338546\nvt 0.587626 0.330796\nvt 0.618828 0.326619\nvt 0.610695 0.328102\nvt 0.625340 0.326477\nvt 0.624459 0.336428\nvt 0.616977 0.319219\nvt 0.619793 0.313871\nvt 0.640115 0.337465\nvt 0.144816 0.970016\nvt 0.155861 0.958672\nvt 0.149415 0.974214\nvt 0.648439 0.325652\nvt 0.649975 0.345478\nvt 0.642755 0.376364\nvt 0.641590 0.356763\nvt 0.633193 0.376854\nvt 0.606059 0.358761\nvt 0.620899 0.375925\nvt 0.607408 0.380110\nvt 0.589056 0.370576\nvt 0.591998 0.394646\nvt 0.570823 0.390993\nvt 0.552882 0.417359\nvt 0.580675 0.409027\nvt 0.579796 0.435565\nvt 0.564224 0.441018\nvt 0.547293 0.434776\nvt 0.539829 0.463225\nvt 0.556488 0.472055\nvt 0.008142 0.184684\nvt 0.018430 0.210954\nvt 0.009614 0.178218\nvt 0.014093 0.169178\nvt 0.000000 0.161484\nvt 0.015143 0.153644\nvt 0.552177 0.489224\nvt 0.535906 0.469885\nvt 0.003011 0.149673\nvt 0.022166 0.105639\nvt 0.006312 0.136476\nvt 0.012448 0.096590\nvt 0.025675 0.069067\nvt 0.106937 0.994482\nvt 0.111126 0.987624\nvt 0.111126 0.997897\nvt 0.089401 0.344031\nvt 0.090864 0.349526\nvt 0.105272 0.346846\nvt 0.117875 0.354538\nvt 0.119035 0.351334\nvt 0.128566 0.361197\nvt 0.116817 0.367712\nvt 0.133609 0.344281\nvt 0.641954 0.411339\nvt 0.657533 0.395627\nvt 0.661688 0.376584\nvt 0.622547 0.397178\nvt 0.629979 0.411789\nvt 0.604354 0.408260\nvt 0.595953 0.417631\nvt 0.616781 0.425898\nvt 0.618523 0.440522\nvt 0.602194 0.431169\nvt 0.601141 0.442067\nvt 0.586366 0.428883\nvt 0.592226 0.441684\nvt 0.590504 0.453244\nvt 0.598323 0.452735\nvt 0.584010 0.456384\nvt 0.592446 0.486504\nvt 0.570204 0.485392\nvt 0.581431 0.508588\nvt 0.566199 0.504410\nvt 0.549851 0.503485\nvt 0.568821 0.540986\nvt 0.554279 0.536538\nvt 0.004451 0.081244\nvt 0.017260 0.071365\nvt 0.089936 0.319373\nvt 0.089640 0.324286\nvt 0.072431 0.327269\nvt 0.105547 0.312659\nvt 0.109477 0.317398\nvt 0.079586 0.335174\nvt 0.068341 0.338149\nvt 0.093840 0.330091\nvt 0.112120 0.322090\nvt 0.099199 0.330967\nvt 0.163498 0.333715\nvt 0.162299 0.349808\nvt 0.119276 0.339420\nvt 0.134772 0.332804\nvt 0.129952 0.324780\nvt 0.120449 0.329594\nvt 0.104813 0.335176\nvt 0.598747 0.583523\nvt 0.588302 0.582186\nvt 0.594112 0.571517\nvt 0.756764 0.864364\nvt 0.759756 0.854053\nvt 0.759223 0.866624\nvt 0.101357 0.333318\nvt 0.647178 0.438973\nvt 0.637515 0.423414\nvt 0.651444 0.424966\nvt 0.633165 0.429176\nvt 0.640079 0.448390\nvt 0.624055 0.456843\nvt 0.603878 0.466837\nvt 0.616785 0.485782\nvt 0.597648 0.515330\nvt 0.610269 0.519156\nvt 0.581414 0.546079\nvt 0.599851 0.554044\nvt 0.615640 0.556706\nvt 0.586635 0.557018\nvt 0.602428 0.563933\nvt 0.607424 0.573116\nvt 0.629314 0.574140\nvt 0.610726 0.579671\nvt 0.606053 0.591094\nvt 0.623013 0.586403\nvt 0.615784 0.586054\nvt 0.148058 0.325881\nvt 0.154248 0.315637\nvt 0.169075 0.319768\nvt 0.634365 0.467593\nvt 0.639302 0.502454\nvt 0.622755 0.518939\nvt 0.630405 0.553744\nvt 0.646878 0.573028\nvt 0.647778 0.468136\nvt 0.647831 0.488140\nvt 0.648508 0.512672\nvt 0.640097 0.521715\nvt 0.647644 0.539422\nvt 0.642550 0.555806\nvt 0.228327 0.181890\nvt 0.226242 0.197843\nvt 0.232768 0.194639\nvt 0.208681 0.205517\nvt 0.206021 0.213419\nvt 0.193384 0.214794\nvt 0.185230 0.267753\nvt 0.176433 0.253913\nvt 0.829305 0.151998\nvt 0.805317 0.152475\nvt 0.823019 0.142927\nvt 0.802938 0.139358\nvt 0.775525 0.124362\nvt 0.744151 0.128495\nvt 0.762296 0.128555\nvt 0.728745 0.130753\nvt 0.711773 0.144412\nvt 0.218179 0.195605\nvt 0.230999 0.208728\nvt 0.213739 0.239101\nvt 0.214758 0.252501\nvt 0.206236 0.266305\nvt 0.192123 0.298739\nvt 0.777116 0.144261\nvt 0.737644 0.142215\nvt 0.724533 0.143878\nvt 0.241678 0.202877\nvt 0.238979 0.196792\nvt 0.243586 0.209975\nvt 0.239818 0.222347\nvt 0.225637 0.234120\nvt 0.228160 0.247439\nvt 0.223216 0.243897\nvt 0.241313 0.262395\nvt 0.232833 0.272868\nvt 0.219149 0.294768\nvt 0.784770 0.172312\nvt 0.798603 0.186385\nvt 0.751910 0.148968\nvt 0.730107 0.157962\nvt 0.711191 0.157560\nvt 0.780801 0.909358\nvt 0.784321 0.917264\nvt 0.778390 0.916424\nvt 0.038720 0.891448\nvt 0.045773 0.892890\nvt 0.039818 0.894889\nvt 0.249705 0.204189\nvt 0.779616 0.909420\nvt 0.777878 0.908975\nvt 0.250593 0.234852\nvt 0.040298 0.903533\nvt 0.035291 0.914324\nvt 0.259091 0.223438\nvt 0.273775 0.208626\nvt 0.253989 0.212373\nvt 0.270970 0.203209\nvt 0.247369 0.198080\nvt 0.275577 0.214818\nvt 0.041495 0.908892\nvt 0.275550 0.228771\nvt 0.250759 0.252717\nvt 0.247018 0.246984\nvt 0.050017 0.922440\nvt 0.040476 0.920873\nvt 0.042840 0.898069\nvt 0.040121 0.904451\nvt 0.769740 0.933758\nvt 0.772145 0.927417\nvt 0.059857 0.901795\nvt 0.050761 0.891811\nvt 0.048145 0.914370\nvt 0.047202 0.928381\nvt 0.998645 0.655083\nvt 0.998645 0.661089\nvt 0.996317 0.658540\nvt 0.809035 0.293370\nvt 0.808688 0.300462\nvt 0.802599 0.294488\nvt 0.077800 0.989912\nvt 0.077800 0.997207\nvt 0.074824 0.993522\nvt 0.975078 0.485756\nvt 0.972784 0.485669\nvt 0.975708 0.475873\nvt 0.769581 0.947295\nvt 0.764878 0.944026\nvt 0.778498 0.945937\nvt 0.360375 0.902975\nvt 0.356249 0.899083\nvt 0.369168 0.887576\nvt 0.368111 0.897111\nvt 0.359567 0.909353\nvt 0.355335 0.915191\nvt 0.340497 0.925134\nvt 0.349023 0.920951\nvt 0.254745 0.141647\nvt 0.255389 0.135475\nvt 0.256653 0.106501\nvt 0.208879 0.895124\nvt 0.206451 0.900623\nvt 0.207053 0.892149\nvt 0.274286 0.087268\nvt 0.285135 0.079301\nvt 0.289260 0.546918\nvt 0.279126 0.561264\nvt 0.286222 0.545120\nvt 0.272065 0.573657\nvt 0.267681 0.577125\nvt 0.252459 0.582507\nvt 0.259593 0.581465\nvt 0.153444 0.730101\nvt 0.160184 0.734125\nvt 0.220817 0.861278\nvt 0.209460 0.881553\nvt 0.220069 0.857421\nvt 0.235411 0.851696\nvt 0.232819 0.844460\nvt 0.246223 0.839285\nvt 0.240218 0.845501\nvt 0.276253 0.562858\nvt 0.268950 0.572840\nvt 0.783640 0.996468\nvt 0.783633 0.993049\nvt 0.785837 0.993221\nvt 0.252991 0.835182\nvt 0.257930 0.834964\nvt 0.251545 0.840298\nvt 0.259446 0.837272\nvt 0.785837 0.998538\nvt 0.211808 0.884003\nvt 0.212896 0.890151\nvt 0.214365 0.881767\nvt 0.212201 0.896775\nvt 0.174837 0.915814\nvt 0.172988 0.920345\nvt 0.169941 0.916769\nvt 0.168613 0.923634\nvt 0.163546 0.927104\nvt 0.156403 0.936695\nvt 0.155397 0.935529\nvt 0.149379 0.934322\nvt 0.157731 0.922141\nvt 0.147543 0.943983\nvt 0.889289 0.580565\nvt 0.828833 0.531635\nvt 0.830414 0.531761\nvt 0.826873 0.533475\nvt 0.894409 0.060903\nvt 0.884882 0.065642\nvt 0.875296 0.055179\nvt 0.899847 0.074106\nvt 0.880497 0.070565\nvt 0.890116 0.080505\nvt 0.871986 0.062198\nvt 0.873733 0.068061\nvt 0.859736 0.066237\nvt 0.868452 0.067381\nvt 0.838028 0.064681\nvt 0.851391 0.052701\nvt 0.905542 0.094290\nvt 0.880438 0.084937\nvt 0.959643 0.054135\nvt 0.957578 0.064352\nvt 0.948790 0.059341\nvt 0.949252 0.073681\nvt 0.954723 0.079963\nvt 0.949134 0.083789\nvt 0.166461 0.728477\nvt 0.265518 0.834304\nvt 0.154216 0.734346\nvt 0.157007 0.735668\nvt 0.155495 0.737429\nvt 0.246388 0.581761\nvt 0.246411 0.584902\nvt 0.175907 0.734813\nvt 0.167917 0.734125\nvt 0.930050 0.008798\nvt 0.937460 0.991852\nvt 0.937460 0.998368\nvt 0.935094 0.996534\nvt 0.168739 0.739258\nvt 0.162739 0.743428\nvt 0.266257 0.839581\nvt 0.248953 0.857016\nvt 0.255109 0.882986\nvt 0.169971 0.750728\nvt 0.159508 0.748065\nvt 0.958346 0.981335\nvt 0.958596 0.988950\nvt 0.956118 0.985673\nvt 0.155391 0.743361\nvt 0.266027 0.846639\nvt 0.260812 0.846056\nvt 0.157419 0.745313\nvt 0.156445 0.753306\nvt 0.152103 0.747134\nvt 0.154155 0.752519\nvt 0.151770 0.754730\nvt 0.263316 0.851251\nvt 0.257367 0.853977\nvt 0.260545 0.876988\nvt 0.253642 0.893254\nvt 0.254336 0.860014\nvt 0.160184 0.755600\nvt 0.157278 0.763091\nvt 0.153539 0.765680\nvt 0.266571 0.855086\nvt 0.263707 0.849172\nvt 0.266235 0.879325\nvt 0.158005 0.773495\nvt 0.146706 0.787987\nvt 0.140827 0.782897\nvt 0.249573 0.887633\nvt 0.237584 0.883335\nvt 0.247906 0.905799\nvt 0.419283 0.890429\nvt 0.413062 0.866933\nvt 0.419283 0.865608\nvt 0.250603 0.911412\nvt 0.254106 0.903082\nvt 0.260890 0.910101\nvt 0.264704 0.899388\nvt 0.261944 0.905142\nvt 0.258885 0.894509\nvt 0.268157 0.903616\nvt 0.259505 0.916115\nvt 0.240643 0.907324\nvt 0.232179 0.899881\nvt 0.805933 0.565273\nvt 0.813865 0.570517\nvt 0.802846 0.578393\nvt 0.800918 0.571104\nvt 0.296337 0.700016\nvt 0.296337 0.703948\nvt 0.295604 0.701458\nvt 0.823853 0.540402\nvt 0.819389 0.544983\nvt 0.817389 0.549459\nvt 0.816708 0.554176\nvt 0.795353 0.572205\nvt 0.795656 0.579451\nvt 0.520999 0.827357\nvt 0.522854 0.822569\nvt 0.799114 0.565895\nvt 0.801795 0.560258\nvt 0.822686 0.589050\nvt 0.820795 0.570409\nvt 0.830025 0.590149\nvt 0.790808 0.583669\nvt 0.798971 0.587792\nvt 0.962170 0.711600\nvt 0.960692 0.703688\nvt 0.962542 0.700979\nvt 0.957664 0.727126\nvt 0.955847 0.720898\nvt 0.863161 0.049123\nvt 0.857958 0.045218\nvt 0.864459 0.044900\nvt 0.872317 0.044727\nvt 0.839183 0.069238\nvt 0.848481 0.066979\nvt 0.842825 0.069850\nvt 0.836069 0.053754\nvt 0.921263 0.541912\nvt 0.918175 0.549833\nvt 0.917434 0.541565\nvt 0.227224 0.817612\nvt 0.224029 0.813604\nvt 0.230824 0.804690\nvt 0.218629 0.820398\nvt 0.210047 0.819573\nvt 0.216613 0.815812\nvt 0.215222 0.827981\nvt 0.214699 0.823703\nvt 0.878207 0.096270\nvt 0.893372 0.104078\nvt 0.884181 0.101084\nvt 0.209144 0.813105\nvt 0.869746 0.083108\nvt 0.954789 0.094251\nvt 0.950579 0.095541\nvt 0.036858 0.923593\nvt 0.042560 0.937435\nvt 0.037291 0.929871\nvt 0.283150 0.210268\nvt 0.280702 0.203224\nvt 0.056110 0.930529\nvt 0.050864 0.945035\nvt 0.283691 0.222980\nvt 0.823786 0.254248\nvt 0.814063 0.260487\nvt 0.811186 0.243334\nvt 0.262453 0.255016\nvt 0.812153 0.215170\nvt 0.820753 0.212218\nvt 0.816643 0.235410\nvt 0.805208 0.239887\nvt 0.804161 0.225117\nvt 0.807286 0.248630\nvt 0.743059 0.162962\nvt 0.735061 0.171926\nvt 0.727121 0.181492\nvt 0.718883 0.169442\nvt 0.710396 0.179399\nvt 0.710362 0.190010\nvt 0.741314 0.193514\nvt 0.727964 0.196945\nvt 0.746257 0.186591\nvt 0.762010 0.181449\nvt 0.784275 0.188348\nvt 0.753712 0.205254\nvt 0.791025 0.206356\nvt 0.802037 0.205394\nvt 0.764564 0.212454\nvt 0.785321 0.218543\nvt 0.742347 0.208678\nvt 0.847186 0.952735\nvt 0.841597 0.958507\nvt 0.845713 0.940408\nvt 0.795423 0.234903\nvt 0.791465 0.229073\nvt 0.757089 0.221416\nvt 0.734845 0.217303\nvt 0.743431 0.223332\nvt 0.724130 0.213021\nvt 0.728409 0.209095\nvt 0.827322 0.942081\nvt 0.835880 0.954601\nvt 0.793346 0.242364\nvt 0.783165 0.233931\nvt 0.352000 0.610618\nvt 0.357106 0.605916\nvt 0.367645 0.614160\nvt 0.398675 0.625022\nvt 0.379956 0.624567\nvt 0.435798 0.605959\nvt 0.415163 0.626714\nvt 0.414829 0.615437\nvt 0.961485 0.664553\nvt 0.962794 0.677770\nvt 0.950329 0.661470\nvt 0.809440 0.261321\nvt 0.807754 0.265927\nvt 0.812879 0.276533\nvt 0.808869 0.275175\nvt 0.818800 0.272769\nvt 0.596252 0.948800\nvt 0.605417 0.942435\nvt 0.604101 0.950962\nvt 0.182884 0.990368\nvt 0.182884 0.997805\nvt 0.180412 0.992215\nvt 0.040623 0.939951\nvt 0.046015 0.949347\nvt 0.802919 0.255625\nvt 0.148395 0.798900\nvt 0.153176 0.782661\nvt 0.606389 0.938126\nvt 0.604143 0.940816\nvt 0.994190 0.926567\nvt 0.994190 0.931431\nvt 0.992515 0.929356\nvt 0.805184 0.269113\nvt 0.275912 0.988735\nvt 0.275912 0.997484\nvt 0.273750 0.995638\nvt 0.014142 0.946133\nvt 0.015899 0.953308\nvt 0.013879 0.953780\nvt 0.801507 0.276174\nvt 0.609760 0.952672\nvt 0.613550 0.946971\nvt 0.614651 0.950030\nvt 0.609193 0.942299\nvt 0.608355 0.934853\nvt 0.610572 0.938762\nvt 0.613311 0.933673\nvt 0.807594 0.284509\nvt 0.348047 0.594039\nvt 0.348205 0.597800\nvt 0.344138 0.589527\nvt 0.776389 0.313037\nvt 0.776412 0.308060\nvt 0.780352 0.313037\nvt 0.211265 0.823961\nvt 0.920581 0.003105\nvt 0.923796 0.009048\nvt 0.923944 0.014464\nvt 0.871080 0.076506\nvt 0.862445 0.078898\nvt 0.958758 0.078597\nvt 0.424282 0.597628\nvt 0.434530 0.597767\nvt 0.409802 0.604343\nvt 0.393703 0.613714\nvt 0.393163 0.606445\nvt 0.997906 0.072940\nvt 0.997906 0.089424\nvt 0.993756 0.085210\nvt 0.381331 0.599217\nvt 0.400580 0.595686\nvt 0.781006 0.246688\nvt 0.774503 0.237661\nvt 0.793845 0.242892\nvt 0.802803 0.283910\nvt 0.060712 0.932229\nvt 0.614941 0.944184\nvt 0.186785 0.950129\nvt 0.181457 0.947431\nvt 0.180926 0.943511\nvt 0.797122 0.258466\nvt 0.799135 0.266044\nvt 0.197220 0.914703\nvt 0.198442 0.916714\nvt 0.192584 0.922066\nvt 0.805458 0.279035\nvt 0.801464 0.279083\nvt 0.198116 0.931016\nvt 0.179816 0.936874\nvt 0.196653 0.936355\nvt 0.189215 0.944298\nvt 0.179464 0.933293\nvt 0.197536 0.951754\nvt 0.197295 0.941753\nvt 0.202771 0.946692\nvt 0.205055 0.953437\nvt 0.795142 0.288073\nvt 0.796604 0.281478\nvt 0.798213 0.285378\nvt 0.654032 0.909637\nvt 0.662252 0.907235\nvt 0.663437 0.912076\nvt 0.653498 0.904528\nvt 0.420695 0.590178\nvt 0.410653 0.594857\nvt 0.413877 0.588224\nvt 0.403448 0.577526\nvt 0.390741 0.590916\nvt 0.350234 0.587332\nvt 0.367666 0.589733\nvt 0.393409 0.581970\nvt 0.352653 0.575014\nvt 0.347831 0.578852\nvt 0.346705 0.574700\nvt 0.055827 0.950401\nvt 0.055827 0.955491\nvt 0.053377 0.955418\nvt 0.936550 0.564902\nvt 0.933993 0.566961\nvt 0.940273 0.059900\nvt 0.942291 0.059082\nvt 0.384057 0.321548\nvt 0.388514 0.319699\nvt 0.384449 0.324473\nvt 0.374451 0.333001\nvt 0.377557 0.331685\nvt 0.372935 0.335810\nvt 0.378691 0.339688\nvt 0.371114 0.345628\nvt 0.370148 0.340666\nvt 0.366706 0.347082\nvt 0.239022 0.706739\nvt 0.241410 0.715274\nvt 0.236781 0.718343\nvt 0.231053 0.715352\nvt 0.230163 0.734873\nvt 0.737550 0.954006\nvt 0.740966 0.952210\nvt 0.741270 0.959637\nvt 0.085839 0.624974\nvt 0.086995 0.628884\nvt 0.211644 0.730250\nvt 0.214212 0.729294\nvt 0.216418 0.735756\nvt 0.218884 0.726309\nvt 0.222863 0.752624\nvt 0.081590 0.613603\nvt 0.082473 0.602899\nvt 0.222819 0.734059\nvt 0.094354 0.627559\nvt 0.952478 0.170644\nvt 0.948479 0.170716\nvt 0.950193 0.159355\nvt 0.949291 0.155218\nvt 0.942507 0.168926\nvt 0.942459 0.163831\nvt 0.384435 0.331269\nvt 0.959184 0.157183\nvt 0.958112 0.177407\nvt 0.250103 0.458480\nvt 0.249021 0.503079\nvt 0.242724 0.510050\nvt 0.263817 0.440247\nvt 0.253078 0.432903\nvt 0.255757 0.433194\nvt 0.265608 0.508201\nvt 0.256790 0.503951\nvt 0.953492 0.105922\nvt 0.944323 0.108372\nvt 0.237876 0.787421\nvt 0.235251 0.789910\nvt 0.242343 0.742118\nvt 0.252795 0.743943\nvt 0.254031 0.778660\nvt 0.273103 0.758396\nvt 0.251125 0.718349\nvt 0.242920 0.703911\nvt 0.258640 0.718521\nvt 0.266077 0.741065\nvt 0.388047 0.338732\nvt 0.394729 0.321535\nvt 0.393036 0.344809\nvt 0.389877 0.355643\nvt 0.277594 0.470685\nvt 0.265579 0.429904\nvt 0.283609 0.435384\nvt 0.288311 0.430642\nvt 0.272251 0.517318\nvt 0.282814 0.519059\nvt 0.287628 0.519277\nvt 0.287834 0.486749\nvt 0.287376 0.454215\nvt 0.395905 0.376367\nvt 0.407250 0.537045\nvt 0.416576 0.540804\nvt 0.409173 0.545535\nvt 0.416237 0.548732\nvt 0.408216 0.556873\nvt 0.414689 0.564788\nvt 0.415976 0.572738\nvt 0.408481 0.571963\nvt 0.414848 0.579168\nvt 0.422448 0.575790\nvt 0.428637 0.583283\nvt 0.427538 0.591354\nvt 0.432782 0.586426\nvt 0.421570 0.563465\nvt 0.408839 0.529192\nvt 0.417928 0.520320\nvt 0.414361 0.530714\nvt 0.421687 0.511512\nvt 0.421685 0.524186\nvt 0.416876 0.502591\nvt 0.415819 0.516007\nvt 0.413887 0.491252\nvt 0.419261 0.494049\nvt 0.409845 0.478021\nvt 0.408968 0.469153\nvt 0.413912 0.457069\nvt 0.415885 0.471370\nvt 0.410968 0.436621\nvt 0.405478 0.456582\nvt 0.401384 0.437836\nvt 0.399783 0.428399\nvt 0.404466 0.429977\nvt 0.106937 0.992955\nvt 0.106937 0.998514\nvt 0.102307 0.993782\nvt 0.282617 0.426183\nvt 0.401312 0.407536\nvt 0.435785 0.581848\nvt 0.995000 0.048139\nvt 0.995000 0.053465\nvt 0.990836 0.048755\nvt 0.427344 0.548476\nvt 0.421742 0.552972\nvt 0.417961 0.532987\nvt 0.425869 0.537100\nvt 0.423957 0.523794\nvt 0.995207 0.813244\nvt 0.996244 0.813554\nvt 0.995364 0.814153\nvt 0.415783 0.910883\nvt 0.415489 0.913215\nvt 0.414593 0.911949\nvt 0.412905 0.938951\nvt 0.413968 0.926684\nvt 0.417941 0.912959\nvt 0.951954 0.315091\nvt 0.953265 0.342073\nvt 0.949668 0.340171\nvt 0.969338 0.897902\nvt 0.971560 0.898684\nvt 0.970173 0.902247\nvt 0.410701 0.930008\nvt 0.407146 0.943910\nvt 0.409775 0.946098\nvt 0.404798 0.950123\nvt 0.413225 0.915758\nvt 0.976523 0.923898\nvt 0.975133 0.919697\nvt 0.976995 0.901728\nvt 0.662669 0.852332\nvt 0.658088 0.865354\nvt 0.653437 0.869345\nvt 0.978270 0.897913\nvt 0.978382 0.889699\nvt 0.974785 0.889436\nvt 0.973710 0.920469\nvt 0.972429 0.910529\nvt 0.994864 0.809320\nvt 0.996188 0.810089\nvt 0.995606 0.812329\nvt 0.993872 0.811918\nvt 0.954381 0.330522\nvt 0.953671 0.313811\nvt 0.956169 0.328365\nvt 0.660387 0.850574\nvt 0.659274 0.855692\nvt 0.652550 0.862763\nvt 0.648788 0.884010\nvt 0.643810 0.886222\nvt 0.961824 0.222587\nvt 0.960077 0.221589\nvt 0.961824 0.219448\nvt 0.649055 0.895569\nvt 0.645290 0.899485\nvt 0.650165 0.909747\nvt 0.642372 0.910976\nvt 0.642185 0.896933\nvt 0.971807 0.469931\nvt 0.640218 0.885994\nvt 0.643021 0.885076\nvt 0.756527 0.883014\nvt 0.758958 0.887720\nvt 0.756584 0.887648\nvt 0.641124 0.880535\nvt 0.980924 0.218563\nvt 0.980924 0.222679\nvt 0.978844 0.219224\nvt 0.353886 0.901116\nvt 0.357457 0.904740\nvt 0.347775 0.907895\nvt 0.347690 0.916270\nvt 0.343349 0.904330\nvt 0.378051 0.999219\nvt 0.374467 0.992846\nvt 0.378096 0.988752\nvt 0.352798 0.915141\nvt 0.297534 0.515355\nvt 0.300744 0.516451\nvt 0.302179 0.520001\nvt 0.336596 0.922340\nvt 0.334990 0.918987\nvt 0.153983 0.947503\nvt 0.149409 0.946655\nvt 0.336767 0.908907\nvt 0.332714 0.913164\nvt 0.333722 0.909162\nvt 0.311771 0.520392\nvt 0.305514 0.517682\nvt 0.304722 0.512626\nvt 0.311474 0.515502\nvt 0.314609 0.520363\nvt 0.739527 0.313190\nvt 0.736340 0.313190\nvt 0.738305 0.309108\nvt 0.160742 0.947441\nvt 0.158548 0.952532\nvt 0.157166 0.942796\nvt 0.163863 0.952550\nvt 0.910690 0.582023\nvt 0.895308 0.583033\nvt 0.396189 0.400966\nvt 0.391877 0.397055\nvt 0.391758 0.379665\nvt 0.385485 0.404726\nvt 0.383216 0.424494\nvt 0.377068 0.426032\nvt 0.999335 0.043017\nvt 0.995027 0.031675\nvt 0.999335 0.028075\nvt 0.401703 0.462249\nvt 0.396873 0.471710\nvt 0.396941 0.464392\nvt 0.393418 0.451690\nvt 0.393814 0.438555\nvt 0.385716 0.435551\nvt 0.392166 0.426760\nvt 0.316175 0.948301\nvt 0.321776 0.943954\nvt 0.322271 0.955947\nvt 0.311098 0.942197\nvt 0.313301 0.934530\nvt 0.405773 0.479659\nvt 0.324967 0.964962\nvt 0.406569 0.509386\nvt 0.391957 0.567386\nvt 0.391685 0.557556\nvt 0.388511 0.549129\nvt 0.403405 0.542637\nvt 0.391590 0.543540\nvt 0.399037 0.533118\nvt 0.395400 0.519785\nvt 0.404316 0.494215\nvt 0.397984 0.509831\nvt 0.393106 0.500638\nvt 0.396362 0.492347\nvt 0.379771 0.503027\nvt 0.369494 0.492953\nvt 0.389155 0.515583\nvt 0.389349 0.527961\nvt 0.245637 0.988841\nvt 0.248971 0.995949\nvt 0.245411 0.995949\nvt 0.380392 0.547373\nvt 0.386311 0.535969\nvt 0.380196 0.561242\nvt 0.370750 0.559426\nvt 0.363147 0.578071\nvt 0.353292 0.564257\nvt 0.353354 0.548285\nvt 0.362733 0.549103\nvt 0.352208 0.553945\nvt 0.359738 0.563813\nvt 0.348154 0.550355\nvt 0.414254 0.954060\nvt 0.409396 0.951362\nvt 0.412887 0.947528\nvt 0.191216 0.992381\nvt 0.195407 0.989580\nvt 0.195407 0.995108\nvt 0.347499 0.552978\nvt 0.404659 0.954001\nvt 0.414284 0.957888\nvt 0.405812 0.957941\nvt 0.969229 0.484288\nvt 0.963880 0.475182\nvt 0.966784 0.472028\nvt 0.968828 0.467925\nvt 0.621953 0.936792\nvt 0.617819 0.940628\nvt 0.618982 0.934692\nvt 0.648133 0.917561\nvt 0.646931 0.909563\nvt 0.320751 0.513138\nvt 0.631034 0.918538\nvt 0.332494 0.512941\nvt 0.326914 0.516746\nvt 0.632756 0.892868\nvt 0.621953 0.895019\nvt 0.632989 0.887709\nvt 0.624522 0.896195\nvt 0.626001 0.899996\nvt 0.316742 0.504061\nvt 0.323601 0.509098\nvt 0.310603 0.508903\nvt 0.839328 0.984798\nvt 0.845115 0.985140\nvt 0.841295 0.990404\nvt 0.846908 0.990265\nvt 0.303791 0.508954\nvt 0.309768 0.504796\nvt 0.350358 0.901201\nvt 0.343804 0.897121\nvt 0.355392 0.892772\nvt 0.354422 0.900557\nvt 0.354608 0.907199\nvt 0.342601 0.901378\nvt 0.338521 0.904128\nvt 0.546523 0.980336\nvt 0.548151 0.975879\nvt 0.555196 0.981298\nvt 0.176891 0.953740\nvt 0.555647 0.978824\nvt 0.841104 0.313288\nvt 0.838010 0.311430\nvt 0.839896 0.309688\nvt 0.315591 0.492991\nvt 0.317632 0.487078\nvt 0.318570 0.489627\nvt 0.324687 0.484187\nvt 0.340865 0.888556\nvt 0.344913 0.881984\nvt 0.347462 0.886609\nvt 0.356909 0.884054\nvt 0.361225 0.889149\nvt 0.836362 0.988602\nvt 0.312258 0.469494\nvt 0.321059 0.478741\nvt 0.313249 0.476700\nvt 0.321753 0.460076\nvt 0.325430 0.451368\nvt 0.324199 0.466307\nvt 0.329194 0.445707\nvt 0.331223 0.457923\nvt 0.329335 0.463131\nvt 0.333437 0.438917\nvt 0.340023 0.449314\nvt 0.347886 0.443906\nvt 0.341462 0.436852\nvt 0.342879 0.460331\nvt 0.343926 0.467603\nvt 0.343398 0.473918\nvt 0.333237 0.481441\nvt 0.339597 0.880083\nvt 0.338117 0.872636\nvt 0.330841 0.487139\nvt 0.341619 0.487505\nvt 0.355140 0.873944\nvt 0.361044 0.878756\nvt 0.345195 0.495220\nvt 0.339832 0.491178\nvt 0.349401 0.493521\nvt 0.904755 0.309070\nvt 0.910207 0.306516\nvt 0.910207 0.313132\nvt 0.348345 0.488241\nvt 0.350179 0.472050\nvt 0.350233 0.468202\nvt 0.992656 0.000000\nvt 0.996385 0.004173\nvt 0.988591 0.004310\nvt 0.354758 0.489325\nvt 0.355549 0.481015\nvt 0.356667 0.474854\nvt 0.356370 0.478227\nvt 0.355220 0.471143\nvt 0.347122 0.500160\nvt 0.356433 0.494189\nvt 0.356618 0.499270\nvt 0.355193 0.502485\nvt 0.322165 0.502703\nvt 0.970028 0.046054\nvt 0.970028 0.053476\nvt 0.965352 0.050644\nvt 0.330257 0.499629\nvt 0.327657 0.502971\nvt 0.327021 0.498550\nvt 0.289351 0.815026\nvt 0.292874 0.815575\nvt 0.287482 0.820193\nvt 0.346503 0.510858\nvt 0.352826 0.514258\nvt 0.339516 0.509939\nvt 0.346912 0.503900\nvt 0.337431 0.505442\nvt 0.371949 0.506241\nvt 0.366484 0.509687\nvt 0.362956 0.495145\nvt 0.360360 0.503854\nvt 0.992982 0.505866\nvt 0.993153 0.500603\nvt 0.997157 0.496629\nvt 0.358447 0.510038\nvt 0.357935 0.513238\nvt 0.295785 0.827802\nvt 0.288007 0.824441\nvt 0.294395 0.820580\nvt 0.296119 0.817602\nvt 0.359655 0.507371\nvt 0.365902 0.515373\nvt 0.881166 0.308374\nvt 0.881166 0.312873\nvt 0.878319 0.311298\nvt 0.377986 0.513435\nvt 0.370899 0.512775\nvt 0.375516 0.520223\nvt 0.366903 0.524843\nvt 0.364124 0.516952\nvt 0.357746 0.517328\nvt 0.353171 0.519348\nvt 0.356878 0.523965\nvt 0.290763 0.827562\nvt 0.361670 0.519749\nvt 0.945421 0.354253\nvt 0.948579 0.352766\nvt 0.943165 0.360377\nvt 0.956393 0.358505\nvt 0.959417 0.364484\nvt 0.956185 0.376586\nvt 0.959184 0.353084\nvt 0.360131 0.529855\nvt 0.382934 0.522735\nvt 0.356186 0.542431\nvt 0.189135 0.823257\nvt 0.185024 0.818783\nvt 0.197019 0.823199\nvt 0.181756 0.821171\nvt 0.175925 0.817912\nvt 0.174562 0.810479\nvt 0.184114 0.805443\nvt 0.198184 0.813973\nvt 0.202498 0.804535\nvt 0.197567 0.795094\nvt 0.204400 0.793784\nvt 0.179433 0.808913\nvt 0.174364 0.807506\nvt 0.350990 0.435801\nvt 0.344942 0.435247\nvt 0.335460 0.415987\nvt 0.334302 0.425097\nvt 0.329248 0.419721\nvt 0.332183 0.417603\nvt 0.293732 0.473090\nvt 0.291332 0.480861\nvt 0.293338 0.457988\nvt 0.331854 0.414479\nvt 0.343892 0.423855\nvt 0.153922 0.811189\nvt 0.145282 0.807066\nvt 0.161834 0.807528\nvt 0.144021 0.807853\nvt 0.995885 0.928073\nvt 0.997596 0.926851\nvt 0.997596 0.931431\nvt 0.181850 0.756732\nvt 0.167017 0.809809\nvt 0.180840 0.746947\nvt 0.176334 0.740119\nvt 0.194366 0.751776\nvt 0.189927 0.742799\nvt 0.201691 0.749515\nvt 0.400054 0.972825\nvt 0.401295 0.970035\nvt 0.401295 0.974977\nvt 0.183820 0.731597\nvt 0.184167 0.725581\nvt 0.191132 0.728584\nvt 0.185973 0.724079\nvt 0.934830 0.007371\nvt 0.929599 0.004181\nvt 0.402253 0.485498\nvt 0.395666 0.486064\nvt 0.883562 0.704545\nvt 0.896053 0.702098\nvt 0.887703 0.715342\nvt 0.902399 0.709438\nvt 0.915035 0.705604\nvt 0.908227 0.715361\nvt 0.370833 0.485936\nvt 0.388226 0.480887\nvt 0.448933 0.994736\nvt 0.446095 0.994916\nvt 0.446207 0.989314\nvt 0.360863 0.485523\nvt 0.355603 0.486317\nvt 0.020544 0.965994\nvt 0.020544 0.973335\nvt 0.016126 0.971412\nvt 0.361951 0.481765\nvt 0.913824 0.530801\nvt 0.908824 0.530268\nvt 0.914694 0.524755\nvt 0.360370 0.476988\nvt 0.921126 0.702642\nvt 0.920077 0.712629\nvt 0.906578 0.522414\nvt 0.924012 0.695990\nvt 0.927975 0.704857\nvt 0.931484 0.699518\nvt 0.895348 0.727091\nvt 0.898578 0.723370\nvt 0.905110 0.735853\nvt 0.913082 0.734959\nvt 0.917979 0.728808\nvt 0.270977 0.803652\nvt 0.260393 0.810691\nvt 0.268409 0.796878\nvt 0.252089 0.801211\nvt 0.248611 0.810933\nvt 0.379695 0.437140\nvt 0.375154 0.437469\nvt 0.280039 0.795677\nvt 0.274701 0.809750\nvt 0.287220 0.797064\nvt 0.283581 0.802535\nvt 0.383435 0.443501\nvt 0.386915 0.452614\nvt 0.389141 0.463316\nvt 0.287220 0.822992\nvt 0.276920 0.819033\nvt 0.283949 0.812156\nvt 0.235770 0.818112\nvt 0.820870 0.966270\nvt 0.824062 0.956511\nvt 0.824062 0.969982\nvt 0.236401 0.828453\nvt 0.251281 0.822982\nvt 0.246202 0.817052\nvt 0.262905 0.818843\nvt 0.258623 0.826376\nvt 0.247863 0.827696\nvt 0.239457 0.824947\nvt 0.268684 0.825090\nvt 0.199899 0.782199\nvt 0.173713 0.804294\nvt 0.176446 0.795007\nvt 0.200772 0.773108\nvt 0.188431 0.768788\nvt 0.202708 0.760431\nvt 0.205492 0.762476\nvt 0.922846 0.759202\nvt 0.918273 0.754607\nvt 0.921294 0.753637\nvt 0.206002 0.777126\nvt 0.205595 0.771414\nvt 0.910729 0.748757\nvt 0.946976 0.557410\nvt 0.944291 0.557225\nvt 0.943031 0.552720\nvt 0.939939 0.550464\nvt 0.946974 0.561412\nvt 0.923701 0.555355\nvt 0.920896 0.557505\nvt 0.937850 0.539907\nvt 0.941612 0.545081\nvt 0.938424 0.547797\nvt 0.941037 0.542261\nvt 0.831457 0.047685\nvt 0.834632 0.044791\nvt 0.835623 0.046934\nvt 0.998744 0.893881\nvt 0.997233 0.890209\nvt 0.998740 0.885345\nvt 0.997791 0.883980\nvt 0.843734 0.046066\nvt 0.844690 0.044667\nvt 0.851333 0.044844\nvt 0.960052 0.106986\nvt 0.959206 0.123089\nvt 0.890591 0.044874\nvt 0.203827 0.910986\nvt 0.199861 0.902180\nvt 0.206451 0.903752\nvt 0.274441 0.792654\nvt 0.262930 0.766026\nvt 0.257898 0.796005\nvt 0.900047 0.086362\nvt 0.909631 0.075305\nvt 0.911078 0.087298\nvt 0.904109 0.066277\nvt 0.903208 0.045105\nvt 0.246894 0.801362\nvt 0.242016 0.789560\nvt 0.246898 0.777046\nvt 0.235652 0.797311\nvt 0.912922 0.079120\nvt 0.463671 0.998403\nvt 0.468102 0.995758\nvt 0.468608 0.999630\nvt 0.907434 0.065075\nvt 0.468608 0.986978\nvt 0.464483 0.994122\nvt 0.073703 0.901357\nvt 0.078768 0.896862\nvt 0.078357 0.902124\nvt 0.080911 0.909164\nvt 0.094502 0.906348\nvt 0.075060 0.909058\nvt 0.107388 0.894168\nvt 0.108067 0.901778\nvt 0.104936 0.903317\nvt 0.071844 0.914278\nvt 0.074362 0.921955\nvt 0.068025 0.920613\nvt 0.257815 0.427377\nvt 0.256097 0.428619\nvt 0.063222 0.925680\nvt 0.274256 0.432057\nvt 0.085301 0.913458\nvt 0.940400 0.065934\nvt 0.756992 0.979094\nvt 0.759539 0.983116\nvt 0.756901 0.984466\nvt 0.942896 0.564885\nvt 0.940667 0.575321\nvt 0.936770 0.570636\nvt 0.838643 0.075728\nvt 0.840127 0.075185\nvt 0.838098 0.083060\nvt 0.929985 0.072720\nvt 0.926019 0.067420\nvt 0.933339 0.067653\nvt 0.678005 0.975649\nvt 0.674199 0.978569\nvt 0.677727 0.972507\nvt 0.921592 0.060429\nvt 0.922853 0.054994\nvt 0.920268 0.051848\nvt 0.226000 0.997077\nvt 0.224956 0.992917\nvt 0.227498 0.990072\nvt 0.925954 0.049606\nvt 0.918685 0.040554\nvt 0.938688 0.557441\nvt 0.933058 0.542305\nvt 0.925704 0.546790\nvt 0.924560 0.544289\nvt 0.927497 0.548850\nvt 0.936021 0.555657\nvt 0.940894 0.552648\nvt 0.920281 0.032984\nvt 0.999245 0.402740\nvt 0.997723 0.400703\nvt 0.999245 0.397353\nvt 0.199412 0.730676\nvt 0.192920 0.726950\nvt 0.198737 0.729150\nvt 0.206339 0.734104\nvt 0.205977 0.739697\nvt 0.924944 0.776146\nvt 0.931473 0.778049\nvt 0.932762 0.789503\nvt 0.933534 0.794624\nvt 0.926262 0.767771\nvt 0.914940 0.761207\nvt 0.917642 0.773016\nvt 0.910514 0.764253\nvt 0.905434 0.754540\nvt 0.905037 0.745125\nvt 0.186976 0.736356\nvt 0.181197 0.732746\nvt 0.294659 0.328244\nvt 0.294740 0.339792\nvt 0.292328 0.317711\nvt 0.296337 0.312659\nvt 0.969328 0.887982\nvt 0.649336 0.866169\nvt 0.644028 0.876689\nvt 0.286679 0.534077\nvt 0.290654 0.539889\nvt 0.934417 0.537248\nvt 0.924978 0.541209\nvt 0.927330 0.536988\nvt 0.104505 0.625218\nvt 0.392118 0.313632\nvt 0.391722 0.316355\nvt 0.389817 0.314524\nvt 0.129947 0.562651\nvt 0.134347 0.568717\nvt 0.122973 0.564849\nvt 0.862977 0.202052\nvt 0.856348 0.202244\nvt 0.860900 0.198323\nvt 0.124046 0.914471\nvt 0.116356 0.913203\nvt 0.129213 0.910066\nvt 0.129542 0.894516\nvt 0.123290 0.891058\nvt 0.115017 0.893711\nvt 0.112317 0.906973\nvt 0.123252 0.880032\nvt 0.130251 0.875186\nvt 0.118654 0.878567\nvt 0.130357 0.866173\nvt 0.195129 0.529053\nvt 0.199892 0.531805\nvt 0.192795 0.534578\nvt 0.208020 0.529905\nvt 0.213867 0.524561\nvt 0.224476 0.532233\nvt 0.154438 0.581738\nvt 0.168181 0.587875\nvt 0.150784 0.583761\nvt 0.161613 0.591332\nvt 0.151168 0.587707\nvt 0.167261 0.597684\nvt 0.179734 0.591889\nvt 0.178677 0.595873\nvt 0.181381 0.588292\nvt 0.227816 0.525148\nvt 0.231162 0.535536\nvt 0.233253 0.529315\nvt 0.472477 0.303474\nvt 0.472486 0.293223\nvt 0.477145 0.295959\nvt 0.778597 0.972776\nvt 0.778610 0.979974\nvt 0.775954 0.977911\nvt 0.127388 0.549920\nvt 0.132429 0.551904\nvt 0.128784 0.555939\nvt 0.123100 0.558913\nvt 0.141074 0.544221\nvt 0.194685 0.827625\nvt 0.199185 0.833590\nvt 0.193100 0.830505\nvt 0.485582 0.287060\nvt 0.497184 0.272928\nvt 0.492171 0.280767\nvt 0.122440 0.573670\nvt 0.118055 0.570665\nvt 0.878241 0.220460\nvt 0.879117 0.210553\nvt 0.884780 0.218017\nvt 0.866116 0.211869\nvt 0.142079 0.585455\nvt 0.139153 0.573149\nvt 0.194964 0.590808\nvt 0.211093 0.590066\nvt 0.198289 0.586899\nvt 0.213995 0.585145\nvt 0.190953 0.594314\nvt 0.535032 0.282004\nvt 0.540093 0.286010\nvt 0.534754 0.286738\nvt 0.524140 0.271565\nvt 0.529420 0.268116\nvt 0.223352 0.576619\nvt 0.230595 0.573562\nvt 0.233473 0.579017\nvt 0.226693 0.582508\nvt 0.223720 0.567736\nvt 0.235410 0.568785\nvt 0.146347 0.589878\nvt 0.159294 0.596402\nvt 0.157910 0.605406\nvt 0.153684 0.598552\nvt 0.163513 0.603247\nvt 0.138025 0.592093\nvt 0.136121 0.585756\nvt 0.145979 0.596325\nvt 0.799947 0.975824\nvt 0.804634 0.974447\nvt 0.806789 0.982339\nvt 0.147151 0.604108\nvt 0.149839 0.610486\nvt 0.137582 0.614716\nvt 0.807161 0.958030\nvt 0.123208 0.545302\nvt 0.154648 0.525046\nvt 0.153425 0.545503\nvt 0.173607 0.538520\nvt 0.167465 0.521743\nvt 0.180097 0.523055\nvt 0.218159 0.515326\nvt 0.482528 0.282248\nvt 0.464642 0.292750\nvt 0.477288 0.280227\nvt 0.494075 0.270242\nvt 0.132510 0.875881\nvt 0.135866 0.901460\nvt 0.863943 0.189862\nvt 0.870255 0.191385\nvt 0.870695 0.198514\nvt 0.133351 0.913601\nvt 0.136099 0.913910\nvt 0.149894 0.835445\nvt 0.146237 0.839687\nvt 0.143030 0.842334\nvt 0.477805 0.300806\nvt 0.481562 0.295857\nvt 0.168381 0.831049\nvt 0.179401 0.828804\nvt 0.178720 0.833643\nvt 0.183640 0.834666\nvt 0.188406 0.833824\nvt 0.191618 0.840565\nvt 0.226815 0.563822\nvt 0.221885 0.561827\nvt 0.221078 0.575191\nvt 0.221626 0.571522\nvt 0.213901 0.581647\nvt 0.204793 0.584275\nvt 0.183171 0.586018\nvt 0.156917 0.580720\nvt 0.876099 0.195651\nvt 0.683791 0.909358\nvt 0.692740 0.910300\nvt 0.699802 0.921311\nvt 0.688343 0.915209\nvt 0.695902 0.854981\nvt 0.700254 0.856639\nvt 0.693860 0.859240\nvt 0.202760 0.574625\nvt 0.218415 0.572993\nvt 0.219191 0.558167\nvt 0.135126 0.863500\nvt 0.134797 0.855872\nvt 0.138173 0.848982\nvt 0.142067 0.848927\nvt 0.161778 0.834300\nvt 0.159960 0.830889\nvt 0.140525 0.912004\nvt 0.869393 0.183490\nvt 0.865141 0.184650\nvt 0.881988 0.180051\nvt 0.837152 0.179014\nvt 0.836703 0.165830\nvt 0.842124 0.171603\nvt 0.140490 0.857713\nvt 0.149553 0.854181\nvt 0.151864 0.862640\nvt 0.152876 0.849400\nvt 0.152414 0.839352\nvt 0.159907 0.845905\nvt 0.381792 0.881964\nvt 0.377013 0.886720\nvt 0.375435 0.881472\nvt 0.384616 0.894712\nvt 0.392171 0.881943\nvt 0.395767 0.889641\nvt 0.063728 0.996988\nvt 0.061024 0.988838\nvt 0.063956 0.986798\nvt 0.505951 0.994232\nvt 0.505951 0.998308\nvt 0.504428 0.995724\nvt 0.406917 0.904223\nvt 0.409517 0.910123\nvt 0.402662 0.903510\nvt 0.153283 0.895913\nvt 0.869449 0.176174\nvt 0.865025 0.179584\nvt 0.877246 0.147025\nvt 0.140094 0.880493\nvt 0.675955 0.900760\nvt 0.687591 0.902563\nvt 0.685840 0.868334\nvt 0.691406 0.882624\nvt 0.674783 0.891530\nvt 0.152405 0.882166\nvt 0.141932 0.876591\nvt 0.157385 0.871887\nvt 0.140709 0.868969\nvt 0.158758 0.856229\nvt 0.163383 0.863650\nvt 0.167083 0.855850\nvt 0.170749 0.852817\nvt 0.167199 0.843884\nvt 0.177312 0.845696\nvt 0.184890 0.857316\nvt 0.170940 0.842673\nvt 0.376965 0.898338\nvt 0.204810 0.567687\nvt 0.296049 0.900899\nvt 0.291154 0.888982\nvt 0.295875 0.883623\nvt 0.201964 0.579957\nvt 0.199366 0.576810\nvt 0.693703 0.873014\nvt 0.880063 0.146201\nvt 0.875180 0.143583\nvt 0.176928 0.908053\nvt 0.171293 0.897845\nvt 0.163146 0.884341\nvt 0.839997 0.151831\nvt 0.850144 0.145992\nvt 0.845632 0.157382\nvt 0.171151 0.875689\nvt 0.173510 0.869265\nvt 0.186349 0.866642\nvt 0.185284 0.870616\nvt 0.178194 0.863339\nvt 0.189691 0.865438\nvt 0.988730 0.048028\nvt 0.990836 0.053465\nvt 0.986199 0.053465\nvt 0.156489 0.554767\nvt 0.158736 0.561636\nvt 0.152953 0.560454\nvt 0.885021 0.171828\nvt 0.876934 0.162421\nvt 0.886649 0.160567\nvt 0.671014 0.867018\nvt 0.690069 0.860801\nvt 0.190674 0.563088\nvt 0.196564 0.561409\nvt 0.205516 0.920841\nvt 0.206451 0.914431\nvt 0.206451 0.921463\nvt 0.291540 0.991040\nvt 0.295737 0.989713\nvt 0.294466 0.993300\nvt 0.204261 0.562977\nvt 0.207194 0.560375\nvt 0.200797 0.545920\nvt 0.208173 0.551111\nvt 0.204605 0.560659\nvt 0.199230 0.556584\nvt 0.206004 0.542595\nvt 0.222220 0.540918\nvt 0.222422 0.551889\nvt 0.207228 0.512846\nvt 0.207822 0.507759\nvt 0.209332 0.509658\nvt 0.191673 0.872932\nvt 0.792551 0.959469\nvt 0.794255 0.949156\nvt 0.794718 0.957142\nvt 0.794718 0.966496\nvt 0.854063 0.116272\nvt 0.842978 0.126271\nvt 0.853499 0.110037\nvt 0.193251 0.879275\nvt 0.187352 0.874152\nvt 0.853641 0.120020\nvt 0.843105 0.128729\nvt 0.369480 0.906047\nvt 0.866908 0.119258\nvt 0.852991 0.126720\nvt 0.844995 0.133154\nvt 0.999648 0.583003\nvt 0.996198 0.591280\nvt 0.995394 0.581189\nvt 0.180285 0.893669\nvt 0.193066 0.892269\nvt 0.879687 0.138115\nvt 0.883504 0.136931\nvt 0.159099 0.540958\nvt 0.154344 0.547214\nvt 0.152154 0.543958\nvt 0.887566 0.140094\nvt 0.882692 0.148165\nvt 0.887317 0.132549\nvt 0.888047 0.151549\nvt 0.174817 0.549499\nvt 0.167215 0.564078\nvt 0.177264 0.555123\nvt 0.181130 0.562773\nvt 0.184136 0.547304\nvt 0.188232 0.552618\nvt 0.193407 0.553301\nvt 0.167107 0.998688\nvt 0.165691 0.993831\nvt 0.166994 0.990543\nvt 0.864625 0.106289\nvt 0.858472 0.106886\nvt 0.872230 0.112505\nvt 0.878285 0.111405\nvt 0.876354 0.123123\nvt 0.865645 0.126581\nvt 0.172135 0.538265\nvt 0.177498 0.535239\nvt 0.180301 0.536537\nvt 0.180343 0.541384\nvt 0.181961 0.543807\nvt 0.187521 0.548977\nvt 0.196319 0.554347\nvt 0.950210 0.003209\nvt 0.955156 0.001758\nvt 0.955462 0.010687\nvt 0.946407 0.014735\nvt 0.945989 0.028329\nvt 0.964561 0.024982\nvt 0.958719 0.046872\nvt 0.523582 0.773575\nvt 0.523037 0.770742\nvt 0.524357 0.766985\nvt 0.886948 0.112890\nvt 0.884566 0.110697\nvt 0.181839 0.531177\nvt 0.183762 0.532128\nvt 0.190904 0.542573\nvt 0.188204 0.544873\nvt 0.189601 0.533536\nvt 0.185063 0.538954\nvt 0.962532 0.012894\nvt 0.965248 0.014289\nvt 0.184574 0.528092\nvt 0.189371 0.527163\nvt 0.198138 0.512277\nvt 0.135278 0.622829\nvt 0.136681 0.630950\nvt 0.130884 0.632740\nvt 0.123262 0.638667\nvt 0.124133 0.634092\nvt 0.117613 0.635032\nvt 0.742779 0.978197\nvt 0.742779 0.983791\nvt 0.738412 0.980741\nvt 0.105612 0.637098\nvt 0.109166 0.633863\nvt 0.113297 0.638539\nvt 0.620927 0.967453\nvt 0.615616 0.976188\nvt 0.613766 0.964321\nvt 0.101653 0.672369\nvt 0.096597 0.682950\nvt 0.106342 0.673769\nvt 0.101399 0.682011\nvt 0.992932 0.018765\nvt 0.991447 0.023144\nvt 0.988361 0.021653\nvt 0.106498 0.679353\nvt 0.115686 0.673899\nvt 0.112851 0.678524\nvt 0.927693 0.519944\nvt 0.931481 0.515199\nvt 0.931240 0.522322\nvt 0.118404 0.681418\nvt 0.114541 0.682463\nvt 0.122511 0.682510\nvt 0.129935 0.675293\nvt 0.133067 0.679037\nvt 0.865131 0.583343\nvt 0.866096 0.582871\nvt 0.866096 0.584305\nvt 0.452955 0.769141\nvt 0.454238 0.771745\nvt 0.446646 0.776230\nvt 0.107340 0.658435\nvt 0.121949 0.680270\nvt 0.130079 0.658114\nvt 0.463004 0.299363\nvt 0.453332 0.295125\nvt 0.455794 0.286492\nvt 0.186499 0.515086\nvt 0.203341 0.515104\nvt 0.166816 0.507130\nvt 0.188693 0.500031\nvt 0.147824 0.501750\nvt 0.140992 0.515801\nvt 0.139896 0.528292\nvt 0.225391 0.502167\nvt 0.226467 0.513938\nvt 0.451582 0.305512\nvt 0.439889 0.311401\nvt 0.439801 0.297578\nvt 0.444559 0.287481\nvt 0.450992 0.278523\nvt 0.461900 0.278197\nvt 0.463728 0.264374\nvt 0.471458 0.269669\nvt 0.476422 0.276438\nvt 0.483728 0.265056\nvt 0.474523 0.260141\nvt 0.176141 0.467207\nvt 0.453443 0.253850\nvt 0.476985 0.246405\nvt 0.473414 0.254341\nvt 0.467481 0.216030\nvt 0.436581 0.206000\nvt 0.468594 0.178608\nvt 0.449039 0.175148\nvt 0.450054 0.136959\nvt 0.467779 0.125954\nvt 0.477889 0.102495\nvt 0.490565 0.117574\nvt 0.444742 0.116396\nvt 0.438839 0.097824\nvt 0.435166 0.077604\nvt 0.441163 0.057871\nvt 0.468181 0.090668\nvt 0.470501 0.067208\nvt 0.489227 0.084680\nvt 0.219342 0.464830\nvt 0.210419 0.498931\nvt 0.224162 0.477252\nvt 0.412422 0.309233\nvt 0.411541 0.293887\nvt 0.414980 0.253457\nvt 0.416497 0.278665\nvt 0.431876 0.235820\nvt 0.438104 0.259676\nvt 0.418085 0.231400\nvt 0.433834 0.187089\nvt 0.417868 0.201282\nvt 0.432390 0.139679\nvt 0.404846 0.181550\nvt 0.443102 0.042577\nvt 0.466626 0.047243\nvt 0.446589 0.021263\nvt 0.442752 0.005113\nvt 0.464489 0.019784\nvt 0.622470 0.117538\nvt 0.636466 0.104852\nvt 0.638490 0.118518\nvt 0.618776 0.138134\nvt 0.606010 0.113989\nvt 0.653146 0.113065\nvt 0.641561 0.089764\nvt 0.662042 0.097657\nvt 0.679618 0.105449\nvt 0.702249 0.107922\nvt 0.408748 0.035996\nvt 0.406316 0.054697\nvt 0.421077 0.002338\nvt 0.422005 0.013805\nvt 0.399757 0.006783\nvt 0.612980 0.096068\nvt 0.625315 0.070429\nvt 0.640213 0.072150\nvt 0.695889 0.096449\nvt 0.668241 0.090316\nvt 0.194590 0.899556\nvt 0.182205 0.913205\nvt 0.199648 0.903522\nvt 0.432757 0.726453\nvt 0.419320 0.716501\nvt 0.425402 0.710441\nvt 0.154031 0.613611\nvt 0.914320 0.106786\nvt 0.896173 0.107021\nvt 0.904265 0.106410\nvt 0.910656 0.105297\nvt 0.921511 0.113859\nvt 0.907384 0.119912\nvt 0.178746 0.598431\nvt 0.135497 0.646005\nvt 0.127759 0.648992\nvt 0.197599 0.597731\nvt 0.212234 0.594973\nvt 0.204028 0.602516\nvt 0.212312 0.600424\nvt 0.210740 0.608644\nvt 0.547460 0.282256\nvt 0.539436 0.270388\nvt 0.539183 0.256489\nvt 0.452917 0.734824\nvt 0.444593 0.747843\nvt 0.434597 0.742786\nvt 0.434970 0.715694\nvt 0.425746 0.706718\nvt 0.911997 0.123000\nvt 0.935068 0.124593\nvt 0.200654 0.628926\nvt 0.559577 0.278448\nvt 0.579408 0.265349\nvt 0.579765 0.269272\nvt 0.901277 0.141706\nvt 0.919024 0.136993\nvt 0.913437 0.148261\nvt 0.930992 0.159785\nvt 0.922975 0.150836\nvt 0.579638 0.256502\nvt 0.899932 0.153386\nvt 0.906649 0.159383\nvt 0.923914 0.166373\nvt 0.931543 0.177061\nvt 0.555598 0.220179\nvt 0.547062 0.247384\nvt 0.545524 0.235374\nvt 0.559470 0.215196\nvt 0.547690 0.198237\nvt 0.563806 0.211758\nvt 0.542553 0.202549\nvt 0.578480 0.234068\nvt 0.569235 0.236463\nvt 0.582360 0.228910\nvt 0.588340 0.241213\nvt 0.591367 0.247147\nvt 0.590824 0.254598\nvt 0.910694 0.167285\nvt 0.916363 0.166709\nvt 0.926587 0.178265\nvt 0.455682 0.733402\nvt 0.439335 0.754109\nvt 0.452581 0.739270\nvt 0.434750 0.754666\nvt 0.107849 0.651070\nvt 0.116453 0.656221\nvt 0.122548 0.665934\nvt 0.439810 0.777068\nvt 0.437084 0.773443\nvt 0.447267 0.767913\nvt 0.452389 0.749383\nvt 0.459539 0.743794\nvt 0.465686 0.738877\nvt 0.893760 0.158984\nvt 0.894289 0.149619\nvt 0.898642 0.163206\nvt 0.956644 0.872226\nvt 0.949407 0.876540\nvt 0.948308 0.862202\nvt 0.954590 0.860420\nvt 0.957425 0.859405\nvt 0.948080 0.852818\nvt 0.953561 0.846915\nvt 0.948770 0.846867\nvt 0.953195 0.838019\nvt 0.957857 0.833557\nvt 0.488921 0.742881\nvt 0.495775 0.741958\nvt 0.490753 0.747070\nvt 0.479631 0.747860\nvt 0.472189 0.738293\nvt 0.457674 0.751104\nvt 0.470742 0.755979\nvt 0.465160 0.761353\nvt 0.513679 0.264319\nvt 0.522313 0.261939\nvt 0.513809 0.266112\nvt 0.521182 0.258460\nvt 0.531984 0.258694\nvt 0.543068 0.242214\nvt 0.539473 0.220913\nvt 0.543341 0.226919\nvt 0.933965 0.639922\nvt 0.933541 0.629991\nvt 0.935352 0.632716\nvt 0.541887 0.178643\nvt 0.535281 0.159506\nvt 0.543801 0.162182\nvt 0.529897 0.146977\nvt 0.540054 0.154403\nvt 0.322569 0.874832\nvt 0.331569 0.875178\nvt 0.326328 0.881767\nvt 0.457420 0.946020\nvt 0.449765 0.940683\nvt 0.460739 0.943419\nvt 0.521317 0.130779\nvt 0.524121 0.137981\nvt 0.519237 0.136962\nvt 0.450991 0.935446\nvt 0.461844 0.939924\nvt 0.462076 0.933536\nvt 0.456825 0.925033\nvt 0.453050 0.920995\nvt 0.460750 0.912894\nvt 0.461808 0.922235\nvt 0.512119 0.149376\nvt 0.530655 0.157984\nvt 0.479402 0.230662\nvt 0.495452 0.188735\nvt 0.494862 0.175959\nvt 0.478588 0.204389\nvt 0.483458 0.165532\nvt 0.487257 0.134958\nvt 0.494888 0.150643\nvt 0.508635 0.261167\nvt 0.519901 0.256649\nvt 0.531978 0.253632\nvt 0.539416 0.247950\nvt 0.541692 0.243539\nvt 0.936339 0.619167\nvt 0.939614 0.625577\nvt 0.935367 0.622435\nvt 0.936817 0.637348\nvt 0.937802 0.612806\nvt 0.940660 0.619292\nvt 0.532725 0.250728\nvt 0.939668 0.605589\nvt 0.937683 0.598625\nvt 0.939655 0.592369\nvt 0.872675 0.840185\nvt 0.869562 0.842123\nvt 0.869761 0.836209\nvt 0.516580 0.128945\nvt 0.512110 0.164847\nvt 0.879400 0.814312\nvt 0.875317 0.832805\nvt 0.872443 0.825802\nvt 0.492202 0.254408\nvt 0.503563 0.260214\nvt 0.492955 0.232675\nvt 0.494440 0.218076\nvt 0.492343 0.203868\nvt 0.493937 0.166221\nvt 0.502573 0.170945\nvt 0.031602 0.933787\nvt 0.021496 0.931784\nvt 0.008185 0.918513\nvt 0.023656 0.919222\nvt 0.506699 0.179187\nvt 0.514558 0.174985\nvt 0.503333 0.202388\nvt 0.501198 0.214218\nvt 0.531696 0.166713\nvt 0.497845 0.231330\nvt 0.492195 0.246738\nvt 0.510807 0.258150\nvt 0.997837 0.415497\nvt 0.999259 0.409749\nvt 0.999259 0.415729\nvt 0.880985 0.844045\nvt 0.881138 0.847317\nvt 0.870449 0.854130\nvt 0.882585 0.833076\nvt 0.883653 0.839656\nvt 0.877310 0.838726\nvt 0.496759 0.385828\nvt 0.501091 0.378797\nvt 0.508454 0.388659\nvt 0.505769 0.374555\nvt 0.493364 0.390555\nvt 0.514004 0.400816\nvt 0.510786 0.404680\nvt 0.518620 0.187513\nvt 0.023608 0.907617\nvt 0.031979 0.919600\nvt 0.539281 0.174940\nvt 0.538748 0.175414\nvt 0.537036 0.171469\nvt 0.539443 0.199096\nvt 0.540224 0.186465\nvt 0.936522 0.671315\nvt 0.935431 0.661710\nvt 0.941406 0.677151\nvt 0.937959 0.644556\nvt 0.932795 0.650364\nvt 0.932747 0.641332\nvt 0.122753 0.996610\nvt 0.119572 0.991954\nvt 0.122753 0.990027\nvt 0.899308 0.834490\nvt 0.892874 0.839765\nvt 0.889930 0.834280\nvt 0.893228 0.828695\nvt 0.492147 0.384495\nvt 0.494910 0.379126\nvt 0.452455 0.639758\nvt 0.457492 0.636916\nvt 0.455517 0.644368\nvt 0.460324 0.648648\nvt 0.452742 0.651930\nvt 0.468182 0.644224\nvt 0.460649 0.657317\nvt 0.463820 0.634013\nvt 0.468539 0.638456\nvt 0.495891 0.400138\nvt 0.939402 0.664854\nvt 0.942292 0.665541\nvt 0.945523 0.669782\nvt 0.947550 0.673571\nvt 0.015682 0.907516\nvt 0.002748 0.914676\nvt 0.027422 0.903918\nvt 0.023951 0.904777\nvt 0.516085 0.430707\nvt 0.513613 0.420262\nvt 0.520302 0.435151\nvt 0.474786 0.643399\nvt 0.496751 0.414687\nvt 0.496320 0.418226\nvt 0.484881 0.415964\nvt 0.513481 0.437328\nvt 0.522563 0.444384\nvt 0.504988 0.419195\nvt 0.011026 0.902773\nvt 0.017720 0.898941\nvt 0.021075 0.901958\nvt 0.026855 0.900394\nvt 0.023244 0.897064\nvt 0.570332 0.915880\nvt 0.574458 0.920794\nvt 0.572051 0.921391\nvt 0.002993 0.900729\nvt 0.007949 0.898285\nvt 0.010390 0.894034\nvt 0.017047 0.891712\nvt 0.526083 0.184936\nvt 0.529662 0.174329\nvt 0.532957 0.176002\nvt 0.034435 0.897909\nvt 0.029788 0.896260\nvt 0.520475 0.447191\nvt 0.515019 0.446039\nvt 0.167198 0.428823\nvt 0.187992 0.456921\nvt 0.197745 0.441254\nvt 0.208716 0.457770\nvt 0.215952 0.439906\nvt 0.229393 0.445709\nvt 0.232822 0.460512\nvt 0.170160 0.408089\nvt 0.194681 0.422028\nvt 0.213966 0.412138\nvt 0.228355 0.432241\nvt 0.225312 0.412907\nvt 0.236116 0.446994\nvt 0.234426 0.407254\nvt 0.369123 0.305738\nvt 0.350013 0.280877\nvt 0.379883 0.302557\nvt 0.193263 0.401444\nvt 0.204680 0.395297\nvt 0.221216 0.399036\nvt 0.182906 0.374035\nvt 0.199875 0.357710\nvt 0.345863 0.289639\nvt 0.326205 0.280494\nvt 0.339762 0.274349\nvt 0.397762 0.285023\nvt 0.394769 0.309734\nvt 0.382724 0.280523\nvt 0.391537 0.250197\nvt 0.398461 0.230961\nvt 0.403090 0.205752\nvt 0.388798 0.199220\nvt 0.387351 0.151121\nvt 0.405707 0.137546\nvt 0.380511 0.116227\nvt 0.383151 0.076743\nvt 0.407860 0.072657\nvt 0.415316 0.089146\nvt 0.402392 0.110214\nvt 0.368443 0.090232\nvt 0.379275 0.048246\nvt 0.388168 0.021818\nvt 0.642208 0.042219\nvt 0.658477 0.057151\nvt 0.679710 0.057573\nvt 0.696080 0.045308\nvt 0.370935 0.235497\nvt 0.375984 0.252884\nvt 0.359813 0.254239\nvt 0.361392 0.271997\nvt 0.372975 0.160568\nvt 0.370339 0.201754\nvt 0.359065 0.171011\nvt 0.353772 0.134819\nvt 0.366304 0.122027\nvt 0.357139 0.059835\nvt 0.354175 0.076617\nvt 0.343699 0.043376\nvt 0.355006 0.017441\nvt 0.340795 0.027326\nvt 0.618608 0.025852\nvt 0.635966 0.018399\nvt 0.614845 0.072050\nvt 0.662915 0.031618\nvt 0.674197 0.033396\nvt 0.685037 0.028188\nvt 0.268687 0.670353\nvt 0.341425 0.253299\nvt 0.341778 0.196111\nvt 0.344797 0.162104\nvt 0.338240 0.070037\nvt 0.328952 0.088874\nvt 0.328212 0.062836\nvt 0.765489 0.367448\nvt 0.756568 0.374295\nvt 0.755024 0.355583\nvt 0.680770 0.017696\nvt 0.673912 0.017715\nvt 0.666215 0.021263\nvt 0.334026 0.234186\nvt 0.319474 0.230522\nvt 0.347097 0.230463\nvt 0.328421 0.200656\nvt 0.328128 0.158097\nvt 0.318395 0.120101\nvt 0.333730 0.123096\nvt 0.321575 0.144400\nvt 0.319637 0.091663\nvt 0.318599 0.072946\nvt 0.767582 0.399516\nvt 0.766086 0.428632\nvt 0.755308 0.403133\nvt 0.773331 0.390984\nvt 0.729672 0.369668\nvt 0.732813 0.355870\nvt 0.739637 0.345605\nvt 0.727644 0.336305\nvt 0.710230 0.338142\nvt 0.711023 0.352568\nvt 0.651841 0.006245\nvt 0.660154 0.007402\nvt 0.647895 0.025841\nvt 0.690339 0.329329\nvt 0.663706 0.337824\nvt 0.674166 0.326556\nvt 0.686065 0.321523\nvt 0.679521 0.318151\nvt 0.661537 0.326022\nvt 0.657882 0.338454\nvt 0.668413 0.371469\nvt 0.683206 0.338404\nvt 0.677631 0.376689\nvt 0.684200 0.356287\nvt 0.691196 0.382441\nvt 0.702189 0.367037\nvt 0.698216 0.336106\nvt 0.711102 0.402446\nvt 0.720855 0.385670\nvt 0.721427 0.407125\nvt 0.725724 0.416600\nvt 0.748138 0.428128\nvt 0.756506 0.456591\nvt 0.745117 0.479728\nvt 0.733940 0.446203\nvt 0.771703 0.453648\nvt 0.764665 0.476445\nvt 0.749758 0.491907\nvt 0.307401 0.154431\nvt 0.297439 0.163658\nvt 0.296337 0.157936\nvt 0.308562 0.158224\nvt 0.312292 0.176090\nvt 0.312931 0.191013\nvt 0.315269 0.201724\nvt 0.661017 0.414346\nvt 0.668177 0.396796\nvt 0.687563 0.406183\nvt 0.675505 0.422185\nvt 0.697066 0.417376\nvt 0.682649 0.443310\nvt 0.708195 0.432929\nvt 0.729689 0.431815\nvt 0.696784 0.463775\nvt 0.716706 0.452607\nvt 0.726307 0.480601\nvt 0.713502 0.496515\nvt 0.732583 0.502531\nvt 0.748068 0.533309\nvt 0.732908 0.538211\nvt 0.716134 0.540700\nvt 0.729071 0.556902\nvt 0.713238 0.560795\nvt 0.719534 0.575432\nvt 0.181453 0.348723\nvt 0.209956 0.347902\nvt 0.222429 0.360276\nvt 0.211506 0.357707\nvt 0.704532 0.583571\nvt 0.706795 0.575031\nvt 0.661249 0.429174\nvt 0.654696 0.448177\nvt 0.665331 0.461913\nvt 0.679167 0.486037\nvt 0.700605 0.512061\nvt 0.683493 0.519553\nvt 0.695363 0.544327\nvt 0.700173 0.560917\nvt 0.694653 0.573116\nvt 0.691588 0.579606\nvt 0.680683 0.556535\nvt 0.686784 0.586266\nvt 0.671461 0.574985\nvt 0.697659 0.591056\nvt 0.183021 0.321539\nvt 0.201696 0.337970\nvt 0.657003 0.502326\nvt 0.657969 0.520068\nvt 0.662733 0.562688\nvt 0.651008 0.580534\nvt 0.653587 0.540034\nvt 0.522723 0.120327\nvt 0.516975 0.101623\nvt 0.508839 0.103594\nvt 0.532644 0.101699\nvt 0.523705 0.105300\nvt 0.533171 0.097532\nvt 0.493476 0.092645\nvt 0.507193 0.093091\nvt 0.475604 0.034671\nvt 0.614852 0.152722\nvt 0.598296 0.141430\nvt 0.678463 0.128057\nvt 0.664727 0.126065\nvt 0.693616 0.130608\nvt 0.509098 0.067957\nvt 0.592442 0.152918\nvt 0.596369 0.169071\nvt 0.635409 0.149032\nvt 0.646842 0.123504\nvt 0.655285 0.130342\nvt 0.648973 0.143567\nvt 0.685327 0.139250\nvt 0.701131 0.147448\nvt 0.704426 0.140688\nvt 0.533052 0.090514\nvt 0.516698 0.079527\nvt 0.525937 0.060086\nvt 0.531220 0.078360\nvt 0.521551 0.049752\nvt 0.513162 0.056419\nvt 0.501003 0.056311\nvt 0.502675 0.043772\nvt 0.521501 0.032960\nvt 0.624638 0.180794\nvt 0.663053 0.152144\nvt 0.680950 0.153607\nvt 0.690604 0.160293\nvt 0.999737 0.500853\nvt 0.999737 0.507806\nvt 0.997157 0.501592\nvt 0.467944 0.924570\nvt 0.538488 0.096988\nvt 0.538691 0.103231\nvt 0.534981 0.103554\nvt 0.461222 0.906890\nvt 0.456886 0.906149\nvt 0.538303 0.071326\nvt 0.544971 0.088368\nvt 0.534814 0.090551\nvt 0.530740 0.060910\nvt 0.538423 0.049382\nvt 0.535897 0.064390\nvt 0.529528 0.065155\nvt 0.547163 0.106260\nvt 0.533074 0.110355\nvt 0.553473 0.078066\nvt 0.546787 0.062084\nvt 0.553528 0.100680\nvt 0.570350 0.100800\nvt 0.570054 0.096966\nvt 0.559814 0.089028\nvt 0.943106 0.921401\nvt 0.942382 0.942513\nvt 0.936780 0.928632\nvt 0.468538 0.936521\nvt 0.471346 0.933870\nvt 0.955531 0.932940\nvt 0.949354 0.940290\nvt 0.993839 0.535070\nvt 0.993839 0.542007\nvt 0.991086 0.537674\nvt 0.682222 0.281106\nvt 0.681157 0.287532\nvt 0.672721 0.283510\nvt 0.958693 0.941411\nvt 0.997252 0.161408\nvt 0.997252 0.168456\nvt 0.994267 0.165085\nvt 0.481207 0.939763\nvt 0.476608 0.934832\nvt 0.472051 0.944728\nvt 0.480863 0.946109\nvt 0.323869 0.892455\nvt 0.329010 0.885833\nvt 0.331598 0.898353\nvt 0.332663 0.907902\nvt 0.323064 0.886044\nvt 0.318855 0.880121\nvt 0.312516 0.873884\nvt 0.119326 0.928287\nvt 0.117099 0.936114\nvt 0.113348 0.927781\nvt 0.548770 0.192733\nvt 0.848289 0.853565\nvt 0.850573 0.859091\nvt 0.848652 0.862033\nvt 0.555298 0.202965\nvt 0.851658 0.873236\nvt 0.850134 0.873573\nvt 0.999068 0.786635\nvt 0.997500 0.779808\nvt 0.999068 0.779632\nvt 0.937515 0.206348\nvt 0.928954 0.192192\nvt 0.931773 0.191027\nvt 0.922934 0.180457\nvt 0.919678 0.181002\nvt 0.897549 0.166996\nvt 0.470711 0.730633\nvt 0.467235 0.733691\nvt 0.861882 0.894163\nvt 0.854218 0.871155\nvt 0.859119 0.882173\nvt 0.582198 0.863580\nvt 0.574922 0.874869\nvt 0.574187 0.865409\nvt 0.574991 0.853349\nvt 0.583755 0.851201\nvt 0.873268 0.909999\nvt 0.860916 0.896912\nvt 0.878469 0.906961\nvt 0.874211 0.900149\nvt 0.926679 0.191280\nvt 0.885403 0.914972\nvt 0.888421 0.912008\nvt 0.897358 0.915935\nvt 0.853928 0.857488\nvt 0.854448 0.864112\nvt 0.137194 0.945351\nvt 0.142112 0.949326\nvt 0.139039 0.952410\nvt 0.132780 0.947904\nvt 0.122679 0.933496\nvt 0.130738 0.941037\nvt 0.123663 0.944115\nvt 0.124329 0.932437\nvt 0.124701 0.927091\nvt 0.128256 0.935732\nvt 0.577973 0.917122\nvt 0.583607 0.924240\nvt 0.579165 0.922736\nvt 0.881546 0.022251\nvt 0.894346 0.029198\nvt 0.878365 0.035781\nvt 0.846019 0.025407\nvt 0.871955 0.032239\nvt 0.860050 0.040527\nvt 0.859659 0.023580\nvt 0.868363 0.022618\nvt 0.496879 0.849317\nvt 0.489683 0.858528\nvt 0.486181 0.844030\nvt 0.512726 0.995065\nvt 0.518770 0.987002\nvt 0.518770 0.997333\nvt 0.987969 0.380079\nvt 0.987156 0.391285\nvt 0.982092 0.382799\nvt 0.491313 0.833883\nvt 0.491529 0.820052\nvt 0.502541 0.825515\nvt 0.498196 0.809047\nvt 0.505469 0.805099\nvt 0.501167 0.799280\nvt 0.507112 0.791257\nvt 0.505530 0.787691\nvt 0.509957 0.782831\nvt 0.483217 0.734284\nvt 0.474810 0.733378\nvt 0.907721 0.169216\nvt 0.901298 0.171134\nvt 0.474695 0.724159\nvt 0.472285 0.726587\nvt 0.479998 0.727667\nvt 0.489550 0.725943\nvt 0.495971 0.736841\nvt 0.500120 0.741583\nvt 0.504153 0.737773\nvt 0.833586 0.308299\nvt 0.829305 0.313189\nvt 0.830699 0.307973\nvt 0.484462 0.726479\nvt 0.479571 0.723156\nvt 0.902995 0.919830\nvt 0.908997 0.912847\nvt 0.907095 0.921465\nvt 0.400037 0.977294\nvt 0.401295 0.974977\nvt 0.401295 0.978530\nvt 0.902271 0.910520\nvt 0.896447 0.911084\nvt 0.899870 0.913001\nvt 0.890539 0.901543\nvt 0.884724 0.897722\nvt 0.893574 0.880400\nvt 0.893242 0.862764\nvt 0.494912 0.715262\nvt 0.476378 0.716167\nvt 0.477343 0.708805\nvt 0.480686 0.715666\nvt 0.909649 0.906379\nvt 0.903622 0.903060\nvt 0.900841 0.898362\nvt 0.899655 0.886139\nvt 0.905107 0.859626\nvt 0.901280 0.855957\nvt 0.486234 0.706827\nvt 0.909536 0.895331\nvt 0.908492 0.856859\nvt 0.472443 0.691480\nvt 0.469535 0.665385\nvt 0.479258 0.688089\nvt 0.466405 0.668800\nvt 0.453113 0.655622\nvt 0.464691 0.686506\nvt 0.904824 0.852562\nvt 0.909975 0.854202\nvt 0.909082 0.850854\nvt 0.452410 0.658220\nvt 0.545652 0.865439\nvt 0.532546 0.859780\nvt 0.894846 0.851632\nvt 0.888467 0.848748\nvt 0.891400 0.843267\nvt 0.899064 0.846013\nvt 0.903913 0.843716\nvt 0.900417 0.838695\nvt 0.872460 0.870741\nvt 0.878099 0.870252\nvt 0.291954 0.639874\nvt 0.296337 0.632841\nvt 0.296337 0.658460\nvt 0.985887 0.880847\nvt 0.979141 0.868007\nvt 0.978577 0.860271\nvt 0.569386 0.883195\nvt 0.562824 0.892522\nvt 0.559689 0.882805\nvt 0.568543 0.878438\nvt 0.573159 0.885985\nvt 0.553236 0.883496\nvt 0.550880 0.876474\nvt 0.544886 0.878288\nvt 0.539257 0.873479\nvt 0.571893 0.912497\nvt 0.566748 0.909195\nvt 0.569846 0.906167\nvt 0.573177 0.911783\nvt 0.567612 0.901155\nvt 0.570187 0.898312\nvt 0.570284 0.893344\nvt 0.554392 0.893182\nvt 0.552366 0.895630\nvt 0.548326 0.888589\nvt 0.555055 0.897108\nvt 0.548019 0.871695\nvt 0.538965 0.871794\nvt 0.943219 0.615839\nvt 0.940683 0.610794\nvt 0.945179 0.607113\nvt 0.325680 0.945239\nvt 0.332714 0.956030\nvt 0.330803 0.959399\nvt 0.839711 0.021173\nvt 0.843031 0.020846\nvt 0.838116 0.025266\nvt 0.846304 0.037647\nvt 0.835611 0.038347\nvt 0.332695 0.940321\nvt 0.330558 0.929676\nvt 0.332587 0.931944\nvt 0.850736 0.042311\nvt 0.326849 0.937941\nvt 0.330067 0.945172\nvt 0.497403 0.857060\nvt 0.496506 0.861920\nvt 0.503114 0.863828\nvt 0.486227 0.861328\nvt 0.504210 0.870089\nvt 0.508266 0.864143\nvt 0.510529 0.867445\nvt 0.509515 0.858136\nvt 0.054136 0.963684\nvt 0.060768 0.962167\nvt 0.058614 0.977526\nvt 0.063887 0.978650\nvt 0.937818 0.820399\nvt 0.936958 0.828292\nvt 0.934427 0.826472\nvt 0.933526 0.910935\nvt 0.937204 0.898215\nvt 0.941521 0.912344\nvt 0.579932 0.102188\nvt 0.595049 0.250002\nvt 0.605573 0.259316\nvt 0.595704 0.263342\nvt 0.531017 0.041424\nvt 0.595474 0.215375\nvt 0.605233 0.213061\nvt 0.596684 0.220934\nvt 0.603154 0.232478\nvt 0.556778 0.054032\nvt 0.608568 0.241039\nvt 0.612773 0.247410\nvt 0.564468 0.058072\nvt 0.566957 0.073316\nvt 0.613336 0.198021\nvt 0.602826 0.198695\nvt 0.615227 0.230473\nvt 0.615724 0.239245\nvt 0.629437 0.193527\nvt 0.640047 0.173974\nvt 0.646826 0.183373\nvt 0.676282 0.176221\nvt 0.686498 0.175460\nvt 0.694986 0.180388\nvt 0.692929 0.197367\nvt 0.703245 0.170108\nvt 0.680263 0.192940\nvt 0.669125 0.194953\nvt 0.643422 0.199765\nvt 0.623226 0.212483\nvt 0.618736 0.203568\nvt 0.638359 0.220755\nvt 0.623055 0.224658\nvt 0.656385 0.214014\nvt 0.654855 0.203708\nvt 0.671537 0.209729\nvt 0.684346 0.219408\nvt 0.710636 0.198979\nvt 0.627565 0.230971\nvt 0.651677 0.221883\nvt 0.652498 0.226140\nvt 0.636828 0.228437\nvt 0.517264 0.594711\nvt 0.508215 0.598591\nvt 0.516141 0.590549\nvt 0.665231 0.220130\nvt 0.475127 0.613259\nvt 0.495853 0.613235\nvt 0.483107 0.619528\nvt 0.696773 0.212838\nvt 0.682999 0.216764\nvt 0.625758 0.240553\nvt 0.511136 0.582686\nvt 0.517173 0.585707\nvt 0.505163 0.591290\nvt 0.478202 0.600970\nvt 0.458313 0.608878\nvt 0.460862 0.619821\nvt 0.609529 0.267394\nvt 0.600257 0.271258\nvt 0.581611 0.083186\nvt 0.570238 0.092212\nvt 0.572111 0.086382\nvt 0.591245 0.097798\nvt 0.591133 0.094079\nvt 0.929711 0.087626\nvt 0.930223 0.083953\nvt 0.936970 0.082617\nvt 0.625825 0.249462\nvt 0.615689 0.257117\nvt 0.467489 0.649233\nvt 0.473304 0.649446\nvt 0.480770 0.648755\nvt 0.950811 0.904794\nvt 0.944905 0.905939\nvt 0.946319 0.888704\nvt 0.610629 0.274299\nvt 0.606776 0.275635\nvt 0.617398 0.256948\nvt 0.613409 0.268344\nvt 0.927664 0.100552\nvt 0.922875 0.101873\nvt 0.925642 0.090863\nvt 0.929187 0.092070\nvt 0.956076 0.901895\nvt 0.948677 0.887097\nvt 0.940345 0.886322\nvt 0.942509 0.883980\nvt 0.521406 0.565377\nvt 0.524928 0.569971\nvt 0.517609 0.570545\nvt 0.202138 0.862395\nvt 0.203187 0.886048\nvt 0.199677 0.878239\nvt 0.062616 0.955939\nvt 0.508156 0.813801\nvt 0.508122 0.809120\nvt 0.444414 0.594591\nvt 0.460139 0.596752\nvt 0.486215 0.583399\nvt 0.476745 0.593839\nvt 0.466513 0.585742\nvt 0.498553 0.582278\nvt 0.677663 0.295039\nvt 0.683140 0.294074\nvt 0.683963 0.296765\nvt 0.809192 0.947462\nvt 0.799012 0.937896\nvt 0.817775 0.951597\nvt 0.919403 0.090984\nvt 0.925758 0.086643\nvt 0.797930 0.927458\nvt 0.802924 0.923357\nvt 0.797840 0.931557\nvt 0.819116 0.917692\nvt 0.813711 0.914027\nvt 0.676633 0.298306\nvt 0.682090 0.302073\nvt 0.677978 0.301139\nvt 0.674091 0.301684\nvt 0.806163 0.928995\nvt 0.814320 0.930478\nvt 0.814590 0.936015\nvt 0.669684 0.296211\nvt 0.668884 0.300181\nvt 0.666130 0.294252\nvt 0.672628 0.289338\nvt 0.667354 0.285296\nvt 0.586445 0.990904\nvt 0.586445 0.996564\nvt 0.583459 0.991678\nvt 0.515223 0.883572\nvt 0.513709 0.875585\nvt 0.519984 0.885206\nvt 0.456732 0.587907\nvt 0.445793 0.586395\nvt 0.451813 0.582503\nvt 0.458330 0.569249\nvt 0.474657 0.578260\nvt 0.513005 0.562784\nvt 0.469382 0.570512\nvt 0.496808 0.570257\nvt 0.507179 0.551709\nvt 0.517338 0.560617\nvt 0.819537 0.931498\nvt 0.816927 0.941105\nvt 0.924652 0.537066\nvt 0.924881 0.532974\nvt 0.102296 0.683476\nvt 0.100071 0.683752\nvt 0.989260 0.025152\nvt 0.992932 0.028075\nvt 0.987067 0.023244\nvt 0.933283 0.507314\nvt 0.935888 0.509256\nvt 0.929935 0.511585\nvt 0.818406 0.310651\nvt 0.816610 0.311580\nvt 0.815539 0.310266\nvt 0.955846 0.832815\nvt 0.404296 0.318496\nvt 0.399177 0.317801\nvt 0.395915 0.313443\nvt 0.414121 0.326056\nvt 0.404045 0.320848\nvt 0.424245 0.337615\nvt 0.414934 0.334023\nvt 0.410291 0.326319\nvt 0.423460 0.332626\nvt 0.428765 0.337722\nvt 0.987941 0.954715\nvt 0.991555 0.951910\nvt 0.988039 0.957845\nvt 0.991249 0.959442\nvt 0.428707 0.786633\nvt 0.431663 0.780983\nvt 0.441047 0.792191\nvt 0.122733 0.631350\nvt 0.119362 0.632028\nvt 0.453526 0.781752\nvt 0.456038 0.780727\nvt 0.456271 0.788285\nvt 0.126412 0.628187\nvt 0.450940 0.790005\nvt 0.447912 0.782537\nvt 0.130429 0.623620\nvt 0.134599 0.613591\nvt 0.940660 0.701303\nvt 0.948793 0.695823\nvt 0.940618 0.705747\nvt 0.939025 0.706211\nvt 0.937042 0.709408\nvt 0.936764 0.703927\nvt 0.945877 0.712637\nvt 0.943812 0.714484\nvt 0.943736 0.715257\nvt 0.945545 0.722471\nvt 0.719693 0.948129\nvt 0.720510 0.957030\nvt 0.718448 0.957375\nvt 0.293606 0.760354\nvt 0.291383 0.758901\nvt 0.290745 0.752854\nvt 0.404296 0.323948\nvt 0.404905 0.329370\nvt 0.954091 0.715282\nvt 0.242237 0.341252\nvt 0.241821 0.355725\nvt 0.238984 0.336285\nvt 0.252891 0.394743\nvt 0.247953 0.395998\nvt 0.243993 0.355792\nvt 0.255824 0.398376\nvt 0.255029 0.419814\nvt 0.263180 0.413330\nvt 0.258860 0.347993\nvt 0.953813 0.746735\nvt 0.947810 0.767698\nvt 0.938435 0.764537\nvt 0.933885 0.759992\nvt 0.460932 0.817331\nvt 0.471599 0.844358\nvt 0.468196 0.844830\nvt 0.454841 0.841987\nvt 0.438116 0.809761\nvt 0.449842 0.847045\nvt 0.423162 0.786583\nvt 0.430523 0.816600\nvt 0.435202 0.840740\nvt 0.985340 0.725938\nvt 0.993068 0.712401\nvt 0.993068 0.734643\nvt 0.292883 0.727854\nvt 0.288934 0.709339\nvt 0.293296 0.706154\nvt 0.294241 0.745073\nvt 0.291637 0.744319\nvt 0.295515 0.760996\nvt 0.405112 0.335986\nvt 0.276699 0.382876\nvt 0.282697 0.417532\nvt 0.264627 0.422888\nvt 0.286743 0.398896\nvt 0.286395 0.416019\nvt 0.282852 0.333345\nvt 0.287945 0.333307\nvt 0.287548 0.365785\nvt 0.444313 0.539941\nvt 0.438316 0.532212\nvt 0.448003 0.531734\nvt 0.448489 0.550816\nvt 0.438622 0.545396\nvt 0.444228 0.560333\nvt 0.452068 0.565389\nvt 0.448083 0.574155\nvt 0.439416 0.589576\nvt 0.436100 0.537903\nvt 0.430363 0.529244\nvt 0.434201 0.551086\nvt 0.445154 0.568337\nvt 0.439705 0.573185\nvt 0.438294 0.563658\nvt 0.427991 0.517998\nvt 0.440051 0.524615\nvt 0.436541 0.527167\nvt 0.426910 0.523004\nvt 0.497789 0.557765\nvt 0.429245 0.514142\nvt 0.424059 0.501513\nvt 0.422801 0.471961\nvt 0.421392 0.454493\nvt 0.420256 0.434983\nvt 0.104971 0.987624\nvt 0.287543 0.423562\nvt 0.434673 0.559034\nvt 0.961064 0.992315\nvt 0.960277 0.993251\nvt 0.960193 0.991691\nvt 0.959949 0.620922\nvt 0.961030 0.613146\nvt 0.964109 0.637871\nvt 0.961414 0.637912\nvt 0.954432 0.446313\nvt 0.958066 0.444385\nvt 0.957594 0.451411\nvt 0.953837 0.452558\nvt 0.951978 0.446252\nvt 0.959107 0.603268\nvt 0.955818 0.601748\nvt 0.954619 0.611811\nvt 0.950998 0.600642\nvt 0.959477 0.635043\nvt 0.956857 0.619024\nvt 0.971743 0.949168\nvt 0.973897 0.972019\nvt 0.970682 0.953626\nvt 0.968869 0.937391\nvt 0.976737 0.945335\nvt 0.975751 0.966823\nvt 0.972607 0.936528\nvt 0.701411 0.948899\nvt 0.702386 0.946925\nvt 0.702386 0.951238\nvt 0.977174 0.967503\nvt 0.977167 0.973378\nvt 0.961005 0.995765\nvt 0.959690 0.996504\nvt 0.958592 0.478983\nvt 0.959083 0.462252\nvt 0.960531 0.468154\nvt 0.733991 0.921024\nvt 0.730025 0.906571\nvt 0.736827 0.924834\nvt 0.728316 0.913127\nvt 0.722103 0.894809\nvt 0.722780 0.888424\nvt 0.923340 0.105297\nvt 0.921284 0.104984\nvt 0.923340 0.102535\nvt 0.662726 0.294128\nvt 0.729271 0.878351\nvt 0.725878 0.875212\nvt 0.722752 0.877298\nvt 0.724759 0.863107\nvt 0.522314 0.866173\nvt 0.515778 0.870057\nvt 0.522103 0.855632\nvt 0.477943 0.989563\nvt 0.479676 0.984072\nvt 0.479722 0.991054\nvt 0.722031 0.889390\nvt 0.719509 0.888086\nvt 0.999345 0.093936\nvt 0.996828 0.098438\nvt 0.996398 0.094253\nvt 0.719559 0.893792\nvt 0.317382 0.894323\nvt 0.320961 0.890655\nvt 0.299596 0.876283\nvt 0.311372 0.887225\nvt 0.306970 0.890742\nvt 0.316334 0.880123\nvt 0.312317 0.878297\nvt 0.658158 0.958991\nvt 0.660788 0.961354\nvt 0.654278 0.959595\nvt 0.654487 0.955538\nvt 0.659212 0.953568\nvt 0.119692 0.923024\nvt 0.300388 0.886155\nvt 0.296337 0.881881\nvt 0.297355 0.885870\nvt 0.742819 0.313190\nvt 0.739527 0.313190\nvt 0.741143 0.309242\nvt 0.125830 0.916975\nvt 0.129334 0.921784\nvt 0.034340 0.893850\nvt 0.290826 0.392182\nvt 0.415815 0.386257\nvt 0.408259 0.373870\nvt 0.408330 0.352870\nvt 0.290614 0.690395\nvt 0.422750 0.392049\nvt 0.433831 0.416819\nvt 0.426968 0.463636\nvt 0.426432 0.447154\nvt 0.427935 0.429613\nvt 0.434533 0.427477\nvt 0.416624 0.428661\nvt 0.424503 0.418525\nvt 0.869917 0.947276\nvt 0.876680 0.951452\nvt 0.876492 0.963609\nvt 0.877181 0.939549\nvt 0.932747 0.596573\nvt 0.927287 0.603333\nvt 0.925724 0.592183\nvt 0.872763 0.933826\nvt 0.879085 0.927354\nvt 0.466780 0.556101\nvt 0.454405 0.540161\nvt 0.455962 0.529962\nvt 0.460470 0.533151\nvt 0.464988 0.537596\nvt 0.450424 0.525367\nvt 0.435525 0.505020\nvt 0.449294 0.511657\nvt 0.432787 0.489921\nvt 0.443593 0.502953\nvt 0.445305 0.492766\nvt 0.458221 0.495077\nvt 0.453738 0.505842\nvt 0.439737 0.485801\nvt 0.465526 0.478470\nvt 0.494768 0.999181\nvt 0.489933 0.992922\nvt 0.494768 0.988168\nvt 0.455662 0.524885\nvt 0.463673 0.522326\nvt 0.296257 0.932092\nvt 0.294553 0.940576\nvt 0.291800 0.935095\nvt 0.471937 0.533453\nvt 0.476456 0.546724\nvt 0.464362 0.546595\nvt 0.484665 0.540740\nvt 0.496944 0.543120\nvt 0.500971 0.531509\nvt 0.503300 0.541634\nvt 0.509488 0.538117\nvt 0.489473 0.529989\nvt 0.498237 0.526434\nvt 0.503778 0.526884\nvt 0.960514 0.596740\nvt 0.960619 0.592916\nvt 0.506591 0.528253\nvt 0.506549 0.524951\nvt 0.952139 0.592834\nvt 0.957841 0.591608\nvt 0.950934 0.596768\nvt 0.322929 0.905720\nvt 0.319737 0.896383\nvt 0.314357 0.898784\nvt 0.518497 0.855729\nvt 0.511801 0.866337\nvt 0.511962 0.870828\nvt 0.731342 0.857031\nvt 0.728858 0.865156\nvt 0.993958 0.207036\nvt 0.998145 0.210717\nvt 0.995123 0.212859\nvt 0.650161 0.939857\nvt 0.653197 0.949332\nvt 0.647466 0.949357\nvt 0.737242 0.854337\nvt 0.724906 0.850749\nvt 0.710742 0.863052\nvt 0.644661 0.930363\nvt 0.651918 0.935092\nvt 0.909295 0.583767\nvt 0.911517 0.591599\nvt 0.906577 0.591599\nvt 0.705466 0.876015\nvt 0.707600 0.872214\nvt 0.713063 0.880319\nvt 0.658035 0.937951\nvt 0.659230 0.946510\nvt 0.889944 0.994991\nvt 0.884035 0.991707\nvt 0.889253 0.989760\nvt 0.880890 0.995365\nvt 0.313967 0.893908\nvt 0.307452 0.897901\nvt 0.889870 0.985236\nvt 0.318176 0.887997\nvt 0.318015 0.894598\nvt 0.998951 0.340673\nvt 0.997106 0.339838\nvt 0.998881 0.334717\nvt 0.878582 0.982881\nvt 0.876588 0.985575\nvt 0.870183 0.980074\nvt 0.135840 0.916610\nvt 0.129698 0.917009\nvt 0.871711 0.977904\nvt 0.878764 0.975526\nvt 0.519867 0.459181\nvt 0.514251 0.457424\nvt 0.520707 0.461496\nvt 0.517743 0.462503\nvt 0.520047 0.462065\nvt 0.302401 0.900421\nvt 0.304552 0.906392\nvt 0.514025 0.460149\nvt 0.507287 0.460446\nvt 0.506551 0.456759\nvt 0.308594 0.913003\nvt 0.311131 0.908389\nvt 0.319031 0.902281\nvt 0.321618 0.909234\nvt 0.502210 0.439544\nvt 0.509792 0.430920\nvt 0.508445 0.450480\nvt 0.495781 0.425676\nvt 0.501864 0.432911\nvt 0.493281 0.435491\nvt 0.482889 0.426440\nvt 0.490826 0.422184\nvt 0.481585 0.434103\nvt 0.478447 0.417789\nvt 0.481902 0.411161\nvt 0.641359 0.955551\nvt 0.643540 0.955794\nvt 0.643827 0.961635\nvt 0.476794 0.438926\nvt 0.476666 0.432036\nvt 0.480736 0.445148\nvt 0.486547 0.443159\nvt 0.485195 0.452535\nvt 0.497443 0.456677\nvt 0.501332 0.461426\nvt 0.496219 0.466910\nvt 0.491146 0.464953\nvt 0.324666 0.916397\nvt 0.317834 0.921673\nvt 0.302824 0.920076\nvt 0.993872 0.807919\nvt 0.993872 0.814153\nvt 0.989630 0.811728\nvt 0.490925 0.469227\nvt 0.484811 0.467659\nvt 0.485672 0.473664\nvt 0.477914 0.452680\nvt 0.477825 0.438851\nvt 0.481123 0.438488\nvt 0.475340 0.446650\nvt 0.884602 0.615426\nvt 0.883130 0.609228\nvt 0.891655 0.609832\nvt 0.478642 0.470588\nvt 0.479511 0.478134\nvt 0.914743 0.987527\nvt 0.923768 0.984118\nvt 0.923304 0.994779\nvt 0.883025 0.603971\nvt 0.886627 0.604746\nvt 0.473007 0.457444\nvt 0.474216 0.462235\nvt 0.481269 0.485766\nvt 0.659370 0.934742\nvt 0.662481 0.936590\nvt 0.990003 0.960098\nvt 0.980019 0.972633\nvt 0.978727 0.966707\nvt 0.659165 0.926445\nvt 0.655063 0.928639\nvt 0.655894 0.924163\nvt 0.245411 0.995258\nvt 0.242961 0.994471\nvt 0.245394 0.988841\nvt 0.490379 0.493558\nvt 0.491359 0.484961\nvt 0.496814 0.486879\nvt 0.507128 0.486238\nvt 0.492071 0.478569\nvt 0.483111 0.494134\nvt 0.479307 0.490414\nvt 0.997252 0.677629\nvt 0.991269 0.685891\nvt 0.989240 0.681955\nvt 0.007293 0.994467\nvt 0.003725 0.995182\nvt 0.007293 0.991714\nvt 0.467346 0.491750\nvt 0.467978 0.504884\nvt 0.473661 0.493555\nvt 0.470606 0.497962\nvt 0.476311 0.499905\nvt 0.479096 0.497773\nvt 0.476692 0.507970\nvt 0.484103 0.498285\nvt 0.489277 0.498821\nvt 0.487149 0.504600\nvt 0.016120 0.966652\nvt 0.016120 0.973323\nvt 0.013865 0.967730\nvt 0.481107 0.501682\nvt 0.477248 0.500596\nvt 0.949558 0.438521\nvt 0.712514 0.885632\nvt 0.960777 0.434236\nvt 0.947471 0.432451\nvt 0.960854 0.416229\nvt 0.485715 0.510947\nvt 0.493743 0.521685\nvt 0.461786 0.510844\nvt 0.457404 0.517698\nvt 0.506219 0.643386\nvt 0.515950 0.639318\nvt 0.512113 0.647643\nvt 0.517362 0.649035\nvt 0.473148 0.438769\nvt 0.974304 0.222679\nvt 0.974332 0.216386\nvt 0.977302 0.219940\nvt 0.600993 0.313144\nvt 0.605447 0.308616\nvt 0.605447 0.313193\nvt 0.520555 0.659010\nvt 0.515007 0.668622\nvt 0.521393 0.670370\nvt 0.502325 0.657611\nvt 0.498027 0.653842\nvt 0.493696 0.651960\nvt 0.472541 0.425390\nvt 0.467542 0.418223\nvt 0.473782 0.417196\nvt 0.492508 0.653609\nvt 0.492736 0.655193\nvt 0.474999 0.396871\nvt 0.476828 0.394352\nvt 0.480248 0.403087\nvt 0.202233 0.856494\nvt 0.204380 0.861027\nvt 0.200494 0.858473\nvt 0.470020 0.406180\nvt 0.472769 0.650947\nvt 0.479562 0.676305\nvt 0.466704 0.652454\nvt 0.464962 0.654927\nvt 0.465678 0.664553\nvt 0.468843 0.669744\nvt 0.473701 0.676817\nvt 0.490541 0.699486\nvt 0.486010 0.699768\nvt 0.491582 0.694868\nvt 0.290654 0.526480\nvt 0.291506 0.508726\nvt 0.295484 0.531459\nvt 0.483000 0.676724\nvt 0.497067 0.700374\nvt 0.507903 0.733145\nvt 0.504095 0.706749\nvt 0.519395 0.712673\nvt 0.432213 0.480783\nvt 0.438652 0.479566\nvt 0.438922 0.474459\nvt 0.918517 0.593561\nvt 0.907663 0.605736\nvt 0.923870 0.612782\nvt 0.909734 0.613892\nvt 0.900909 0.616995\nvt 0.896963 0.611075\nvt 0.461779 0.472314\nvt 0.462852 0.466159\nvt 0.284219 0.995947\nvt 0.286997 0.989898\nvt 0.287255 0.997147\nvt 0.471433 0.469132\nvt 0.472183 0.478407\nvt 0.469293 0.465317\nvt 0.469663 0.458719\nvt 0.997138 0.894614\nvt 0.989068 0.899151\nvt 0.991792 0.891415\nvt 0.895821 0.618438\nvt 0.892907 0.619732\nvt 0.520392 0.651039\nvt 0.907926 0.629533\nvt 0.903381 0.629591\nvt 0.440260 0.460857\nvt 0.431958 0.458760\nvt 0.439461 0.455727\nvt 0.919822 0.618271\nvt 0.926687 0.617450\nvt 0.922838 0.629938\nvt 0.914792 0.632419\nvt 0.453505 0.871585\nvt 0.469261 0.870593\nvt 0.460191 0.875255\nvt 0.579208 0.997077\nvt 0.583204 0.986853\nvt 0.583204 0.997916\nvt 0.441104 0.427878\nvt 0.439209 0.414939\nvt 0.445974 0.426677\nvt 0.441256 0.870953\nvt 0.449459 0.877474\nvt 0.447982 0.434462\nvt 0.445026 0.441475\nvt 0.438363 0.875376\nvt 0.431302 0.873881\nvt 0.429839 0.866668\nvt 0.445243 0.890924\nvt 0.439601 0.882648\nvt 0.451057 0.883885\nvt 0.439160 0.435188\nvt 0.431801 0.446016\nvt 0.455105 0.892446\nvt 0.448492 0.900916\nvt 0.412092 0.405911\nvt 0.414833 0.397633\nvt 0.414236 0.422659\nvt 0.480776 0.873118\nvt 0.964292 0.695117\nvt 0.959129 0.686343\nvt 0.964950 0.686598\nvt 0.490274 0.875794\nvt 0.482118 0.881425\nvt 0.466555 0.883886\nvt 0.491719 0.879814\nvt 0.483224 0.884009\nvt 0.492177 0.659534\nvt 0.516824 0.681649\nvt 0.522426 0.687099\nvt 0.485642 0.652563\nvt 0.506417 0.692193\nvt 0.498818 0.692933\nvt 0.484553 0.663868\nvt 0.517530 0.690694\nvt 0.518708 0.703706\nvt 0.521900 0.701478\nvt 0.521965 0.692726\nvt 0.921152 0.652763\nvt 0.924636 0.643885\nvt 0.943811 0.516879\nvt 0.946394 0.516944\nvt 0.942658 0.521368\nvt 0.939619 0.523566\nvt 0.835411 0.020511\nvt 0.981597 0.493128\nvt 0.981597 0.496569\nvt 0.979982 0.494611\nvt 0.831419 0.042085\nvt 0.835782 0.042648\nvt 0.455658 0.861795\nvt 0.456307 0.865570\nvt 0.464340 0.864474\nvt 0.898070 0.005472\nvt 0.905045 0.002728\nvt 0.898938 0.016311\nvt 0.904024 0.023917\nvt 0.909510 0.014892\nvt 0.465987 0.849055\nvt 0.468842 0.861779\nvt 0.474607 0.852284\nvt 0.482037 0.854470\nvt 0.912798 0.011084\nvt 0.912038 0.003338\nvt 0.917401 0.010416\nvt 0.908042 0.000329\nvt 0.471230 0.848273\nvt 0.489493 0.998166\nvt 0.485649 0.995827\nvt 0.489493 0.994853\nvt 0.099839 0.923865\nvt 0.094198 0.927623\nvt 0.094583 0.922920\nvt 0.087057 0.924434\nvt 0.088382 0.918737\nvt 0.519887 0.916816\nvt 0.520561 0.909408\nvt 0.524812 0.920255\nvt 0.081169 0.926230\nvt 0.955957 0.826873\nvt 0.542607 0.976287\nvt 0.545184 0.972580\nvt 0.545555 0.978961\nvt 0.942205 0.509319\nvt 0.935973 0.503631\nvt 0.840007 0.014533\nvt 0.838520 0.014085\nvt 0.948858 0.825357\nvt 0.945451 0.820346\nvt 0.956130 0.819813\nvt 0.941484 0.825751\nvt 0.941393 0.843234\nvt 0.935528 0.841085\nvt 0.943639 0.512387\nvt 0.938203 0.516702\nvt 0.932934 0.531738\nvt 0.924390 0.529918\nvt 0.938169 0.526301\nvt 0.925474 0.527382\nvt 0.937762 0.534149\nvt 0.935577 0.518427\nvt 0.940522 0.521381\nvt 0.935804 0.859779\nvt 0.932723 0.845441\nvt 0.943899 0.869809\nvt 0.376696 0.963129\nvt 0.382757 0.955776\nvt 0.382565 0.962912\nvt 0.376962 0.957188\nvt 0.370228 0.962339\nvt 0.522268 0.723927\nvt 0.512944 0.734138\nvt 0.926171 0.689989\nvt 0.929975 0.680764\nvt 0.928500 0.695123\nvt 0.926428 0.674684\nvt 0.921002 0.668162\nvt 0.930996 0.668199\nvt 0.931077 0.644242\nvt 0.927390 0.656733\nvt 0.960071 0.445803\nvt 0.395222 0.315718\nvt 0.287911 0.317192\nvt 0.247099 0.346921\nvt 0.118170 0.584422\nvt 0.114751 0.583657\nvt 0.119590 0.581711\nvt 0.272911 0.334090\nvt 0.292652 0.550217\nvt 0.291200 0.543087\nvt 0.295484 0.532920\nvt 0.742039 0.057311\nvt 0.256088 0.647100\nvt 0.115641 0.577811\nvt 0.114355 0.583158\nvt 0.841295 0.824576\nvt 0.841738 0.833910\nvt 0.063527 0.508062\nvt 0.058042 0.502706\nvt 0.051242 0.497746\nvt 0.049275 0.569329\nvt 0.479101 0.978431\nvt 0.477882 0.973190\nvt 0.479555 0.970749\nvt 0.763252 0.905302\nvt 0.389543 0.992799\nvt 0.389543 0.998275\nvt 0.387155 0.995494\nvt 0.080989 0.588931\nvt 0.279785 0.988735\nvt 0.279999 0.997508\nvt 0.276007 0.996324\nvt 0.043380 0.495121\nvt 0.021320 0.499361\nvt 0.781373 0.907560\nvt 0.608135 0.858546\nvt 0.619540 0.924591\nvt 0.832979 0.550933\nvt 0.840602 0.556715\nvt 0.830678 0.552091\nvt 0.942587 0.274383\nvt 0.928459 0.266017\nvt 0.920767 0.222761\nvt 0.847266 0.550098\nvt 0.847280 0.543453\nvt 0.852707 0.544856\nvt 0.766366 0.886836\nvt 0.943755 0.272773\nvt 0.603940 0.861072\nvt 0.803988 0.848674\nvt 0.873047 0.569045\nvt 0.612650 0.929945\nvt 0.878262 0.531358\nvt 0.449138 0.907371\nvt 0.034777 0.503687\nvt 0.980405 0.228628\nvt 0.988867 0.222761\nvt 0.988877 0.249322\nvt 0.433245 0.955115\nvt 0.429475 0.950769\nvt 0.995130 0.415524\nvt 0.991010 0.413470\nvt 0.995130 0.409331\nvt 0.901655 0.291437\nvt 0.068175 0.519540\nvt 0.047241 0.524714\nvt 0.424169 0.945025\nvt 0.426126 0.949685\nvt 0.523448 0.755266\nvt 0.996888 0.477262\nvt 0.998915 0.482345\nvt 0.997130 0.480142\nvt 0.845549 0.893176\nvt 0.064042 0.520589\nvt 0.052546 0.522112\nvt 0.911291 0.292526\nvt 0.061571 0.484790\nvt 0.061403 0.494380\nvt 0.290952 0.871105\nvt 0.296041 0.862322\nvt 0.294516 0.881969\nvt 0.926551 0.549930\nvt 0.942892 0.814007\nvt 0.943854 0.810072\nvt 0.945669 0.814007\nvt 0.133741 0.686119\nvt 0.600835 0.992862\nvt 0.036153 0.462045\nvt 0.848033 0.979928\nvt 0.840525 0.972417\nvt 0.848033 0.962130\nvt 0.814140 0.123388\nvt 0.047395 0.571054\nvt 0.112657 0.741504\nvt 0.289916 0.623232\nvt 0.015131 0.559977\nvt 0.281035 0.033562\nvt 0.006273 0.541295\nvt 0.295811 0.050306\nvt 0.288396 0.579462\nvt 0.250664 0.588687\nvt 0.996981 0.140977\nvt 0.992575 0.137394\nvt 0.996097 0.130489\nvt 0.391762 0.998669\nvt 0.389543 0.996322\nvt 0.391762 0.992799\nvt 0.176597 0.715029\nvt 0.182988 0.720385\nvt 0.941099 0.036988\nvt 0.161079 0.705138\nvt 0.154338 0.721502\nvt 0.216830 0.035527\nvt 0.364528 0.907582\nvt 0.367720 0.914028\nvt 0.789788 0.920089\nvt 0.229173 0.918621\nvt 0.992879 0.767878\nvt 0.990153 0.762442\nvt 0.992879 0.760136\nvt 0.231479 0.906805\nvt 0.954737 0.725792\nvt 0.229435 0.900621\nvt 0.209927 0.086219\nvt 0.297759 0.442296\nvt 0.246901 0.123896\nvt 0.511572 0.800634\nvt 0.245923 0.086580\nvt 0.967399 0.807338\nvt 0.967399 0.814221\nvt 0.964138 0.811728\nvt 0.251936 0.926397\nvt 0.262913 0.920005\nvt 0.222229 0.113419\nvt 0.230833 0.128781\nvt 0.523418 0.784424\nvt 0.521628 0.790647\nvt 0.518574 0.797659\nvt 0.879437 0.558443\nvt 0.308631 0.479209\nvt 0.063260 0.367859\nvt 0.736307 0.034790\nvt 0.725427 0.054320\nvt 0.773741 0.009164\nvt 0.757694 0.010406\nvt 0.715863 0.018479\nvt 0.986172 0.598799\nvt 0.992329 0.597759\nvt 0.992824 0.612253\nvt 0.745756 0.000000\nvt 0.719265 0.010315\nvt 0.726202 0.009816\nvt 0.538898 0.983938\nvt 0.544588 0.994276\nvt 0.537224 0.997166\nvt 0.535431 0.393778\nvt 0.063636 0.334688\nvt 0.084311 0.344484\nvt 0.296337 0.658461\nvt 0.296181 0.668706\nvt 0.292868 0.664974\nvt 0.163341 0.358454\nvt 0.574515 0.559403\nvt 0.003164 0.089841\nvt 0.112317 0.931863\nvt 0.112317 0.946428\nvt 0.110192 0.949082\nvt 0.113525 0.325681\nvt 0.293105 0.680153\nvt 0.757281 0.878995\nvt 0.478718 0.946590\nvt 0.774027 0.157724\nvt 0.244564 0.198991\nvt 0.760765 0.941912\nvt 0.062224 0.893271\nvt 0.812025 0.298743\nvt 0.976225 0.814213\nvt 0.972119 0.811254\nvt 0.976225 0.805684\nvt 0.760954 0.949156\nvt 0.145293 0.940069\nvt 0.270384 0.573426\nvt 0.150131 0.727539\nvt 0.225368 0.864991\nvt 0.232159 0.842479\nvt 0.245993 0.844329\nvt 0.176781 0.918874\nvt 0.157565 0.937371\nvt 0.264346 0.831453\nvt 0.956341 0.991413\nvt 0.165250 0.760346\nvt 0.268439 0.900029\nvt 0.131412 0.800306\nvt 0.137102 0.790498\nvt 0.231638 0.883714\nvt 0.967221 0.712038\nvt 0.967365 0.739554\nvt 0.291194 0.578418\nvt 0.295742 0.560056\nvt 0.295742 0.585154\nvt 0.817302 0.565167\nvt 0.802954 0.577260\nvt 0.787453 0.582670\nvt 0.792815 0.578054\nvt 0.161149 0.932303\nvt 0.163788 0.928777\nvt 0.161856 0.935150\nvt 0.819849 0.535498\nvt 0.213979 0.895784\nvt 0.778296 0.587146\nvt 0.957478 0.711506\nvt 0.850821 0.048041\nvt 0.923865 0.531358\nvt 0.835444 0.050181\nvt 0.923764 0.549439\nvt 0.667965 0.970581\nvt 0.663649 0.973269\nvt 0.921598 0.064894\nvt 0.923333 0.073663\nvt 0.952252 0.102650\nvt 0.275192 0.200990\nvt 0.054620 0.927848\nvt 0.824094 0.265274\nvt 0.273190 0.245128\nvt 0.815008 0.201501\nvt 0.366230 0.619513\nvt 0.956247 0.685939\nvt 0.290307 0.219745\nvt 0.295465 0.208662\nvt 0.578297 0.992462\nvt 0.578617 0.997893\nvt 0.577357 0.987495\nvt 0.966579 0.997641\nvt 0.964205 0.996062\nvt 0.966638 0.991691\nvt 0.146592 0.811238\nvt 0.152692 0.811392\nvt 0.601507 0.933780\nvt 0.810824 0.290302\nvt 0.612832 0.930540\nvt 0.341025 0.597204\nvt 0.880440 0.101356\nvt 0.887855 0.105143\nvt 0.064222 0.983664\nvt 0.067616 0.988162\nvt 0.065459 0.992121\nvt 0.959862 0.073497\nvt 0.956430 0.082792\nvt 0.795591 0.251219\nvt 0.811911 0.282940\nvt 0.053091 0.947514\nvt 0.615203 0.936309\nvt 0.177037 0.941895\nvt 0.808415 0.280738\nvt 0.809364 0.277433\nvt 0.204172 0.921084\nvt 0.978025 0.883980\nvt 0.800063 0.296358\nvt 0.202848 0.940520\nvt 0.085075 0.680677\nvt 0.083087 0.679536\nvt 0.971274 0.855032\nvt 0.969848 0.857037\nvt 0.974741 0.852512\nvt 0.954805 0.103586\nvt 0.953403 0.105236\nvt 0.953422 0.103539\nvt 0.112105 0.583166\nvt 0.094585 0.589035\nvt 0.090698 0.590545\nvt 0.374950 0.354868\nvt 0.737425 0.957107\nvt 0.085637 0.622183\nvt 0.091778 0.629531\nvt 0.737884 0.946513\nvt 0.739117 0.936972\nvt 0.741051 0.950939\nvt 0.945215 0.167847\nvt 0.740915 0.933596\nvt 0.238984 0.515602\nvt 0.243428 0.486165\nvt 0.939780 0.112561\nvt 0.291118 0.623904\nvt 0.296337 0.610583\nvt 0.296337 0.632841\nvt 0.382490 0.353071\nvt 0.247109 0.694285\nvt 0.254565 0.701569\nvt 0.249093 0.685174\nvt 0.251037 0.686273\nvt 0.428371 0.562117\nvt 0.950524 0.345760\nvt 0.954427 0.349894\nvt 0.948044 0.346456\nvt 0.663280 0.854718\nvt 0.701420 0.953556\nvt 0.702386 0.951238\nvt 0.702386 0.955534\nvt 0.974220 0.926311\nvt 0.643973 0.879945\nvt 0.955968 0.346891\nvt 0.641529 0.876995\nvt 0.791892 0.288979\nvt 0.998268 0.142383\nvt 0.998268 0.148074\nvt 0.995776 0.145206\nvt 0.759526 0.898258\nvt 0.757755 0.898350\nvt 0.971536 0.464157\nvt 0.054979 0.914293\nvt 0.759433 0.883356\nvt 0.758287 0.879380\nvt 0.375575 0.988211\nvt 0.352728 0.898782\nvt 0.290654 0.473653\nvt 0.271902 0.765316\nvt 0.276423 0.784192\nvt 0.321950 0.931304\nvt 0.879761 0.712214\nvt 0.325426 0.931216\nvt 0.409719 0.497965\nvt 0.395062 0.539147\nvt 0.836568 0.583104\nvt 0.837792 0.591306\nvt 0.830848 0.590511\nvt 0.394781 0.528802\nvt 0.393633 0.534240\nvt 0.991690 0.248861\nvt 0.988867 0.243910\nvt 0.991690 0.241396\nvt 0.346543 0.562692\nvt 0.415542 0.941982\nvt 0.344991 0.549317\nvt 0.411471 0.959188\nvt 0.205081 0.916406\nvt 0.200269 0.914573\nvt 0.359447 0.889802\nvt 0.350879 0.896734\nvt 0.971606 0.494094\nvt 0.617000 0.944090\nvt 0.653580 0.920727\nvt 0.640605 0.922783\nvt 0.621743 0.930587\nvt 0.915315 0.583033\nvt 0.917230 0.591165\nvt 0.911902 0.591165\nvt 0.847755 0.980142\nvt 0.357927 0.893790\nvt 0.848107 0.994877\nvt 0.172285 0.992467\nvt 0.172223 0.998344\nvt 0.170461 0.993239\nvt 0.559625 0.965941\nvt 0.312783 0.490395\nvt 0.312595 0.492883\nvt 0.313276 0.493250\nvt 0.324898 0.487953\nvt 0.338722 0.894528\nvt 0.865103 0.985983\nvt 0.864837 0.996538\nvt 0.859415 0.984591\nvt 0.349007 0.464896\nvt 0.337862 0.882560\nvt 0.339503 0.867166\nvt 0.349498 0.870751\nvt 0.931904 0.701478\nvt 0.987314 0.010230\nvt 0.996492 0.017070\nvt 0.992143 0.016707\nvt 0.262477 0.998630\nvt 0.260239 0.997651\nvt 0.262477 0.993396\nvt 0.317923 0.500288\nvt 0.323337 0.497161\nvt 0.338673 0.497708\nvt 0.995839 0.287583\nvt 0.998380 0.281973\nvt 0.998380 0.288757\nvt 0.361056 0.875759\nvt 0.346905 0.506774\nvt 0.169787 0.988814\nvt 0.169786 0.997509\nvt 0.167305 0.993786\nvt 0.362396 0.502364\nvt 0.997157 0.513664\nvt 0.993811 0.511123\nvt 0.352088 0.504511\nvt 0.939900 0.813505\nvt 0.936991 0.814007\nvt 0.937161 0.810386\nvt 0.995519 0.216942\nvt 0.998129 0.216928\nvt 0.998129 0.222751\nvt 0.956644 0.349878\nvt 0.417293 0.949150\nvt 0.356994 0.532599\nvt 0.173769 0.808889\nvt 0.352856 0.442646\nvt 0.961646 0.993921\nvt 0.964205 0.991691\nvt 0.964205 0.998253\nvt 0.294538 0.480847\nvt 0.294538 0.458892\nvt 0.143739 0.802531\nvt 0.178996 0.731721\nvt 0.190548 0.725829\nvt 0.907069 0.701461\nvt 0.365720 0.481425\nvt 0.449034 0.982918\nvt 0.358761 0.473343\nvt 0.905042 0.528424\nvt 0.364044 0.474995\nvt 0.368753 0.475859\nvt 0.925515 0.711800\nvt 0.921616 0.726030\nvt 0.201700 0.818508\nvt 0.386397 0.469240\nvt 0.886681 0.719820\nvt 0.374352 0.446121\nvt 0.282453 0.784213\nvt 0.285490 0.790990\nvt 0.277200 0.826244\nvt 0.834991 0.057341\nvt 0.835504 0.069375\nvt 0.927558 0.105297\nvt 0.925348 0.105297\nvt 0.925576 0.102827\nvt 0.829305 0.044871\nvt 0.917401 0.080045\nvt 0.237480 0.792316\nvt 0.072192 0.891440\nvt 0.112317 0.920299\nvt 0.112317 0.890774\nvt 0.261442 0.430037\nvt 0.283791 0.426172\nvt 0.759920 0.989864\nvt 0.759920 0.976910\nvt 0.940665 0.073054\nvt 0.917480 0.047754\nvt 0.944224 0.561583\nvt 0.985337 0.473324\nvt 0.985503 0.486554\nvt 0.977627 0.470099\nvt 0.978296 0.461575\nvt 0.975861 0.476202\nvt 0.985229 0.492164\nvt 0.976654 0.483464\nvt 0.918723 0.000083\nvt 0.852619 0.197654\nvt 0.862220 0.187255\nvt 0.853655 0.191933\nvt 0.181398 0.539327\nvt 0.195365 0.838124\nvt 0.736340 0.313190\nvt 0.733158 0.313190\nvt 0.733326 0.309083\nvt 0.126526 0.575074\nvt 0.867190 0.222030\nvt 0.130552 0.578637\nvt 0.144466 0.576509\nvt 0.529982 0.283244\nvt 0.779107 0.995912\nvt 0.781487 0.993049\nvt 0.781487 0.998436\nvt 0.168606 0.601762\nvt 0.887277 0.215184\nvt 0.884196 0.206988\nvt 0.139884 0.594394\nvt 0.229365 0.517072\nvt 0.461451 0.307049\nvt 0.216079 0.530545\nvt 0.230026 0.539357\nvt 0.197586 0.844128\nvt 0.701883 0.864093\nvt 0.699834 0.878695\nvt 0.698856 0.906988\nvt 0.701020 0.913156\nvt 0.830245 0.173897\nvt 0.382774 0.866836\nvt 0.388175 0.875454\nvt 0.161915 0.838768\nvt 0.170913 0.832529\nvt 0.401315 0.895439\nvt 0.391993 0.898633\nvt 0.684065 0.912968\nvt 0.148220 0.549613\nvt 0.370985 0.899831\nvt 0.151826 0.568121\nvt 0.888153 0.168377\nvt 0.206619 0.535037\nvt 0.219032 0.519723\nvt 0.960850 0.048300\nvt 0.958143 0.053267\nvt 0.213030 0.509185\nvt 0.848289 0.936955\nvt 0.847280 0.932605\nvt 0.848289 0.930549\nvt 0.197257 0.880309\nvt 0.191880 0.872783\nvt 0.852425 0.125335\nvt 0.999648 0.576449\nvt 0.166479 0.543754\nvt 0.664918 0.880172\nvt 0.663437 0.869245\nvt 0.944814 0.003365\nvt 0.942810 0.022626\nvt 0.963947 0.043373\nvt 0.963434 0.047564\nvt 0.164803 0.992684\nvt 0.889061 0.121908\nvt 0.191468 0.515554\nvt 0.195854 0.511061\nvt 0.870248 0.106211\nvt 0.891185 0.115921\nvt 0.614926 0.957753\nvt 0.621384 0.955385\nvt 0.619055 0.980353\nvt 0.621386 0.974814\nvt 0.926248 0.524461\nvt 0.055827 0.953851\nvt 0.058585 0.950401\nvt 0.058585 0.954924\nvt 0.773867 0.313184\nvt 0.771425 0.313184\nvt 0.772080 0.310700\nvt 0.448657 0.772656\nvt 0.443334 0.778113\nvt 0.495649 0.265430\nvt 0.444619 0.238522\nvt 0.452340 0.230181\nvt 0.233566 0.478136\nvt 0.404692 0.017795\nvt 0.605130 0.074275\nvt 0.103789 0.642170\nvt 0.105041 0.629449\nvt 0.423403 0.728755\nvt 0.901029 0.115488\nvt 0.918561 0.107133\nvt 0.930803 0.114153\nvt 0.041902 0.999088\nvt 0.038508 0.990022\nvt 0.041902 0.988746\nvt 0.188646 0.623243\nvt 0.192268 0.602308\nvt 0.569651 0.255594\nvt 0.527483 0.263022\nvt 0.898552 0.129902\nvt 0.987741 0.481641\nvt 0.994638 0.481631\nvt 0.993591 0.491493\nvt 0.935625 0.167028\nvt 0.138611 0.656169\nvt 0.457574 0.732328\nvt 0.892511 0.164845\nvt 0.952531 0.882117\nvt 0.479980 0.754221\nvt 0.468600 0.763065\nvt 0.540728 0.229437\nvt 0.933250 0.635674\nvt 0.546504 0.179408\nvt 0.449379 0.946278\nvt 0.524664 0.109934\nvt 0.939584 0.633950\nvt 0.940697 0.614505\nvt 0.509047 0.167919\nvt 0.500987 0.247143\nvt 0.506504 0.254107\nvt 0.881402 0.842637\nvt 0.943621 0.593855\nvt 0.877989 0.851905\nvt 0.975389 0.865209\nvt 0.940792 0.679450\nvt 0.538364 0.214559\nvt 0.888155 0.826087\nvt 0.903880 0.834556\nvt 0.472863 0.633045\nvt 0.521133 0.421907\nvt 0.513048 0.197405\nvt 0.029087 0.905042\nvt 0.939415 0.653781\nvt 0.000507 0.912828\nvt 0.487236 0.405425\nvt 0.490817 0.397007\nvt 0.485594 0.639064\nvt 0.003585 0.903578\nvt 0.176453 0.387574\nvt 0.229175 0.383490\nvt 0.346449 0.101234\nvt 0.329656 0.042795\nvt 0.688458 0.009171\nvt 0.322154 0.250564\nvt 0.307288 0.144961\nvt 0.310771 0.103199\nvt 0.776628 0.422136\nvt 0.711407 0.330406\nvt 0.669474 0.007976\nvt 0.681062 0.008972\nvt 0.698295 0.009026\nvt 0.765445 0.492052\nvt 0.766071 0.502495\nvt 0.750438 0.499210\nvt 0.759547 0.515256\nvt 0.997766 0.071969\nvt 0.991351 0.067249\nvt 0.997766 0.053476\nvt 0.305415 0.209134\nvt 0.310500 0.237395\nvt 0.279297 0.654117\nvt 0.289121 0.666807\nvt 0.273733 0.667654\nvt 0.323366 0.264239\nvt 0.289402 0.655788\nvt 0.306663 0.268517\nvt 0.315559 0.266207\nvt 0.742511 0.555833\nvt 0.287747 0.681679\nvt 0.279502 0.683326\nvt 0.217279 0.347001\nvt 0.305814 0.261694\nvt 0.714358 0.584973\nvt 0.454517 0.912444\nvt 0.491284 0.030508\nvt 0.524928 0.651260\nvt 0.522869 0.644902\nvt 0.524587 0.644266\nvt 0.998769 0.496629\nvt 0.965491 0.498967\nvt 0.963519 0.496485\nvt 0.965491 0.494525\nvt 0.460940 0.900916\nvt 0.524928 0.632841\nvt 0.759540 0.922630\nvt 0.756458 0.910733\nvt 0.759348 0.904843\nvt 0.473168 0.929563\nvt 0.517276 0.891082\nvt 0.524812 0.856464\nvt 0.048126 0.997404\nvt 0.043943 0.993355\nvt 0.048126 0.988746\nvt 0.302092 0.871421\nvt 0.307436 0.865838\nvt 0.303531 0.865608\nvt 0.547356 0.164765\nvt 0.572697 0.216804\nvt 0.578146 0.221336\nvt 0.935316 0.207569\nvt 0.936534 0.196912\nvt 0.909239 0.172319\nvt 0.872205 0.911677\nvt 0.898287 0.919674\nvt 0.142681 0.953845\nvt 0.888088 0.012947\nvt 0.490043 0.812140\nvt 0.980220 0.373922\nvt 0.986871 0.368177\nvt 0.502826 0.841875\nvt 0.833671 0.313189\nvt 0.999532 0.879778\nvt 0.996769 0.875593\nvt 0.999601 0.870753\nvt 0.472486 0.703272\nvt 0.905178 0.891430\nvt 0.985907 0.852659\nvt 0.547817 0.884627\nvt 0.939617 0.638052\nvt 0.559884 0.904158\nvt 0.529677 0.868063\nvt 0.550380 0.867105\nvt 0.943491 0.629905\nvt 0.506572 0.851605\nvt 0.061670 0.986798\nvt 0.518201 0.986902\nvt 0.508150 0.981900\nvt 0.517662 0.981932\nvt 0.509882 0.792029\nvt 0.511114 0.785468\nvt 0.505994 0.984975\nvt 0.575035 0.077235\nvt 0.598804 0.205703\nvt 0.845120 0.919610\nvt 0.832526 0.930796\nvt 0.504604 0.603624\nvt 0.494156 0.607343\nvt 0.677265 0.222891\nvt 0.962620 0.640161\nvt 0.964607 0.652963\nvt 0.935681 0.100614\nvt 0.586714 0.086596\nvt 0.930858 0.090882\nvt 0.676771 0.286325\nvt 0.617513 0.274948\nvt 0.917809 0.096631\nvt 0.919906 0.094048\nvt 0.925912 0.079243\nvt 0.924136 0.081687\nvt 0.511114 0.863033\nvt 0.996640 0.359687\nvt 0.996640 0.366923\nvt 0.993623 0.360067\nvt 0.386013 0.962108\nvt 0.400543 0.998407\nvt 0.398171 0.994244\nvt 0.400543 0.992799\nvt 0.866211 0.309935\nvt 0.868971 0.308047\nvt 0.868971 0.312873\nvt 0.702317 0.981151\nvt 0.698159 0.968823\nvt 0.702317 0.964682\nvt 0.642148 0.243823\nvt 0.626549 0.242141\nvt 0.645579 0.236802\nvt 0.799260 0.941151\nvt 0.795060 0.932771\nvt 0.921419 0.083368\nvt 0.821185 0.911813\nvt 0.820598 0.956329\nvt 0.823120 0.948592\nvt 0.683427 0.299288\nvt 0.818742 0.924777\nvt 0.968848 0.931530\nvt 0.512969 0.553946\nvt 0.513026 0.547497\nvt 0.511644 0.543283\nvt 0.123293 0.590538\nvt 0.133755 0.595203\nvt 0.131153 0.596536\nvt 0.416993 0.326585\nvt 0.418368 0.327914\nvt 0.891324 0.217282\nvt 0.886977 0.219201\nvt 0.423241 0.347585\nvt 0.420174 0.778665\nvt 0.718546 0.961112\nvt 0.720355 0.961473\nvt 0.953943 0.697325\nvt 0.252330 0.420396\nvt 0.416097 0.349819\nvt 0.427191 0.373906\nvt 0.296337 0.384687\nvt 0.296289 0.411560\nvt 0.291503 0.396360\nvt 0.415368 0.352663\nvt 0.411392 0.353370\nvt 0.288491 0.730624\nvt 0.402169 0.343027\nvt 0.423389 0.489826\nvt 0.962013 0.639930\nvt 0.956900 0.477814\nvt 0.974884 0.971220\nvt 0.977049 0.965033\nvt 0.977220 0.957310\nvt 0.958693 0.993928\nvt 0.721663 0.898170\nvt 0.683963 0.311681\nvt 0.686706 0.310097\nvt 0.686706 0.313119\nvt 0.734348 0.926370\nvt 0.727251 0.891290\nvt 0.719285 0.897548\nvt 0.728254 0.881667\nvt 0.731867 0.865441\nvt 0.018542 0.995740\nvt 0.020991 0.992754\nvt 0.020991 0.998416\nvt 0.734442 0.870825\nvt 0.478418 0.981722\nvt 0.999233 0.098259\nvt 0.997884 0.090916\nvt 0.269139 0.972535\nvt 0.266824 0.972535\nvt 0.267685 0.968599\nvt 0.935749 0.214163\nvt 0.936000 0.221186\nvt 0.931077 0.219493\nvt 0.662857 0.952500\nvt 0.115322 0.923687\nvt 0.648932 0.951765\nvt 0.316228 0.896658\nvt 0.433922 0.862612\nvt 0.425720 0.837002\nvt 0.433943 0.466119\nvt 0.867564 0.960180\nvt 0.865313 0.952503\nvt 0.427537 0.476376\nvt 0.880322 0.964066\nvt 0.430262 0.496820\nvt 0.293725 0.919347\nvt 0.003114 0.997408\nvt 0.000000 0.990873\nvt 0.003114 0.989544\nvt 0.596531 0.308320\nvt 0.596531 0.313193\nvt 0.591740 0.309815\nvt 0.961712 0.608786\nvt 0.941546 0.991852\nvt 0.941546 0.996490\nvt 0.938719 0.995894\nvt 0.524287 0.847399\nvt 0.311023 0.902723\nvt 0.993127 0.203662\nvt 0.997874 0.216928\nvt 0.715355 0.853091\nvt 0.643881 0.936611\nvt 0.702386 0.877171\nvt 0.663212 0.945172\nvt 0.885185 0.986125\nvt 0.868793 0.984364\nvt 0.865653 0.981139\nvt 0.872191 0.985372\nvt 0.866425 0.978352\nvt 0.144655 0.914634\nvt 0.878048 0.965373\nvt 0.977974 0.496593\nvt 0.975708 0.493965\nvt 0.977886 0.493023\nvt 0.325174 0.905718\nvt 0.322741 0.901943\nvt 0.851237 0.586637\nvt 0.847884 0.590608\nvt 0.844625 0.583941\nvt 0.643827 0.949432\nvt 0.303294 0.914872\nvt 0.301572 0.912345\nvt 0.301344 0.925243\nvt 0.986213 0.980987\nvt 0.990026 0.976668\nvt 0.474620 0.453104\nvt 0.879761 0.614074\nvt 0.919947 0.998573\nvt 0.916419 0.994238\nvt 0.880830 0.611479\nvt 0.991620 0.694833\nvt 0.989530 0.689952\nvt 0.994896 0.690188\nvt 0.487420 0.480212\nvt 0.663437 0.932689\nvt 0.324488 0.908462\nvt 0.324701 0.919338\nvt 0.224956 0.990072\nvt 0.224956 0.996061\nvt 0.221694 0.991543\nvt 0.498380 0.490466\nvt 0.475460 0.485312\nvt 0.756902 0.966953\nvt 0.759920 0.964667\nvt 0.756453 0.972059\nvt 0.478019 0.486109\nvt 0.997011 0.685555\nvt 0.003196 0.989544\nvt 0.961357 0.442478\nvt 0.963604 0.428207\nvt 0.963200 0.439564\nvt 0.498753 0.645475\nvt 0.467880 0.425299\nvt 0.473336 0.399438\nvt 0.480059 0.395301\nvt 0.483434 0.396467\nvt 0.969185 0.991691\nvt 0.969185 0.998236\nvt 0.966638 0.996033\nvt 0.479547 0.392205\nvt 0.468487 0.651103\nvt 0.957948 0.952196\nvt 0.956096 0.957240\nvt 0.956558 0.944170\nvt 0.958228 0.945089\nvt 0.958228 0.962949\nvt 0.995552 0.665899\nvt 0.999353 0.661089\nvt 0.999353 0.676666\nvt 0.829112 0.277433\nvt 0.829132 0.304311\nvt 0.825558 0.293936\nvt 0.998554 0.053119\nvt 0.995027 0.047299\nvt 0.998554 0.043017\nvt 0.895620 0.603569\nvt 0.478406 0.467923\nvt 0.995335 0.902503\nvt 0.996049 0.883980\nvt 0.930479 0.606745\nvt 0.446794 0.460398\nvt 0.463203 0.878407\nvt 0.439808 0.428119\nvt 0.438622 0.445560\nvt 0.458624 0.898959\nvt 0.471972 0.889271\nvt 0.919555 0.659055\nvt 0.916518 0.658957\nvt 0.918050 0.653476\nvt 0.941012 0.531290\nvt 0.834942 0.032447\nvt 0.946375 0.512572\nvt 0.935505 0.102414\nvt 0.936907 0.102233\nvt 0.936907 0.105297\nvt 0.954737 0.766544\nvt 0.206345 0.889811\nvt 0.484337 0.851146\nvt 0.471246 0.848946\nvt 0.907354 0.025142\nvt 0.486882 0.987300\nvt 0.103444 0.931537\nvt 0.517441 0.907787\nvt 0.524812 0.891082\nvt 0.256930 0.425697\nvt 0.074147 0.928460\nvt 0.255184 0.424267\nvt 0.068116 0.931953\nvt 0.273295 0.420695\nvt 0.260321 0.422037\nvt 0.542522 0.971106\nvt 0.545555 0.965941\nvt 0.939759 0.498967\nvt 0.837945 0.006677\nvt 0.506380 0.975251\nvt 0.509270 0.970036\nvt 0.936885 0.832637\nvt 0.938089 0.837907\nvt 0.188281 0.990992\nvt 0.189767 0.998050\nvt 0.187246 0.995167\nvt 0.927217 0.525350\nvt 0.989035 0.838148\nvt 0.982940 0.814257\nvt 0.989694 0.825545\nvt 0.945093 0.883980\nvt 0.980064 0.827846\nvt 0.387155 0.970745\nvt 0.921284 0.105297\nvt 0.919391 0.104057\nvt 0.921284 0.102248\nvt 0.384966 0.951762\nvt 0.998528 0.391602\nvt 0.999242 0.397353\nvt 0.997685 0.394216\nvt 0.522480 0.729515\nvt 0.921749 0.679674\nvt 0.932747 0.657092\nvt 0.203581 0.842214\nvt 0.206451 0.861729\nvt 0.977882 0.934254\nvt 0.725595 0.910549\nvt 0.290955 0.312659\nvt 0.104677 0.625253\nvn -0.9810 -0.0808 -0.1765\nvn -0.9809 -0.0810 -0.1768\nvn -0.9809 -0.0810 -0.1767\nvn 0.9960 -0.0832 0.0331\nvn 1.0000 0.0000 0.0000\nvn 0.9963 0.0676 -0.0523\nvn -0.9924 -0.0341 -0.1181\nvn -0.9904 0.0006 -0.1384\nvn -0.9832 0.0080 -0.1825\nvn -0.9848 -0.0088 -0.1737\nvn -0.9842 0.0017 -0.1768\nvn 0.9810 -0.0807 -0.1765\nvn 0.9809 -0.0809 -0.1767\nvn -0.9960 -0.0832 0.0331\nvn -1.0000 -0.0000 0.0000\nvn -0.9963 0.0676 -0.0523\nvn 0.9924 -0.0341 -0.1180\nvn 0.9904 0.0007 -0.1384\nvn 0.9832 0.0080 -0.1824\nvn 0.9843 0.0017 -0.1768\nvn 0.9848 -0.0088 -0.1736\nvn -0.3094 0.5070 -0.8045\nvn 0.1673 0.2057 -0.9642\nvn -0.5881 0.1546 -0.7939\nvn -0.2476 0.0092 -0.9688\nvn -0.9855 0.1633 -0.0452\nvn 0.0840 0.9735 -0.2127\nvn 0.7784 0.5996 -0.1860\nvn -0.9934 -0.0584 0.0985\nvn -0.7435 -0.0950 0.6620\nvn 0.3381 -0.0737 0.9382\nvn 0.1897 -0.5985 0.7784\nvn 0.7161 -0.2906 0.6347\nvn -0.9552 -0.2949 -0.0235\nvn -0.5920 -0.7223 0.3576\nvn -0.7367 -0.4847 0.4715\nvn -0.2295 -0.2915 -0.9286\nvn -0.3379 -0.2364 -0.9110\nvn 0.2251 0.1414 -0.9640\nvn -0.4168 -0.8945 -0.1616\nvn -0.7721 -0.3737 -0.5140\nvn 0.8674 -0.2651 -0.4212\nvn 0.9032 -0.2277 0.3639\nvn 0.5772 -0.7744 0.2592\nvn -0.6719 -0.6469 0.3606\nvn 0.4661 0.4289 0.7738\nvn 0.7651 0.2628 -0.5878\nvn 0.8558 0.5166 0.0259\nvn 0.9657 0.2597 -0.0003\nvn 0.9942 0.0954 0.0505\nvn -0.0275 0.7783 0.6273\nvn -0.2090 0.1645 0.9640\nvn -0.7691 0.5991 0.2224\nvn 0.5837 0.3220 -0.7454\nvn 0.0648 -0.0761 -0.9950\nvn 0.3034 0.0211 0.9526\nvn -0.2717 0.0111 0.9623\nvn 0.7824 0.0460 -0.6210\nvn -0.2173 -0.2248 0.9499\nvn 0.3692 -0.1352 -0.9195\nvn -0.1333 0.1538 0.9791\nvn 0.7893 0.3352 0.5144\nvn 0.6289 0.1994 0.7515\nvn 0.8645 0.0932 0.4940\nvn -0.6907 -0.0926 0.7172\nvn -0.8003 -0.2927 -0.5233\nvn -0.0364 -0.7959 -0.6043\nvn -0.7930 -0.0668 -0.6056\nvn -0.2063 0.7295 -0.6521\nvn 0.1137 0.1947 -0.9742\nvn -0.6806 0.3373 -0.6504\nvn -0.7609 -0.5835 0.2837\nvn -0.6265 -0.6605 -0.4137\nvn 0.2510 -0.9672 -0.0398\nvn 0.1058 0.0449 0.9934\nvn -0.0518 -0.5298 0.8465\nvn 0.6610 0.0810 0.7460\nvn -0.1158 0.2541 -0.9602\nvn 0.1961 -0.3288 -0.9238\nvn -0.2205 -0.5817 -0.7829\nvn -0.7837 0.1052 0.6122\nvn -0.4384 -0.6158 0.6547\nvn -0.7846 0.0164 0.6198\nvn -0.9293 0.0669 0.3632\nvn -0.9861 0.1074 -0.1270\nvn 0.7143 0.4212 0.5589\nvn 0.0153 0.8082 0.5887\nvn 0.3724 0.2614 0.8905\nvn -0.8072 0.5058 0.3044\nvn -0.5769 0.8151 0.0523\nvn -0.3007 0.2602 -0.9175\nvn -0.4984 0.0268 -0.8666\nvn -0.7122 0.1787 -0.6788\nvn -0.2970 0.2985 0.9070\nvn -0.2056 -0.9743 0.0922\nvn 0.7122 -0.5991 0.3658\nvn 0.3008 -0.5643 0.7688\nvn 0.8773 -0.4236 -0.2255\nvn -0.1098 -0.9463 -0.3042\nvn 0.7522 0.1724 -0.6359\nvn 0.7172 0.2677 -0.6434\nvn 0.9890 0.0966 0.1123\nvn 0.2151 0.0375 0.9759\nvn 0.8601 0.3950 -0.3228\nvn -0.8285 0.2021 0.5222\nvn -0.9971 0.0663 0.0365\nvn 0.9842 0.1726 0.0398\nvn -0.0726 0.2355 -0.9692\nvn -0.1780 -0.6509 0.7380\nvn -0.1590 -0.9868 -0.0319\nvn 0.9807 0.1740 0.0891\nvn 0.0728 0.1042 0.9919\nvn 0.6425 0.0466 0.7649\nvn 0.7605 -0.3007 -0.5755\nvn -0.4934 -0.0024 0.8698\nvn 0.4192 0.2816 -0.8631\nvn 0.4326 -0.4898 -0.7570\nvn 0.3405 -0.3683 -0.8651\nvn -0.8523 0.1558 -0.4994\nvn -0.5564 0.2425 -0.7947\nvn 0.4265 0.8714 -0.2423\nvn 0.8300 0.2541 0.4966\nvn 0.3705 0.2183 -0.9028\nvn -0.8162 0.0736 -0.5731\nvn -0.5191 0.1514 0.8412\nvn -0.4412 0.0401 0.8965\nvn -0.9593 0.1814 -0.2162\nvn -0.9071 0.2698 -0.3231\nvn -0.3165 0.0143 0.9485\nvn 0.4081 -0.9128 0.0129\nvn -0.1547 -0.9721 -0.1765\nvn 0.8588 -0.0426 0.5105\nvn -0.4664 -0.5829 0.6653\nvn -0.7055 -0.6844 0.1842\nvn 0.0375 -0.9849 -0.1688\nvn 0.2439 -0.9436 0.2238\nvn -0.1740 -0.7277 0.6635\nvn -0.1395 0.2440 -0.9597\nvn -0.0550 0.1987 -0.9785\nvn -0.6214 0.0779 -0.7796\nvn -0.8315 0.1602 0.5319\nvn -0.8102 -0.0334 0.5852\nvn -0.5436 -0.0109 0.8393\nvn -0.8791 0.0840 0.4691\nvn -0.9955 0.0951 -0.0053\nvn -0.5209 0.6197 -0.5870\nvn -0.7874 0.4324 0.4393\nvn -0.5638 0.7840 0.2599\nvn 0.3323 -0.9307 -0.1528\nvn 0.1960 -0.4722 -0.8594\nvn 0.2867 -0.4575 -0.8417\nvn 0.8124 -0.4241 -0.4002\nvn 0.4480 -0.3478 -0.8236\nvn 0.8358 0.2911 -0.4655\nvn 0.6679 0.0980 -0.7378\nvn 0.7365 0.5135 -0.4403\nvn 0.9592 0.2816 0.0232\nvn -0.0941 -0.4800 0.8722\nvn 0.2728 -0.5228 0.8077\nvn 0.2234 0.0603 0.9729\nvn 0.4244 0.2037 -0.8823\nvn -0.0833 -0.8947 -0.4389\nvn -0.1408 -0.9749 -0.1728\nvn 0.7820 -0.6164 0.0919\nvn 0.0105 -0.9666 0.2562\nvn 0.5666 -0.4393 0.6972\nvn 0.9888 0.1362 -0.0612\nvn 0.3556 0.0665 0.9323\nvn 0.6850 0.0066 0.7285\nvn 0.1114 0.8048 0.5830\nvn 0.1660 0.4329 0.8860\nvn 0.5064 0.8593 -0.0719\nvn -0.6173 0.2078 0.7588\nvn -0.6740 -0.6005 -0.4303\nvn -0.9901 0.0698 0.1217\nvn -0.2185 -0.5188 -0.8265\nvn 0.2170 0.1732 0.9607\nvn 0.7908 0.1492 0.5937\nvn -0.3116 0.0598 0.9483\nvn 0.9505 0.2098 0.2290\nvn -0.8848 0.1512 -0.4407\nvn 0.0580 -0.9968 -0.0542\nvn 0.2728 -0.9584 0.0843\nvn -0.1841 0.0256 0.9826\nvn -0.6661 0.0996 -0.7392\nvn -0.9192 0.0850 -0.3844\nvn 0.2976 0.1976 -0.9340\nvn 0.2666 0.1890 -0.9451\nvn -0.9862 0.1507 -0.0682\nvn -0.9340 0.2851 -0.2154\nvn -0.7605 0.1528 -0.6310\nvn -0.4109 0.1370 0.9013\nvn -0.2696 0.3494 -0.8974\nvn -0.4897 0.1852 -0.8520\nvn 0.9781 -0.0011 0.2083\nvn -0.2989 -0.9434 0.1436\nvn -0.6906 0.2025 -0.6943\nvn 0.2617 0.5576 -0.7878\nvn 0.5607 0.2668 -0.7839\nvn -0.1093 0.2407 -0.9644\nvn 0.2694 0.0006 -0.9630\nvn 0.9834 0.1793 -0.0294\nvn -0.1569 0.9817 -0.1083\nvn -0.7730 0.5908 -0.2309\nvn 0.6878 -0.0334 0.7251\nvn 0.9885 -0.0759 0.1311\nvn -0.3419 -0.0846 0.9359\nvn -0.6715 -0.1475 0.7261\nvn -0.2085 -0.5867 0.7825\nvn 0.9519 -0.3044 -0.0347\nvn 0.7973 -0.3979 0.4539\nvn 0.5610 -0.6895 0.4581\nvn 0.3391 -0.3352 -0.8790\nvn -0.2616 0.1339 -0.9558\nvn 0.2738 -0.1663 -0.9473\nvn 0.3554 -0.9316 -0.0766\nvn 0.6845 -0.5207 -0.5103\nvn -0.8930 -0.2643 -0.3642\nvn -0.5871 -0.7631 0.2702\nvn -0.8957 -0.2424 0.3729\nvn 0.5652 -0.6716 0.4790\nvn -0.4789 0.3956 0.7837\nvn -0.6479 0.2996 -0.7003\nvn -0.9423 0.3231 -0.0872\nvn -0.8772 0.4769 0.0563\nvn -0.9881 0.1084 0.1091\nvn 0.0198 0.7796 0.6260\nvn 0.1428 0.1691 0.9752\nvn 0.8444 0.4842 0.2292\nvn -0.0620 -0.0891 -0.9941\nvn 0.2438 -0.0567 0.9682\nvn -0.2453 0.1087 0.9633\nvn -0.7908 0.0484 -0.6101\nvn 0.2278 -0.2651 0.9369\nvn -0.3349 -0.1930 -0.9223\nvn 0.1004 0.1767 0.9791\nvn -0.7398 0.3937 0.5457\nvn -0.8894 0.1942 0.4137\nvn -0.5960 0.0429 0.8018\nvn 0.6876 -0.0852 0.7211\nvn 0.8033 -0.2754 -0.5281\nvn 0.0206 -0.8025 -0.5963\nvn -0.7035 0.3118 -0.6387\nvn 0.8606 0.0021 -0.5093\nvn 0.7233 -0.6178 0.3087\nvn -0.2604 -0.9651 -0.0262\nvn 0.5413 -0.6874 -0.4842\nvn -0.0860 0.0361 0.9956\nvn -0.6553 0.0948 0.7494\nvn 0.0177 -0.4994 0.8662\nvn 0.0714 0.2551 -0.9643\nvn 0.2743 -0.4793 -0.8337\nvn -0.2547 -0.3287 -0.9094\nvn 0.7692 0.0814 0.6338\nvn 0.3426 -0.6542 0.6742\nvn 0.7827 0.0170 0.6221\nvn 0.9916 0.0705 -0.1087\nvn 0.9289 0.0781 0.3619\nvn -0.7158 0.5401 0.4427\nvn -0.4778 0.2844 0.8311\nvn 0.0469 0.7551 0.6539\nvn 0.4427 0.5020 -0.7430\nvn 0.5010 0.8651 -0.0243\nvn 0.8117 0.5067 0.2906\nvn 0.2817 0.2296 -0.9316\nvn 0.6019 0.2523 -0.7577\nvn 0.4978 0.0656 -0.8648\nvn -0.6680 0.1685 -0.7248\nvn -0.9816 0.1843 0.0493\nvn -0.8036 0.4739 -0.3600\nvn 0.2224 0.2501 0.9424\nvn 0.2019 -0.9757 0.0850\nvn -0.3018 -0.5650 0.7679\nvn -0.7249 -0.5976 0.3427\nvn -0.8785 -0.4225 -0.2232\nvn 0.0789 -0.9334 -0.3499\nvn -0.6999 0.1877 -0.6891\nvn -0.9986 0.0182 0.0487\nvn -0.2418 0.0413 0.9694\nvn -0.5321 0.7903 -0.3039\nvn 0.0359 0.1607 -0.9864\nvn 0.8362 0.2156 0.5043\nvn 0.9980 0.0496 -0.0380\nvn -0.9921 0.1248 -0.0163\nvn 0.0935 0.2192 -0.9712\nvn 0.1161 -0.9925 -0.0389\nvn 0.2053 -0.7284 0.6536\nvn -0.1203 0.1388 0.9830\nvn -0.6685 0.0556 0.7417\nvn -0.7205 -0.3323 -0.6086\nvn 0.5139 -0.0531 0.8562\nvn -0.4040 0.2936 -0.8663\nvn -0.3500 -0.4035 -0.8454\nvn -0.3518 -0.3927 -0.8497\nvn 0.8663 0.1591 -0.4735\nvn 0.5682 0.2427 -0.7863\nvn -0.8701 0.1102 0.4805\nvn -0.3403 0.2132 -0.9158\nvn 0.7274 0.0652 -0.6831\nvn 0.4912 0.1657 0.8551\nvn 0.3364 0.0312 0.9412\nvn 0.9662 0.1651 -0.1979\nvn 0.9100 0.2589 -0.3238\nvn 0.2873 0.0345 0.9572\nvn -0.4751 -0.8780 0.0582\nvn 0.1850 -0.9758 -0.1168\nvn -0.9013 -0.0079 0.4330\nvn 0.4499 -0.6072 0.6549\nvn -0.0309 -0.9842 -0.1742\nvn 0.7155 -0.6931 0.0878\nvn -0.3322 -0.9131 0.2365\nvn 0.2066 -0.6825 0.7010\nvn 0.1002 0.2500 -0.9630\nvn 0.6489 0.1444 -0.7471\nvn 0.1086 0.1674 -0.9799\nvn 0.8563 0.1410 0.4969\nvn 0.5227 -0.0042 0.8525\nvn 0.8143 0.0006 0.5804\nvn 0.9981 0.0589 0.0166\nvn 0.8753 0.1091 0.4711\nvn 0.5146 0.6251 -0.5869\nvn 0.5084 0.8434 0.1740\nvn 0.7897 0.4274 0.4400\nvn -0.3116 -0.9314 -0.1880\nvn -0.2940 -0.4394 -0.8488\nvn -0.1784 -0.3998 -0.8991\nvn -0.5720 0.1676 -0.8029\nvn -0.9748 0.2230 -0.0014\nvn -0.7154 0.5447 -0.4377\nvn -0.4068 0.2351 -0.8827\nvn -0.6325 -0.3528 -0.6895\nvn -0.8688 0.1934 -0.4558\nvn 0.0573 -0.5377 0.8412\nvn -0.1699 0.0429 0.9845\nvn -0.3239 -0.4503 0.8321\nvn 0.1094 -0.9025 -0.4165\nvn 0.1857 -0.9522 -0.2426\nvn -0.5909 -0.8042 0.0647\nvn -0.0013 -0.9651 0.2620\nvn -0.5732 -0.4495 0.6851\nvn -0.9945 0.0384 -0.0974\nvn -0.3848 0.0582 0.9212\nvn -0.7493 0.0345 0.6614\nvn -0.0452 0.8277 0.5593\nvn -0.5087 0.8583 -0.0670\nvn -0.2840 0.4206 0.8617\nvn 0.6132 0.1999 0.7642\nvn 0.6511 -0.5645 -0.5073\nvn 0.9922 0.0600 0.1089\nvn 0.2972 -0.4384 -0.8482\nvn -0.2413 0.2127 0.9468\nvn -0.7707 0.1017 0.6290\nvn 0.2937 0.0608 0.9539\nvn -0.9305 -0.3543 -0.0934\nvn -0.9232 0.2334 0.3054\nvn 0.8816 0.1317 -0.4532\nvn -0.0360 -0.9973 -0.0644\nvn -0.2551 -0.9664 0.0318\nvn 0.2267 0.0020 0.9740\nvn 0.6447 0.1128 -0.7561\nvn 0.9408 -0.0025 -0.3390\nvn -0.2203 0.1973 -0.9553\nvn -0.2397 0.1856 -0.9530\nvn 0.9887 0.1383 -0.0575\nvn 0.9429 0.2643 -0.2029\nvn 0.8111 0.1237 -0.5717\nvn 0.4001 0.1536 0.9035\nvn 0.2402 0.3006 -0.9230\nvn 0.4445 0.2590 -0.8575\nvn -0.9695 0.0937 0.2267\nvn 0.3336 -0.9383 0.0907\nvn 0.6413 0.0812 -0.7630\nvn 0.2849 0.8868 0.3640\nvn -0.7580 0.4919 0.4283\nvn -0.2841 0.2348 0.9296\nvn -0.1619 0.3584 0.9194\nvn 0.3542 0.7518 0.5562\nvn -0.1875 0.7803 -0.5967\nvn 0.1620 0.9848 0.0624\nvn 0.1898 0.6491 -0.7366\nvn -0.6749 0.2970 -0.6755\nvn -0.1679 0.2968 -0.9401\nvn -0.1667 -0.1053 -0.9804\nvn 0.6732 -0.4333 0.5992\nvn 0.1669 -0.0977 0.9811\nvn 0.2545 -0.3562 0.8991\nvn 0.7688 -0.2108 -0.6037\nvn 0.5380 0.4118 -0.7355\nvn 0.7989 0.5520 -0.2387\nvn 0.7166 -0.4151 0.5606\nvn 0.2986 -0.3259 0.8970\nvn 0.1771 -0.5505 0.8159\nvn 0.4856 0.1102 0.8672\nvn 0.6193 0.6598 0.4256\nvn -0.0609 0.9742 0.2174\nvn -0.5360 -0.1368 0.8331\nvn -0.9926 -0.0658 0.1020\nvn -0.9971 -0.0729 -0.0203\nvn -0.1251 -0.2454 -0.9613\nvn -0.7479 -0.0654 -0.6605\nvn -0.5174 -0.3672 -0.7730\nvn 0.8390 -0.3900 -0.3795\nvn 0.5300 -0.2585 -0.8077\nvn -0.9079 -0.1649 0.3854\nvn -0.6301 0.7759 0.0306\nvn 0.9796 -0.2008 -0.0080\nvn 0.9703 -0.1649 -0.1769\nvn -0.7774 -0.5569 0.2926\nvn -0.4964 -0.2470 -0.8322\nvn -0.5279 -0.8155 -0.2371\nvn -0.2225 -0.5130 0.8290\nvn 0.0732 -0.8161 0.5732\nvn 0.8054 -0.0238 -0.5922\nvn 0.5298 -0.5888 -0.6105\nvn -0.1004 0.1759 -0.9793\nvn -0.1603 0.5877 0.7930\nvn 0.2261 0.7069 -0.6702\nvn -0.3239 0.3672 -0.8719\nvn 0.7731 -0.5432 0.3275\nvn -0.7880 -0.1209 -0.6037\nvn -0.1777 -0.3488 0.9202\nvn -0.3922 0.9111 -0.1272\nvn -0.9413 0.1582 -0.2982\nvn 0.9239 -0.3010 0.2364\nvn 0.0746 0.9487 0.3072\nvn -0.9207 -0.0620 -0.3854\nvn -0.7851 0.2081 -0.5833\nvn 0.9600 -0.2755 -0.0493\nvn -0.4505 0.1431 -0.8813\nvn 0.2484 0.2393 -0.9386\nvn 0.1299 -0.0257 -0.9912\nvn -0.0417 0.1625 -0.9858\nvn 0.2950 0.0055 -0.9555\nvn -0.7631 0.1388 -0.6312\nvn -0.8165 -0.5464 0.1864\nvn -0.8810 -0.2952 0.3699\nvn -0.7946 0.1098 0.5972\nvn -0.7285 0.0954 0.6784\nvn -0.1140 -0.1837 0.9764\nvn -0.1655 -0.2943 0.9413\nvn -0.2588 0.6200 -0.7407\nvn 0.3428 -0.9334 0.1059\nvn 0.9651 0.1356 0.2240\nvn -0.3453 0.8889 0.3010\nvn -0.4279 -0.7254 -0.5392\nvn -0.7501 -0.6568 -0.0771\nvn -0.0411 0.2645 -0.9635\nvn 0.1319 0.0993 -0.9863\nvn -0.6772 0.2092 -0.7054\nvn -0.4146 -0.0274 -0.9096\nvn -0.5418 0.7899 -0.2873\nvn -0.7626 0.4805 0.4331\nvn 0.2160 0.8698 0.4436\nvn 0.9750 -0.1538 0.1601\nvn 0.9182 -0.0790 -0.3882\nvn 0.7514 0.2053 -0.6270\nvn 0.0597 0.1057 0.9926\nvn 0.5594 0.4315 0.7077\nvn -0.1634 0.9666 0.1973\nvn 0.9175 -0.3369 0.2113\nvn 0.9614 -0.0960 -0.2579\nvn 0.8269 -0.0810 -0.5565\nvn 0.2646 0.9633 0.0445\nvn 0.8118 0.5578 0.1728\nvn -0.5757 -0.6579 0.4855\nvn -0.9283 -0.2318 0.2906\nvn -0.9225 -0.2192 -0.3176\nvn 0.5958 -0.4681 0.6526\nvn 0.1515 -0.4639 0.8729\nvn 0.1517 -0.5920 0.7916\nvn -0.4191 -0.7030 0.5746\nvn 0.1085 -0.8343 0.5405\nvn -0.0318 -0.2153 -0.9760\nvn -1.0000 0.0034 -0.0002\nvn -0.0811 0.3233 -0.9428\nvn -0.2957 0.9247 0.2396\nvn -0.4993 0.2715 0.8228\nvn -0.3348 0.1502 0.9302\nvn 0.5562 -0.4964 0.6665\nvn 0.8627 0.4843 -0.1456\nvn 0.0435 0.7440 -0.6667\nvn -0.9452 0.0332 -0.3249\nvn -0.6297 0.0346 -0.7761\nvn 0.6557 -0.6209 -0.4295\nvn -0.3824 -0.3147 0.8688\nvn -0.6654 -0.2888 0.6883\nvn -0.1585 -0.4679 0.8695\nvn 0.8304 -0.3173 0.4580\nvn 0.7991 -0.3232 0.5070\nvn 0.4800 0.3131 -0.8195\nvn 0.4879 0.1533 -0.8593\nvn 0.4468 0.7354 -0.5094\nvn 0.5611 0.0356 -0.8270\nvn 0.4765 0.7643 0.4345\nvn -0.4232 0.3901 0.8178\nvn -0.3485 0.9282 -0.1302\nvn 0.3379 -0.9304 0.1417\nvn -0.3334 -0.5187 0.7873\nvn -0.8598 0.1020 -0.5004\nvn -0.6508 0.2463 -0.7182\nvn -0.9347 -0.0487 0.3521\nvn -0.0219 0.2646 -0.9641\nvn 0.3607 0.7443 -0.5621\nvn -0.8979 0.0054 -0.4401\nvn -0.2742 0.1931 -0.9421\nvn -0.2828 -0.1793 -0.9423\nvn 0.6756 -0.1459 -0.7227\nvn 0.4616 -0.7723 -0.4365\nvn -0.1497 0.3042 -0.9408\nvn -0.7946 0.2714 -0.5431\nvn -0.4357 0.5034 -0.7461\nvn 0.2497 0.5982 0.7614\nvn 0.5713 0.2559 0.7798\nvn 0.8182 0.5660 0.1006\nvn 0.9412 -0.0544 -0.3334\nvn 0.4149 0.0362 -0.9091\nvn -0.9701 -0.2115 0.1189\nvn -0.6318 -0.7239 0.2771\nvn -0.6864 -0.2789 0.6717\nvn 0.8213 -0.4624 0.3341\nvn 0.3569 -0.3242 0.8761\nvn 0.2297 -0.8450 0.4830\nvn 0.4942 0.8527 -0.1694\nvn 0.4870 -0.2879 0.8246\nvn 0.0594 0.1136 0.9918\nvn -0.5362 0.8229 0.1878\nvn 0.4208 0.1843 -0.8882\nvn -0.3285 -0.2280 0.9166\nvn -0.0340 -0.4614 0.8865\nvn -0.9816 0.1610 0.1031\nvn 0.8216 0.1207 -0.5571\nvn -0.5932 0.6086 0.5270\nvn -0.8408 0.2893 0.4575\nvn -0.4367 -0.7586 -0.4835\nvn -0.8016 0.0338 0.5969\nvn 0.9828 -0.1517 0.1052\nvn 0.8140 -0.2205 0.5374\nvn 0.9608 0.1180 0.2510\nvn -0.3047 0.6374 -0.7077\nvn 0.8611 0.2837 -0.4220\nvn 0.2553 0.3873 -0.8859\nvn -0.2670 0.8969 0.3525\nvn 0.3619 0.2790 0.8895\nvn 0.7460 0.4693 0.4726\nvn -0.2607 0.7860 0.5606\nvn 0.1397 0.4101 0.9013\nvn 0.1191 0.8630 -0.4909\nvn -0.1512 0.6727 -0.7243\nvn -0.1620 0.9850 0.0602\nvn 0.6297 0.3423 -0.6973\nvn 0.1972 -0.1507 -0.9687\nvn 0.1435 0.2369 -0.9609\nvn -0.7190 -0.3398 0.6062\nvn -0.2653 -0.4087 0.8732\nvn -0.1566 -0.0926 0.9833\nvn 0.5531 -0.0331 0.8324\nvn 0.9890 -0.1460 0.0238\nvn 0.9894 -0.0487 0.1366\nvn 0.5698 -0.8013 -0.1820\nvn 0.5345 -0.2861 -0.7953\nvn 0.7617 -0.5700 0.3081\nvn -0.6723 -0.2212 -0.7065\nvn -0.8297 0.5133 -0.2193\nvn -0.6502 0.4395 -0.6197\nvn -0.6299 -0.3388 0.6989\nvn -0.2229 -0.6196 0.7526\nvn -0.2780 -0.3415 0.8978\nvn -0.4993 0.1059 0.8599\nvn 0.1134 0.9651 0.2360\nvn -0.6113 0.6807 0.4038\nvn 0.0951 -0.2895 -0.9524\nvn 0.4610 -0.2859 -0.8401\nvn 0.7367 -0.0514 -0.6743\nvn -0.8384 -0.3904 -0.3804\nvn -0.6487 -0.1640 -0.7432\nvn 0.9269 -0.1384 0.3489\nvn 0.7132 0.6998 0.0400\nvn -0.9275 -0.2177 -0.3040\nvn -0.9740 -0.2096 0.0859\nvn -0.8260 -0.0329 -0.5627\nvn 0.2066 0.1591 -0.9654\nvn -0.4576 -0.5946 -0.6611\nvn 0.1693 0.5765 0.7994\nvn -0.2364 0.6876 -0.6865\nvn 0.3162 0.3700 -0.8736\nvn -0.7792 -0.4477 0.4386\nvn 0.7870 -0.0336 -0.6160\nvn 0.1543 -0.3575 0.9211\nvn 0.3883 0.9129 -0.1259\nvn 0.9345 0.1411 -0.3267\nvn -0.8886 -0.4273 0.1665\nvn -0.0788 0.9525 0.2941\nvn 0.7661 0.2307 -0.5999\nvn 0.9257 -0.0788 -0.3700\nvn -0.9514 -0.3077 -0.0079\nvn 0.2174 0.3447 -0.9132\nvn -0.3174 0.2048 -0.9259\nvn 0.0476 0.1281 -0.9906\nvn -0.1434 -0.0238 -0.9894\nvn 0.8507 -0.4791 0.2163\nvn 0.1808 -0.5122 0.8396\nvn 0.0682 -0.7795 0.6227\nvn -0.3032 0.0097 -0.9529\nvn 0.7313 0.2151 -0.6472\nvn 0.8693 -0.3091 0.3857\nvn 0.8141 0.0820 0.5749\nvn 0.0949 -0.1265 0.9874\nvn 0.1758 -0.2533 0.9513\nvn 0.1867 0.5915 -0.7844\nvn -0.2207 -0.9675 0.1234\nvn -0.9631 0.1264 0.2377\nvn 0.3462 0.8880 0.3025\nvn 0.0747 -0.1675 -0.9830\nvn 0.1243 0.3263 -0.9371\nvn 0.5322 -0.6961 -0.4819\nvn -0.1459 0.0882 -0.9854\nvn 0.4430 0.0995 -0.8910\nvn 0.6910 0.2754 -0.6684\nvn -0.9792 -0.1414 -0.1452\nvn -0.8140 0.5773 0.0642\nvn -0.8419 0.3759 -0.3872\nvn 0.6311 0.7313 -0.2586\nvn -0.1856 0.8964 0.4025\nvn 0.7615 0.4722 0.4441\nvn -0.9745 -0.1555 0.1616\nvn -0.7645 0.2619 -0.5890\nvn -0.8156 0.2105 -0.5389\nvn -0.0658 0.1083 0.9919\nvn 0.2468 0.9475 0.2034\nvn -0.6424 0.4562 0.6157\nvn -0.2273 0.9738 -0.0023\nvn 0.6025 -0.5752 0.5533\nvn 0.9184 -0.3096 -0.2465\nvn 0.9536 -0.1451 0.2640\nvn -0.5638 -0.3356 0.7546\nvn -0.1795 -0.5934 0.7846\nvn -0.1558 -0.4700 0.8688\nvn -0.7949 0.1256 -0.5936\nvn -0.6297 -0.5891 -0.5064\nvn 0.4658 -0.6971 0.5451\nvn -0.1591 -0.7850 0.5988\nvn 0.7482 -0.6611 -0.0560\nvn 0.9994 -0.0131 -0.0313\nvn 0.0607 0.3117 -0.9482\nvn 0.3228 0.9147 0.2430\nvn 0.3642 0.1366 0.9212\nvn 0.4938 0.2674 0.8274\nvn -0.6019 -0.4223 0.6778\nvn -0.0071 0.7256 -0.6881\nvn 0.9433 0.1468 -0.2976\nvn 0.5436 0.1286 -0.8295\nvn 0.4604 -0.3664 0.8086\nvn 0.1836 -0.4170 0.8902\nvn 0.6430 -0.3583 0.6768\nvn -0.9022 -0.2394 0.3589\nvn -0.5387 0.1494 -0.8292\nvn -0.4072 0.2254 -0.8851\nvn -0.4345 0.7303 -0.5272\nvn -0.4853 0.1148 -0.8668\nvn 0.8120 0.1446 -0.5655\nvn 0.8199 0.0631 -0.5690\nvn -0.4557 0.8016 0.3869\nvn 0.3398 0.3173 0.8853\nvn 0.3426 0.9294 -0.1373\nvn -0.8168 -0.3354 0.4693\nvn -0.8789 -0.4542 0.1455\nvn 0.3295 -0.5160 0.7907\nvn 0.6145 0.2716 -0.7407\nvn 0.9504 -0.1207 0.2866\nvn -0.0543 -0.9922 0.1121\nvn 0.0033 0.1928 -0.9812\nvn -0.3709 0.7328 -0.5705\nvn 0.8964 0.0237 -0.4427\nvn 0.2683 -0.1719 -0.9479\nvn 0.2604 0.1841 -0.9478\nvn -0.4354 -0.7981 -0.4164\nvn -0.7221 -0.1468 -0.6760\nvn 0.1845 0.2517 -0.9500\nvn 0.3593 0.5540 -0.7510\nvn 0.8192 0.2847 -0.4978\nvn -0.3223 0.5230 0.7890\nvn -0.6646 0.7307 -0.1562\nvn -0.6245 0.1789 0.7603\nvn -0.9448 -0.0661 -0.3210\nvn -0.4143 0.1430 -0.8988\nvn 0.9764 -0.2148 0.0229\nvn 0.6587 -0.2967 0.6914\nvn 0.6334 -0.7227 0.2766\nvn -0.8202 -0.3689 0.4373\nvn -0.2220 -0.8351 0.5034\nvn -0.3876 -0.3178 0.8653\nvn 0.4753 0.8481 0.2340\nvn -0.4764 -0.2877 0.8308\nvn -0.0427 0.0721 0.9965\nvn -0.4964 0.1029 -0.8619\nvn 0.3253 -0.2356 0.9158\nvn 0.0342 -0.4613 0.8866\nvn 0.9822 0.1591 0.0998\nvn -0.8317 0.1132 -0.5436\nvn 0.8556 0.1815 0.4848\nvn 0.6013 0.6062 0.5205\nvn 0.4335 -0.7445 -0.5077\nvn 0.8180 -0.0645 0.5715\nvn 0.2686 0.6886 -0.6736\nvn -0.9793 -0.1425 0.1435\nvn -0.7765 -0.3493 0.5244\nvn -0.9505 0.1697 0.2601\nvn -0.2083 0.3298 -0.9208\nvn -0.8618 0.3536 -0.3637\nvn -0.9185 0.2242 -0.3258\nvn -0.9145 0.3338 -0.2285\nvn -0.5540 0.3457 -0.7573\nvn -0.8732 0.2429 0.4226\nvn -0.9464 0.1028 0.3061\nvn -0.5839 -0.0321 0.8112\nvn -0.1604 -0.8206 0.5485\nvn -0.6478 -0.7020 -0.2959\nvn 0.1888 -0.9359 -0.2974\nvn -0.6549 -0.7392 -0.1572\nvn -0.5745 -0.7316 -0.3669\nvn 0.2448 -0.9460 -0.2125\nvn -0.0163 -0.0347 -0.9993\nvn 0.3092 -0.7811 -0.5425\nvn -0.4979 -0.4074 -0.7656\nvn -0.8874 0.4426 0.1291\nvn -0.9938 0.1095 0.0189\nvn 0.4698 0.1416 -0.8714\nvn 0.0352 0.1339 -0.9904\nvn 0.1979 0.2051 -0.9585\nvn -0.1371 -0.0316 0.9901\nvn -0.3262 0.0467 0.9441\nvn -0.7360 -0.0487 0.6752\nvn -0.0589 -0.9737 -0.2201\nvn 0.5796 -0.7875 -0.2095\nvn 0.3994 -0.9162 0.0332\nvn 0.2119 -0.0419 0.9764\nvn 0.3625 0.0786 0.9287\nvn 0.6683 0.0176 0.7437\nvn 0.9013 0.0766 0.4264\nvn -0.0529 -0.8112 0.5824\nvn 0.6815 -0.3966 0.6151\nvn 0.2483 -0.1041 0.9631\nvn 0.7113 0.0232 0.7025\nvn 0.3484 -0.8995 -0.2636\nvn 0.0933 -0.7849 -0.6126\nvn 0.8594 0.3470 0.3755\nvn 0.7252 0.5811 -0.3692\nvn 0.8026 0.4918 -0.3376\nvn -0.5896 0.4975 -0.6362\nvn 0.5360 0.5914 -0.6025\nvn -0.4155 0.2156 -0.8837\nvn 0.1343 0.4982 -0.8566\nvn -0.5083 0.6650 -0.5472\nvn 0.3530 0.5763 -0.7371\nvn 0.0296 -0.9778 -0.2074\nvn 0.0760 -0.9351 -0.3460\nvn -0.1745 -0.9637 -0.2018\nvn 0.1373 -0.9587 -0.2490\nvn 0.1916 -0.6747 -0.7127\nvn -0.2022 -0.9271 -0.3157\nvn 0.9656 0.2026 0.1630\nvn 0.9446 0.0911 0.3152\nvn 0.9843 0.1360 -0.1128\nvn 0.2650 -0.9247 -0.2734\nvn -0.6965 0.5920 -0.4056\nvn -0.8901 0.3222 0.3223\nvn -0.9559 0.1567 -0.2484\nvn -0.9894 0.0246 0.1431\nvn 0.1974 0.4803 0.8546\nvn -0.2183 0.8687 0.4446\nvn 0.0044 1.0000 -0.0013\nvn -0.9349 -0.2756 -0.2238\nvn -0.3060 0.9507 0.0496\nvn -0.6634 0.4184 0.6204\nvn 0.2683 0.3807 0.8849\nvn 0.1352 -0.8389 0.5273\nvn 0.6135 0.2563 -0.7470\nvn -0.1021 -0.2963 0.9496\nvn -0.2083 0.3663 -0.9069\nvn 0.2064 0.3020 -0.9307\nvn -0.1460 0.4004 -0.9046\nvn -0.2228 0.2728 0.9359\nvn 0.3548 0.9340 0.0425\nvn 0.9391 0.3276 -0.1039\nvn -0.8664 -0.3702 0.3351\nvn 0.7486 -0.6085 -0.2634\nvn 0.7099 0.1371 -0.6908\nvn 0.9846 -0.0502 -0.1672\nvn -0.5916 0.4642 0.6592\nvn -0.6885 0.2139 -0.6929\nvn 0.1552 0.0695 -0.9854\nvn 0.7772 0.1899 -0.6000\nvn 0.8373 0.4380 0.3272\nvn 0.8365 0.3199 0.4448\nvn 0.2317 0.2042 0.9511\nvn 0.9323 -0.2606 0.2506\nvn 0.5551 0.6560 0.5113\nvn -0.2713 0.3206 0.9075\nvn 0.3707 0.9282 0.0306\nvn -0.3387 0.8736 0.3495\nvn 0.8615 0.5020 0.0759\nvn -0.3094 0.8221 -0.4779\nvn 0.7959 -0.5985 -0.0909\nvn 0.5756 -0.2113 -0.7899\nvn -0.7954 0.1095 -0.5961\nvn -0.5320 0.3045 -0.7901\nvn -0.3332 0.2449 -0.9105\nvn -0.9182 0.1637 -0.3608\nvn -0.8521 0.0721 0.5184\nvn -0.6557 0.1110 0.7468\nvn -0.9690 0.2315 0.0865\nvn -0.9970 0.0760 0.0129\nvn -0.9926 0.0934 -0.0772\nvn 0.6846 0.1919 -0.7032\nvn 0.6029 0.2438 -0.7597\nvn 0.9602 0.2459 -0.1324\nvn -0.7768 -0.5367 0.3294\nvn -0.7459 -0.6451 -0.1657\nvn 0.0109 -0.9404 0.3398\nvn -0.1807 -0.8816 -0.4361\nvn 0.3524 -0.9256 -0.1378\nvn 0.1364 -0.9421 0.3063\nvn -0.0112 -0.7698 0.6381\nvn -0.6300 -0.7435 -0.2241\nvn -0.3792 -0.6784 -0.6292\nvn 0.2296 -0.9732 0.0112\nvn -0.8034 0.5954 0.0055\nvn 0.9443 0.2596 0.2024\nvn 0.8941 0.3790 -0.2386\nvn 0.1538 0.1000 -0.9830\nvn 0.5218 0.2716 -0.8087\nvn -0.2962 -0.0478 0.9539\nvn -0.0090 -0.0637 0.9979\nvn -0.0802 -0.0340 0.9962\nvn 0.3121 0.0530 0.9486\nvn 0.6775 0.0581 0.7332\nvn 0.7977 0.2306 0.5572\nvn -0.3489 0.3037 -0.8866\nvn -0.8858 0.0255 -0.4634\nvn 0.5331 -0.1029 0.8398\nvn -0.0245 -0.9795 -0.2001\nvn 0.6987 -0.7137 0.0487\nvn 0.4391 -0.8951 0.0779\nvn 0.2327 0.1316 0.9636\nvn 0.2094 -0.0924 0.9734\nvn 0.4034 -0.5878 0.7013\nvn -0.8859 0.0683 0.4588\nvn -0.3610 -0.1535 0.9198\nvn -0.3648 -0.4879 0.7930\nvn -0.7238 0.5664 0.3941\nvn -0.3601 0.3619 0.8598\nvn -0.5351 0.4290 0.7277\nvn 0.5581 -0.8219 -0.1140\nvn -0.5186 -0.7812 -0.3475\nvn 0.4414 -0.7962 -0.4139\nvn 0.0394 -0.3655 -0.9300\nvn 0.2774 -0.3912 -0.8775\nvn -0.9850 0.1280 -0.1160\nvn -0.4190 -0.1901 -0.8879\nvn 0.8888 -0.4138 0.1969\nvn 0.7491 0.4622 0.4745\nvn 0.6566 0.6850 -0.3156\nvn 0.7737 0.6319 0.0446\nvn -0.0077 0.1945 0.9809\nvn -0.4244 0.1742 0.8886\nvn 0.0244 0.1307 -0.9911\nvn 0.3190 0.3397 -0.8848\nvn -0.3936 0.4730 -0.7883\nvn 0.2916 0.7053 -0.6461\nvn -0.8305 0.5483 -0.0983\nvn 0.1132 -0.9885 -0.0998\nvn 0.1509 -0.9640 -0.2191\nvn -0.0577 -0.9817 -0.1816\nvn 0.2441 -0.4849 -0.8398\nvn -0.0279 -0.9624 -0.2703\nvn 0.1550 -0.9753 -0.1572\nvn 0.9056 0.2845 0.3146\nvn 0.8256 0.0659 0.5604\nvn 0.9952 0.0976 0.0108\nvn 0.2355 -0.9664 -0.1031\nvn 0.8089 0.3804 0.4484\nvn 0.2587 0.5868 0.7673\nvn 0.6850 0.4091 0.6029\nvn -0.6040 0.5193 -0.6045\nvn -0.9436 0.3162 0.0980\nvn -0.0060 -0.8949 0.4463\nvn 0.8131 0.1884 -0.5509\nvn 0.9421 -0.3315 -0.0496\nvn 0.5607 -0.5442 -0.6240\nvn -0.2883 0.9571 -0.0281\nvn -0.0011 0.4578 0.8890\nvn 0.0294 0.3026 -0.9527\nvn -0.2471 0.3833 -0.8900\nvn 0.4107 0.4640 -0.7849\nvn -0.3642 -0.0877 0.9272\nvn 0.3040 0.3010 -0.9039\nvn 0.0136 0.3463 -0.9380\nvn 0.2291 0.8071 -0.5441\nvn 0.1888 0.9818 0.0227\nvn -0.0657 -0.3682 0.9274\nvn -0.9482 0.1297 -0.2898\nvn 0.8369 -0.1894 0.5135\nvn -0.1125 0.8920 0.4378\nvn -0.1818 0.9833 0.0114\nvn 0.3908 0.2077 -0.8967\nvn 0.0964 0.1865 -0.9777\nvn 0.7498 0.6617 0.0009\nvn -0.3938 0.9169 0.0648\nvn 0.2258 0.8842 0.4089\nvn 0.1771 0.4644 0.8677\nvn 0.7024 0.6599 0.2669\nvn -0.7110 0.4831 0.5109\nvn -0.1345 0.6204 -0.7726\nvn -0.8285 0.0858 -0.5534\nvn -0.6671 0.2257 -0.7100\nvn -0.2545 0.1325 -0.9579\nvn -0.3684 0.2715 -0.8891\nvn -0.9168 -0.0046 -0.3994\nvn -0.8870 0.4256 -0.1791\nvn -0.9323 0.3468 0.1030\nvn -0.8295 0.0614 0.5551\nvn -0.8026 0.0918 0.5894\nvn -0.9870 0.1605 -0.0003\nvn -0.9876 0.0435 0.1507\nvn 0.7309 0.1898 -0.6556\nvn 0.7136 0.2689 -0.6469\nvn 0.9558 0.2876 -0.0619\nvn -0.6527 -0.7350 0.1838\nvn -0.7570 -0.5885 -0.2840\nvn 0.0410 -0.9383 -0.3433\nvn 0.9713 0.1602 0.1759\nvn 0.9265 0.3662 -0.0871\nvn 0.3180 0.1317 -0.9389\nvn 0.3923 0.2231 -0.8923\nvn -0.2472 0.7294 -0.6378\nvn -0.7279 0.5213 -0.4455\nvn 0.3861 0.1081 0.9161\nvn 0.6897 0.2402 0.6831\nvn 0.8122 0.2692 0.5175\nvn 0.9268 0.0961 0.3631\nvn -0.9105 -0.0597 0.4091\nvn 0.4206 -0.1217 0.8990\nvn 0.8140 0.1848 0.5507\nvn -0.0630 -0.9783 -0.1972\nvn 0.5826 -0.8096 -0.0716\nvn 0.3939 -0.9126 0.1092\nvn 0.1372 0.1205 -0.9832\nvn -0.0528 0.1715 -0.9838\nvn -0.1500 -0.0487 0.9875\nvn -0.0422 -0.0644 0.9970\nvn 0.2749 0.0567 0.9598\nvn -0.5396 0.1413 -0.8300\nvn -0.1992 -0.5633 -0.8019\nvn -0.7744 -0.4701 -0.4235\nvn -0.7561 -0.5453 -0.3618\nvn 0.1493 -0.9718 -0.1824\nvn 0.5221 -0.4756 0.7080\nvn -0.0439 -0.9216 0.3857\nvn 0.8301 -0.5304 0.1721\nvn -0.4475 -0.5584 0.6986\nvn 0.0014 -0.9429 0.3331\nvn -0.1251 -0.5192 0.8454\nvn 0.3008 -0.8866 0.3514\nvn -0.1346 -0.9310 0.3393\nvn 0.8905 0.4532 -0.0411\nvn 0.5999 0.2794 -0.7497\nvn -0.4111 -0.9069 -0.0922\nvn 0.2972 -0.9546 0.0190\nvn -0.4523 0.1649 0.8765\nvn -0.4714 -0.0669 0.8794\nvn -0.4879 0.3021 0.8189\nvn -0.0061 0.3457 0.9383\nvn -0.7013 0.4042 0.5872\nvn -0.2260 0.9741 0.0029\nvn 0.1584 0.9803 0.1183\nvn 0.0515 -0.9933 -0.1032\nvn 0.0634 -0.9978 -0.0181\nvn 0.0934 -0.9762 -0.1956\nvn -0.2142 -0.9568 -0.1966\nvn -0.0722 -0.9709 -0.2283\nvn 0.4292 0.3287 -0.8412\nvn -0.2251 0.5964 -0.7705\nvn 0.4983 0.5422 -0.6765\nvn 0.1922 0.0122 -0.9813\nvn 0.3367 -0.7480 -0.5720\nvn 0.1436 -0.5192 -0.8425\nvn 0.3647 -0.9270 -0.0872\nvn -0.0160 0.3453 -0.9383\nvn 0.0114 0.3653 0.9308\nvn -0.1314 -0.6843 0.7172\nvn 0.2043 0.3967 0.8949\nvn -0.4745 0.0328 0.8796\nvn -0.6793 -0.0524 0.7319\nvn -0.2195 -0.0977 0.9707\nvn -0.3988 0.9167 -0.0263\nvn 0.3592 0.2719 -0.8928\nvn 0.0679 0.2830 -0.9567\nvn 0.2760 0.6937 -0.6653\nvn 0.0513 0.4237 -0.9044\nvn -0.7643 0.4378 -0.4734\nvn -0.1887 0.3856 -0.9032\nvn 0.8158 0.3488 0.4612\nvn 0.5534 0.6450 0.5270\nvn 0.6760 0.3627 0.6414\nvn -0.0069 -0.2982 0.9545\nvn 0.2573 0.9421 0.2152\nvn 0.3744 -0.8993 -0.2261\nvn -0.4769 0.8442 0.2448\nvn -0.0803 0.1785 -0.9807\nvn -0.8667 0.0590 -0.4952\nvn 0.7917 -0.6107 -0.0158\nvn 0.8406 0.1545 -0.5191\nvn 0.9955 -0.0481 0.0820\nvn -0.9133 0.2018 0.3536\nvn -0.9972 0.0546 -0.0507\nvn -0.9747 0.1119 -0.1937\nvn 0.3926 0.0311 -0.9192\nvn 0.1477 -0.6806 -0.7176\nvn -0.9248 0.3532 -0.1413\nvn 0.8040 0.5881 0.0875\nvn 0.9097 -0.3838 0.1586\nvn 0.3464 -0.8522 -0.3922\nvn -0.8446 -0.3570 -0.3991\nvn -0.7136 0.4829 -0.5075\nvn 0.0675 0.9472 0.3135\nvn 0.9663 0.2394 0.0944\nvn 0.7295 0.6155 0.2983\nvn 0.4671 0.8172 0.3375\nvn -0.7347 0.4220 0.5312\nvn 0.8187 -0.0929 0.5666\nvn 0.7664 0.5636 -0.3082\nvn 0.8032 -0.2973 -0.5162\nvn -0.1979 -0.9335 -0.2989\nvn 0.4636 0.6203 -0.6327\nvn 0.9384 0.2510 -0.2374\nvn 0.5424 0.2871 -0.7896\nvn 0.9088 0.3190 -0.2689\nvn 0.8587 0.2445 0.4504\nvn 0.5294 0.0577 0.8464\nvn 0.9332 0.0613 0.3542\nvn 0.6991 -0.6590 0.2773\nvn -0.2932 -0.9280 -0.2299\nvn 0.6325 -0.7140 -0.3002\nvn 0.6691 -0.7285 -0.1470\nvn -0.2576 -0.9504 -0.1746\nvn 0.5559 -0.7304 -0.3969\nvn 0.0213 -0.0267 -0.9994\nvn 0.4599 -0.3053 -0.8338\nvn -0.2893 -0.8061 -0.5162\nvn 0.8456 0.5332 -0.0239\nvn 0.9943 0.1065 0.0080\nvn 0.8162 0.4102 0.4069\nvn -0.9911 0.1048 -0.0824\nvn -0.9172 0.3854 -0.1005\nvn -0.7452 0.1865 -0.6403\nvn -0.4477 0.2646 -0.8541\nvn -0.2221 0.1465 -0.9639\nvn 0.1226 0.2370 -0.9638\nvn 0.6355 -0.0619 0.7696\nvn 0.0529 -0.9738 -0.2212\nvn -0.3102 -0.9478 0.0741\nvn -0.6471 -0.7523 -0.1242\nvn 0.3143 -0.0112 0.9493\nvn -0.2831 -0.0030 0.9591\nvn -0.2140 -0.0425 0.9759\nvn -0.8445 0.2851 0.4534\nvn -0.6909 0.0031 0.7229\nvn -0.0199 -0.8444 0.5353\nvn -0.6089 -0.4084 0.6800\nvn -0.2081 -0.1636 0.9643\nvn -0.8341 0.0360 0.5504\nvn -0.7788 -0.5777 -0.2444\nvn -0.1140 -0.6348 -0.7642\nvn 0.0157 -0.9509 -0.3092\nvn -0.0928 -0.8091 -0.5804\nvn -0.8144 0.5713 -0.1022\nvn -0.6341 0.6516 -0.4163\nvn 0.7572 0.6393 0.1338\nvn -0.5691 0.4988 -0.6537\nvn 0.4606 0.5022 -0.7319\nvn 0.3625 0.2488 -0.8982\nvn -0.1378 0.5018 -0.8539\nvn -0.3118 0.6972 -0.6455\nvn 0.5419 0.6943 -0.4736\nvn 0.3340 0.3827 0.8614\nvn -0.0741 -0.9371 -0.3411\nvn -0.0179 -0.9718 -0.2350\nvn 0.2250 -0.9475 -0.2272\nvn 0.1861 -0.0146 0.9824\nvn 0.0824 -0.2901 0.9535\nvn -0.1141 -0.9681 -0.2229\nvn -0.1936 -0.9497 -0.2461\nvn -0.8521 0.3458 0.3930\nvn -0.7387 0.5546 0.3832\nvn 0.8191 0.4691 0.3301\nvn 0.7535 0.5622 -0.3407\nvn 0.9755 0.1285 -0.1784\nvn 0.9857 0.0134 0.1679\nvn -0.1961 0.5019 0.8424\nvn -0.0170 0.9997 -0.0164\nvn 0.2173 0.8805 0.4214\nvn 0.9371 -0.2814 -0.2065\nvn 0.2894 0.9512 0.1072\nvn -0.2330 0.4387 0.8679\nvn -0.1431 -0.8551 0.4983\nvn 0.2112 0.3703 -0.9046\nvn -0.2553 0.2458 -0.9351\nvn -0.2078 0.9775 0.0366\nvn 0.1919 0.2617 0.9459\nvn 0.1652 -0.7333 0.6596\nvn -0.9866 -0.0711 -0.1468\nvn -0.7011 0.1167 -0.7034\nvn 0.6715 0.2021 -0.7130\nvn -0.1962 0.0480 -0.9794\nvn -0.1775 0.1841 0.9667\nvn 0.3181 0.8460 0.4280\nvn -0.4144 0.8564 0.3081\nvn -0.9413 -0.2365 0.2408\nvn 0.2792 0.3170 0.9064\nvn -0.4039 0.3415 0.8487\nvn -0.8540 0.5186 0.0423\nvn 0.2885 0.8285 -0.4799\nvn -0.8244 -0.5626 0.0627\nvn -0.6034 -0.3546 -0.7143\nvn -0.9919 0.0774 0.1009\nvn 0.8571 0.1668 -0.4875\nvn 0.3334 0.2060 -0.9200\nvn 0.7951 0.2891 -0.5331\nvn 0.7814 -0.0118 0.6240\nvn 0.9913 0.1221 0.0496\nvn 0.6702 0.0966 0.7359\nvn 0.9971 0.0638 0.0404\nvn 0.9981 0.0292 -0.0543\nvn 0.7604 -0.5856 0.2808\nvn 0.0054 -0.9263 0.3768\nvn 0.7338 -0.6574 -0.1716\nvn -0.3506 -0.9283 -0.1241\nvn 0.1516 -0.8845 -0.4412\nvn -0.1446 -0.9311 0.3348\nvn 0.0662 -0.7457 0.6630\nvn 0.5359 -0.7741 -0.3371\nvn -0.2724 -0.9622 -0.0050\nvn 0.6112 -0.7032 -0.3632\nvn 0.3607 -0.6858 -0.6322\nvn 0.6695 0.7389 0.0766\nvn 0.9388 0.3115 -0.1472\nvn -0.9644 0.1770 0.1965\nvn -0.9080 0.3526 -0.2263\nvn -0.9842 0.1662 -0.0603\nvn -0.5826 0.2215 -0.7820\nvn -0.2143 0.1714 -0.9616\nvn -0.1353 0.1408 -0.9807\nvn -0.3090 -0.0335 0.9505\nvn -0.7468 0.2808 0.6029\nvn -0.7597 0.1099 0.6409\nvn 0.8843 0.1089 -0.4540\nvn 0.3642 0.2451 -0.8985\nvn -0.4842 -0.1174 0.8670\nvn -0.0308 -0.9867 -0.1595\nvn -0.4140 -0.9101 0.0162\nvn -0.6974 -0.7144 0.0570\nvn 0.3916 -0.0775 0.9169\nvn 0.1194 -0.0531 0.9914\nvn 0.0037 -0.0475 0.9989\nvn -0.2196 0.0898 0.9714\nvn -0.1884 -0.1633 0.9684\nvn -0.5409 -0.5385 0.6461\nvn 0.9124 0.0170 0.4089\nvn 0.3568 -0.0590 0.9323\nvn 0.4580 -0.4491 0.7672\nvn 0.6088 0.4096 0.6794\nvn 0.5107 0.4396 0.7389\nvn 0.2875 0.4123 0.8645\nvn -0.5570 -0.8234 -0.1085\nvn -0.4225 -0.8222 -0.3815\nvn -0.2675 -0.4055 -0.8741\nvn -0.0064 -0.3303 -0.9439\nvn 0.9843 0.1277 -0.1217\nvn 0.4249 -0.1944 -0.8841\nvn -0.8028 -0.5208 0.2904\nvn 0.8467 0.5288 -0.0600\nvn 0.2791 -0.0884 0.9562\nvn -0.0146 0.2352 0.9718\nvn 0.4068 0.1205 0.9056\nvn -0.2445 0.4458 -0.8611\nvn -0.6674 0.6562 -0.3520\nvn 0.2423 0.5032 -0.8295\nvn -0.1505 -0.9641 -0.2188\nvn -0.1033 -0.9874 -0.1198\nvn 0.0982 -0.9775 -0.1867\nvn -0.2430 -0.4706 -0.8482\nvn 0.0250 -0.9743 -0.2238\nvn -0.1063 -0.9781 -0.1792\nvn -0.9078 0.1750 0.3810\nvn -0.8816 0.0503 0.4693\nvn -0.2331 -0.9649 -0.1212\nvn -0.8082 0.4362 0.3957\nvn -0.6716 0.4147 0.6139\nvn -0.2069 0.5760 0.7908\nvn 0.0016 -0.8934 0.4493\nvn -0.0089 0.4955 0.8686\nvn 0.0134 0.9995 -0.0297\nvn -0.8002 0.2004 -0.5652\nvn -0.5265 -0.4282 -0.7344\nvn -0.9250 -0.3716 -0.0800\nvn 0.3405 0.9369 -0.0790\nvn -0.6490 0.2192 -0.7285\nvn 0.0107 0.3076 -0.9514\nvn -0.3972 0.3703 -0.8397\nvn 0.3509 0.4330 -0.8303\nvn 0.0122 0.3470 -0.9378\nvn -0.2970 0.3237 -0.8983\nvn -0.0706 0.9969 0.0335\nvn 0.0530 -0.3579 0.9323\nvn -0.3357 0.5897 0.7345\nvn -0.1448 0.9807 -0.1315\nvn 0.9268 0.0735 -0.3683\nvn -0.8341 -0.2876 0.4708\nvn -0.9967 0.0783 -0.0196\nvn 0.3508 0.9266 0.1355\nvn 0.7748 0.3773 -0.5073\nvn -0.3943 0.2026 -0.8964\nvn -0.0852 0.1568 -0.9839\nvn -0.0911 0.1842 -0.9787\nvn -0.8184 0.5592 -0.1326\nvn 0.8070 0.3482 0.4769\nvn 0.1925 0.1912 -0.9625\nvn 0.1660 0.9721 0.1656\nvn -0.8159 0.3937 0.4234\nvn 0.5847 0.5381 -0.6072\nvn -0.7751 0.3033 -0.5543\nvn -0.7355 0.6407 0.2203\nvn 0.6914 0.4672 0.5512\nvn -0.6388 0.7223 -0.2650\nvn 0.1130 0.6808 -0.7237\nvn 0.8268 0.0799 -0.5569\nvn 0.2332 0.0918 -0.9681\nvn 0.6486 0.2339 -0.7243\nvn 0.4023 0.1808 -0.8975\nvn 0.9288 -0.0149 -0.3703\nvn 0.9417 0.3341 -0.0404\nvn 0.8194 0.5454 -0.1765\nvn 0.7975 -0.0661 0.5997\nvn 0.9974 0.0696 -0.0160\nvn 0.8172 0.0802 0.5707\nvn 0.9725 0.0846 0.2172\nvn 0.7041 -0.6857 0.1845\nvn -0.0571 -0.9360 -0.3473\nvn 0.7383 -0.5752 -0.3521\nvn -0.9856 0.1644 0.0407\nvn -0.9244 0.3649 -0.1107\nvn -0.6743 0.2173 -0.7058\nvn -0.3853 0.2336 -0.8927\nvn -0.2696 0.1171 -0.9558\nvn 0.2306 0.7019 -0.6739\nvn 0.6764 0.5801 -0.4539\nvn -0.3793 -0.0264 0.9249\nvn -0.7909 0.3492 0.5025\nvn -0.6726 0.3891 0.6295\nvn -0.9252 0.2228 0.3073\nvn 0.9137 -0.1066 0.3922\nvn -0.7064 0.2307 0.6692\nvn -0.4088 -0.1333 0.9029\nvn 0.0037 -0.9858 -0.1678\nvn -0.4622 -0.8807 -0.1038\nvn -0.6389 -0.7683 0.0401\nvn 0.0325 0.1776 -0.9836\nvn -0.1059 0.1641 -0.9807\nvn 0.1267 -0.0516 0.9906\nvn -0.2573 0.1268 0.9580\nvn 0.0220 -0.0640 0.9977\nvn 0.1454 -0.9037 0.4028\nvn -0.3766 -0.4395 0.8155\nvn -0.5191 -0.7858 0.3362\nvn 0.4744 -0.4736 0.7421\nvn -0.0542 -0.9379 0.3427\nvn 0.1721 -0.5300 0.8303\nvn 0.1104 -0.8945 0.4333\nvn -0.3314 -0.9120 0.2418\nvn -0.8477 0.5225 0.0914\nvn -0.6562 0.2923 -0.6956\nvn 0.4734 -0.7471 -0.4666\nvn -0.3124 -0.9483 0.0566\nvn 0.4483 -0.0997 0.8883\nvn 0.4617 0.1511 0.8741\nvn 0.4904 0.3041 0.8167\nvn 0.7103 0.3811 0.5918\nvn 0.0123 0.3997 0.9166\nvn 0.2297 0.9724 0.0420\nvn -0.1980 0.9749 0.1021\nvn -0.0721 -0.9965 -0.0412\nvn -0.0569 -0.9932 -0.1013\nvn -0.0935 -0.9736 -0.2084\nvn 0.1818 -0.9734 -0.1398\nvn 0.0846 -0.9769 -0.1965\nvn -0.2795 0.4389 -0.8539\nvn -0.4621 0.4929 -0.7373\nvn 0.2043 0.6394 -0.7412\nvn -0.2712 -0.0276 -0.9621\nvn -0.2308 -0.7276 -0.6460\nvn -0.3294 -0.7775 -0.5358\nvn -0.3222 -0.9463 -0.0279\nvn -0.3218 -0.8971 0.3026\nvn 0.0096 0.3680 -0.9298\nvn 0.0585 0.3807 0.9229\nvn -0.1774 0.3993 0.8995\nvn 0.4533 0.0422 0.8904\nvn 0.2214 -0.0393 0.9744\nvn 0.6303 -0.1478 0.7622\nvn 0.4407 0.8951 -0.0680\nvn -0.0330 0.2739 -0.9612\nvn -0.3681 0.2723 -0.8890\nvn -0.8236 -0.3754 0.4252\nvn -0.2777 0.6815 -0.6771\nvn -0.0411 0.4203 -0.9064\nvn 0.1916 0.3147 -0.9297\nvn 0.7815 0.4172 -0.4639\nvn 0.8862 0.1080 -0.4505\nvn 0.7317 -0.4611 -0.5019\nvn -0.8161 0.4100 0.4074\nvn -0.6867 0.3645 0.6290\nvn -0.5855 0.6177 0.5250\nvn -0.3518 -0.9080 -0.2276\nvn 0.0456 -0.3410 0.9390\nvn -0.4680 0.6333 -0.6164\nvn -0.7952 0.6021 0.0710\nvn -0.1686 0.9493 0.2653\nvn -0.4773 -0.8437 -0.2459\nvn 0.4846 0.8401 0.2439\nvn 0.5081 0.1816 -0.8419\nvn -0.0536 0.2779 -0.9591\nvn -0.8054 -0.5834 -0.1049\nvn -0.9944 -0.0527 0.0921\nvn -0.8592 0.1832 -0.4778\nvn 0.8418 0.2833 0.4595\nvn 0.9608 0.1116 -0.2537\nvn 0.9945 0.1041 -0.0124\nvn -0.4066 0.0230 -0.9133\nvn -0.1238 -0.6740 -0.7283\nvn 0.9359 0.3104 -0.1668\nvn -0.9783 0.2008 -0.0506\nvn -0.8039 0.3123 -0.5062\nvn -0.9343 -0.3209 0.1549\nvn -0.3535 -0.8529 -0.3841\nvn 0.8496 -0.2566 -0.4608\nvn 0.4267 -0.4038 -0.8093\nvn 0.3681 -0.9150 -0.1653\nvn 0.6623 0.4242 -0.6176\nvn -0.0026 -0.1368 -0.9906\nvn -0.0883 0.9631 0.2541\nvn -0.9686 0.2169 0.1218\nvn -0.7744 0.5777 0.2581\nvn -0.5734 0.7869 0.2279\nvn 0.7291 0.4245 0.5368\nvn -0.8360 -0.1980 0.5118\nvn -0.7205 0.5101 -0.4698\nvn -0.7902 -0.1872 -0.5836\nvn 0.2221 0.9523 0.2091\nvn -0.6561 0.7387 -0.1544\nvn -0.7560 0.5205 0.3969\nvn 0.0274 0.9621 0.2712\nvn -0.5256 0.5922 -0.6107\nvn -0.8059 0.5914 -0.0295\nvn -0.9633 -0.2549 -0.0845\nvn -0.9525 -0.1909 -0.2372\nvn -0.5296 -0.5485 -0.6470\nvn -0.8646 -0.2937 0.4078\nvn -0.7295 -0.1099 0.6751\nvn 0.2682 0.8309 0.4876\nvn 0.2414 0.9459 0.2166\nvn -0.1798 0.9759 0.1238\nvn -0.1965 0.0208 -0.9803\nvn 0.0070 0.1534 -0.9881\nvn 0.3655 0.3069 -0.8787\nvn -0.7152 -0.0845 -0.6938\nvn -0.6183 0.1644 -0.7685\nvn 0.0995 0.2341 0.9671\nvn -0.3681 0.6535 0.6614\nvn 0.7542 0.3204 0.5732\nvn 0.5376 -0.1733 0.8252\nvn 0.0695 0.6564 0.7512\nvn -0.5014 0.3547 0.7892\nvn 0.5613 -0.2227 0.7971\nvn -0.0992 -0.1726 0.9800\nvn -0.9651 -0.1965 -0.1733\nvn -0.6937 0.7197 0.0285\nvn 0.2146 0.7837 -0.5829\nvn -0.0195 0.5655 -0.8245\nvn 0.3046 0.9484 -0.0885\nvn -0.8654 -0.2751 0.4187\nvn 0.7761 0.5606 0.2889\nvn 0.6275 -0.2124 0.7491\nvn 0.9468 -0.2338 0.2212\nvn 0.6347 -0.7688 0.0779\nvn -0.7572 -0.6526 -0.0298\nvn 0.8246 0.4104 -0.3893\nvn 0.9991 -0.0220 -0.0365\nvn 0.8548 -0.0924 -0.5107\nvn -0.5564 -0.7551 -0.3468\nvn -0.5937 -0.6199 0.5131\nvn 0.0004 0.9963 0.0855\nvn -0.0605 0.9814 0.1823\nvn -0.2702 0.9614 0.0523\nvn -0.1539 -0.1537 0.9760\nvn -0.4128 -0.1516 0.8981\nvn -0.5144 -0.3259 0.7932\nvn 0.3699 0.8141 -0.4477\nvn -0.2353 0.9674 0.0940\nvn -0.0469 0.9844 0.1694\nvn 0.1180 0.9758 0.1842\nvn -0.8743 -0.3135 -0.3705\nvn -0.2873 -0.3833 -0.8778\nvn -0.1738 0.2804 -0.9440\nvn -0.6439 -0.6347 0.4272\nvn 0.5263 -0.8138 0.2465\nvn 0.0864 -0.5804 0.8097\nvn -0.8415 -0.0565 -0.5373\nvn -0.9887 -0.1418 -0.0485\nvn -0.3343 -0.6374 0.6942\nvn 0.2378 -0.3568 0.9034\nvn -0.0880 -0.4868 0.8690\nvn -0.8447 -0.1584 0.5113\nvn 0.4949 0.0266 -0.8685\nvn -0.5166 -0.7002 0.4928\nvn -0.0757 -0.9133 -0.4002\nvn -0.2476 0.5314 0.8101\nvn 0.0846 0.0516 -0.9951\nvn 0.4691 0.1093 -0.8764\nvn 0.0583 -0.9671 -0.2476\nvn 0.1867 0.1483 -0.9712\nvn -0.4973 -0.1573 0.8532\nvn 0.9097 0.3702 0.1884\nvn 0.8725 0.0643 0.4844\nvn -0.8043 -0.4231 -0.4172\nvn -0.1362 0.1620 -0.9774\nvn -0.0502 -0.8778 -0.4764\nvn -0.4509 0.0238 -0.8922\nvn 0.1747 -0.5444 -0.8204\nvn 0.4569 0.3003 -0.8373\nvn -0.4761 -0.0524 -0.8778\nvn 0.4401 0.8945 0.0780\nvn -0.9793 -0.1254 -0.1588\nvn 0.9779 -0.1541 0.1413\nvn 0.9137 0.0325 -0.4051\nvn 0.8272 -0.1389 -0.5445\nvn 0.9457 -0.0462 -0.3218\nvn 0.6924 -0.1126 -0.7127\nvn 0.0802 0.0020 -0.9968\nvn 0.4717 0.0700 -0.8790\nvn -0.5507 -0.3887 -0.7387\nvn -0.0876 -0.5146 -0.8529\nvn -0.6330 -0.4376 -0.6386\nvn 0.9125 -0.1616 0.3759\nvn 0.8825 -0.1023 0.4590\nvn 0.3769 -0.3527 0.8565\nvn -0.1401 -0.3047 0.9421\nvn 0.9601 -0.2314 -0.1568\nvn 0.9459 -0.1198 0.3015\nvn 0.5094 -0.7520 -0.4183\nvn 0.4309 -0.6415 -0.6347\nvn 0.3932 -0.1856 -0.9005\nvn -0.8936 -0.1217 -0.4321\nvn -0.6095 -0.4828 0.6288\nvn 0.5936 -0.5301 0.6055\nvn 0.4364 -0.7659 0.4721\nvn -0.1939 -0.0329 -0.9805\nvn -0.6406 0.2436 -0.7282\nvn -0.7930 -0.1210 -0.5971\nvn 0.9423 -0.1490 0.2996\nvn 0.9559 -0.1700 0.2395\nvn 0.8561 -0.4988 0.1349\nvn 0.1476 0.9538 0.2615\nvn -0.7689 0.6391 -0.0197\nvn -0.8287 0.4301 0.3581\nvn -0.1020 0.7518 0.6515\nvn -0.1714 -0.0676 0.9829\nvn 0.0070 0.7851 0.6194\nvn 0.1649 0.9418 0.2930\nvn -0.4967 0.8294 -0.2559\nvn -0.4622 0.8240 0.3277\nvn -0.1932 0.1080 -0.9752\nvn -0.6042 -0.1658 -0.7794\nvn -0.4779 0.6283 -0.6139\nvn -0.9704 -0.2410 0.0135\nvn -0.8818 -0.3156 -0.3505\nvn 0.9643 -0.2344 -0.1230\nvn 0.8324 0.2507 -0.4943\nvn 0.9748 0.1126 0.1925\nvn 0.4629 0.1838 -0.8672\nvn 0.3093 0.1223 -0.9431\nvn -0.9846 -0.1503 -0.0895\nvn -0.8724 -0.0552 -0.4857\nvn -0.9479 -0.2910 0.1292\nvn -0.7463 -0.1471 0.6492\nvn -0.4572 -0.3873 0.8006\nvn 0.2516 0.2590 0.9325\nvn 0.2377 -0.1390 0.9613\nvn -0.1868 0.0317 0.9819\nvn 0.6912 -0.0471 0.7211\nvn 0.5403 -0.3101 0.7823\nvn -0.9466 -0.3203 0.0367\nvn -0.7601 -0.3402 0.5537\nvn -0.6934 -0.2380 0.6801\nvn 0.0315 0.1137 -0.9930\nvn 0.1682 0.4863 -0.8575\nvn 0.0696 0.0992 -0.9926\nvn -0.4110 -0.3224 -0.8527\nvn -0.0306 0.9591 0.2813\nvn -0.8811 0.4723 -0.0245\nvn -0.3830 0.0795 0.9203\nvn -0.0512 0.9775 0.2045\nvn -0.1668 0.9559 0.2417\nvn 0.6445 0.6778 0.3538\nvn 0.4597 0.8666 -0.1940\nvn 0.6319 0.6939 0.3453\nvn 0.8503 -0.2413 0.4677\nvn 0.5618 0.3428 0.7529\nvn 0.4055 -0.3202 0.8562\nvn 0.2914 0.8597 0.4195\nvn -0.3866 -0.7225 0.5733\nvn -0.3196 -0.6172 0.7190\nvn -0.3570 -0.6822 0.6381\nvn -0.9188 -0.3906 0.0577\nvn -0.8120 0.2084 -0.5452\nvn 0.3429 0.2733 -0.8987\nvn -0.2244 -0.1248 -0.9665\nvn 0.3695 0.1189 -0.9216\nvn -0.8430 -0.5227 0.1270\nvn 0.3137 -0.5090 -0.8016\nvn 0.5557 -0.8313 -0.0095\nvn -0.1693 -0.8980 -0.4062\nvn -0.0674 0.6155 0.7853\nvn -0.0966 0.9309 0.3523\nvn -0.1066 0.9563 0.2723\nvn -0.3411 0.9134 0.2221\nvn -0.0412 -0.3724 0.9272\nvn -0.3127 -0.3068 0.8989\nvn -0.0813 0.9742 0.2103\nvn -0.0808 0.7170 -0.6924\nvn 0.1195 0.9680 -0.2209\nvn 0.1156 0.3848 -0.9158\nvn -0.8621 -0.3200 -0.3929\nvn -0.9162 -0.3995 0.0311\nvn -0.9246 -0.1383 -0.3549\nvn -0.6962 -0.1737 -0.6965\nvn -0.3548 -0.7976 0.4878\nvn -0.1566 -0.6122 0.7751\nvn 0.0338 -0.4149 -0.9092\nvn -0.3304 -0.1035 -0.9382\nvn -0.0923 -0.0997 -0.9907\nvn 0.0448 -0.3915 0.9191\nvn 0.0867 -0.0085 0.9962\nvn -0.4009 -0.6618 0.6335\nvn -0.0578 -0.8305 0.5540\nvn -0.0367 0.0026 0.9993\nvn -0.2615 -0.0227 0.9649\nvn 0.8306 0.1009 -0.5476\nvn 0.3005 0.5612 -0.7712\nvn 0.3229 0.2818 -0.9035\nvn 0.0703 0.4236 -0.9031\nvn 0.1010 -0.6536 -0.7501\nvn 0.0328 0.1302 -0.9909\nvn 0.4147 0.1044 -0.9040\nvn 0.4668 -0.7078 0.5302\nvn 0.6326 0.0582 -0.7723\nvn 0.3573 -0.2491 -0.9002\nvn 0.1212 -0.9856 0.1180\nvn -0.8156 -0.5783 0.0191\nvn 0.7067 0.5380 -0.4595\nvn 0.8406 -0.0169 -0.5414\nvn 0.3942 0.1554 -0.9058\nvn 0.6240 0.1705 -0.7626\nvn 0.8510 0.0034 -0.5252\nvn -0.3391 -0.8127 -0.4738\nvn 0.2039 -0.9413 0.2690\nvn -0.6813 -0.6497 -0.3373\nvn 0.3329 -0.7687 0.5461\nvn 0.5104 -0.5801 -0.6348\nvn -0.1862 -0.1017 -0.9772\nvn 0.6607 0.0516 -0.7489\nvn 0.9895 -0.1381 -0.0419\nvn 0.4411 -0.5322 -0.7226\nvn -0.8977 0.3722 -0.2359\nvn 0.6361 -0.3209 0.7017\nvn 0.8082 -0.5870 0.0474\nvn 0.1264 0.7671 -0.6290\nvn 0.8138 0.4184 0.4034\nvn -0.0538 -0.9026 0.4270\nvn 0.9977 -0.0001 -0.0684\nvn 0.5156 -0.7923 0.3263\nvn 0.9325 0.3608 0.0153\nvn 0.9990 -0.0332 -0.0295\nvn 0.9277 0.0472 0.3703\nvn 0.1037 -0.4152 0.9038\nvn -0.5921 -0.0592 -0.8037\nvn 0.7840 -0.5882 0.1986\nvn -0.6873 -0.1596 -0.7086\nvn -0.2535 -0.3011 -0.9193\nvn -0.6477 0.1665 -0.7435\nvn -0.9321 -0.0080 0.3621\nvn -0.6152 -0.1797 0.7676\nvn -0.2843 0.0604 0.9568\nvn 0.7188 0.1464 0.6797\nvn 0.4306 -0.8934 -0.1281\nvn 0.9355 -0.1686 0.3106\nvn -0.3987 -0.5295 0.7488\nvn -0.0534 -0.1100 0.9925\nvn 0.2677 0.9378 0.2213\nvn -0.3499 0.9343 -0.0687\nvn -0.3580 0.9143 -0.1893\nvn -0.2233 0.2233 0.9488\nvn -0.0704 0.3425 0.9369\nvn 0.1045 0.8817 0.4601\nvn -0.1307 0.4019 -0.9063\nvn -0.7479 0.1923 -0.6354\nvn -0.0063 0.8781 -0.4784\nvn -0.2383 0.0629 -0.9691\nvn -0.5489 -0.2560 -0.7957\nvn 0.2869 0.5346 -0.7949\nvn 0.1487 0.0982 -0.9840\nvn 0.3962 0.0059 -0.9182\nvn -0.9174 -0.2714 -0.2911\nvn -0.9611 -0.1967 0.1937\nvn -0.9413 0.2276 -0.2493\nvn 0.3711 -0.4667 0.8028\nvn 0.3324 0.1753 0.9267\nvn 0.9562 -0.2830 -0.0745\nvn 0.7074 -0.2945 -0.6425\nvn 0.8933 0.1860 -0.4091\nvn -0.4306 -0.0271 0.9021\nvn -0.9866 -0.1617 0.0201\nvn 0.5616 0.6547 0.5060\nvn 0.6799 0.6285 0.3778\nvn -0.0105 0.9996 0.0260\nvn 0.2366 0.6570 0.7158\nvn -0.1935 0.6822 0.7051\nvn 0.2539 0.8685 0.4258\nvn 0.6752 0.6877 -0.2668\nvn -0.0779 0.9885 0.1298\nvn 0.3012 -0.1780 -0.9368\nvn 0.0847 0.3678 -0.9260\nvn 0.0124 0.2127 -0.9770\nvn -0.2020 0.3876 -0.8994\nvn 0.5589 -0.0622 0.8269\nvn 0.0923 -0.0335 0.9952\nvn 0.3908 -0.2320 0.8907\nvn 0.5143 -0.5042 -0.6938\nvn 0.8952 0.4280 0.1244\nvn -0.1652 -0.2455 -0.9552\nvn -0.9224 0.3801 -0.0688\nvn -0.4650 -0.2158 0.8586\nvn -0.8236 -0.1308 0.5519\nvn 0.8344 0.4337 0.3400\nvn -0.4640 0.7595 0.4558\nvn 0.3845 0.3394 -0.8584\nvn 0.6375 0.1190 0.7612\nvn 0.2292 0.2122 0.9500\nvn 0.0032 0.1216 -0.9926\nvn -0.7900 -0.5949 -0.1482\nvn -0.5241 -0.8327 0.1788\nvn -0.9612 -0.0119 -0.2755\nvn 0.6348 0.2171 -0.7415\nvn 0.0774 -0.4548 -0.8872\nvn -0.0447 0.9248 0.3779\nvn -0.0592 0.9851 0.1616\nvn -0.2288 0.9671 0.1110\nvn -0.0074 0.9996 -0.0285\nvn 0.0997 -0.1578 0.9824\nvn -0.0512 -0.1944 0.9796\nvn 0.0304 0.0792 0.9964\nvn 0.4933 -0.0646 -0.8675\nvn -0.1495 0.1812 -0.9720\nvn 0.3645 0.2746 -0.8898\nvn 0.6362 0.5059 0.5825\nvn 0.9538 0.1322 0.2699\nvn 0.1540 0.9840 -0.0890\nvn 0.1124 0.6609 -0.7420\nvn 0.3757 0.8395 0.3925\nvn 0.0258 -0.8914 -0.4525\nvn 0.1950 -0.7842 -0.5891\nvn -0.2247 0.2332 -0.9461\nvn -0.6400 -0.7323 0.2327\nvn 0.1103 -0.6632 0.7403\nvn 0.1762 -0.6224 0.7626\nvn -0.4445 -0.0764 -0.8925\nvn -0.7184 -0.2755 -0.6388\nvn -0.3191 -0.8320 0.4538\nvn -0.0697 -0.7725 0.6311\nvn 0.8593 0.0317 0.5105\nvn 0.7207 -0.1347 -0.6801\nvn -0.1131 0.1669 -0.9795\nvn -0.0582 -0.6100 0.7903\nvn 0.0327 -0.1153 0.9928\nvn 0.2342 0.9458 0.2250\nvn 0.5799 -0.8145 0.0169\nvn -0.0015 -0.8733 0.4873\nvn 0.2951 -0.9187 -0.2625\nvn 0.9282 -0.3691 0.0471\nvn 0.9682 0.2065 -0.1413\nvn -0.3089 -0.1280 -0.9424\nvn 0.1933 -0.8050 -0.5609\nvn 0.8400 -0.1228 -0.5285\nvn 0.7054 -0.2765 0.6527\nvn 0.6764 -0.7330 -0.0715\nvn -0.6541 0.3345 -0.6784\nvn -0.7190 0.0299 -0.6944\nvn -0.4311 -0.8375 -0.3358\nvn -0.8499 -0.1187 -0.5135\nvn -0.8197 -0.2493 -0.5157\nvn 0.0515 -0.8153 0.5768\nvn 0.9710 -0.0959 0.2191\nvn -0.3817 -0.3357 -0.8611\nvn -0.9073 0.1949 -0.3725\nvn -0.7104 0.6981 -0.0897\nvn 0.0555 0.8701 -0.4898\nvn 0.8791 -0.1528 0.4515\nvn 0.5452 -0.5423 -0.6392\nvn -0.1609 -0.9017 -0.4012\nvn 0.7675 0.4240 -0.4808\nvn -0.3652 0.9265 -0.0904\nvn 0.9562 -0.2378 -0.1705\nvn -0.9357 -0.1396 -0.3240\nvn -0.7314 -0.4769 0.4875\nvn -0.8594 -0.1526 -0.4880\nvn -0.9272 0.1553 -0.3409\nvn -0.1692 0.9767 0.1323\nvn 0.7022 0.5545 0.4466\nvn 0.6647 0.7303 -0.1573\nvn -0.2205 0.9594 0.1759\nvn 0.6870 0.7266 0.0019\nvn 0.5367 0.8261 -0.1717\nvn -0.5538 -0.0160 -0.8325\nvn -0.9154 0.1176 -0.3850\nvn -0.3778 0.2449 -0.8929\nvn 0.9228 -0.2694 -0.2753\nvn 0.4357 -0.6695 -0.6016\nvn 0.9655 -0.1927 -0.1751\nvn 0.9052 -0.2395 0.3511\nvn 0.8919 -0.2718 0.3615\nvn 0.5906 -0.1637 0.7902\nvn -0.2823 0.8261 0.4877\nvn 0.2313 0.9710 0.0600\nvn -0.2131 0.9567 0.1982\nvn -0.3900 0.9028 0.1813\nvn -0.1630 0.7334 -0.6599\nvn -0.5755 0.6298 -0.5216\nvn 0.1956 0.0021 -0.9807\nvn 0.1314 0.2256 -0.9653\nvn -0.1356 0.2895 0.9475\nvn 0.3572 0.6643 0.6566\nvn -0.6994 0.4259 0.5739\nvn -0.5634 -0.1150 0.8182\nvn -0.0516 0.6772 0.7340\nvn 0.4368 0.3351 0.8348\nvn -0.5373 -0.1555 0.8289\nvn 0.0248 -0.2319 0.9724\nvn 0.7430 -0.0435 -0.6679\nvn 0.9738 -0.1683 -0.1528\nvn 0.7614 -0.0829 -0.6429\nvn 0.6722 0.3917 -0.6283\nvn 0.3944 -0.0814 -0.9153\nvn -0.0355 0.6469 -0.7618\nvn -0.7947 0.5126 0.3250\nvn -0.8034 -0.1467 -0.5770\nvn -0.8254 -0.4217 0.3753\nvn -0.9330 -0.1783 0.3126\nvn -0.6252 -0.2153 0.7502\nvn -0.6060 -0.7954 -0.0100\nvn -0.9431 -0.2379 0.2322\nvn 0.7632 -0.6422 -0.0716\nvn -0.7018 0.2556 -0.6649\nvn -0.8175 -0.0649 -0.5722\nvn -0.9968 -0.0600 -0.0533\nvn -0.3310 -0.1670 -0.9287\nvn 0.2173 0.2620 -0.9403\nvn 0.5791 -0.7012 -0.4158\nvn 0.6029 -0.6048 0.5203\nvn 0.0009 0.9982 0.0601\nvn 0.0489 0.9776 0.2049\nvn 0.2268 0.9625 0.1486\nvn 0.1619 -0.0660 0.9846\nvn 0.5261 -0.3245 0.7861\nvn 0.4219 -0.1615 0.8921\nvn -0.0492 0.8240 -0.5644\nvn 0.1965 0.9804 0.0107\nvn -0.0081 0.9844 0.1759\nvn -0.1089 0.9760 0.1884\nvn 0.8926 -0.2917 -0.3439\nvn 0.3182 -0.3459 -0.8827\nvn 0.6388 -0.6212 0.4540\nvn -0.0582 -0.5687 0.8205\nvn -0.5712 -0.8068 0.1509\nvn 0.8442 -0.2074 -0.4943\nvn 0.8868 0.3534 -0.2977\nvn 0.9948 -0.0792 -0.0636\nvn 0.3102 -0.6622 0.6821\nvn 0.1130 -0.5040 0.8563\nvn -0.2151 -0.3367 0.9167\nvn 0.8720 -0.2602 0.4145\nvn 0.5162 -0.6922 0.5044\nvn 0.0739 -0.9094 -0.4094\nvn 0.2486 0.5125 0.8219\nvn -0.1465 0.0771 -0.9862\nvn -0.4746 0.0448 -0.8791\nvn -0.0495 -0.9691 -0.2417\nvn 0.4890 -0.1697 0.8556\nvn -0.8990 -0.0337 0.4366\nvn -0.8936 0.4466 0.0464\nvn 0.8034 -0.4462 -0.3944\nvn 0.1111 -0.8900 -0.4422\nvn 0.1368 0.1164 -0.9837\nvn 0.3447 0.0746 -0.9358\nvn -0.2454 0.2078 -0.9469\nvn -0.1654 -0.5614 -0.8109\nvn 0.9509 -0.2933 -0.0983\nvn -0.9799 -0.1491 0.1323\nvn -0.7716 -0.2605 -0.5804\nvn -0.9527 -0.0521 -0.2994\nvn -0.6777 -0.1255 -0.7245\nvn -0.0823 0.0378 -0.9959\nvn 0.5150 -0.5069 -0.6912\nvn 0.2874 -0.5122 -0.8094\nvn -0.3853 -0.3569 0.8510\nvn -0.8968 -0.1157 0.4271\nvn 0.1299 -0.3179 0.9392\nvn -0.9393 -0.2335 0.2515\nvn -0.6175 -0.6904 -0.3770\nvn -0.4999 -0.5608 -0.6600\nvn -0.4103 -0.0541 -0.9103\nvn 0.6254 -0.4860 0.6105\nvn 0.9149 -0.1771 -0.3628\nvn -0.4703 -0.7104 0.5237\nvn 0.1851 -0.0742 -0.9799\nvn 0.8041 -0.1404 -0.5777\nvn 0.6409 0.2457 -0.7272\nvn -0.9646 0.1020 0.2433\nvn -0.8878 -0.4452 0.1164\nvn -0.9572 -0.2446 0.1545\nvn -0.1803 0.9687 0.1707\nvn 0.7709 0.4325 0.4676\nvn 0.7718 0.6356 -0.0182\nvn 0.1046 0.7448 0.6591\nvn 0.0200 0.8071 0.5900\nvn 0.1834 -0.0822 0.9796\nvn -0.1961 0.9519 0.2353\nvn 0.4597 0.8265 0.3250\nvn 0.5851 0.7900 -0.1832\nvn 0.9702 -0.2419 0.0135\nvn 0.8959 -0.2758 -0.3484\nvn -0.9575 -0.2092 -0.1984\nvn -0.9719 0.0627 0.2271\nvn -0.8540 0.2888 -0.4327\nvn -0.4696 0.1859 -0.8631\nvn -0.3068 0.1223 -0.9439\nvn 0.9860 -0.1362 -0.0965\nvn 0.9023 -0.0285 -0.4301\nvn 0.9520 -0.2824 0.1181\nvn 0.7228 -0.0790 0.6865\nvn 0.4540 -0.3599 0.8151\nvn -0.3200 0.3186 0.8922\nvn 0.2047 0.0307 0.9783\nvn -0.2030 -0.0956 0.9745\nvn -0.7459 -0.0385 0.6649\nvn -0.5174 -0.3405 0.7851\nvn 0.9202 -0.3894 0.0404\nvn 0.7842 -0.2337 0.5749\nvn 0.6651 -0.3300 0.6699\nvn -0.9081 -0.1699 0.3827\nvn -0.4221 -0.4134 0.8068\nvn -0.4550 -0.0798 0.8869\nvn -0.0319 0.1194 -0.9923\nvn -0.1137 0.5099 -0.8527\nvn -0.0677 -0.0292 -0.9973\nvn 0.0285 0.9591 0.2816\nvn 0.8423 0.5384 -0.0255\nvn 0.2965 0.0812 0.9516\nvn 0.0801 0.9814 0.1746\nvn -0.6448 0.6779 0.3531\nvn 0.1753 0.9373 0.3013\nvn -0.3900 0.9013 -0.1887\nvn -0.6683 0.6878 0.2835\nvn -0.4385 0.3296 0.8361\nvn -0.2931 0.8595 0.4188\nvn 0.3435 -0.7529 0.5615\nvn 0.3835 -0.7015 0.6007\nvn 0.3530 -0.5989 0.7188\nvn 0.9221 -0.3866 0.0165\nvn 0.7786 0.2128 -0.5903\nvn -0.3636 0.2032 -0.9091\nvn -0.4281 0.2082 -0.8794\nvn 0.2480 -0.0952 -0.9641\nvn 0.8261 -0.5507 0.1194\nvn -0.3596 -0.5192 -0.7753\nvn 0.1671 -0.8867 -0.4310\nvn -0.5463 -0.8376 0.0043\nvn 0.0956 0.5875 0.8036\nvn 0.1047 0.9264 0.3618\nvn 0.0961 0.9512 0.2934\nvn 0.3282 0.8910 0.3137\nvn 0.0354 -0.0721 0.9968\nvn 0.2951 -0.3390 0.8933\nvn 0.0275 0.9686 0.2472\nvn 0.8472 -0.3560 -0.3943\nvn 0.9111 -0.1266 -0.3922\nvn 0.9477 -0.3187 0.0162\nvn 0.7405 -0.1896 -0.6447\nvn 0.3721 -0.7929 0.4825\nvn 0.1527 -0.5858 0.7960\nvn 0.3203 -0.0699 -0.9447\nvn -0.0405 -0.4056 -0.9131\nvn -0.0250 -0.3994 0.9164\nvn 0.3883 -0.6559 0.6473\nvn 0.1007 -0.8225 0.5598\nvn 0.0460 0.0081 0.9989\nvn 0.2852 -0.1079 0.9524\nvn -0.8353 0.0592 -0.5465\nvn -0.3102 0.5582 -0.7696\nvn -0.0598 0.4701 -0.8806\nvn -0.2406 0.3038 -0.9219\nvn -0.1067 -0.6654 -0.7389\nvn 0.0018 0.1205 -0.9927\nvn 0.0104 0.0797 -0.9968\nvn -0.3643 0.0400 -0.9304\nvn -0.5809 -0.6643 0.4704\nvn -0.7109 0.0332 -0.7025\nvn 0.5105 0.0177 -0.8597\nvn 0.4030 -0.2375 -0.8839\nvn -0.3425 -0.2846 -0.8954\nvn -0.1221 -0.9869 0.1055\nvn 0.8073 -0.5571 0.1944\nvn -0.6958 0.5392 -0.4745\nvn -0.4803 0.2439 -0.8425\nvn -0.8197 0.0039 -0.5727\nvn -0.7911 -0.1133 -0.6011\nvn -0.6818 0.1004 -0.7246\nvn -0.2801 -0.9192 0.2769\nvn 0.2943 -0.8354 -0.4643\nvn 0.6606 -0.5862 -0.4689\nvn -0.3979 -0.7351 0.5489\nvn -0.4545 -0.5385 -0.7095\nvn 0.1625 -0.0841 -0.9831\nvn -0.6222 -0.7332 0.2744\nvn -0.9944 -0.0019 -0.1055\nvn -0.6560 0.0677 -0.7517\nvn -0.4441 -0.4902 -0.7499\nvn -0.9866 -0.1572 -0.0449\nvn 0.8991 0.3036 -0.3153\nvn 0.0265 0.7011 -0.7125\nvn -0.6401 -0.4257 0.6396\nvn -0.8306 -0.5567 0.0145\nvn -0.0346 0.9608 -0.2750\nvn -0.1126 0.7543 -0.6467\nvn -0.8047 0.5243 0.2786\nvn -0.0946 0.4205 -0.9024\nvn 0.5038 0.6220 -0.5994\nvn 0.0537 -0.8988 0.4351\nvn -0.5004 -0.7972 0.3378\nvn -0.9991 -0.0407 -0.0077\nvn -0.9372 0.3438 0.0586\nvn -0.9380 0.1350 0.3192\nvn -0.0808 -0.4147 0.9064\nvn -0.8347 -0.5443 0.0835\nvn 0.6516 -0.0474 -0.7571\nvn 0.7938 -0.1154 -0.5971\nvn 0.7156 0.2020 -0.6686\nvn 0.3705 -0.2150 -0.9036\nvn -0.6676 0.2183 0.7118\nvn -0.9464 0.3181 0.0564\nvn -0.7715 -0.6327 -0.0675\nvn 0.6627 -0.3058 0.6836\nvn 0.1700 -0.0363 0.9848\nvn 0.3012 -0.5468 0.7812\nvn -0.2681 0.9376 0.2216\nvn 0.3800 0.9031 -0.2001\nvn 0.3726 0.9266 -0.0514\nvn 0.1625 0.2240 0.9610\nvn -0.1018 0.8858 0.4527\nvn 0.0174 0.2975 0.9546\nvn 0.1809 0.4359 -0.8817\nvn -0.0066 0.8440 -0.5363\nvn 0.7203 0.1709 -0.6723\nvn 0.2958 -0.0046 -0.9552\nvn 0.6391 -0.2302 -0.7339\nvn -0.8369 -0.4314 0.3369\nvn -0.2546 0.5295 -0.8092\nvn -0.3908 -0.0212 -0.9202\nvn -0.1525 0.1068 -0.9825\nvn 0.9397 -0.2459 -0.2378\nvn 0.9200 0.2315 -0.3162\nvn 0.9625 -0.1214 0.2426\nvn -0.3855 -0.4578 0.8012\nvn -0.3295 0.1447 0.9330\nvn -0.9828 -0.1603 0.0916\nvn -0.8841 0.1794 -0.4315\nvn -0.6975 -0.3236 -0.6393\nvn -0.2162 0.1556 0.9639\nvn 0.8253 -0.5467 0.1417\nvn 0.8374 -0.1865 0.5138\nvn -0.6369 0.6847 0.3544\nvn 0.0512 0.9948 0.0876\nvn -0.6138 0.6919 0.3801\nvn -0.2661 0.6483 0.7133\nvn 0.1886 0.6845 0.7042\nvn -0.3553 0.7990 0.4852\nvn 0.1715 0.9743 0.1458\nvn -0.6566 0.7330 -0.1776\nvn -0.3492 0.1010 -0.9316\nvn -0.0779 0.3706 -0.9255\nvn 0.0607 0.1550 -0.9860\nvn 0.2563 0.3748 -0.8910\nvn -0.5519 -0.0676 0.8311\nvn -0.0859 -0.0318 0.9958\nvn -0.3595 -0.2389 0.9021\nvn -0.3193 -0.5798 -0.7495\nvn -0.2293 -0.4607 -0.8574\nvn -0.7001 -0.5418 -0.4650\nvn 0.1749 -0.2597 -0.9497\nvn 0.9337 0.3504 -0.0731\nvn 0.5037 0.7559 0.4182\nvn 0.5989 0.0513 0.7992\nvn -0.7388 0.1340 0.6604\nvn -0.2400 0.1664 0.9564\nvn 0.6300 -0.0089 0.7766\nvn -0.0138 0.1242 -0.9922\nvn -0.1659 -0.1864 -0.9684\nvn 0.8158 -0.5555 -0.1609\nvn 0.9519 0.0217 -0.3057\nvn 0.6210 -0.7573 0.2021\nvn -0.5692 0.1990 -0.7978\nvn 0.0749 -0.4470 -0.8914\nvn 0.0630 0.9189 0.3895\nvn 0.1267 0.9801 0.1530\nvn -0.0197 0.9752 0.2205\nvn 0.0054 0.9999 -0.0157\nvn -0.1038 -0.1423 0.9844\nvn -0.0432 0.0592 0.9973\nvn 0.0510 -0.2006 0.9784\nvn -0.4915 -0.0707 -0.8680\nvn -0.2265 0.2808 -0.9326\nvn 0.1680 0.2449 -0.9549\nvn -0.6742 0.5823 0.4542\nvn -0.9392 0.1518 0.3079\nvn -0.1119 0.6302 -0.7683\nvn -0.1484 0.9803 -0.1302\nvn -0.2598 0.8910 0.3724\nvn -0.1115 -0.7729 -0.6246\nvn 0.0032 -0.8870 -0.4618\nvn 0.2283 0.2446 -0.9424\nvn 0.3554 -0.7334 0.5795\nvn -0.1074 -0.6016 0.7915\nvn -0.1421 -0.6336 0.7605\nvn 0.6969 -0.2391 -0.6762\nvn 0.3537 -0.1394 -0.9249\nvn -0.4670 0.0784 -0.8808\nvn 0.3327 -0.8302 0.4473\nvn 0.0890 -0.7672 0.6352\nvn -0.9155 0.0661 0.3968\nvn -0.6899 -0.1774 -0.7018\nvn 0.0813 0.2106 -0.9742\nvn -0.9854 0.1035 -0.1353\nvn 0.0442 -0.6157 0.7868\nvn 0.0274 -0.1253 0.9917\nvn -0.2328 0.9185 0.3195\nvn -0.5878 -0.8008 0.1154\nvn -0.0384 -0.8460 0.5318\nvn -0.3276 -0.9182 -0.2227\nvn -0.0149 0.1453 0.9893\nvn -0.9261 -0.3732 0.0548\nvn 0.3057 -0.1352 -0.9425\nvn -0.1764 -0.8218 -0.5418\nvn -0.8430 0.0085 -0.5379\nvn -0.6723 -0.7376 -0.0627\nvn -0.7118 -0.2709 0.6480\nvn 0.7230 -0.5409 -0.4297\nvn 0.7839 -0.1159 -0.6100\nvn 0.9617 -0.1476 -0.2309\nvn 0.7289 -0.1294 -0.6723\nvn 0.6676 0.3396 -0.6626\nvn 0.1234 -0.9407 0.3161\nvn 0.4040 -0.8219 -0.4016\nvn 0.8401 -0.1148 -0.5302\nvn 0.7438 -0.4839 0.4611\nvn 0.1277 -0.8067 0.5770\nvn -0.5193 0.4398 -0.7328\nvn 0.4572 -0.3646 -0.8112\nvn 0.9046 0.2023 -0.3751\nvn 0.7307 0.6713 -0.1239\nvn 0.1683 -0.1806 0.9690\nvn -0.0493 0.8353 -0.5475\nvn -0.8120 -0.2396 0.5322\nvn -0.8810 0.3398 0.3292\nvn 0.8167 -0.5746 -0.0526\nvn 0.1825 -0.8764 -0.4457\nvn -0.9343 -0.3451 -0.0891\nvn -0.7512 0.4456 -0.4869\nvn 0.3018 0.9507 -0.0711\nvn -0.9743 -0.1898 -0.1211\nvn -0.9687 0.1219 0.2162\nvn 0.9437 -0.1097 -0.3120\nvn -0.5806 -0.6724 -0.4591\nvn -0.9739 -0.1841 0.1331\nvn -0.6778 -0.2895 -0.6759\nvn 0.2903 -0.5639 0.7731\nvn -0.1555 -0.1103 0.9816\nvn -0.5148 -0.3024 0.8022\nvn -0.2030 -0.8860 0.4169\nvn -0.8261 -0.5319 0.1860\nvn 0.1027 0.2886 -0.9519\nvn -0.6205 0.4686 -0.6288\nvn -0.1557 0.9731 -0.1696\nvn -0.0885 0.0789 0.9929\nvn -0.7242 0.0492 0.6878\nvn 0.6414 -0.5347 0.5502\nvn -0.0741 -0.9972 0.0080\nvn -0.9572 0.2263 0.1802\nvn -0.9063 0.0317 -0.4215\nvn -0.9336 -0.0138 0.3579\nvn -0.4932 0.2361 0.8373\nvn 0.1898 0.0971 0.9770\nvn -0.9115 -0.1305 -0.3900\nvn -0.5254 -0.0955 -0.8455\nvn -0.3629 -0.3829 -0.8496\nvn -0.7753 0.5492 0.3121\nvn -0.8680 0.3716 -0.3293\nvn 0.3109 -0.0063 0.9504\nvn 0.6137 -0.0829 0.7852\nvn 0.7066 -0.2043 0.6775\nvn 0.2786 -0.1845 0.9425\nvn 0.7937 0.1869 0.5788\nvn -0.1037 0.4669 0.8782\nvn 0.9528 0.1631 0.2560\nvn 0.7594 0.2157 -0.6138\nvn 0.8690 0.3282 -0.3703\nvn -0.7597 0.0489 -0.6485\nvn -0.5234 0.2856 -0.8028\nvn 0.8574 0.4996 0.1233\nvn 0.1152 0.8898 0.4416\nvn -0.0963 -0.2785 -0.9556\nvn 0.3208 0.1350 -0.9375\nvn -0.2035 0.1352 -0.9697\nvn -0.2931 0.1709 -0.9407\nvn 0.1151 -0.1067 -0.9876\nvn 0.0658 -0.0297 -0.9974\nvn -0.2212 0.1863 -0.9573\nvn 0.2200 0.1811 -0.9585\nvn -0.8057 0.0856 0.5861\nvn 0.7322 0.0173 -0.6809\nvn 0.7205 -0.5364 -0.4395\nvn 0.8960 -0.3890 0.2142\nvn 0.2177 -0.9278 -0.3031\nvn 0.5360 0.4886 -0.6884\nvn 0.9963 0.0524 0.0687\nvn 0.9610 0.2331 -0.1486\nvn 0.6027 0.3826 -0.7003\nvn 0.9897 0.1213 -0.0760\nvn -0.6003 0.2113 -0.7713\nvn 0.5724 -0.2631 -0.7766\nvn 0.1088 -0.6347 -0.7650\nvn 0.2960 -0.1982 -0.9344\nvn -0.5285 -0.4649 -0.7103\nvn -0.4201 -0.9073 0.0162\nvn -0.9506 -0.3096 -0.0225\nvn -0.3705 0.9288 -0.0070\nvn -0.3986 0.4045 -0.8231\nvn -0.9094 0.4157 0.0111\nvn 0.1425 0.6192 -0.7722\nvn -0.9258 0.3001 0.2301\nvn -0.5025 -0.0512 0.8631\nvn -0.7815 0.0750 0.6193\nvn -0.6297 -0.2501 -0.7354\nvn -0.9641 0.2082 -0.1647\nvn -0.6250 0.1930 -0.7564\nvn -0.2859 -0.2557 -0.9235\nvn -0.1520 -0.2599 -0.9536\nvn -0.3943 -0.1535 0.9061\nvn -0.6140 -0.5507 0.5654\nvn -0.0584 -0.6366 0.7690\nvn 0.4919 -0.6773 0.5471\nvn 0.2347 -0.5209 0.8207\nvn 0.3446 0.3367 -0.8763\nvn 0.6757 0.5332 -0.5089\nvn 0.5168 0.2499 -0.8189\nvn -0.9643 0.1459 0.2212\nvn -0.7660 0.2367 -0.5977\nvn -0.3961 0.4725 0.7873\nvn 0.8222 0.2087 0.5296\nvn 0.9477 0.0731 0.3108\nvn 0.9624 0.2194 0.1601\nvn 0.4582 -0.1264 0.8798\nvn 0.8855 -0.2510 0.3909\nvn -0.9598 0.2651 -0.0917\nvn -0.6106 0.2179 -0.7614\nvn -0.9098 0.1655 0.3806\nvn 0.7916 0.5712 0.2171\nvn 0.6895 0.2347 0.6852\nvn 0.3328 -0.1241 -0.9348\nvn -0.2281 -0.2623 -0.9376\nvn 0.0272 -0.0514 0.9983\nvn 0.3537 -0.0566 0.9336\nvn 0.4381 0.1651 0.8836\nvn 0.0377 -0.1959 0.9799\nvn -0.1761 0.1296 0.9758\nvn 0.3825 0.4889 0.7840\nvn -0.1724 0.2564 -0.9511\nvn 0.2651 0.1404 -0.9539\nvn -0.0055 0.1632 -0.9866\nvn 0.6340 0.1284 -0.7626\nvn 0.9732 0.1664 -0.1586\nvn 0.9244 -0.1429 -0.3536\nvn 0.0710 -0.9970 0.0322\nvn 0.7059 -0.6990 -0.1146\nvn -0.3815 0.2420 -0.8921\nvn 0.3441 0.9339 0.0972\nvn -0.5943 0.1448 -0.7911\nvn -0.8925 0.0452 -0.4488\nvn 0.8823 0.2752 -0.3818\nvn -0.9015 -0.0960 0.4221\nvn -0.0862 0.2524 -0.9638\nvn -0.9161 -0.0494 -0.3979\nvn -0.9771 -0.0441 -0.2082\nvn -0.9865 -0.0558 -0.1540\nvn 0.5950 -0.6682 -0.4466\nvn 0.5988 -0.2584 -0.7581\nvn 0.9651 -0.2079 0.1591\nvn -0.2971 -0.5552 0.7769\nvn 0.5266 -0.3126 0.7905\nvn 0.1853 -0.1360 0.9732\nvn 0.1630 -0.8826 0.4409\nvn 0.7398 -0.6316 0.2319\nvn -0.0115 0.3148 -0.9491\nvn 0.0589 0.9981 -0.0162\nvn 0.5078 0.5999 -0.6183\nvn 0.7097 -0.0030 0.7045\nvn 0.1332 0.0865 0.9873\nvn -0.6256 -0.5339 0.5688\nvn -0.0344 -0.9992 -0.0211\nvn 0.9606 0.2375 0.1444\nvn 0.9337 -0.0137 0.3577\nvn 0.9515 0.0040 -0.3077\nvn 0.5270 0.1776 0.8311\nvn -0.1495 0.1950 0.9693\nvn 0.9089 -0.2516 -0.3325\nvn 0.5012 -0.0881 -0.8608\nvn 0.4891 -0.3912 -0.7796\nvn 0.7773 0.5449 0.3144\nvn 0.9126 0.2399 -0.3310\nvn -0.6700 -0.0377 0.7414\nvn -0.3121 -0.0207 0.9498\nvn -0.7913 -0.0952 0.6040\nvn -0.3627 -0.2477 0.8984\nvn -0.7819 0.2276 0.5804\nvn 0.1727 0.4620 0.8699\nvn -0.9592 0.1423 0.2443\nvn -0.8988 0.3120 -0.3080\nvn -0.6621 0.3089 -0.6828\nvn 0.7762 0.0386 -0.6293\nvn 0.4075 0.2125 -0.8881\nvn -0.5272 0.7522 0.3952\nvn 0.1099 -0.2679 -0.9572\nvn -0.3137 0.1139 -0.9427\nvn 0.2029 0.1542 -0.9670\nvn 0.2110 0.2012 -0.9565\nvn -0.1249 -0.1306 -0.9835\nvn -0.0383 -0.0978 -0.9945\nvn -0.2150 0.0482 -0.9754\nvn 0.2458 0.1806 -0.9523\nvn 0.7063 0.2023 0.6784\nvn -0.7908 -0.1060 -0.6028\nvn -0.5935 -0.6018 -0.5344\nvn -0.9421 -0.2615 0.2101\nvn -0.2211 -0.9234 -0.3138\nvn -0.4361 0.5196 -0.7347\nvn -0.9947 0.0426 0.0936\nvn -0.8494 0.5028 -0.1603\nvn -0.5695 0.4794 -0.6677\nvn -0.9608 0.2473 -0.1251\nvn 0.5722 0.1993 -0.7956\nvn -0.6162 -0.3381 -0.7113\nvn -0.2936 -0.1966 -0.9355\nvn -0.0815 -0.6449 -0.7599\nvn 0.4704 -0.5420 -0.6964\nvn 0.9458 -0.3169 -0.0706\nvn 0.4619 -0.8824 0.0892\nvn 0.3487 0.9370 -0.0213\nvn 0.8563 0.5162 0.0177\nvn 0.5355 0.3981 -0.7448\nvn -0.1505 0.5899 -0.7933\nvn 0.9337 0.2604 0.2458\nvn 0.7737 0.1108 0.6238\nvn 0.4593 0.0720 0.8854\nvn -0.9781 0.1634 0.1292\nvn -0.9112 -0.2062 0.3567\nvn -0.7536 0.1665 0.6359\nvn 0.6435 -0.2524 -0.7226\nvn 0.6345 0.1461 -0.7590\nvn 0.9423 0.2689 -0.1993\nvn 0.1449 -0.2842 -0.9478\nvn 0.2116 -0.1932 -0.9581\nvn 0.4857 -0.1328 0.8640\nvn 0.0295 -0.6165 0.7868\nvn 0.5171 -0.6219 0.5881\nvn -0.5137 -0.6618 0.5460\nvn -0.2690 -0.4701 0.8406\nvn -0.3007 0.3374 -0.8920\nvn -0.7759 0.3856 -0.4994\nvn 0.9374 0.1896 0.2922\nvn 0.7904 0.2769 -0.5465\nvn 0.3932 0.4798 0.7844\nvn -0.7303 0.2343 0.6417\nvn -0.9567 0.2805 0.0774\nvn -0.5092 -0.2194 0.8322\nvn 0.5880 0.1415 -0.7964\nvn 0.9196 0.3734 -0.1221\nvn 0.9039 0.1744 0.3906\nvn -0.6819 0.5630 0.4669\nvn -0.3518 -0.1948 -0.9156\nvn 0.1856 -0.2512 -0.9500\nvn -0.0564 -0.0592 0.9966\nvn -0.3617 0.1859 0.9136\nvn -0.3823 -0.0469 0.9229\nvn -0.0329 -0.2043 0.9784\nvn 0.2047 0.0612 0.9769\nvn 0.1982 0.2614 -0.9447\nvn 0.0119 0.1891 -0.9819\nvn -0.2719 0.1238 -0.9543\nvn -0.7096 0.2137 -0.6714\nvn -0.9071 -0.1643 -0.3876\nvn -0.9695 0.1674 -0.1792\nvn -0.0544 -0.9979 0.0347\nvn -0.3482 0.9266 0.1417\nvn 0.8130 0.0391 -0.5809\nvn 0.3121 0.1885 -0.9312\nvn -0.7024 -0.6995 -0.1316\nvn 0.3761 0.2397 -0.8950\nvn -0.8977 0.2367 -0.3716\nvn 0.8746 0.0218 0.4843\nvn -0.0789 0.1910 -0.9784\nvn -0.6380 0.3357 -0.6930\nvn 0.9161 -0.0494 -0.3979\nvn 0.9771 -0.0440 -0.2080\nvn -0.9639 -0.0037 -0.2661\nvn 0.9865 -0.0558 -0.1538\nvn 0.9640 -0.0038 -0.2659\nvn 0.1605 0.7892 -0.5927\nvn -0.4546 0.4892 -0.7443\nvn -0.7233 0.5996 -0.3425\nvn -0.6310 0.5790 0.5163\nvn -0.1588 0.1013 0.9821\nvn -0.1850 0.9296 0.3187\nvn -0.0646 -0.8408 -0.5375\nvn -0.6797 -0.5146 -0.5227\nvn 0.2478 0.0312 -0.9683\nvn 0.9754 -0.1963 0.0999\nvn 0.9449 -0.0085 -0.3273\nvn 0.8829 -0.1016 -0.4585\nvn -0.8431 0.0615 0.5342\nvn -0.0016 -0.1981 0.9802\nvn -0.4508 0.5134 -0.7302\nvn 0.3100 0.2253 -0.9237\nvn 0.9935 -0.0273 0.1107\nvn 0.9182 0.2770 -0.2831\nvn 0.4081 0.5472 0.7308\nvn 0.4788 0.8750 0.0720\nvn 0.7300 -0.4172 -0.5414\nvn 0.9649 -0.2077 -0.1608\nvn -0.2177 -0.3250 0.9203\nvn -0.7087 -0.1370 0.6921\nvn -0.3916 -0.5602 0.7300\nvn 0.7140 0.0396 -0.6990\nvn 0.2522 0.0834 -0.9641\nvn 0.2647 0.1993 -0.9435\nvn -0.0766 -0.9141 0.3982\nvn -0.6612 -0.7308 0.1697\nvn 0.2079 -0.6030 0.7702\nvn 0.3547 -0.2667 0.8961\nvn 0.7747 -0.5497 0.3125\nvn 0.8356 -0.0068 0.5494\nvn -0.7553 -0.1650 -0.6343\nvn -0.4877 0.2005 -0.8497\nvn -0.1939 0.1823 -0.9639\nvn 0.4698 0.0183 0.8826\nvn 0.8202 -0.3212 0.4734\nvn 0.5283 -0.8482 -0.0386\nvn 0.7048 -0.2497 0.6640\nvn 0.1458 0.1520 -0.9776\nvn -0.3800 0.4545 -0.8056\nvn -0.9261 0.3331 -0.1771\nvn -0.9881 -0.0426 -0.1475\nvn -0.4546 0.1088 -0.8841\nvn -0.8786 0.2043 -0.4316\nvn 0.4177 0.1042 -0.9026\nvn -0.9595 -0.0330 0.2797\nvn -0.8231 -0.4432 0.3550\nvn -0.4737 0.3554 -0.8058\nvn -0.9502 0.2809 -0.1350\nvn -0.9500 -0.2046 -0.2360\nvn 0.2650 0.3615 0.8939\nvn 0.1563 0.5469 -0.8225\nvn 0.0546 0.9549 -0.2918\nvn 0.4636 0.6916 -0.5539\nvn 0.4109 -0.3242 0.8521\nvn 0.8720 -0.1520 0.4652\nvn 0.4979 0.2262 0.8372\nvn 0.6935 -0.4550 0.5586\nvn 0.9744 -0.2223 0.0340\nvn 0.2926 0.7716 0.5649\nvn 0.8976 0.3713 0.2378\nvn -0.1434 0.1689 0.9751\nvn -0.5812 0.0274 -0.8133\nvn 0.4131 -0.2375 -0.8792\nvn -0.4911 -0.6313 -0.6002\nvn -0.8688 0.2298 -0.4386\nvn -0.7300 0.3383 -0.5938\nvn -0.9420 -0.0148 -0.3353\nvn -0.6688 -0.4888 0.5602\nvn -0.5975 -0.5112 0.6177\nvn -0.8953 0.1312 0.4258\nvn -0.8166 0.4955 0.2960\nvn -0.2677 -0.3164 0.9101\nvn -0.7872 -0.1005 0.6085\nvn -0.5867 0.2767 -0.7611\nvn -0.9704 -0.1225 -0.2083\nvn -0.9164 0.0433 -0.3980\nvn 0.4361 0.3869 -0.8124\nvn 0.9205 0.1628 -0.3551\nvn 0.4788 0.1374 -0.8671\nvn 0.6247 -0.7792 0.0511\nvn 0.9107 -0.2219 -0.3483\nvn 0.8469 -0.3713 0.3806\nvn -0.3692 0.5732 -0.7315\nvn 0.3683 -0.6220 0.6910\nvn 0.1607 -0.4786 0.8632\nvn -0.1071 -0.4776 0.8720\nvn -0.3695 -0.4912 0.7888\nvn -0.1646 0.2879 -0.9434\nvn 0.2064 0.2803 -0.9375\nvn -0.4214 -0.5967 0.6829\nvn -0.1172 -0.9849 -0.1278\nvn -0.2465 0.3054 -0.9198\nvn -0.9121 -0.3039 0.2752\nvn -0.6973 0.2408 -0.6752\nvn -0.8299 0.4076 -0.3809\nvn 0.2175 0.0754 -0.9732\nvn -0.9842 -0.1765 0.0164\nvn -0.9449 0.1197 -0.3047\nvn -0.8622 -0.4399 0.2514\nvn 0.2603 0.2941 -0.9196\nvn -0.9167 -0.1659 -0.3635\nvn -0.2845 0.9262 0.2473\nvn -0.4978 0.5982 -0.6279\nvn -0.8261 -0.3711 0.4241\nvn -0.8959 -0.2951 0.3319\nvn -0.8274 -0.3732 0.4197\nvn 0.6500 -0.0568 -0.7578\nvn -0.2486 0.6568 -0.7119\nvn -0.1444 0.9852 -0.0924\nvn 0.7387 0.5618 -0.3724\nvn 0.5228 0.4575 -0.7193\nvn 0.6398 0.5682 0.5175\nvn 0.2056 0.8961 0.3933\nvn 0.1070 0.1440 0.9838\nvn 0.1524 -0.7970 -0.5844\nvn -0.5415 -0.3214 -0.7769\nvn 0.6966 -0.4974 -0.5171\nvn -0.6090 -0.7905 0.0644\nvn -0.9691 -0.2046 -0.1378\nvn -0.9616 -0.2279 0.1526\nvn -0.9146 -0.0823 -0.3959\nvn -0.9312 -0.0929 -0.3525\nvn 0.8433 0.0521 0.5349\nvn 0.0487 -0.2279 0.9725\nvn -0.9941 -0.0331 0.1037\nvn -0.4375 0.5596 0.7038\nvn -0.9260 0.3630 -0.1035\nvn -0.1742 0.0291 -0.9843\nvn 0.2883 -0.2972 0.9102\nvn 0.3964 -0.5699 0.7198\nvn 0.7805 -0.1627 0.6036\nvn -0.6967 -0.1007 -0.7103\nvn -0.2257 0.2066 -0.9520\nvn -0.2398 0.0802 -0.9675\nvn -0.2141 0.5048 -0.8363\nvn -0.7617 -0.0690 -0.6442\nvn -0.3723 0.2459 -0.8950\nvn -0.2523 -0.5749 0.7784\nvn -0.3332 -0.3864 0.8601\nvn -0.7737 -0.0352 0.6326\nvn -0.8525 -0.4184 0.3134\nvn 0.7726 -0.0563 -0.6323\nvn 0.2570 0.0722 -0.9637\nvn 0.4625 0.1429 -0.8751\nvn -0.3975 -0.0856 0.9136\nvn -0.6039 -0.2559 0.7548\nvn -0.8657 -0.3787 0.3272\nvn -0.0328 0.1451 -0.9889\nvn 0.4514 0.4682 -0.7596\nvn 0.4180 0.5053 -0.7549\nvn 0.9243 0.3255 -0.1992\nvn 0.1475 -0.9101 0.3873\nvn 0.9745 0.0408 -0.2206\nvn 0.4560 0.0092 -0.8900\nvn 0.9034 0.1922 -0.3833\nvn 0.7899 -0.4716 0.3921\nvn 0.9689 -0.0453 0.2433\nvn 0.4440 0.3476 -0.8259\nvn 0.9497 0.2623 -0.1709\nvn 0.9503 -0.2030 -0.2359\nvn 0.5842 -0.5828 0.5648\nvn -0.2629 0.3978 0.8790\nvn -0.1787 0.5507 -0.8154\nvn -0.5817 0.6155 -0.5318\nvn -0.0476 0.9551 -0.2923\nvn -0.4601 -0.3275 0.8253\nvn -0.5079 0.2209 0.8326\nvn -0.9007 -0.0601 0.4303\nvn -0.6765 -0.4598 0.5753\nvn -0.9868 -0.1597 0.0257\nvn -0.3054 0.7479 0.5894\nvn -0.9000 0.3710 0.2287\nvn 0.1298 0.1728 0.9764\nvn 0.5263 0.0939 -0.8451\nvn 0.5309 -0.5912 -0.6072\nvn -0.4435 -0.3317 -0.8326\nvn 0.8581 0.2224 -0.4628\nvn 0.9452 -0.0264 -0.3254\nvn 0.7309 0.2536 -0.6336\nvn 0.6976 -0.4629 0.5470\nvn 0.8994 0.1237 0.4192\nvn 0.6824 -0.3984 0.6129\nvn 0.8502 0.4495 0.2739\nvn 0.2304 -0.3318 0.9148\nvn 0.7711 -0.2142 0.5996\nvn 0.5909 0.1961 -0.7826\nvn 0.9054 0.0572 -0.4207\nvn 0.9678 -0.1172 -0.2228\nvn -0.4089 0.4143 -0.8131\nvn -0.8987 0.1198 -0.4218\nvn -0.4599 0.1616 -0.8731\nvn -0.6054 -0.7943 0.0510\nvn -0.8067 -0.4892 0.3316\nvn -0.9534 -0.1262 -0.2740\nvn 0.3781 0.5997 -0.7053\nvn -0.3659 -0.6238 0.6907\nvn 0.1195 -0.4876 0.8648\nvn -0.1640 -0.4823 0.8605\nvn 0.3637 -0.5322 0.7645\nvn 0.4466 -0.6571 0.6073\nvn 0.1114 -0.9792 -0.1697\nvn 0.8985 -0.3645 0.2448\nvn 0.8382 0.3905 -0.3806\nvn 0.7618 0.2282 -0.6063\nvn -0.2438 0.0803 -0.9665\nvn 0.9532 0.0329 -0.3005\nvn 0.9955 -0.0942 0.0076\nvn 0.8710 -0.4695 0.1446\nvn 0.1114 0.2973 -0.9483\nvn -0.3042 0.2836 -0.9094\nvn 0.2836 0.3387 -0.8971\nvn 0.8865 -0.1611 -0.4337\nvn 0.2922 0.9343 0.2042\nvn 0.6012 0.5815 -0.5481\nvn -0.2109 0.2294 -0.9502\nvn 0.8747 -0.2787 0.3965\nvn 0.9340 -0.2321 0.2717\nvn 0.7384 -0.4673 0.4862\nvn -0.6363 0.0787 -0.7674\nvn 0.2712 0.6617 -0.6990\nvn 0.1533 0.5484 -0.8220\nvn 0.0287 0.9640 -0.2642\nvn 0.4653 0.6685 -0.5802\nvn 0.4121 -0.3249 0.8513\nvn 0.4947 0.2350 0.8367\nvn 0.6934 -0.4555 0.5584\nvn 0.9744 -0.2224 0.0340\nvn 0.3623 0.7574 0.5432\nvn 0.9077 0.3430 0.2416\nvn -0.2808 0.0542 0.9582\nvn -0.1973 0.5549 0.8082\nvn -0.7378 -0.2551 0.6250\nvn -0.8157 0.5747 0.0662\nvn -0.5810 0.0272 -0.8134\nvn 0.4129 -0.2376 -0.8793\nvn -0.4912 -0.6314 -0.6000\nvn -0.9673 -0.1184 0.2242\nvn -0.8324 -0.4331 0.3457\nvn -0.5338 -0.4968 0.6843\nvn -0.6001 -0.4656 0.6505\nvn -0.9312 -0.2287 0.2838\nvn -0.8689 0.2298 -0.4384\nvn -0.7349 0.3399 -0.5869\nvn -0.9429 -0.0181 -0.3327\nvn -0.2586 -0.3336 0.9066\nvn -0.5637 0.2957 -0.7713\nvn -0.9680 -0.1198 -0.2203\nvn -0.9017 0.0583 -0.4284\nvn 0.4368 0.3865 -0.8123\nvn 0.9205 0.1627 -0.3552\nvn 0.4770 0.1368 -0.8682\nvn 0.6243 -0.7795 0.0502\nvn 0.9107 -0.2218 -0.3484\nvn 0.8409 -0.3745 0.3908\nvn -0.4980 0.8666 0.0302\nvn -0.2743 0.6009 -0.7508\nvn -0.3691 0.5731 -0.7317\nvn 0.3235 -0.6370 0.6997\nvn 0.1645 -0.4780 0.8628\nvn -0.0798 -0.4633 0.8826\nvn -0.4411 -0.5996 0.6678\nvn -0.1173 -0.9849 -0.1272\nvn -0.1367 0.2300 -0.9635\nvn -0.2465 0.3053 -0.9198\nvn -0.8158 0.4251 -0.3922\nvn 0.2182 0.0732 -0.9732\nvn -0.9841 -0.1771 0.0168\nvn -0.9453 0.1184 -0.3040\nvn -0.8625 -0.4392 0.2514\nvn 0.2602 0.2943 -0.9196\nvn -0.9167 -0.1658 -0.3636\nvn 0.2357 0.2734 -0.9326\nvn -0.9945 -0.1013 -0.0265\nvn -0.8273 -0.3733 0.4197\nvn 0.6558 -0.0608 -0.7524\nvn -0.2542 0.6566 -0.7101\nvn -0.7229 -0.1198 0.6805\nvn -0.5546 -0.0888 0.8274\nvn -0.6933 -0.1989 0.6926\nvn -0.4708 -0.2360 0.8501\nvn -0.1859 -0.2109 0.9597\nvn -0.3626 -0.4957 0.7892\nvn -0.0985 -0.4821 0.8706\nvn 0.0373 0.0163 0.9992\nvn 0.1745 -0.2020 0.9637\nvn 0.0048 -0.4439 0.8960\nvn -0.7590 -0.2795 0.5881\nvn -0.7024 -0.1458 0.6966\nvn -0.5379 -0.0861 0.8386\nvn -0.3444 -0.0245 0.9385\nvn -0.1312 -0.0445 0.9904\nvn -0.1254 -0.0493 0.9909\nvn -0.7625 -0.0278 0.6464\nvn -0.8518 0.0952 0.5152\nvn -0.8047 0.3649 0.4683\nvn -0.8420 0.2108 0.4966\nvn -0.8182 0.0268 0.5744\nvn -0.8907 -0.1331 0.4346\nvn -0.6929 -0.0108 0.7210\nvn -0.8799 -0.2726 0.3892\nvn -0.8528 -0.2393 0.4641\nvn -0.7986 -0.2221 0.5594\nvn -0.5381 -0.0772 0.8393\nvn -0.8091 -0.1373 0.5714\nvn -0.5913 -0.1952 0.7825\nvn -0.8382 -0.1114 0.5338\nvn -0.8298 0.3339 0.4472\nvn -0.6609 -0.2456 0.7091\nvn -0.7865 -0.1860 0.5889\nvn -0.9440 -0.0850 0.3188\nvn -0.8292 -0.3474 0.4380\nvn -0.9305 0.0430 0.3638\nvn -0.9116 -0.1429 0.3854\nvn -0.9172 -0.1522 0.3682\nvn -0.9324 -0.0405 0.3591\nvn -0.9803 0.1274 0.1511\nvn -0.9598 0.2807 0.0068\nvn -0.3379 0.6934 -0.6365\nvn -0.3395 -0.2355 0.9106\nvn -0.6252 -0.2409 0.7423\nvn -0.1563 -0.3304 0.9308\nvn -0.8506 -0.3237 0.4144\nvn -0.8027 -0.3154 0.5061\nvn -0.7871 -0.2906 0.5441\nvn -0.9539 -0.2061 0.2183\nvn -0.8746 -0.4463 0.1894\nvn -0.9341 -0.2158 0.2845\nvn -0.9164 -0.3270 0.2307\nvn -0.9230 -0.3338 0.1915\nvn -0.9620 -0.0545 0.2675\nvn -0.9624 -0.2477 0.1114\nvn -0.9230 -0.0628 0.3795\nvn -0.9439 -0.3169 0.0925\nvn -0.8996 -0.3157 -0.3017\nvn -0.9808 -0.0490 0.1890\nvn -0.9861 -0.1553 0.0597\nvn -0.9374 -0.2540 -0.2380\nvn -0.9510 -0.0293 0.3079\nvn -0.9157 -0.0292 0.4007\nvn -0.9326 -0.2065 0.2959\nvn -0.9439 -0.2904 -0.1573\nvn -0.6928 -0.2616 -0.6720\nvn -0.7985 -0.3061 -0.5184\nvn -0.7932 -0.4457 -0.4149\nvn -0.7574 0.4278 0.4932\nvn -0.3947 0.8128 0.4285\nvn -0.5300 0.4214 0.7358\nvn -0.8925 0.2390 0.3825\nvn -0.7461 0.3171 0.5855\nvn -0.7592 -0.2834 0.5859\nvn -0.5559 -0.5225 0.6465\nvn -0.4641 -0.1850 0.8663\nvn -0.3316 -0.4510 0.8287\nvn -0.0844 -0.4478 0.8901\nvn -0.1881 0.0863 0.9783\nvn 0.0489 0.3129 0.9485\nvn 0.0726 -0.3033 0.9501\nvn 0.0348 0.7363 0.6757\nvn 0.1525 0.7136 0.6837\nvn -0.3063 0.7079 0.6364\nvn -0.4576 0.6213 0.6361\nvn -0.5644 0.3032 0.7678\nvn -0.0495 0.8172 0.5742\nvn -0.4636 0.6456 0.6069\nvn -0.6369 0.4252 0.6431\nvn -0.4440 0.7027 0.5560\nvn -0.8497 0.1028 0.5171\nvn -0.5878 0.6946 0.4148\nvn -0.8836 0.2770 0.3775\nvn -0.7245 0.6078 0.3249\nvn -0.4388 0.8631 0.2502\nvn -0.4439 0.8008 0.4021\nvn -0.5761 0.7530 0.3180\nvn -0.0546 0.9311 0.3606\nvn -0.0107 0.6971 0.7169\nvn 0.2951 0.8649 0.4060\nvn -0.2393 0.5313 0.8127\nvn 0.2541 0.7657 0.5909\nvn 0.4611 0.8013 0.3812\nvn 0.5819 0.6251 0.5203\nvn 0.0944 0.4447 0.8907\nvn -0.4944 -0.0141 0.8691\nvn 0.7005 0.4181 0.5783\nvn 0.2505 0.2112 0.9448\nvn 0.6798 0.7300 0.0700\nvn 0.8322 0.5168 0.2009\nvn 0.6995 0.5245 0.4853\nvn 0.6292 0.0618 0.7747\nvn 0.2603 -0.0810 0.9621\nvn -0.7796 -0.6254 0.0332\nvn -0.7240 -0.6889 -0.0365\nvn -0.7172 -0.6907 -0.0926\nvn -0.7274 -0.6809 -0.0852\nvn -0.5303 -0.8365 -0.1380\nvn -0.7490 -0.6172 0.2409\nvn -0.6928 -0.7194 -0.0499\nvn -0.6764 -0.7297 0.1003\nvn -0.5291 -0.7506 0.3958\nvn -0.1797 -0.9209 0.3460\nvn -0.4024 -0.5477 0.7335\nvn -0.0128 -0.9107 0.4128\nvn 0.0515 -0.6313 0.7738\nvn -0.1097 -0.6334 0.7660\nvn 0.0592 -0.2773 0.9590\nvn 0.1820 0.9573 -0.2245\nvn 0.6274 0.7650 -0.1454\nvn 0.7966 0.3327 -0.5048\nvn 0.3215 0.6063 -0.7273\nvn 0.9467 0.2077 -0.2461\nvn 0.9211 0.2783 -0.2724\nvn 0.8934 0.2337 -0.3836\nvn 0.8848 0.4083 -0.2245\nvn 0.8842 0.3908 -0.2558\nvn 0.8727 0.4588 -0.1669\nvn 0.7801 0.4379 -0.4468\nvn 0.8665 0.3600 -0.3457\nvn 0.7576 0.5738 -0.3111\nvn 0.7782 0.3941 -0.4890\nvn 0.8797 0.3631 -0.3072\nvn 0.8760 0.0829 -0.4751\nvn 0.6971 0.6777 -0.2341\nvn 0.1787 0.5230 -0.8334\nvn 0.4849 0.5836 -0.6513\nvn 0.1795 0.8053 -0.5650\nvn -0.0610 0.5473 -0.8347\nvn 0.7961 0.1833 -0.5768\nvn 0.9025 0.2654 -0.3391\nvn 0.8392 0.3122 -0.4452\nvn 0.6229 0.4534 -0.6375\nvn 0.4072 0.3759 -0.8324\nvn 0.0783 0.3249 -0.9425\nvn 0.1582 0.0017 -0.9874\nvn 0.2298 -0.2877 -0.9297\nvn 0.4834 -0.1081 -0.8687\nvn 0.5680 0.1927 -0.8002\nvn 0.0637 -0.3034 -0.9507\nvn -0.0362 -0.0101 -0.9993\nvn -0.0658 -0.3414 -0.9376\nvn 0.0047 -0.5396 -0.8419\nvn -0.0056 -0.7921 -0.6104\nvn 0.0074 -0.8220 -0.5695\nvn 0.3947 -0.4565 -0.7974\nvn 0.1763 -0.5110 -0.8413\nvn 0.1666 -0.7967 -0.5809\nvn 0.2006 -0.8133 -0.5462\nvn 0.5701 -0.4430 -0.6919\nvn 0.7539 -0.1779 -0.6325\nvn 0.7932 0.0214 -0.6086\nvn 0.9049 0.0517 -0.4224\nvn 0.1098 -0.8569 -0.5036\nvn 0.5472 -0.6107 -0.5725\nvn 0.7893 -0.2601 -0.5563\nvn 0.8919 -0.0539 -0.4491\nvn 0.8721 -0.0838 -0.4820\nvn 0.9534 0.1764 -0.2449\nvn 0.3933 -0.7375 -0.5490\nvn 0.7738 -0.2740 -0.5711\nvn 0.7870 -0.1981 -0.5843\nvn 0.9394 0.1230 -0.3201\nvn 0.7610 -0.3145 -0.5674\nvn 0.7919 -0.2971 -0.5335\nvn 0.9052 0.0547 -0.4215\nvn -0.0346 -0.8702 -0.4915\nvn 0.5377 -0.4532 -0.7109\nvn 0.7494 -0.1461 -0.6458\nvn 0.8953 -0.1121 -0.4311\nvn 0.6854 -0.2161 -0.6953\nvn 0.5761 -0.4676 -0.6704\nvn -0.0269 -0.8775 -0.4788\nvn 0.5649 -0.6356 -0.5263\nvn 0.8365 -0.2881 -0.4661\nvn 0.8555 -0.1489 -0.4960\nvn 0.8587 -0.2639 -0.4393\nvn 0.7896 -0.3621 -0.4954\nvn -0.0280 -0.9343 -0.3553\nvn 0.3338 -0.7766 -0.5342\nvn 0.4322 -0.3293 -0.8395\nvn -0.1100 -0.2708 -0.9563\nvn 0.4993 -0.0684 -0.8637\nvn -0.2545 -0.5999 -0.7585\nvn 0.3141 -0.5386 -0.7818\nvn -0.2394 -0.8223 -0.5162\nvn 0.6994 -0.1710 -0.6940\nvn 0.7498 0.1892 -0.6340\nvn 0.6965 -0.3359 -0.6341\nvn 0.8284 -0.2351 -0.5084\nvn 0.8487 -0.0507 -0.5264\nvn 0.8777 -0.0832 -0.4719\nvn 0.8273 0.2190 -0.5172\nvn 0.8032 0.3157 -0.5052\nvn 0.7944 0.3964 -0.4602\nvn 0.7807 0.3813 -0.4952\nvn 0.8212 0.3282 -0.4669\nvn 0.8713 0.3874 -0.3011\nvn 0.5295 0.1429 -0.8362\nvn 0.0278 0.0384 -0.9989\nvn 0.7246 0.2488 -0.6427\nvn 0.0915 -0.0056 -0.9958\nvn 0.8699 0.3401 -0.3573\nvn 0.8656 0.3632 -0.3448\nvn 0.9060 0.3041 -0.2944\nvn 0.8734 0.2454 -0.4206\nvn 0.6917 0.1155 -0.7128\nvn 0.9660 0.1715 -0.1936\nvn 0.1785 -0.0963 -0.9792\nvn 0.5177 -0.1262 -0.8462\nvn 0.7617 0.6406 -0.0971\nvn 0.9237 0.2992 -0.2393\nvn 0.8936 0.4378 -0.0987\nvn 0.9374 0.3399 -0.0759\nvn 0.9997 -0.0249 0.0068\nvn 0.9207 -0.0300 -0.3892\nvn 0.9405 0.2644 0.2135\nvn 0.8084 0.5227 0.2708\nvn 0.9043 0.1069 0.4133\nvn 0.7800 -0.2546 -0.5717\nvn 0.9374 -0.3379 -0.0843\nvn 0.0673 -0.2678 -0.9611\nvn -0.3146 -0.2225 -0.9228\nvn -0.7218 -0.2915 -0.6278\nvn -0.4929 -0.2162 -0.8428\nvn -0.3944 -0.1907 -0.8989\nvn -0.4845 -0.1962 -0.8525\nvn -0.5833 -0.3339 -0.7404\nvn -0.5313 -0.8073 -0.2567\nvn -0.3049 -0.9037 -0.3006\nvn -0.1997 -0.8944 -0.4002\nvn -0.2399 -0.9240 -0.2979\nvn -0.1213 -0.9802 -0.1567\nvn 0.0184 -0.9866 -0.1620\nvn 0.0205 -0.9753 -0.2200\nvn 0.0229 -0.9809 -0.1933\nvn 0.9027 0.4050 0.1450\nvn 0.9574 0.1527 0.2453\nvn 0.9139 0.3885 0.1174\nvn 0.2327 0.9691 0.0822\nvn 0.3787 0.8610 -0.3395\nvn 0.5303 0.7477 -0.3997\nvn 0.6375 0.5875 -0.4984\nvn 0.3452 0.9377 0.0405\nvn 0.3171 0.9471 -0.0494\nvn 0.7263 0.6670 -0.1661\nvn -0.2880 0.9489 -0.1286\nvn 0.0989 0.9503 -0.2952\nvn 0.2304 0.8877 -0.3987\nvn 0.6523 0.7190 -0.2399\nvn 0.2976 0.9522 0.0682\nvn 0.7766 0.5720 -0.2641\nvn 0.8984 0.4252 -0.1095\nvn 0.8831 0.4604 -0.0902\nvn 0.4519 0.8602 0.2363\nvn 0.8174 0.5633 -0.1207\nvn -0.6255 0.0140 -0.7801\nvn -0.1619 -0.1075 -0.9809\nvn -0.8043 -0.3077 -0.5083\nvn -0.9173 -0.3979 0.0160\nvn -0.9611 -0.1780 -0.2110\nvn -0.8914 0.1459 -0.4291\nvn -0.4990 0.4973 -0.7097\nvn -0.2808 0.1799 -0.9427\nvn 0.1065 0.3903 -0.9145\nvn 0.4629 -0.1650 -0.8709\nvn 0.9148 -0.0504 -0.4007\nvn 0.7052 0.2654 -0.6575\nvn -0.0259 0.8706 -0.4912\nvn 0.4405 0.7908 -0.4250\nvn -0.2085 0.7582 -0.6177\nvn -0.7475 0.5488 -0.3743\nvn -0.6780 0.7181 0.1571\nvn -0.5324 0.3812 0.7558\nvn -0.2869 0.7779 0.5591\nvn -0.9245 0.2890 0.2486\nvn 0.0130 0.3984 0.9171\nvn 0.1570 0.8019 0.5765\nvn 0.5449 0.3024 0.7821\nvn 0.5623 0.6919 0.4528\nvn 0.3444 0.4432 0.8276\nvn 0.9423 0.1643 0.2917\nvn 0.7835 0.6210 -0.0220\nvn 0.9708 -0.2391 -0.0181\nvn 0.0256 0.9997 0.0050\nvn -0.3165 0.9481 -0.0292\nvn 0.8945 -0.2341 0.3808\nvn 0.7033 -0.0104 0.7108\nvn -0.8356 -0.0995 0.5402\nvn -0.1534 0.2099 0.9656\nvn 0.2556 0.1585 0.9537\nvn 0.4345 0.1754 0.8834\nvn 0.3171 0.4021 0.8590\nvn 0.6499 0.3701 0.6638\nvn 0.6361 0.0140 0.7715\nvn 0.2133 0.5727 0.7915\nvn 0.6091 0.7083 -0.3570\nvn 0.1289 0.8432 0.5218\nvn 0.5226 0.8001 0.2945\nvn -0.1771 0.8973 -0.4043\nvn 0.9546 0.0305 0.2962\nvn 0.9274 0.3728 0.0301\nvn -0.7608 -0.0921 0.6424\nvn -0.5751 0.3625 0.7334\nvn -0.8456 0.5132 0.1470\nvn -0.8770 0.0617 0.4765\nvn -0.0061 0.9885 -0.1510\nvn -0.3629 0.8844 0.2935\nvn -0.5592 0.5772 -0.5951\nvn -0.5671 0.5765 0.5883\nvn 0.1935 0.9649 0.1775\nvn 0.4058 0.6416 0.6509\nvn 0.3869 -0.1330 0.9125\nvn 0.9320 0.0112 0.3623\nvn 0.5451 0.8317 0.1055\nvn 0.5704 0.7987 0.1916\nvn 0.4757 0.8737 0.1022\nvn 0.5533 0.8273 0.0971\nvn -0.1242 0.9486 0.2912\nvn 0.5090 0.8410 0.1837\nvn -0.0309 0.9848 0.1710\nvn 0.4656 0.8849 -0.0084\nvn 0.0161 0.9969 0.0768\nvn 0.2573 0.9504 -0.1746\nvn 0.2526 0.9484 0.1918\nvn 0.1261 0.9837 0.1285\nvn 0.0069 0.8926 0.4507\nvn -0.0689 0.3179 0.9456\nvn -0.0050 0.9362 0.3514\nvn 0.6761 -0.1493 0.7215\nvn 0.7254 -0.1195 0.6779\nvn 0.6989 -0.1886 0.6899\nvn 0.7694 -0.0334 0.6379\nvn 0.3722 -0.4773 0.7960\nvn 0.1022 -0.4693 0.8771\nvn 0.4955 -0.2226 0.8396\nvn 0.2495 -0.0354 0.9677\nvn 0.4576 -0.0537 0.8875\nvn 0.7474 -0.2959 0.5948\nvn 0.5278 -0.0843 0.8452\nvn 0.0273 0.0040 0.9996\nvn 0.2365 -0.0605 0.9697\nvn 0.8513 0.0906 0.5168\nvn 0.8319 0.1892 0.5218\nvn 0.7391 0.4990 0.4526\nvn 0.8038 0.3631 0.4713\nvn 0.8153 -0.0283 0.5783\nvn 0.5936 0.2129 0.7761\nvn 0.8918 -0.1290 0.4337\nvn 0.6972 -0.0081 0.7168\nvn 0.7999 -0.2088 0.5626\nvn 0.8542 -0.2416 0.4603\nvn 0.5375 -0.0704 0.8403\nvn 0.8360 -0.1141 0.5367\nvn 0.6065 -0.1785 0.7748\nvn 0.8089 -0.1370 0.5717\nvn 0.8196 0.3380 0.4627\nvn 0.9316 -0.0486 0.3601\nvn 0.2746 0.2005 0.9404\nvn 0.6682 -0.2133 0.7128\nvn 0.7833 -0.1920 0.5913\nvn 0.9321 0.0407 0.3600\nvn 0.9306 -0.1040 0.3509\nvn 0.9098 -0.1429 0.3896\nvn 0.8812 -0.2647 0.3917\nvn 0.9127 -0.1628 0.3748\nvn 0.9240 -0.0691 0.3760\nvn 0.3875 0.6912 -0.6099\nvn 0.6772 0.7352 0.0278\nvn 0.3048 -0.3155 0.8986\nvn 0.5984 -0.2531 0.7602\nvn 0.7992 -0.3262 0.5049\nvn 0.8522 -0.3178 0.4157\nvn 0.7726 -0.3356 0.5390\nvn 0.8247 -0.3478 0.4460\nvn 0.9540 -0.2060 0.2180\nvn 0.9332 -0.2159 0.2872\nvn 0.9151 -0.3121 0.2554\nvn 0.9651 -0.2423 0.0989\nvn 0.9640 -0.0642 0.2581\nvn 0.9509 -0.0256 0.3084\nvn 0.9788 -0.0669 0.1937\nvn 0.7828 -0.6217 0.0270\nvn 0.9461 -0.3095 0.0952\nvn 0.9287 -0.3184 0.1903\nvn 0.8930 -0.3100 -0.3264\nvn 0.9863 -0.1547 0.0575\nvn 0.9097 -0.0694 0.4094\nvn 0.9376 -0.1880 0.2926\nvn 0.9422 -0.2943 -0.1602\nvn 0.6654 -0.2456 -0.7050\nvn 0.7949 -0.3098 -0.5217\nvn 0.3845 0.6595 0.6459\nvn 0.8494 0.1107 0.5161\nvn 0.8828 0.2818 0.3760\nvn 0.7794 0.3331 0.5307\nvn 0.5520 -0.4986 0.6683\nvn 0.3333 -0.4525 0.8271\nvn 0.0848 -0.4298 0.8989\nvn 0.1861 0.0828 0.9790\nvn -0.0446 0.3191 0.9467\nvn 0.0515 0.7298 0.6817\nvn 0.1046 0.9081 0.4056\nvn -0.1231 -0.2752 0.9535\nvn -0.1359 0.6889 0.7120\nvn 0.2190 0.7352 0.6415\nvn 0.4444 0.6135 0.6528\nvn 0.4885 -0.1887 0.8519\nvn 0.6055 0.2562 0.7535\nvn 0.2922 0.8840 0.3649\nvn 0.4799 0.6298 0.6107\nvn 0.1058 0.8155 0.5691\nvn 0.6695 0.3988 0.6266\nvn 0.7561 -0.2599 0.6006\nvn 0.4692 0.7373 0.4861\nvn 0.4164 0.6327 0.6529\nvn 0.6642 0.6524 0.3650\nvn 0.7247 0.5698 0.3875\nvn 0.4420 0.8705 0.2165\nvn 0.5663 0.7256 0.3909\nvn 0.4218 0.8338 0.3562\nvn 0.4401 0.8126 0.3822\nvn 0.0429 0.9448 0.3249\nvn -0.0285 0.7535 0.6569\nvn -0.2501 0.7646 0.5940\nvn -0.2978 0.8583 0.4179\nvn 0.1693 0.5879 0.7910\nvn -0.0818 0.4190 0.9043\nvn -0.5796 0.6263 0.5214\nvn 0.4913 -0.0187 0.8708\nvn -0.2544 0.1957 0.9471\nvn -0.6944 0.3867 0.6068\nvn -0.6953 0.5634 0.4462\nvn -0.8046 0.5511 0.2212\nvn -0.6223 0.0836 0.7783\nvn -0.2609 -0.0939 0.9608\nvn 0.7217 -0.6915 -0.0306\nvn 0.6991 -0.7083 -0.0980\nvn 0.8716 -0.4422 0.2116\nvn 0.6893 -0.7150 -0.1168\nvn 0.5462 -0.8297 -0.1153\nvn 0.7191 -0.6482 0.2504\nvn 0.6588 -0.7282 0.1889\nvn 0.6638 -0.7425 -0.0892\nvn 0.3944 -0.8654 0.3092\nvn 0.5434 -0.5219 0.6575\nvn 0.1469 -0.9142 0.3778\nvn 0.2391 -0.5987 0.7645\nvn -0.2126 0.9657 -0.1493\nvn -0.3533 0.5850 -0.7300\nvn -0.8001 0.3379 -0.4956\nvn -0.9376 0.2210 -0.2686\nvn -0.6238 0.7633 -0.1681\nvn -0.8836 0.2707 -0.3821\nvn -0.9227 0.2775 -0.2675\nvn -0.8825 0.4381 -0.1712\nvn -0.8778 0.4219 -0.2267\nvn -0.7828 0.4386 -0.4415\nvn -0.7780 0.3940 -0.4893\nvn -0.7533 0.5867 -0.2971\nvn -0.8079 0.1939 -0.5564\nvn -0.8837 0.3515 -0.3091\nvn -0.9072 -0.0069 -0.4206\nvn -0.9090 0.2621 -0.3241\nvn -0.8984 0.4252 -0.1102\nvn -0.9577 0.1716 -0.2309\nvn -0.9103 0.0549 -0.4102\nvn -0.3664 0.6178 -0.6958\nvn -0.1760 0.8061 -0.5650\nvn -0.6409 0.5929 -0.4875\nvn -0.6306 0.4568 -0.6274\nvn -0.7977 0.1908 -0.5721\nvn -0.8241 0.3188 -0.4681\nvn -0.2330 0.4852 -0.8428\nvn -0.4206 0.4350 -0.7962\nvn -0.5532 0.2037 -0.8077\nvn -0.1878 0.2323 -0.9544\nvn -0.5108 -0.1171 -0.8517\nvn -0.0212 -0.5271 -0.8495\nvn -0.2173 -0.2383 -0.9466\nvn -0.1727 -0.5332 -0.8282\nvn -0.0982 -0.8214 -0.5618\nvn -0.3789 -0.3951 -0.8369\nvn -0.1838 -0.7960 -0.5768\nvn -0.5747 -0.4470 -0.6855\nvn -0.7940 -0.0051 -0.6079\nvn -0.0856 -0.8453 -0.5275\nvn -0.5530 -0.6009 -0.5771\nvn -0.7879 -0.2611 -0.5577\nvn -0.7638 -0.1795 -0.6200\nvn -0.8962 -0.1110 -0.4295\nvn -0.8912 -0.0575 -0.4499\nvn -0.8719 -0.0979 -0.4798\nvn -0.9415 0.1252 -0.3128\nvn -0.7736 -0.2777 -0.5696\nvn -0.3740 -0.7132 -0.5929\nvn -0.8116 -0.2965 -0.5034\nvn -0.5351 -0.4506 -0.7146\nvn -0.7549 -0.1402 -0.6407\nvn -0.7082 -0.1829 -0.6819\nvn -0.7982 -0.1881 -0.5722\nvn -0.5602 -0.4583 -0.6901\nvn 0.0044 -0.8622 -0.5065\nvn -0.7743 -0.2936 -0.5605\nvn -0.8328 -0.2940 -0.4692\nvn -0.8191 -0.1295 -0.5588\nvn -0.8496 -0.2214 -0.4788\nvn -0.7883 -0.3521 -0.5046\nvn 0.0917 -0.2083 -0.9738\nvn -0.3944 -0.3415 -0.8531\nvn -0.5029 -0.0625 -0.8621\nvn 0.2598 -0.5819 -0.7706\nvn -0.3170 -0.5608 -0.7649\nvn 0.2245 -0.8261 -0.5169\nvn -0.3303 -0.8046 -0.4935\nvn -0.7044 -0.3216 -0.6328\nvn -0.5585 -0.6427 -0.5244\nvn -0.7581 0.1679 -0.6302\nvn -0.6918 -0.1703 -0.7017\nvn -0.8284 -0.2350 -0.5085\nvn -0.8402 -0.0497 -0.5400\nvn -0.8023 0.3290 -0.4981\nvn -0.8639 -0.0865 -0.4961\nvn -0.8362 0.2140 -0.5050\nvn -0.7944 0.4029 -0.4546\nvn -0.8171 0.3496 -0.4584\nvn -0.8719 0.3870 -0.3002\nvn -0.7812 0.3860 -0.4907\nvn -0.5372 0.1578 -0.8286\nvn -0.6852 0.1228 -0.7179\nvn -0.7387 0.2249 -0.6354\nvn -0.8893 0.2290 -0.3960\nvn -0.0639 0.0648 -0.9959\nvn -0.1059 0.0339 -0.9938\nvn -0.8804 0.3381 -0.3326\nvn -0.8511 0.3835 -0.3585\nvn -0.9669 0.1709 -0.1896\nvn -0.9317 -0.0281 -0.3621\nvn -0.8409 0.3810 -0.3844\nvn -0.8859 0.3911 -0.2494\nvn -0.8928 0.4400 -0.0963\nvn -0.7598 0.6424 -0.1005\nvn -0.9174 0.3108 -0.2485\nvn -0.9072 0.3048 -0.2900\nvn -0.9394 0.3347 -0.0746\nvn -0.9999 0.0004 -0.0165\nvn -0.8062 0.5212 0.2800\nvn -0.9404 0.2812 0.1914\nvn -0.7790 -0.2426 -0.5781\nvn -0.9305 -0.3566 -0.0840\nvn -0.9714 -0.2367 -0.0165\nvn -0.9112 -0.0539 -0.4083\nvn -0.5216 -0.1174 -0.8451\nvn -0.0708 -0.2705 -0.9601\nvn 0.1671 -0.1170 -0.9790\nvn -0.4807 -0.1791 -0.8584\nvn 0.4910 -0.2304 -0.8401\nvn 0.3767 -0.2073 -0.9028\nvn -0.1873 -0.0804 -0.9790\nvn 0.2852 -0.1908 -0.9393\nvn 0.5692 -0.3565 -0.7409\nvn 0.8168 -0.4485 -0.3629\nvn 0.5525 -0.8055 -0.2145\nvn 0.0559 -0.9435 -0.3265\nvn 0.0306 -0.8988 -0.4373\nvn 0.3403 -0.8918 -0.2980\nvn 0.2338 -0.9014 -0.3645\nvn 0.1971 -0.9231 -0.3303\nvn 0.1299 -0.9720 -0.1956\nvn -0.0198 -0.9852 -0.1701\nvn -0.9193 0.3815 0.0968\nvn -0.8858 0.4488 0.1183\nvn -0.9673 0.1151 0.2259\nvn -0.6938 0.7146 0.0891\nvn -0.3920 0.8468 -0.3595\nvn -0.2803 0.9563 0.0832\nvn -0.5316 0.7491 -0.3954\nvn -0.4510 0.8910 -0.0517\nvn -0.3076 0.9452 0.1099\nvn -0.7263 0.6638 -0.1782\nvn -0.2675 0.9611 0.0683\nvn 0.1761 0.9836 0.0381\nvn -0.6408 0.7434 -0.1917\nvn -0.2272 0.9568 -0.1816\nvn -0.7866 0.5428 -0.2944\nvn -0.4739 0.8559 0.2072\nvn -0.8479 0.5177 -0.1139\nvn -0.4949 0.8598 0.1261\nvn -0.4684 0.8520 0.2339\nvn -0.8234 0.5504 -0.1380\nvn -0.4294 0.9020 0.0440\nvn 0.6134 0.0189 -0.7895\nvn 0.8176 -0.2807 -0.5028\nvn 0.6946 -0.2799 -0.6627\nvn 0.9629 -0.1684 -0.2108\nvn 0.9414 -0.3373 0.0037\nvn 0.2871 0.1814 -0.9406\nvn -0.1567 0.3688 -0.9162\nvn 0.4958 0.5024 -0.7083\nvn 0.0496 0.8737 -0.4839\nvn -0.4438 0.7784 -0.4440\nvn -0.2740 0.9616 0.0166\nvn 0.2075 0.7492 -0.6290\nvn 0.7478 0.5483 -0.3745\nvn 0.6833 0.7097 0.1712\nvn 0.5126 0.3849 0.7675\nvn 0.9339 0.2584 0.2471\nvn 0.8856 0.1197 -0.4488\nvn 0.2814 0.7910 0.5433\nvn -0.0222 0.4048 0.9141\nvn -0.1572 0.8025 0.5756\nvn -0.5498 0.2998 0.7797\nvn -0.2574 0.1557 0.9537\nvn -0.3330 0.4401 0.8339\nvn -0.5061 0.6999 0.5040\nvn -0.9371 0.1980 0.2876\nvn -0.6908 -0.0330 0.7223\nvn -0.7716 0.6353 0.0306\nvn 0.0115 0.9999 0.0099\nvn 0.3368 0.9395 -0.0621\nvn -0.8719 -0.2621 0.4135\nvn -0.8997 0.0986 0.4251\nvn 0.8328 -0.1013 0.5442\nvn -0.5888 0.0059 0.8083\nvn -0.3171 0.4025 0.8587\nvn -0.4362 0.1787 0.8819\nvn -0.6651 0.3649 0.6515\nvn -0.2036 0.7904 0.5777\nvn 0.1987 0.2268 0.9535\nvn -0.6417 0.7051 -0.3018\nvn -0.0057 0.9964 -0.0848\nvn -0.4493 0.8136 0.3690\nvn 0.3038 0.8059 -0.5081\nvn -0.9573 0.0428 0.2858\nvn -0.9271 0.3652 0.0837\nvn 0.7453 -0.0570 0.6643\nvn 0.5553 0.3595 0.7499\nvn -0.2684 0.6013 0.7526\nvn 0.3667 0.8787 0.3058\nvn 0.8837 0.0224 0.4675\nvn 0.8444 0.5162 0.1435\nvn 0.9202 0.3798 0.0952\nvn 0.9879 0.0579 0.1436\nvn 0.5025 0.7427 -0.4426\nvn -0.1721 0.9712 0.1647\nvn 0.5602 0.6068 0.5639\nvn -0.4732 0.5989 0.6461\nvn -0.4054 -0.1536 0.9011\nvn -0.5597 0.8015 0.2107\nvn -0.7066 0.6673 -0.2355\nvn -0.5456 0.8331 0.0911\nvn -0.4537 0.8079 0.3761\nvn -0.0039 0.9620 0.2729\nvn 0.0440 0.9937 0.1026\nvn -0.0606 0.9890 0.1347\nvn -0.4664 0.8835 -0.0448\nvn 0.1782 0.9649 0.1927\nvn -0.2644 0.9566 0.1226\nvn 0.0088 0.8918 0.4523\nvn -0.1213 0.9909 0.0588\nvn 0.0035 -0.3723 0.9281\nvn -0.2496 0.1114 0.9619\nvn -0.7049 0.7015 0.1045\nvn 0.0545 0.9953 0.0799\nvn -0.2664 0.8587 0.4377\nvn -0.3399 0.6701 0.6598\nvn -0.1890 0.9722 0.1381\nvn 0.2463 0.9670 0.0656\nvn 0.9419 -0.2439 -0.2308\nvn 0.5081 -0.1405 -0.8498\nvn -0.9246 0.0019 0.3809\nvn -0.7165 0.2986 -0.6304\nvn -0.0024 0.7118 0.7024\nvn 0.4350 0.4150 0.7991\nvn 0.6466 0.5279 0.5507\nvn 0.7436 0.2650 0.6139\nvn 0.9078 0.2582 0.3305\nvn 0.5674 -0.0985 0.8175\nvn 0.5108 0.1681 0.8431\nvn 0.6995 0.4472 0.5574\nvn 0.6307 0.5947 0.4986\nvn 0.8690 -0.3606 0.3389\nvn 0.2840 -0.3997 0.8715\nvn 0.2011 -0.3354 0.9204\nvn 0.0303 -0.2696 0.9625\nvn 0.4303 -0.4568 0.7786\nvn 0.3782 -0.2155 0.9003\nvn 0.3300 -0.6279 0.7049\nvn 0.6181 -0.6938 0.3695\nvn 0.5919 -0.4656 0.6580\nvn 0.3071 0.6528 0.6925\nvn 0.3104 0.8338 0.4565\nvn 0.3859 0.6373 0.6670\nvn 0.2013 0.0910 0.9753\nvn 0.1655 0.0186 0.9860\nvn 0.2478 0.4052 0.8800\nvn 0.6013 -0.0571 0.7970\nvn 0.5631 0.2163 0.7976\nvn 0.3377 -0.1878 0.9223\nvn 0.7360 -0.1233 0.6657\nvn 0.8887 -0.0450 0.4563\nvn 0.7543 0.1948 0.6269\nvn 0.4529 -0.4523 0.7683\nvn 0.2040 0.1890 0.9606\nvn 0.0244 0.3359 0.9416\nvn -0.0092 -0.0794 0.9968\nvn 0.3642 -0.3840 0.8485\nvn -0.0563 -0.2150 0.9750\nvn 0.3168 -0.2410 0.9174\nvn 0.8460 -0.1579 0.5092\nvn 0.0537 -0.4932 0.8682\nvn 0.6256 0.4235 0.6552\nvn 0.3962 -0.0946 0.9133\nvn 0.6319 -0.0209 0.7748\nvn 0.5043 0.3034 0.8085\nvn 0.5801 0.7892 0.2017\nvn 0.3887 0.2319 0.8917\nvn 0.2324 0.1522 0.9606\nvn 0.3088 0.6235 0.7182\nvn 0.2091 0.7440 0.6346\nvn 0.1519 0.8979 0.4132\nvn 0.4842 0.1899 0.8541\nvn 0.4924 0.6411 0.5887\nvn 0.5931 0.0157 0.8050\nvn 0.6609 0.2714 0.6997\nvn 0.7517 0.2960 0.5893\nvn 0.8178 0.0322 0.5746\nvn 0.5838 0.4484 0.6768\nvn -0.1959 0.1695 0.9659\nvn 0.4018 0.0552 0.9141\nvn 0.5254 -0.0046 0.8508\nvn -0.0175 -0.2334 0.9722\nvn 0.1485 -0.3193 0.9360\nvn 0.1100 -0.3948 0.9121\nvn 0.2338 -0.1996 0.9516\nvn 0.3949 -0.2827 0.8741\nvn 0.6318 -0.0860 0.7704\nvn 0.6302 -0.1321 0.7651\nvn 0.4609 -0.1925 0.8663\nvn -0.0688 -0.0579 0.9960\nvn 0.0779 0.0004 0.9970\nvn 0.4378 0.0520 0.8976\nvn 0.4316 -0.1561 0.8885\nvn 0.4122 -0.0374 0.9103\nvn 0.4987 0.1172 0.8588\nvn 0.6237 0.2206 0.7499\nvn 0.7381 0.2778 0.6148\nvn 0.8858 0.2274 0.4045\nvn 0.9831 0.1589 0.0904\nvn 0.9869 0.1025 -0.1246\nvn 0.5187 -0.7653 0.3812\nvn 0.3767 -0.8014 0.4646\nvn 0.7832 0.6031 0.1514\nvn 0.9304 -0.2908 0.2233\nvn -0.2624 -0.8387 0.4772\nvn -0.1563 -0.9807 -0.1177\nvn 0.2046 -0.5175 0.8309\nvn 0.0939 -0.6375 0.7647\nvn -0.5725 -0.4888 0.6582\nvn -0.4357 -0.3545 0.8273\nvn -0.5134 -0.2805 0.8110\nvn -0.5363 -0.1633 0.8281\nvn 0.2737 0.7811 0.5612\nvn -0.3076 0.4751 0.8244\nvn -0.2071 0.8576 0.4709\nvn 0.1116 0.9159 0.3857\nvn -0.0601 0.9708 0.2323\nvn -0.1487 0.9632 0.2237\nvn 0.0755 0.9675 0.2412\nvn 0.2286 0.9654 0.1255\nvn 0.3530 0.9356 -0.0101\nvn 0.4397 0.8855 0.1502\nvn 0.1737 0.9812 0.0842\nvn 0.0664 0.9912 0.1146\nvn -0.2181 0.9431 0.2510\nvn -0.5869 -0.1000 0.8035\nvn -0.5755 0.1375 0.8061\nvn 0.5273 -0.6148 0.5866\nvn 0.6153 -0.7707 0.1659\nvn 0.4579 -0.8889 0.0103\nvn 0.3285 -0.6148 0.7170\nvn -0.5714 -0.7391 0.3567\nvn 0.6154 -0.7370 0.2796\nvn 0.4612 -0.6871 0.5614\nvn 0.5077 -0.8370 0.2040\nvn 0.6545 -0.7553 -0.0327\nvn 0.6362 -0.7715 -0.0028\nvn 0.2348 -0.9677 -0.0915\nvn 0.1825 -0.9810 -0.0658\nvn -0.1563 -0.9839 -0.0872\nvn -0.6699 -0.7417 -0.0327\nvn -0.4218 -0.9052 -0.0524\nvn -0.8028 -0.5963 -0.0043\nvn -0.8248 -0.4961 0.2712\nvn -0.8974 -0.1986 0.3941\nvn -0.6890 -0.1614 0.7065\nvn 0.6935 0.6716 0.2607\nvn 0.8915 0.3434 0.2954\nvn 0.9030 0.3454 0.2557\nvn -0.0278 0.9836 0.1781\nvn 0.1140 0.9658 0.2330\nvn 0.6837 -0.7285 0.0420\nvn 0.6176 -0.7808 0.0944\nvn 0.5554 -0.8228 0.1207\nvn 0.7192 -0.6879 0.0979\nvn 0.4451 -0.8928 0.0687\nvn 0.5219 -0.8530 -0.0018\nvn 0.1567 -0.9848 0.0750\nvn 0.0474 -0.9913 0.1231\nvn -0.2809 -0.9568 0.0755\nvn -0.7444 -0.5381 0.3954\nvn -0.8329 -0.3751 0.4070\nvn -0.7369 -0.6445 0.2040\nvn -0.6717 -0.0524 0.7389\nvn -0.1937 0.9443 0.2661\nvn -0.0216 0.9906 0.1349\nvn 0.9133 -0.2673 0.3072\nvn 0.8484 0.3480 0.3989\nvn 0.8681 -0.4170 0.2693\nvn 0.6484 -0.7013 0.2962\nvn 0.6396 0.6430 0.4214\nvn 0.6041 -0.7793 0.1664\nvn 0.7106 -0.6788 0.1851\nvn 0.6390 -0.7593 0.1232\nvn 0.2196 -0.9744 0.0486\nvn 0.4004 -0.9102 0.1058\nvn -0.1473 -0.9380 0.3138\nvn -0.5402 -0.8378 0.0793\nvn -0.5326 -0.5164 0.6706\nvn 0.3237 0.8913 0.3174\nvn 0.6302 0.6181 0.4698\nvn 0.6810 0.6264 0.3792\nvn -0.1536 0.9448 0.2893\nvn -0.3096 0.9045 0.2932\nvn -0.5354 0.6731 0.5102\nvn -0.6789 0.0711 0.7307\nvn -0.7355 0.1292 0.6651\nvn -0.7260 -0.0380 0.6867\nvn -0.7086 0.0326 0.7049\nvn -0.0251 -0.6803 0.7325\nvn 0.6732 -0.7082 0.2130\nvn 0.8348 -0.5414 0.1000\nvn -0.8137 0.0684 0.5772\nvn 0.6063 -0.7401 0.2909\nvn 0.8352 -0.5106 0.2043\nvn 0.7738 -0.3844 0.5035\nvn 0.7512 0.3706 0.5462\nvn 0.6005 0.5022 0.6223\nvn 0.5502 0.6844 0.4784\nvn 0.4085 0.7858 0.4643\nvn 0.3119 0.8929 0.3249\nvn 0.7317 0.1915 0.6541\nvn -0.1909 0.8355 0.5152\nvn -0.7057 0.1604 0.6901\nvn -0.7127 0.2345 0.6611\nvn -0.7497 -0.0117 0.6616\nvn -0.0056 -0.5826 0.8128\nvn -0.6703 -0.2641 0.6935\nvn 0.0010 -0.3120 0.9501\nvn 0.6629 -0.6067 0.4387\nvn 0.8358 -0.3446 0.4274\nvn 0.6829 -0.5501 0.4806\nvn 0.7544 0.0413 0.6551\nvn 0.2732 0.8615 0.4279\nvn -0.2257 0.4608 0.8583\nvn 0.2340 0.5412 0.8077\nvn -0.5254 0.0300 0.8503\nvn -0.7008 0.1043 0.7057\nvn 0.5325 -0.3136 0.7862\nvn 0.6861 -0.2708 0.6753\nvn 0.2684 0.2935 0.9175\nvn -0.3489 0.6480 0.6770\nvn -0.1128 0.1498 0.9823\nvn -0.0547 0.5845 0.8095\nvn -0.4327 0.4717 0.7683\nvn -0.7413 0.1911 0.6434\nvn 0.2897 -0.1096 0.9508\nvn 0.5766 -0.0295 0.8165\nvn 0.6083 -0.1779 0.7735\nvn 0.3732 0.1298 0.9186\nvn -0.5082 0.5939 0.6237\nvn 0.4258 0.1689 0.8889\nvn 0.0256 0.6034 0.7970\nvn 0.4747 0.1589 0.8657\nvn 0.5619 0.1177 0.8188\nvn 0.5546 0.3497 0.7551\nvn 0.0959 0.3509 0.9315\nvn 0.4867 0.7280 0.4829\nvn 0.6343 0.0002 0.7731\nvn 0.3407 0.1273 0.9315\nvn 0.5226 0.1228 0.8437\nvn -0.0174 0.0818 0.9965\nvn -0.0799 -0.4297 0.8994\nvn 0.1975 -0.4836 0.8527\nvn 0.3848 0.1944 0.9023\nvn 0.2862 -0.0375 0.9574\nvn 0.6352 -0.1087 0.7647\nvn 0.4362 0.2109 0.8748\nvn 0.0818 -0.7491 0.6573\nvn 0.2566 -0.2277 0.9393\nvn 0.3235 -0.7333 0.5981\nvn 0.3404 -0.2697 0.9008\nvn 0.5303 0.2336 0.8150\nvn 0.4751 -0.4938 0.7283\nvn 0.7394 -0.1717 0.6511\nvn 0.4198 -0.7442 0.5196\nvn 0.5377 -0.7418 0.4008\nvn 0.8173 0.0953 0.5682\nvn 0.6389 -0.5909 0.4926\nvn 0.9195 -0.0040 0.3930\nvn 0.5574 0.1325 0.8196\nvn 0.5324 0.2405 0.8116\nvn 0.8499 0.2656 0.4552\nvn 0.3582 0.0222 0.9334\nvn 0.1839 0.0354 0.9823\nvn 0.1275 0.1801 0.9754\nvn 0.3066 0.1636 0.9377\nvn 0.0009 0.1436 0.9896\nvn -0.0461 0.0191 0.9988\nvn -0.0043 -0.1034 0.9946\nvn 0.4957 0.1419 0.8568\nvn 0.9912 0.1323 0.0054\nvn 0.9513 0.1838 0.2476\nvn 0.9617 0.1488 -0.2300\nvn 0.9545 -0.0473 -0.2945\nvn 0.9574 -0.2879 -0.0205\nvn 0.9682 -0.0191 0.2494\nvn 0.7564 0.1250 -0.6420\nvn 0.8468 0.0713 -0.5272\nvn 0.9092 -0.0850 -0.4075\nvn 0.1193 0.2376 0.9640\nvn 0.9573 -0.2849 -0.0495\nvn 0.9103 -0.3320 0.2474\nvn 0.9325 -0.3167 0.1736\nvn 0.8872 -0.3052 0.3461\nvn 0.9150 -0.2606 0.3081\nvn 0.9231 -0.1942 0.3319\nvn 0.8426 -0.3347 0.4219\nvn 0.9028 -0.2775 0.3287\nvn 0.9466 -0.1883 0.2618\nvn 0.9699 -0.1632 0.1806\nvn 0.9582 -0.2252 0.1765\nvn 0.9172 -0.2898 0.2734\nvn 0.9932 -0.1143 0.0218\nvn 0.9553 -0.2037 0.2141\nvn 0.9841 -0.1740 0.0357\nvn 0.9863 -0.0958 -0.1345\nvn 0.9685 -0.1661 -0.1853\nvn 0.9160 -0.1521 -0.3711\nvn 0.9506 -0.0763 -0.3010\nvn 0.9099 -0.2550 -0.3272\nvn 0.0024 0.2341 0.9722\nvn 0.2592 0.2910 0.9210\nvn 0.4568 0.2522 0.8531\nvn 0.5900 0.1614 0.7911\nvn 0.6562 0.1522 0.7391\nvn 0.7061 0.1669 0.6882\nvn 0.7672 0.1543 0.6225\nvn 0.7973 0.1666 0.5802\nvn 0.8924 0.0804 0.4441\nvn 0.8794 0.1118 0.4628\nvn 0.9194 0.0581 0.3891\nvn 0.9260 -0.1433 0.3494\nvn 0.9132 -0.2045 0.3524\nvn 0.9414 -0.0497 0.3336\nvn 0.9598 -0.1273 0.2500\nvn 0.9840 0.0122 0.1775\nvn 0.9658 -0.0671 0.2503\nvn 0.9891 -0.0639 0.1326\nvn 0.9798 -0.0237 -0.1984\nvn 0.9546 0.0417 -0.2949\nvn 0.8986 -0.0616 -0.4344\nvn 0.8831 0.0161 -0.4689\nvn 0.7095 -0.2221 -0.6688\nvn 0.7541 -0.3470 -0.5576\nvn 0.6519 -0.4332 -0.6224\nvn 0.6791 -0.2616 -0.6859\nvn 0.6159 -0.1239 -0.7780\nvn 0.6601 -0.0901 -0.7457\nvn 0.6284 -0.3530 -0.6932\nvn 0.4973 -0.2204 -0.8391\nvn 0.3378 -0.1286 -0.9324\nvn 0.0061 -0.2829 -0.9591\nvn -0.0066 -0.0920 -0.9957\nvn 0.8617 -0.1612 -0.4812\nvn 0.8457 -0.0522 -0.5311\nvn 0.7832 -0.1329 -0.6074\nvn 0.6897 0.0472 -0.7226\nvn 0.7631 -0.0337 -0.6454\nvn 0.5053 0.0588 -0.8610\nvn 0.6037 0.0362 -0.7964\nvn 0.5277 0.0034 -0.8495\nvn 0.3968 0.1194 -0.9101\nvn 0.4290 -0.0205 -0.9031\nvn 0.3218 0.1098 -0.9404\nvn 0.2137 0.0469 -0.9758\nvn -0.0111 0.0651 -0.9978\nvn 0.0003 0.2013 -0.9795\nvn -0.1457 0.0512 0.9880\nvn 0.2197 0.9344 0.2804\nvn -0.0760 0.8955 0.4386\nvn 0.1758 0.6398 0.7481\nvn 0.5033 -0.3693 0.7812\nvn 0.4375 -0.5338 0.7237\nvn 0.3791 -0.4071 0.8310\nvn 0.3076 -0.0492 0.9503\nvn 0.2685 -0.3954 0.8784\nvn 0.7657 0.0552 0.6408\nvn 0.7423 -0.1321 0.6569\nvn 0.3752 -0.2057 0.9038\nvn 0.6478 -0.0338 0.7611\nvn 0.4185 -0.1849 0.8892\nvn 0.7027 -0.1336 0.6989\nvn 0.7729 -0.1617 0.6135\nvn 0.5977 -0.2507 0.7615\nvn 0.3951 -0.4529 0.7992\nvn 0.1452 -0.3660 0.9192\nvn 0.1905 -0.3192 0.9283\nvn 0.3758 -0.2744 0.8851\nvn 0.7864 -0.1612 0.5963\nvn 0.7029 0.0682 0.7080\nvn 0.8054 -0.1008 0.5840\nvn 0.4283 -0.3060 0.8502\nvn 0.2379 -0.3887 0.8901\nvn 0.1045 -0.4411 0.8913\nvn 0.0975 -0.5285 0.8433\nvn 0.3409 -0.4014 0.8501\nvn 0.6446 -0.2884 0.7081\nvn 0.9112 0.0615 0.4072\nvn 0.8831 0.0675 0.4643\nvn 0.3299 -0.4247 0.8431\nvn 0.2777 -0.5571 0.7827\nvn 0.1018 -0.5686 0.8163\nvn 0.8043 -0.3416 0.4862\nvn 0.8694 -0.0787 0.4878\nvn 0.9473 -0.0901 0.3073\nvn 0.8857 0.3029 0.3520\nvn 0.9943 -0.0083 0.1064\nvn 0.7047 0.6934 0.1502\nvn 0.6553 0.7369 -0.1661\nvn 0.9169 -0.3937 0.0654\nvn 0.8808 -0.2472 0.4038\nvn 0.7337 -0.6692 0.1173\nvn 0.7295 -0.3093 0.6100\nvn 0.6161 -0.6982 0.3645\nvn 0.5522 -0.5657 0.6124\nvn 0.2529 -0.8940 0.3699\nvn 0.1501 -0.7860 0.5998\nvn 0.1670 -0.9680 0.1874\nvn 0.2772 -0.6357 0.7205\nvn 0.3280 -0.8900 0.3167\nvn 0.5071 -0.2964 0.8093\nvn 0.5530 -0.4972 0.6685\nvn 0.6698 -0.1731 0.7221\nvn 0.9103 0.0874 0.4045\nvn 0.7539 0.1971 0.6268\nvn 0.4141 0.2695 0.8694\nvn 0.8155 0.1518 0.5585\nvn 0.9137 0.0366 0.4047\nvn 0.7500 -0.0967 0.6543\nvn 0.6896 -0.2053 0.6945\nvn 0.8720 -0.2047 0.4445\nvn 0.6593 -0.7141 0.2354\nvn 0.1941 -0.9735 -0.1210\nvn 0.6296 -0.7361 -0.2485\nvn 0.2781 -0.9594 0.0464\nvn 0.5438 -0.7887 0.2867\nvn 0.1915 -0.9811 0.0263\nvn 0.6750 -0.7195 0.1633\nvn 0.1480 -0.9887 0.0225\nvn 0.8223 -0.2413 0.5153\nvn 0.9376 -0.1504 0.3134\nvn 0.2037 -0.9757 -0.0811\nvn 0.7376 -0.6166 0.2754\nvn 0.7969 -0.2519 0.5491\nvn 0.9484 -0.1684 0.2686\nvn 0.8740 -0.4860 0.0075\nvn 0.9879 0.0472 -0.1477\nvn 0.8889 0.0201 -0.4576\nvn 0.7862 0.6155 0.0554\nvn -0.1440 0.9772 -0.1558\nvn -0.3928 0.8554 -0.3378\nvn 0.0446 0.9885 -0.1448\nvn 0.8756 0.4703 -0.1099\nvn 0.9122 -0.3747 -0.1661\nvn 0.7732 -0.6107 -0.1709\nvn 0.6522 -0.7573 -0.0339\nvn 0.7271 -0.6113 -0.3125\nvn 0.5714 -0.6714 -0.4719\nvn 0.8398 -0.4372 -0.3218\nvn 0.9548 -0.1334 -0.2656\nvn 0.7314 -0.6468 -0.2162\nvn 0.2788 -0.8380 -0.4690\nvn 0.7207 -0.6724 0.1686\nvn 0.9457 -0.3251 -0.0020\nvn 0.4317 -0.8904 0.1444\nvn -0.1323 -0.9613 0.2416\nvn 0.2633 -0.8716 0.4135\nvn 0.8034 -0.5319 0.2678\nvn 0.9446 -0.2574 0.2038\nvn -0.0016 -0.8034 0.5955\nvn 0.2785 -0.6164 0.7366\nvn 0.5756 -0.6961 0.4290\nvn 0.9997 0.0031 -0.0231\nvn 0.9841 0.0227 -0.1764\nvn 0.8369 -0.3245 0.4408\nvn 0.8268 -0.3785 0.4161\nvn 0.8550 -0.2984 0.4242\nvn 0.9092 -0.2939 0.2949\nvn 0.9188 -0.0848 0.3856\nvn 0.9628 -0.1684 0.2113\nvn 0.5931 0.1970 -0.7807\nvn 0.9967 0.0800 0.0124\nvn 0.9573 0.2372 -0.1656\nvn 0.6399 0.1150 -0.7598\nvn -0.4208 0.7646 -0.4881\nvn 0.8833 0.4506 -0.1291\nvn -0.0094 0.7997 -0.6003\nvn 0.7409 0.5882 -0.3242\nvn 0.4275 0.6455 -0.6329\nvn 0.4251 0.3952 -0.8143\nvn 0.4168 0.2035 -0.8859\nvn 0.3835 -0.0574 -0.9217\nvn 0.8839 0.1957 0.4247\nvn 0.8386 -0.0724 -0.5400\nvn 0.9844 -0.1723 -0.0342\nvn 0.7567 -0.6125 0.2286\nvn 0.8495 -0.3722 0.3739\nvn 0.7555 -0.4825 0.4431\nvn 0.7857 -0.3749 0.4921\nvn 0.8255 0.4001 0.3981\nvn 0.6452 0.0374 0.7631\nvn 0.2586 0.0632 0.9639\nvn 0.6539 -0.1229 0.7465\nvn 0.7483 -0.3947 0.5331\nvn 0.7212 -0.4773 0.5020\nvn 0.8185 -0.4774 -0.3195\nvn 0.5668 -0.4619 -0.6822\nvn 0.2500 -0.0396 -0.9674\nvn 0.0524 0.0733 -0.9959\nvn 0.4799 -0.8588 -0.1796\nvn 0.4592 -0.8878 0.0297\nvn 0.6898 -0.6872 0.2279\nvn 0.6203 -0.5934 0.5129\nvn 0.5927 0.0639 0.8029\nvn -0.0133 0.9983 0.0559\nvn 0.6806 0.7008 0.2137\nvn -0.3818 0.8991 -0.2142\nvn 0.3560 -0.6660 -0.6555\nvn 0.4217 -0.6973 -0.5796\nvn 0.4548 -0.7771 -0.4350\nvn 0.4290 -0.3241 -0.8432\nvn 0.7040 -0.6825 -0.1964\nvn 0.7726 -0.6162 -0.1529\nvn 0.5212 -0.6207 -0.5858\nvn 0.5287 -0.6635 -0.5293\nvn 0.6624 -0.6193 -0.4215\nvn 0.8933 -0.4494 0.0015\nvn 0.8150 -0.3410 -0.4684\nvn 0.9844 -0.1743 -0.0244\nvn 0.7650 -0.5661 0.3071\nvn 0.6283 -0.6404 0.4417\nvn 0.6457 -0.5254 0.5541\nvn 0.5617 -0.4716 0.6798\nvn 0.6404 -0.2340 0.7315\nvn -0.3195 0.9410 0.1120\nvn -0.7184 0.6345 -0.2850\nvn -0.6851 0.6708 -0.2842\nvn 0.0600 0.8659 0.4966\nvn -0.0425 0.9637 0.2635\nvn 0.1487 0.0473 0.9877\nvn 0.1509 0.3820 0.9118\nvn 0.8288 -0.5483 0.1112\nvn 0.5888 -0.7496 -0.3024\nvn 0.6916 -0.6298 0.3536\nvn 0.4528 -0.7113 0.5376\nvn 0.4412 -0.7618 0.4743\nvn 0.3773 -0.7771 0.5037\nvn 0.4209 -0.6682 0.6134\nvn 0.5401 -0.8221 0.1802\nvn 0.6376 -0.7193 0.2759\nvn 0.2522 -0.7064 0.6614\nvn 0.1852 0.3095 0.9327\nvn -0.2666 0.0546 0.9623\nvn -0.3007 0.5848 0.7534\nvn 0.5823 0.2242 0.7814\nvn -0.0217 -0.9029 0.4293\nvn -0.7226 0.5042 0.4728\nvn -0.8814 0.4446 0.1597\nvn -0.7174 0.6781 -0.1595\nvn -0.9888 -0.1113 -0.0998\nvn -0.6284 -0.1032 0.7710\nvn -0.3856 -0.7455 0.5436\nvn -0.8845 -0.1448 0.4435\nvn 0.3037 -0.4782 0.8241\nvn 0.1455 0.3287 0.9332\nvn -0.0081 0.3158 0.9488\nvn 0.0996 0.4265 0.8990\nvn 0.0072 0.4610 0.8874\nvn 0.4564 0.4250 0.7817\nvn 0.2504 0.4778 0.8420\nvn 0.7310 0.2579 0.6318\nvn 0.6012 0.2907 0.7444\nvn 0.1486 0.6073 0.7804\nvn 0.0109 0.6291 0.7772\nvn 0.1669 0.4569 0.8737\nvn 0.4022 0.5674 0.7185\nvn 0.2659 0.6501 0.7119\nvn 0.6178 0.5228 0.5874\nvn 0.4224 0.6591 0.6222\nvn 0.5832 0.6120 0.5341\nvn 0.6828 0.3970 0.6134\nvn 0.7429 0.4545 0.4915\nvn 0.1153 0.7341 0.6691\nvn 0.0027 0.7871 0.6168\nvn 0.2222 0.7223 0.6549\nvn 0.3571 0.7297 0.5831\nvn 0.5535 0.6926 0.4626\nvn 0.7116 0.5273 0.4642\nvn 0.0376 0.7923 0.6089\nvn 0.1504 0.7986 0.5828\nvn 0.4419 0.8322 0.3349\nvn 0.8310 0.2611 0.4911\nvn 0.8969 0.2358 0.3742\nvn 0.9395 0.1164 0.3222\nvn 0.9667 0.0562 0.2498\nvn 0.9712 0.1786 0.1575\nvn 0.9427 0.2306 0.2412\nvn 0.9384 0.1988 0.2826\nvn 0.9804 0.1751 0.0898\nvn 0.9842 0.1464 0.0997\nvn 0.9973 0.0229 0.0699\nvn 0.9830 0.1795 -0.0390\nvn 0.9869 0.1524 0.0526\nvn 0.9751 0.1724 -0.1397\nvn 0.9963 0.0285 -0.0807\nvn 0.8711 0.1876 -0.4538\nvn 0.9578 0.1675 -0.2337\nvn 0.7782 0.1305 -0.6143\nvn 0.7875 0.0515 -0.6141\nvn 0.3241 0.1336 -0.9365\nvn 0.8061 0.3590 0.4704\nvn 0.8606 0.3592 0.3610\nvn 0.7768 0.4716 0.4174\nvn 0.9285 0.3435 0.1409\nvn 0.8891 0.3850 0.2474\nvn 0.9280 0.3581 0.1024\nvn 0.9670 0.2509 0.0440\nvn 0.9424 0.3314 0.0461\nvn 0.9310 0.3533 -0.0914\nvn 0.9189 0.3935 -0.0288\nvn 0.9233 0.3558 -0.1450\nvn 0.8412 0.3376 -0.4224\nvn 0.9132 0.3143 -0.2595\nvn 0.7340 0.3138 -0.6024\nvn 0.6446 0.2294 -0.7293\nvn 0.5171 0.1349 -0.8452\nvn 0.4634 0.0848 -0.8821\nvn 0.3780 0.1122 -0.9190\nvn 0.1835 0.0837 -0.9795\nvn 0.2144 0.1947 -0.9571\nvn 0.1319 0.1386 -0.9815\nvn 0.1867 0.2019 -0.9614\nvn 0.0290 0.2096 -0.9774\nvn 0.0084 0.2336 -0.9723\nvn -0.0394 0.2230 -0.9740\nvn 0.6817 0.6254 0.3797\nvn 0.8150 0.4640 0.3472\nvn 0.6976 0.6138 0.3696\nvn 0.9075 0.3019 0.2920\nvn 0.8604 0.4434 0.2513\nvn 0.9102 0.3370 0.2407\nvn 0.8252 0.5289 0.1984\nvn 0.7737 0.5483 0.3175\nvn 0.8809 0.4473 0.1545\nvn 0.8768 0.4798 0.0311\nvn 0.8059 0.5837 0.0992\nvn 0.8624 0.5062 -0.0092\nvn 0.7849 0.6167 -0.0602\nvn 0.8656 0.4753 -0.1576\nvn 0.8920 0.4327 -0.1304\nvn 0.4700 0.6214 -0.6268\nvn 0.8486 0.5057 -0.1554\nvn 0.7701 0.4302 -0.4711\nvn 0.4831 0.3186 -0.8155\nvn 0.2219 0.2109 -0.9520\nvn 0.3013 0.1553 -0.9408\nvn 0.1733 0.1753 -0.9691\nvn 0.1421 0.1668 -0.9757\nvn 0.0969 0.2540 -0.9623\nvn -0.0082 0.2198 -0.9755\nvn 0.6986 0.6327 0.3341\nvn 0.6160 0.7379 0.2757\nvn 0.5865 0.7128 0.3846\nvn 0.5932 0.7230 0.3540\nvn 0.7593 0.6115 0.2226\nvn 0.7112 0.6880 0.1446\nvn 0.7918 0.6108 0.0012\nvn 0.6877 0.7254 0.0295\nvn 0.6805 0.7327 -0.0040\nvn 0.8715 0.4894 -0.0311\nvn 0.7461 0.6536 -0.1273\nvn 0.7487 0.6184 -0.2385\nvn 0.7176 0.5943 -0.3631\nvn 0.6598 0.7154 -0.2302\nvn 0.6031 0.5929 -0.5336\nvn 0.5909 0.4898 -0.6410\nvn 0.5200 0.4766 -0.7088\nvn 0.3941 0.4939 -0.7751\nvn 0.2373 0.4402 -0.8660\nvn 0.1446 0.1628 -0.9760\nvn 0.0851 0.3767 -0.9224\nvn -0.0010 0.2942 -0.9558\nvn 0.0143 0.3566 -0.9341\nvn -0.0097 0.4266 -0.9044\nvn 0.0736 0.2180 -0.9732\nvn -0.1674 0.5105 -0.8434\nvn -0.0626 0.5725 -0.8175\nvn -0.0539 0.5413 -0.8391\nvn 0.0081 0.6005 -0.7996\nvn 0.1445 0.5358 -0.8319\nvn 0.0637 0.6777 -0.7326\nvn 0.1825 0.6701 -0.7195\nvn 0.3384 0.5763 -0.7439\nvn 0.3099 0.7153 -0.6263\nvn 0.4744 0.6559 -0.5871\nvn 0.5657 0.7179 -0.4056\nvn 0.4431 0.7465 -0.4964\nvn 0.4670 0.8389 -0.2796\nvn 0.5366 0.8060 -0.2497\nvn 0.6069 0.7550 -0.2483\nvn 0.6330 0.7637 -0.1267\nvn 0.5691 0.8122 -0.1281\nvn 0.6606 0.7467 -0.0781\nvn 0.5907 0.8049 -0.0568\nvn 0.6785 0.7336 -0.0382\nvn 0.7090 0.6983 0.0985\nvn 0.6010 0.7992 -0.0093\nvn 0.6092 0.7883 0.0865\nvn 0.6659 0.6938 0.2743\nvn 0.4882 0.8287 0.2739\nvn 0.6561 0.6790 0.3294\nvn 0.4851 0.7638 0.4258\nvn 0.4064 0.8011 0.4394\nvn 0.3470 0.6863 0.6392\nvn 0.7754 0.0440 0.6299\nvn 0.2420 0.7480 0.6180\nvn 0.2753 0.7804 0.5614\nvn 0.2303 0.8553 0.4642\nvn -0.0014 0.7433 -0.6690\nvn -0.0345 0.6596 -0.7508\nvn -0.1683 0.5306 -0.8307\nvn 0.1376 0.7028 -0.6980\nvn 0.1359 0.7774 -0.6141\nvn 0.2703 0.7635 -0.5866\nvn 0.3661 0.8051 -0.4666\nvn 0.2250 0.8412 -0.4917\nvn 0.2370 0.8918 -0.3853\nvn 0.2752 0.8545 -0.4405\nvn 0.3168 0.8871 -0.3357\nvn 0.3857 0.8209 -0.4212\nvn 0.2933 0.8528 -0.4321\nvn 0.3945 0.8837 -0.2519\nvn 0.3636 0.8881 -0.2811\nvn 0.4462 0.8541 -0.2672\nvn 0.3810 0.9179 -0.1112\nvn 0.4976 0.8620 -0.0967\nvn 0.4396 0.8978 -0.0280\nvn 0.5248 0.8511 -0.0163\nvn 0.5329 0.8433 0.0693\nvn 0.5039 0.8403 0.2001\nvn 0.5524 0.7611 0.3400\nvn 0.4313 0.8903 0.1461\nvn 0.4442 0.8822 0.1563\nvn 0.5279 0.7910 0.3093\nvn 0.5208 0.8177 0.2452\nvn 0.5736 0.7958 0.1940\nvn 0.0104 0.9458 0.3246\nvn 0.0062 0.8740 0.4859\nvn 0.3530 0.8070 0.4734\nvn 0.1088 0.9085 0.4034\nvn 0.1974 0.9553 0.2200\nvn 0.2355 0.9047 0.3551\nvn 0.5606 0.7808 0.2757\nvn 0.4618 0.8768 0.1342\nvn -0.0112 0.9012 -0.4332\nvn 0.0951 0.8128 -0.5748\nvn -0.0301 0.8407 -0.5407\nvn 0.1845 0.8642 -0.4681\nvn 0.0936 0.9308 -0.3533\nvn 0.2253 0.9334 -0.2794\nvn 0.3300 0.9268 -0.1794\nvn 0.2629 0.9560 -0.1298\nvn 0.3601 0.9325 -0.0273\nvn 0.2861 0.9578 -0.0268\nvn 0.4672 0.8819 0.0627\nvn 0.3472 0.9340 0.0845\nvn 0.2724 0.9592 0.0754\nvn 0.3392 0.9293 0.1462\nvn 0.3321 0.9364 0.1132\nvn 0.1830 0.9687 0.1680\nvn 0.2966 0.9471 0.1229\nvn 0.1228 0.9524 0.2789\nvn -0.0368 0.9722 0.2311\nvn 0.1531 0.9624 -0.2245\nvn 0.1552 0.9814 -0.1129\nvn 0.2474 0.9687 -0.0221\nvn 0.1806 0.9815 0.0643\nvn 0.0384 0.9891 0.1425\nvn 0.0012 0.9677 -0.2522\nvn -0.0241 0.9861 -0.1644\nvn 0.0025 0.9981 -0.0624\nvn 0.1229 0.9924 0.0015\nvn 0.0594 0.9982 -0.0012\nvn 0.0533 0.9955 0.0789\nvn 0.9207 -0.3805 0.0868\nvn 0.7932 -0.5089 0.3344\nvn 0.9698 -0.2406 -0.0397\nvn 0.9107 -0.3028 -0.2808\nvn 0.9356 -0.2069 -0.2863\nvn 0.7779 -0.3691 -0.5086\nvn 0.8742 -0.2659 -0.4064\nvn 0.6623 -0.4136 -0.6247\nvn 0.5554 -0.4652 -0.6893\nvn 0.3952 -0.4276 -0.8130\nvn 0.4852 -0.5120 -0.7088\nvn 0.2979 -0.4156 -0.8594\nvn 0.0224 -0.5759 -0.8172\nvn 0.9593 -0.2497 0.1320\nvn 0.9007 -0.4027 -0.1629\nvn 0.9213 -0.2162 -0.3232\nvn 0.8450 -0.2753 -0.4586\nvn 0.7616 -0.3288 -0.5585\nvn 0.5445 -0.5270 -0.6526\nvn 0.4152 -0.6017 -0.6823\nvn 0.3305 -0.6152 -0.7158\nvn 0.8286 -0.5002 0.2516\nvn 0.7089 -0.5406 0.4531\nvn 0.9106 -0.4116 -0.0364\nvn 0.9309 -0.2927 -0.2185\nvn 0.9302 -0.2730 -0.2454\nvn 0.8584 -0.3252 -0.3967\nvn 0.8959 -0.2871 -0.3391\nvn 0.7177 -0.4058 -0.5659\nvn 0.6531 -0.3933 -0.6471\nvn 0.6190 -0.4508 -0.6432\nvn 0.5360 -0.4134 -0.7361\nvn 0.4518 -0.6001 -0.6601\nvn 0.3797 -0.7033 -0.6010\nvn -0.0014 -0.7830 -0.6221\nvn 0.5874 -0.4651 0.6623\nvn 0.3959 -0.2801 0.8745\nvn 0.7131 -0.2167 0.6667\nvn 0.8647 -0.3176 0.3891\nvn 0.8861 -0.3574 -0.2950\nvn 0.7558 -0.0834 0.6494\nvn 0.7945 -0.2061 0.5712\nvn 0.9207 -0.3415 -0.1891\nvn 0.9102 -0.3265 0.2550\nvn 0.9611 -0.2756 0.0185\nvn 0.8939 -0.4408 -0.0808\nvn 0.5374 -0.1233 0.8343\nvn 0.7635 -0.5323 -0.3657\nvn 0.7565 -0.4723 -0.4523\nvn 0.8343 -0.4000 -0.3794\nvn 0.4474 -0.3187 0.8356\nvn 0.4570 -0.1624 0.8745\nvn 0.8580 -0.0158 0.5134\nvn 0.1882 -0.4989 0.8460\nvn 0.5694 0.0100 0.8220\nvn 0.5563 -0.1091 0.8238\nvn 0.3240 -0.1943 0.9259\nvn 0.5804 -0.2786 0.7652\nvn 0.1346 -0.4731 0.8707\nvn 0.1980 -0.4748 0.8575\nvn 0.0135 -0.6028 0.7978\nvn 0.9389 -0.1766 0.2955\nvn 0.4195 -0.2920 0.8595\nvn -0.2495 -0.9557 -0.1561\nvn -0.0319 -0.9344 -0.3547\nvn 0.1210 -0.7353 -0.6669\nvn 0.4461 -0.6356 -0.6301\nvn 0.4951 -0.8605 0.1200\nvn -0.0563 -0.9006 -0.4311\nvn 0.0331 -0.9119 -0.4091\nvn 0.4329 -0.8044 -0.4070\nvn 0.1690 -0.8291 -0.5329\nvn 0.5336 -0.8324 -0.1495\nvn 0.2408 -0.9672 -0.0809\nvn 0.0250 -0.9243 -0.3808\nvn 0.5078 -0.7826 -0.3600\nvn 0.2156 -0.8998 -0.3794\nvn 0.1658 -0.9856 0.0328\nvn 0.0867 -0.9948 -0.0527\nvn -0.0317 -0.9966 -0.0755\nvn 0.4876 -0.8481 -0.2075\nvn 0.2659 -0.8988 -0.3484\nvn 0.7842 -0.5683 0.2490\nvn 0.9793 -0.2022 0.0112\nvn -0.4388 -0.5149 -0.7364\nvn -0.5752 -0.1582 -0.8026\nvn -0.3129 -0.7588 -0.5712\nvn -0.1637 -0.7593 -0.6298\nvn -0.4412 -0.2720 -0.8552\nvn 0.2724 -0.9588 -0.0811\nvn -0.0883 -0.5783 -0.8110\nvn 0.2419 -0.6114 -0.7535\nvn -0.3048 -0.7074 -0.6377\nvn -0.7718 -0.4610 -0.4378\nvn -0.7449 -0.2862 -0.6026\nvn -0.4975 -0.8093 -0.3123\nvn -0.4096 -0.8983 0.1591\nvn -0.9459 -0.1158 0.3031\nvn -0.3705 -0.8313 0.4145\nvn -0.1981 -0.9095 0.3654\nvn 0.3224 -0.9460 0.0329\nvn 0.0319 -0.9536 -0.2995\nvn -0.3792 -0.5748 0.7251\nvn -0.3788 -0.5311 0.7579\nvn -0.6591 -0.2434 0.7116\nvn -0.2748 -0.8515 -0.4466\nvn -0.5413 -0.6878 -0.4837\nvn -0.3358 -0.7977 -0.5009\nvn -0.3598 -0.5793 -0.7314\nvn -0.7221 -0.5192 -0.4571\nvn -0.6419 -0.3761 -0.6682\nvn -0.5362 -0.7182 -0.4434\nvn -0.7114 -0.6156 -0.3391\nvn -0.5418 -0.6532 -0.5289\nvn -0.2411 -0.8414 -0.4836\nvn -0.4474 -0.6651 -0.5979\nvn -0.8383 -0.4074 -0.3624\nvn -0.6625 -0.4557 -0.5945\nvn -0.7353 -0.5738 -0.3607\nvn -0.7099 -0.6533 -0.2632\nvn 0.9896 0.0592 0.1312\nvn 0.5463 -0.5565 -0.6260\nvn 0.8427 -0.4631 -0.2744\nvn 0.9612 0.1676 -0.2192\nvn 0.9916 -0.0137 -0.1287\nvn 0.2192 -0.9512 -0.2170\nvn 0.7196 -0.6302 -0.2916\nvn 0.9969 -0.0570 -0.0536\nvn 0.9619 -0.1769 -0.2083\nvn 0.5064 -0.4120 -0.7575\nvn -0.1392 -0.0255 -0.9899\nvn 0.1472 -0.0278 -0.9887\nvn 0.9471 -0.1250 -0.2955\nvn 0.7890 -0.3956 -0.4702\nvn 0.9085 -0.0572 -0.4140\nvn 0.7875 -0.5940 -0.1644\nvn 0.7502 -0.1257 -0.6492\nvn 0.3675 -0.3562 -0.8591\nvn 0.5520 -0.2915 -0.7812\nvn 0.5950 -0.1089 -0.7963\nvn 0.1914 -0.0920 -0.9772\nvn 0.3001 -0.0299 -0.9534\nvn -0.0819 0.0132 -0.9966\nvn 0.1013 -0.0194 -0.9947\nvn 0.9382 -0.1238 -0.3232\nvn 0.8683 0.0213 -0.4956\nvn 0.6100 -0.0011 -0.7924\nvn 0.8813 0.0085 -0.4725\nvn 0.9237 -0.0721 -0.3762\nvn -0.3913 -0.0447 -0.9192\nvn -0.4376 0.0996 -0.8936\nvn -0.1894 -0.0585 -0.9801\nvn -0.7282 -0.0500 -0.6835\nvn 0.1159 -0.5647 -0.8171\nvn 0.0301 -0.3477 -0.9371\nvn 0.4395 -0.3156 -0.8410\nvn 0.3596 -0.6976 -0.6198\nvn 0.2253 -0.0710 -0.9717\nvn -0.0716 0.2008 -0.9770\nvn -0.9139 0.2301 -0.3344\nvn -0.8963 -0.0363 -0.4420\nvn -0.8702 0.1421 -0.4717\nvn -0.8487 0.2936 -0.4399\nvn -0.6257 0.6883 -0.3669\nvn -0.6873 0.4001 -0.6062\nvn -0.6637 0.3103 -0.6805\nvn -0.3498 0.1425 -0.9259\nvn -0.4643 -0.7158 -0.5215\nvn 0.0881 -0.7441 -0.6623\nvn 0.1070 -0.9126 -0.3945\nvn -0.0019 -0.8208 -0.5712\nvn 0.1760 -0.7557 -0.6308\nvn -0.5926 -0.6227 -0.5110\nvn -0.3275 -0.8686 -0.3719\nvn -0.1887 -0.8484 -0.4946\nvn -0.7191 -0.5146 -0.4670\nvn -0.1892 -0.4725 -0.8608\nvn -0.7995 -0.4967 0.3378\nvn -0.8577 -0.4991 -0.1236\nvn -0.9572 -0.2182 0.1899\nvn -0.6556 -0.7396 -0.1522\nvn -0.8646 -0.2168 -0.4532\nvn -0.1065 -0.9267 -0.3605\nvn -0.9817 0.0632 0.1799\nvn -0.4833 -0.6976 -0.5290\nvn -0.7732 -0.3582 -0.5233\nvn -0.6699 -0.5949 -0.4442\nvn -0.3955 -0.8231 -0.4077\nvn 0.6227 -0.2037 0.7555\nvn 0.4017 -0.2353 0.8850\nvn 0.7139 -0.4010 0.5741\nvn 0.8096 -0.5471 0.2124\nvn -0.0468 -0.2951 0.9543\nvn -0.1269 -0.2302 0.9648\nvn 0.7112 -0.6504 -0.2668\nvn 0.5067 -0.7447 -0.4344\nvn 0.4527 -0.7037 -0.5477\nvn 0.6297 -0.5828 -0.5136\nvn 0.5139 -0.5861 -0.6264\nvn 0.0351 -0.8061 -0.5907\nvn 0.2816 -0.7186 -0.6359\nvn 0.0462 -0.8823 -0.4684\nvn 0.3734 -0.5785 -0.7252\nvn 0.2396 -0.6696 -0.7031\nvn 0.1940 -0.7339 -0.6510\nvn 0.2507 -0.7855 -0.5658\nvn -0.3140 -0.8310 -0.4592\nvn 0.0096 -0.8649 -0.5019\nvn 0.1352 -0.7771 -0.6146\nvn -0.0397 -0.8658 -0.4987\nvn 0.3258 -0.6494 -0.6871\nvn 0.3956 -0.5737 -0.7172\nvn 0.4897 -0.5572 -0.6706\nvn 0.2757 -0.7849 -0.5549\nvn 0.4383 -0.6833 -0.5840\nvn 0.5555 -0.5314 -0.6395\nvn 0.3550 -0.7712 -0.5284\nvn 0.3686 -0.8017 -0.4706\nvn 0.0610 -0.9201 -0.3870\nvn -0.1346 -0.9120 -0.3875\nvn -0.0008 -0.9405 -0.3398\nvn 0.0351 -0.8890 -0.4566\nvn 0.2649 -0.8458 -0.4631\nvn 0.1782 -0.9036 -0.3895\nvn -0.1372 -0.9311 -0.3379\nvn 0.0193 -0.9720 -0.2340\nvn -0.2727 -0.9090 -0.3151\nvn 0.0091 -0.9553 -0.2955\nvn 0.0088 -0.9246 -0.3809\nvn 0.1467 -0.9402 -0.3074\nvn -0.0065 -0.9673 -0.2537\nvn -0.1088 -0.9845 -0.1377\nvn -0.0388 -0.8881 -0.4581\nvn 0.1468 -0.9117 -0.3836\nvn 0.2954 -0.9091 -0.2939\nvn -0.0350 -0.9156 -0.4006\nvn 0.6588 -0.7378 -0.1472\nvn 0.3881 -0.9215 0.0113\nvn 0.7167 -0.6686 0.1984\nvn 0.6213 -0.4705 0.6266\nvn 0.1332 -0.5100 0.8498\nvn -0.4295 -0.8568 -0.2855\nvn 0.3759 -0.2603 -0.8893\nvn 0.6682 -0.0745 -0.7403\nvn 0.3738 -0.7714 0.5150\nvn -0.5182 -0.7598 -0.3928\nvn -0.5860 -0.7828 -0.2093\nvn -0.6692 -0.7157 -0.2000\nvn -0.4282 -0.8953 -0.1227\nvn -0.1756 -0.9828 0.0574\nvn -0.3545 -0.8028 0.4794\nvn -0.5508 -0.3955 0.7350\nvn -0.3651 -0.5880 0.7218\nvn -0.2333 -0.9676 -0.0963\nvn -0.6211 -0.7697 -0.1475\nvn -0.3764 -0.8966 -0.2331\nvn 0.0904 -0.9751 -0.2023\nvn -0.1721 -0.9207 -0.3502\nvn -0.5544 -0.7809 -0.2878\nvn -0.4640 -0.8858 -0.0050\nvn -0.1155 -0.9874 0.1080\nvn 0.0103 -0.9819 0.1891\nvn -0.0205 -0.9998 0.0055\nvn 0.0193 -0.9986 -0.0502\nvn -0.0252 -0.9990 0.0370\nvn -0.1202 -0.9927 -0.0032\nvn -0.1030 -0.9407 0.3231\nvn 0.1435 -0.8215 0.5519\nvn -0.5947 -0.2913 0.7493\nvn -0.7800 -0.5979 0.1847\nvn -0.7708 -0.5797 -0.2641\nvn -0.6788 -0.5424 0.4950\nvn -0.2639 -0.9338 -0.2417\nvn 0.6636 -0.7067 -0.2453\nvn -0.7330 -0.4086 0.5439\nvn -0.7983 -0.4392 0.4121\nvn -0.8530 -0.4475 0.2686\nvn -0.9137 -0.4047 -0.0376\nvn -0.7928 -0.6080 0.0424\nvn -0.6282 -0.7756 -0.0613\nvn 0.4046 -0.4344 0.8047\nvn 0.8558 -0.4574 0.2417\nvn 0.6435 -0.6376 0.4235\nvn 0.6075 -0.0846 0.7898\nvn 0.3291 -0.3037 0.8941\nvn -0.3209 -0.8749 0.3627\nvn 0.1475 -0.9602 0.2374\nvn 0.0351 -0.8919 0.4508\nvn 0.0282 -0.9717 0.2347\nvn -0.2863 -0.8827 0.3725\nvn -0.1612 -0.9782 0.1307\nvn -0.2808 -0.9298 0.2379\nvn -0.2615 -0.9143 0.3092\nvn -0.4546 -0.8530 0.2563\nvn 0.1925 -0.9283 0.3181\nvn 0.2205 -0.9743 -0.0467\nvn -0.2122 -0.6918 0.6902\nvn -0.4317 -0.6755 0.5978\nvn 0.0797 -0.6354 0.7681\nvn -0.5147 -0.7951 0.3206\nvn -0.0339 -0.5859 0.8097\nvn 0.5854 -0.2361 0.7756\nvn -0.7776 -0.5956 0.2014\nvn -0.9890 -0.1421 0.0417\nvn -0.5533 -0.2198 0.8035\nvn -0.9646 0.2396 -0.1101\nvn -0.5520 0.7946 0.2529\nvn -0.0421 0.7649 0.6427\nvn -0.7170 0.6971 -0.0036\nvn -0.6966 0.1822 0.6940\nvn -0.8913 0.4214 0.1676\nvn 0.2317 0.9693 0.0827\nvn -0.0155 0.9572 0.2890\nvn 0.1064 0.9926 -0.0594\nvn -0.1278 0.9898 -0.0630\nvn -0.7417 -0.6154 0.2669\nvn 0.5673 0.8233 0.0185\nvn 0.8269 0.5577 0.0719\nvn 0.0037 0.6706 0.7418\nvn -0.1253 0.8589 0.4965\nvn 0.9679 0.2512 0.0116\nvn 0.7418 -0.1547 -0.6526\nvn 0.9064 0.3978 -0.1421\nvn 0.9983 -0.0264 0.0521\nvn -0.0093 0.0606 0.9981\nvn 0.5520 0.2506 -0.7953\nvn 0.8834 0.0497 -0.4661\nvn -0.7368 0.6084 -0.2949\nvn -0.3525 0.7933 -0.4964\nvn -0.9584 -0.2515 -0.1352\nvn -0.7681 -0.6404 0.0053\nvn -0.9600 -0.2024 -0.1933\nvn -0.1845 -0.9822 0.0354\nvn -0.6582 -0.7500 0.0656\nvn -0.2492 -0.9569 0.1489\nvn -0.0673 -0.9965 0.0493\nvn -0.4564 -0.8512 0.2593\nvn -0.0025 -0.8840 0.4675\nvn 0.5920 -0.7788 0.2073\nvn 0.9926 -0.0773 0.0936\nvn 0.5518 0.1504 -0.8203\nvn 0.9794 -0.1683 -0.1120\nvn 0.6696 -0.7301 -0.1362\nvn 0.9897 -0.1186 0.0805\nvn 0.9177 -0.3556 0.1774\nvn 0.6720 -0.7328 0.1070\nvn 0.8343 -0.5307 0.1496\nvn 0.2436 -0.8500 0.4670\nvn -0.2852 -0.9548 0.0840\nvn 0.1317 -0.9903 0.0446\nvn -0.3560 -0.9242 -0.1385\nvn 0.0461 -0.9877 -0.1495\nvn -0.1869 -0.9684 -0.1651\nvn -0.1151 -0.9854 0.1252\nvn 0.1496 -0.9873 -0.0529\nvn -0.0810 -0.8905 0.4477\nvn -0.2344 -0.9473 0.2182\nvn -0.2585 -0.8789 0.4008\nvn -0.3793 -0.8007 0.4637\nvn -0.0093 -0.8295 0.5584\nvn -0.3005 -0.9537 -0.0118\nvn 0.3032 -0.5530 0.7760\nvn 0.4536 -0.4480 0.7704\nvn -0.0190 -0.8132 0.5816\nvn -0.0131 -0.6701 0.7422\nvn -0.4266 -0.8009 0.4202\nvn 0.6315 -0.5095 0.5845\nvn 0.5054 -0.4720 0.7224\nvn 0.7032 -0.6510 0.2859\nvn 0.0179 -0.8141 0.5804\nvn 0.5551 -0.8192 0.1440\nvn 0.3200 -0.9447 0.0712\nvn 0.0005 -0.9964 0.0843\nvn 0.0137 -0.9911 0.1327\nvn 0.0029 -0.9849 -0.1731\nvn 0.3901 -0.9153 0.1004\nvn 0.3800 -0.9224 0.0695\nvn 0.4304 -0.9024 0.0220\nvn 0.0664 -0.5657 -0.8219\nvn 0.2256 -0.8923 0.3911\nvn -0.5112 -0.8346 -0.2050\nvn -0.0061 -0.9999 0.0143\nvn 0.0305 -0.9953 -0.0923\nvn -0.3125 -0.9034 0.2936\nvn -0.0321 -0.9189 0.3932\nvn -0.1406 -0.9683 0.2063\nvn -0.6673 -0.5284 0.5249\nvn -0.8512 -0.3200 -0.4159\nvn 0.0259 -0.5696 -0.8215\nvn 0.4417 -0.7788 -0.4455\nvn -0.4048 -0.1878 -0.8949\nvn -0.0206 -0.1847 -0.9826\nvn -0.9976 0.0300 -0.0618\nvn 0.2271 -0.3834 -0.8953\nvn 0.8878 -0.2964 -0.3522\nvn 0.4000 -0.2748 -0.8743\nvn 0.7091 -0.3735 -0.5981\nvn 0.8009 -0.5480 0.2414\nvn 0.9575 -0.2882 0.0111\nvn 0.8151 -0.1258 0.5655\nvn 0.2394 -0.5128 0.8245\nvn 0.3336 0.0046 0.9427\nvn 0.6920 -0.1663 0.7025\nvn -0.9534 0.1336 0.2705\nvn -0.4423 0.0961 0.8917\nvn -0.0823 -0.0334 0.9960\nvn 0.4473 -0.2767 0.8505\nvn -0.4914 -0.0935 0.8659\nvn -0.6326 -0.4448 0.6340\nvn -0.9760 -0.2019 0.0812\nvn 0.3757 -0.2912 0.8798\nvn 0.3816 -0.2290 0.8955\nvn 0.1125 -0.1900 0.9753\nvn 0.2483 -0.1673 0.9541\nvn 0.8252 0.0099 0.5647\nvn -0.0585 -0.0295 0.9979\nvn 0.3603 -0.4983 0.7886\nvn -0.2450 -0.3188 0.9156\nvn -0.9356 -0.0586 0.3480\nvn 0.2685 -0.9433 0.1953\nvn 0.1499 -0.9872 -0.0553\nvn -0.4708 -0.6449 -0.6021\nvn -0.4232 -0.7396 -0.5233\nvn -0.5549 -0.6478 -0.5220\nvn -0.5074 -0.8341 -0.2163\nvn -0.5093 -0.8545 -0.1020\nvn -0.2938 -0.9004 -0.3209\nvn -0.3925 -0.9190 -0.0368\nvn -0.5820 -0.6558 -0.4808\nvn -0.6296 -0.7756 0.0453\nvn -0.3520 -0.8989 0.2610\nvn -0.3641 -0.6046 0.7085\nvn 0.0270 -0.8286 0.5591\nvn 0.5355 -0.8444 0.0175\nvn -0.6561 -0.5794 0.4836\nvn -0.1655 -0.5806 0.7972\nvn 0.5344 -0.8271 0.1741\nvn -0.6512 -0.7269 -0.2178\nvn -0.3166 -0.9453 0.0781\nvn -0.7397 -0.6702 -0.0611\nvn -0.0322 -0.9985 0.0445\nvn -0.0413 -0.9523 -0.3024\nvn -0.3914 -0.9173 -0.0726\nvn -0.5219 -0.8052 0.2815\nvn 0.0805 -0.9862 0.1448\nvn -0.4212 -0.8778 0.2281\nvn 0.2235 -0.9697 0.0985\nvn 0.7213 -0.5316 0.4440\nvn 0.5406 -0.7030 0.4621\nvn 0.4918 -0.8692 0.0507\nvn 0.5754 -0.8164 -0.0490\nvn 0.5151 -0.4215 0.7464\nvn -0.0434 -0.9983 -0.0380\nvn 0.0861 -0.9898 0.1133\nvn 0.2919 -0.9213 0.2567\nvn 0.3617 -0.8909 0.2746\nvn 0.4828 -0.7067 0.5172\nvn 0.4885 -0.5064 0.7106\nvn 0.4506 -0.4235 0.7859\nvn 0.3266 -0.5377 0.7773\nvn 0.0897 -0.7665 0.6360\nvn 0.1443 -0.8659 0.4789\nvn 0.0035 -0.7940 0.6078\nvn -0.1309 -0.8086 0.5736\nvn 0.1985 -0.7550 0.6250\nvn 0.3919 -0.4709 0.7904\nvn 0.4891 -0.3499 0.7990\nvn 0.3648 -0.4688 0.8045\nvn 0.1995 -0.7518 0.6285\nvn -0.1983 -0.9489 0.2456\nvn -0.1604 -0.8384 0.5210\nvn -0.3390 -0.9002 0.2733\nvn -0.2444 -0.6826 0.6888\nvn -0.1512 -0.9839 0.0952\nvn -0.2023 -0.6657 0.7183\nvn -0.0928 -0.6918 0.7161\nvn -0.0898 -0.8649 0.4938\nvn -0.0942 -0.9246 0.3691\nvn -0.6733 -0.5597 -0.4831\nvn 0.0544 -0.7633 -0.6438\nvn -0.3409 -0.4966 -0.7982\nvn -0.8014 -0.5696 0.1824\nvn -0.6127 -0.6029 0.5110\nvn -0.5642 -0.8073 -0.1731\nvn 0.6984 -0.2449 -0.6725\nvn 0.7470 -0.5875 0.3113\nvn -0.1496 -0.3392 0.9287\nvn -0.3901 -0.4583 0.7986\nvn 0.1530 -0.5062 0.8487\nvn -0.2376 0.0837 0.9677\nvn -0.6810 -0.5545 0.4783\nvn -0.6670 0.0248 0.7447\nvn -0.3506 -0.5668 0.7455\nvn 0.3433 -0.6504 0.6776\nvn -0.5489 -0.7607 0.3466\nvn -0.2461 -0.6599 0.7099\nvn -0.5908 -0.7550 0.2847\nvn -0.7499 -0.6229 -0.2227\nvn -0.5969 -0.7715 -0.2201\nvn -0.5060 -0.6601 -0.5552\nvn -0.4201 -0.8058 -0.4173\nvn -0.4457 -0.6337 -0.6322\nvn -0.4737 -0.8598 -0.1905\nvn -0.6793 -0.6653 -0.3098\nvn -0.4019 -0.8764 0.2654\nvn -0.1647 -0.9473 0.2747\nvn -0.2389 -0.9421 -0.2352\nvn -0.3185 -0.9424 0.1022\nvn -0.2753 -0.8435 -0.4613\nvn -0.0033 -0.8026 -0.5965\nvn -0.1825 -0.7181 -0.6716\nvn -0.2153 -0.8111 -0.5439\nvn -0.3700 -0.9158 -0.1562\nvn -0.1725 -0.7423 0.6475\nvn -0.0623 -0.8685 0.4917\nvn 0.1648 -0.9353 0.3130\nvn -0.1625 -0.7282 0.6658\nvn 0.3107 -0.9505 0.0043\nvn -0.0716 -0.9487 0.3079\nvn -0.3177 -0.7666 0.5581\nvn 0.5161 -0.8557 0.0367\nvn 0.4015 -0.9095 -0.1076\nvn 0.4361 -0.8989 0.0421\nvn 0.4089 -0.8977 0.1640\nvn 0.2322 -0.9652 0.1207\nvn -0.2307 -0.8693 0.4371\nvn -0.4081 -0.7194 0.5620\nvn -0.2815 -0.8318 0.4784\nvn 0.0584 -0.9791 -0.1947\nvn 0.1691 -0.9450 -0.2800\nvn -0.2161 -0.9477 0.2349\nvn 0.5273 -0.8200 -0.2223\nvn -0.1738 -0.9383 -0.2990\nvn 0.5343 -0.8164 -0.2189\nvn -0.0684 -0.9319 0.3562\nvn 0.5933 -0.7971 0.1127\nvn -0.4544 -0.7479 0.4840\nvn -0.4512 -0.8566 0.2502\nvn 0.1383 -0.9881 -0.0677\nvn -0.5259 -0.4196 0.7398\nvn -0.5915 -0.3856 0.7081\nvn -0.4128 -0.7680 0.4896\nvn -0.0867 -0.9955 0.0374\nvn -0.0108 -0.9314 0.3639\nvn 0.3869 -0.8208 -0.4202\nvn -0.4596 -0.4922 0.7392\nvn -0.2087 -0.7450 0.6336\nvn 0.3259 -0.8798 0.3460\nvn -0.4458 -0.8950 -0.0158\nvn 0.6073 -0.7209 0.3339\nvn 0.4777 -0.8353 0.2723\nvn -0.1233 -0.8532 0.5068\nvn 0.4882 -0.8098 -0.3255\nvn 0.5108 -0.6517 0.5607\nvn 0.3460 -0.9227 0.1701\nvn -0.2319 -0.8163 0.5290\nvn -0.4245 -0.8919 0.1562\nvn -0.4868 -0.6131 0.6222\nvn -0.4820 -0.7068 0.5178\nvn 0.1799 -0.9806 -0.0782\nvn 0.0718 -0.9863 -0.1485\nvn 0.5679 -0.8230 -0.0068\nvn -0.2276 -0.9533 0.1983\nvn 0.0905 -0.9943 -0.0568\nvn 0.0440 -0.8458 0.5316\nvn -0.1509 -0.9187 0.3649\nvn 0.0780 -0.7609 0.6442\nvn 0.0209 -0.6832 0.7299\nvn 0.1045 -0.9879 0.1148\nvn -0.3977 -0.8862 0.2377\nvn -0.4341 -0.8050 0.4044\nvn -0.9396 -0.2347 -0.2492\nvn -0.3544 -0.5951 0.7213\nvn 0.1180 -0.6345 0.7639\nvn 0.5975 -0.7843 -0.1671\nvn 0.7186 -0.6892 -0.0930\nvn 0.6818 -0.6451 -0.3450\nvn 0.9500 -0.3080 0.0510\nvn 0.8459 -0.4174 -0.3319\nvn 0.6713 -0.4322 -0.6021\nvn 0.9388 -0.2085 -0.2741\nvn 0.4752 -0.4512 -0.7554\nvn 0.7959 -0.5809 0.1706\nvn 0.7059 -0.6152 0.3511\nvn 0.6026 -0.7599 0.2437\nvn -0.0445 -0.8889 0.4559\nvn 0.4603 -0.8366 -0.2969\nvn 0.6403 -0.7447 0.1882\nvn 0.3810 -0.8797 0.2846\nvn 0.1661 -0.1313 -0.9773\nvn -0.3385 -0.5996 -0.7251\nvn 0.4396 -0.8971 0.0441\nvn 0.7413 -0.2997 -0.6006\nvn 0.8907 -0.0870 -0.4462\nvn 0.8874 0.0444 -0.4589\nvn 0.9511 0.0749 -0.2997\nvn 0.9608 -0.0733 -0.2674\nvn 0.8821 0.1045 -0.4592\nvn 0.9352 0.0081 -0.3541\nvn 0.6979 -0.1185 -0.7063\nvn 0.8687 0.3402 -0.3600\nvn 0.9099 0.3638 -0.1994\nvn 0.8554 0.2731 -0.4401\nvn 0.9510 -0.1564 -0.2669\nvn 0.8308 -0.2803 -0.4808\nvn 0.4875 -0.8421 -0.2308\nvn 0.2039 -0.9740 0.0984\nvn 0.1280 -0.9470 -0.2946\nvn 0.1373 -0.8172 -0.5598\nvn 0.3860 -0.8575 -0.3402\nvn 0.1662 -0.6369 -0.7529\nvn 0.2071 -0.9682 0.1401\nvn -0.1042 -0.8020 0.5881\nvn 0.5250 -0.8379 0.1493\nvn 0.5673 -0.8096 -0.1508\nvn 0.6270 -0.7767 0.0607\nvn 0.6847 -0.5956 -0.4200\nvn 0.5584 -0.5331 -0.6356\nvn -0.6649 -0.7426 -0.0807\nvn -0.2892 -0.7575 -0.5853\nvn -0.5636 -0.4809 -0.6716\nvn 0.0336 -0.4335 -0.9005\nvn -0.8647 -0.2891 0.4107\nvn -0.9117 -0.0800 0.4030\nvn -0.9839 -0.1777 0.0196\nvn -0.9905 0.0802 -0.1119\nvn -0.9615 -0.2279 0.1537\nvn -0.7206 -0.6192 0.3119\nvn -0.8359 -0.5214 0.1716\nvn -0.8453 -0.3690 0.3864\nvn -0.7550 -0.5421 0.3690\nvn -0.7408 -0.5977 0.3065\nvn -0.8841 -0.4625 0.0669\nvn -0.8103 -0.3392 0.4780\nvn -0.8160 -0.4360 0.3795\nvn -0.5743 -0.6745 -0.4639\nvn -0.9022 -0.2221 0.3698\nvn -0.7577 -0.3152 0.5714\nvn -0.9657 0.0922 0.2427\nvn -0.8264 -0.3311 -0.4555\nvn -0.7302 -0.6085 -0.3108\nvn -0.7012 -0.3416 -0.6258\nvn 0.9353 -0.1247 -0.3311\nvn 0.9702 -0.2234 -0.0935\nvn 0.9292 -0.0293 -0.3685\nvn 0.8818 -0.0471 -0.4692\nvn 0.8898 0.0919 -0.4469\nvn 0.8527 0.0231 -0.5219\nvn 0.4725 -0.2812 -0.8353\nvn 0.5536 -0.2822 -0.7835\nvn 0.1213 -0.4455 -0.8870\nvn 0.6067 -0.2637 -0.7499\nvn -0.2315 -0.4216 -0.8768\nvn -0.1383 -0.9847 0.1058\nvn 0.3870 -0.9193 0.0719\nvn -0.2035 -0.9709 0.1265\nvn 0.1569 -0.8702 -0.4670\nvn -0.4179 -0.7235 -0.5495\nvn -0.1478 -0.5028 -0.8516\nvn -0.0642 -0.9561 -0.2858\nvn -0.0634 -0.9837 0.1680\nvn -0.1270 -0.7484 -0.6510\nvn 0.4835 -0.4974 -0.7203\nvn 0.0043 -0.9212 -0.3890\nvn -0.0042 -0.9374 -0.3483\nvn -0.7844 -0.6028 -0.1460\nvn -0.9821 -0.1434 -0.1220\nvn -0.5746 -0.2378 -0.7831\nvn -0.4565 0.0333 -0.8891\nvn -0.7102 -0.3936 -0.5837\nvn -0.0863 -0.7981 -0.5963\nvn -0.9614 -0.1688 -0.2172\nvn -0.8908 0.1399 -0.4323\nvn -0.9761 0.0937 -0.1963\nvn -0.6844 0.2410 -0.6881\nvn 0.0716 -0.8695 -0.4887\nvn 0.2061 -0.8990 -0.3864\nvn -0.0161 -0.7556 -0.6548\nvn -0.2311 -0.7010 -0.6747\nvn 0.5832 -0.1790 -0.7924\nvn -0.0033 -0.2537 -0.9673\nvn 0.5620 0.0083 -0.8271\nvn -0.0204 -0.7429 -0.6691\nvn 0.6081 -0.7610 -0.2259\nvn 0.2335 -0.9491 0.2111\nvn 0.1038 -0.9873 -0.1206\nvn 0.0058 -0.9774 -0.2115\nvn 0.0794 -0.9947 0.0647\nvn -0.3543 -0.9219 -0.1571\nvn -0.1785 -0.9456 0.2719\nvn -0.6234 -0.7167 -0.3125\nvn 0.2838 -0.9535 0.1016\nvn 0.3033 -0.9491 0.0849\nvn 0.5350 -0.5773 0.6169\nvn 0.0969 -0.6629 0.7424\nvn 0.6618 -0.5900 0.4625\nvn 0.3292 -0.9078 0.2600\nvn -0.3422 -0.8955 -0.2844\nvn 0.7069 -0.5359 -0.4617\nvn 0.5520 -0.2250 -0.8029\nvn 0.2148 -0.4058 -0.8884\nvn -0.0678 -0.3935 -0.9168\nvn 0.9401 0.0550 -0.3365\nvn 0.9027 -0.3134 0.2948\nvn 0.0637 -0.9977 0.0250\nvn 0.0521 -0.8787 0.4745\nvn 0.0392 -0.2151 0.9758\nvn -0.0669 -0.6940 0.7168\nvn 0.3099 -0.0990 0.9456\nvn -0.7164 0.2889 0.6350\nvn -0.6572 0.5958 0.4616\nvn -0.6994 0.4496 0.5557\nvn -0.4968 0.1515 0.8545\nvn -0.5950 -0.1252 0.7939\nvn -0.2597 -0.4117 0.8735\nvn -0.4631 -0.6906 0.5555\nvn -0.4074 -0.7849 0.4669\nvn -0.3379 -0.6183 0.7096\nvn -0.1986 -0.3314 0.9223\nvn -0.0299 -0.2696 0.9625\nvn -0.4219 -0.4505 0.7868\nvn -0.5635 -0.5905 0.5777\nvn -0.3706 -0.2198 0.9024\nvn -0.5923 -0.4523 0.6668\nvn -0.4303 -0.1598 0.8884\nvn -0.5276 -0.6144 0.5866\nvn -0.3819 -0.5604 0.7349\nvn -0.3996 0.0257 0.9163\nvn -0.3824 -0.1709 0.9081\nvn -0.3098 0.8336 0.4574\nvn -0.3009 0.6634 0.6851\nvn -0.3857 0.6388 0.6657\nvn -0.2227 0.0944 0.9703\nvn -0.3902 0.2239 0.8931\nvn -0.1850 -0.0311 0.9822\nvn -0.2458 0.4130 0.8770\nvn -0.3308 -0.0269 0.9433\nvn -0.2077 0.7321 0.6488\nvn -0.5983 0.2364 0.7656\nvn -0.6284 -0.0387 0.7769\nvn -0.7636 0.2551 0.5932\nvn -0.8571 0.0651 0.5110\nvn -0.7040 -0.1586 0.6922\nvn -0.0805 -0.0355 0.9961\nvn -0.8348 -0.1670 0.5245\nvn -0.3948 -0.2087 0.8947\nvn -0.3611 -0.3886 0.8477\nvn -0.4383 -0.4487 0.7788\nvn -0.6457 0.5274 0.5521\nvn -0.3738 -0.1119 0.9207\nvn -0.6248 0.4176 0.6597\nvn -0.6642 0.0026 0.7476\nvn -0.5503 0.2863 0.7844\nvn -0.2754 0.6687 0.6906\nvn -0.5122 0.3349 0.7909\nvn -0.0912 0.9198 0.3817\nvn -0.4806 0.6242 0.6160\nvn -0.2910 0.1100 0.9504\nvn -0.7758 0.2472 0.5806\nvn -0.6309 0.0541 0.7740\nvn -0.5330 0.5047 0.6791\nvn -0.7200 0.3122 0.6198\nvn -0.3783 0.0495 0.9244\nvn -0.7933 0.0143 0.6087\nvn 0.2052 0.1473 0.9676\nvn -0.5314 -0.0320 0.8465\nvn 0.0325 -0.2472 0.9684\nvn -0.1073 -0.3849 0.9167\nvn -0.2509 -0.2158 0.9437\nvn -0.1047 -0.3377 0.9354\nvn -0.6185 -0.0934 0.7802\nvn -0.5817 -0.2566 0.7719\nvn -0.6420 -0.0805 0.7624\nvn -0.4097 -0.2960 0.8628\nvn -0.4543 -0.1922 0.8699\nvn 0.0067 -0.0581 0.9983\nvn -0.0725 0.0024 0.9974\nvn -0.1875 0.0335 0.9817\nvn -0.3564 -0.0297 0.9339\nvn -0.5404 0.1712 0.8238\nvn -0.8952 -0.0541 0.4425\nvn -0.8989 0.2433 0.3644\nvn -0.9815 0.1664 0.0946\nvn -0.9888 0.0920 -0.1172\nvn -0.6153 -0.7533 0.2322\nvn -0.5129 -0.8348 0.2002\nvn -0.8938 0.3096 0.3244\nvn -0.7817 0.6082 0.1378\nvn -0.8587 -0.3779 0.3462\nvn -0.8955 -0.3606 0.2608\nvn 0.1957 -0.8642 0.4635\nvn 0.2174 -0.9261 -0.3084\nvn -0.2163 -0.5259 0.8226\nvn -0.0949 -0.6499 0.7541\nvn 0.5760 -0.4835 0.6591\nvn 0.4191 -0.3676 0.8302\nvn -0.0573 -0.4935 0.8679\nvn 0.4920 -0.3333 0.8043\nvn 0.0484 -0.2247 0.9732\nvn 0.5464 -0.1351 0.8266\nvn -0.2698 0.7876 0.5540\nvn 0.3317 0.4730 0.8162\nvn -0.1147 0.9155 0.3857\nvn 0.0641 0.9727 0.2229\nvn -0.0695 0.9677 0.2424\nvn -0.2290 0.9652 0.1266\nvn -0.5789 0.7909 0.1985\nvn -0.4311 0.8901 0.1477\nvn -0.3388 0.9406 -0.0229\nvn -0.6520 0.7484 0.1219\nvn 0.1523 0.9628 0.2233\nvn 0.2131 0.9425 0.2574\nvn 0.1968 0.8476 0.4929\nvn 0.5942 -0.1154 0.7960\nvn -0.6223 -0.7615 0.1814\nvn -0.0774 -0.9970 -0.0048\nvn 0.5722 -0.7525 0.3259\nvn -0.6114 -0.7402 0.2798\nvn -0.9164 0.3323 0.2231\nvn -0.6607 -0.7501 -0.0297\nvn -0.6371 -0.7707 -0.0004\nvn -0.4661 -0.8842 0.0312\nvn -0.2718 -0.9604 -0.0608\nvn -0.5117 -0.8578 -0.0481\nvn 0.1427 -0.9866 -0.0786\nvn 0.6308 -0.7755 -0.0259\nvn 0.3605 -0.9327 -0.0068\nvn 0.7957 -0.6056 0.0056\nvn 0.7473 -0.6392 0.1818\nvn 0.6162 -0.7824 0.0900\nvn 0.8902 -0.2004 0.4091\nvn 0.8188 -0.4935 0.2933\nvn 0.6916 0.0456 0.7208\nvn 0.6614 -0.1541 0.7340\nvn -0.6183 -0.7801 0.0957\nvn -0.9132 -0.3309 0.2378\nvn -0.8682 -0.4169 0.2691\nvn -0.3081 0.8990 0.3112\nvn -0.1773 0.9800 0.0904\nvn 0.0284 0.9842 0.1746\nvn -0.0687 0.9912 0.1131\nvn -0.1147 0.9666 0.2292\nvn -0.6859 -0.7239 0.0744\nvn -0.6917 -0.7216 0.0304\nvn -0.1334 -0.9884 0.0729\nvn -0.4214 -0.8985 0.1231\nvn -0.0631 -0.9891 0.1332\nvn 0.2468 -0.9668 0.0665\nvn 0.8231 -0.3945 0.4085\nvn 0.5967 -0.7340 0.3243\nvn 0.2964 0.9143 0.2760\nvn 0.2001 0.9341 0.2958\nvn 0.0175 0.9907 0.1349\nvn -0.8328 0.3759 0.4063\nvn -0.6506 -0.6956 0.3046\nvn -0.6110 -0.7746 0.1636\nvn -0.7043 -0.6920 0.1583\nvn -0.7251 -0.6733 0.1445\nvn -0.5206 -0.8526 0.0454\nvn 0.1461 -0.9278 0.3433\nvn -0.5492 -0.8287 0.1079\nvn -0.1671 -0.9853 0.0345\nvn 0.5405 -0.5138 0.6662\nvn 0.7427 -0.1174 0.6593\nvn -0.5989 0.6413 0.4796\nvn -0.6741 0.6349 0.3776\nvn -0.6945 0.6668 0.2701\nvn -0.8590 0.3843 0.3383\nvn 0.1355 0.9508 0.2787\nvn 0.4293 0.8067 0.4061\nvn 0.4383 0.7752 0.4549\nvn 0.5460 0.4382 0.7140\nvn 0.6607 0.1973 0.7242\nvn 0.7349 -0.0488 0.6764\nvn 0.5785 -0.1116 0.8080\nvn 0.7149 0.0110 0.6992\nvn 0.6436 -0.0818 0.7610\nvn 0.7146 0.0271 0.6991\nvn 0.4184 -0.5458 0.7259\nvn -0.7190 -0.6897 0.0854\nvn -0.7152 -0.6989 0.0085\nvn -0.8122 -0.5813 -0.0493\nvn -0.7208 -0.6931 -0.0001\nvn -0.7641 -0.5921 0.2561\nvn -0.5640 -0.8005 0.2026\nvn -0.8793 -0.4722 0.0627\nvn -0.5871 -0.7675 0.2574\nvn -0.7634 -0.3549 0.5398\nvn -0.7374 0.3583 0.5727\nvn -0.6278 0.6587 0.4147\nvn -0.5259 0.7124 0.4646\nvn -0.6882 0.3529 0.6339\nvn -0.4916 0.7279 0.4781\nvn -0.3261 0.8925 0.3116\nvn -0.1782 0.4936 0.8512\nvn 0.2491 0.8290 0.5006\nvn 0.7583 0.2522 0.6011\nvn -0.1127 -0.6854 0.7194\nvn -0.4246 -0.6756 0.6027\nvn -0.7571 -0.5413 0.3658\nvn -0.9222 -0.3728 0.1026\nvn -0.8284 -0.2889 0.4799\nvn -0.6559 -0.6076 0.4478\nvn -0.5569 0.3460 0.7551\nvn 0.0240 0.7359 0.6767\nvn -0.2257 0.8157 0.5326\nvn -0.2870 0.4170 0.8624\nvn 0.3918 0.3659 0.8441\nvn 0.7339 0.0514 0.6773\nvn 0.7297 0.1380 0.6697\nvn 0.6952 0.1174 0.7092\nvn -0.4038 -0.3098 0.8608\nvn -0.6592 -0.2397 0.7127\nvn -0.4756 -0.1828 0.8605\nvn 0.1630 0.2192 0.9620\nvn 0.3831 -0.0676 0.9212\nvn 0.5137 0.4247 0.7455\nvn 0.4591 -0.1337 0.8782\nvn -0.3190 -0.1689 0.9326\nvn -0.5969 -0.0046 0.8023\nvn -0.4151 0.0699 0.9071\nvn -0.4647 0.1842 0.8661\nvn -0.1818 0.5162 0.8370\nvn -0.2204 0.8266 0.5179\nvn -0.5668 0.3275 0.7560\nvn -0.1038 0.3332 0.9371\nvn -0.1872 0.6380 0.7470\nvn -0.3519 0.8580 0.3742\nvn -0.6268 0.0166 0.7790\nvn -0.2943 0.1849 0.9377\nvn -0.1670 -0.5443 0.8221\nvn -0.3664 0.1892 0.9110\nvn -0.3467 0.0033 0.9380\nvn -0.6588 -0.1109 0.7441\nvn -0.4068 0.2579 0.8764\nvn -0.3167 -0.1574 0.9354\nvn -0.0824 -0.7614 0.6431\nvn -0.3152 -0.7655 0.5610\nvn -0.3279 -0.2378 0.9143\nvn -0.4576 -0.4994 0.7356\nvn -0.5193 0.2110 0.8282\nvn -0.7505 -0.1455 0.6447\nvn -0.6324 -0.6439 0.4306\nvn -0.7539 0.0799 0.6521\nvn -0.9171 0.0122 0.3985\nvn -0.7613 -0.6176 0.1973\nvn -0.5161 0.1573 0.8419\nvn -0.5635 0.1324 0.8155\nvn -0.5257 0.2434 0.8151\nvn -0.8182 0.2848 0.4995\nvn -0.9503 0.1855 0.2501\nvn -0.3476 0.0749 0.9346\nvn -0.4442 0.0470 0.8947\nvn -0.1322 0.1690 0.9767\nvn -0.3036 0.1662 0.9382\nvn -0.0358 0.1655 0.9856\nvn 0.0324 0.0587 0.9978\nvn 0.0639 -0.0616 0.9961\nvn -0.6551 0.1504 0.7405\nvn -0.6814 0.2718 0.6796\nvn -0.7655 0.1578 0.6238\nvn -0.8945 0.0882 0.4382\nvn -0.9684 -0.0199 0.2488\nvn -0.9906 0.1370 0.0048\nvn -0.9738 -0.2272 0.0091\nvn -0.9444 0.0709 -0.3212\nvn -0.9660 0.1442 -0.2147\nvn -0.8248 0.0435 -0.5637\nvn -0.8665 -0.1491 -0.4764\nvn -0.1169 0.2396 0.9638\nvn -0.9101 -0.3228 0.2599\nvn -0.9446 -0.2697 0.1872\nvn -0.9502 -0.3065 -0.0569\nvn -0.8376 -0.3405 0.4271\nvn -0.9227 -0.1946 0.3329\nvn -0.9021 -0.2786 0.3296\nvn -0.9480 -0.1792 0.2631\nvn -0.9707 -0.1576 0.1813\nvn -0.9577 -0.2261 0.1783\nvn -0.9841 -0.1761 0.0223\nvn -0.9518 -0.2085 0.2249\nvn -0.9936 -0.1109 0.0216\nvn -0.9872 -0.0948 -0.1284\nvn -0.9582 -0.1052 -0.2662\nvn -0.9173 -0.1410 -0.3723\nvn -0.9691 -0.1665 -0.1822\nvn -0.9095 -0.2504 -0.3318\nvn -0.9259 -0.2506 -0.2828\nvn -0.4910 0.2517 0.8340\nvn -0.4942 0.1372 0.8584\nvn -0.5874 0.1641 0.7924\nvn -0.7017 0.1586 0.6946\nvn -0.7919 0.1708 0.5862\nvn -0.9231 0.0224 0.3840\nvn -0.8812 0.0873 0.4646\nvn -0.9213 -0.1947 0.3365\nvn -0.9309 -0.1498 0.3332\nvn -0.9423 -0.0451 0.3318\nvn -0.9624 -0.1183 0.2447\nvn -0.9637 -0.0632 0.2595\nvn -0.9889 -0.0658 0.1330\nvn -0.9837 0.0177 0.1788\nvn -0.8640 -0.1531 -0.4796\nvn -0.8720 -0.2731 -0.4064\nvn -0.7967 -0.2106 -0.5666\nvn -0.7054 -0.2236 -0.6726\nvn -0.7256 -0.3883 -0.5681\nvn -0.6789 -0.2567 -0.6879\nvn -0.6201 -0.1103 -0.7767\nvn -0.6250 -0.3467 -0.6994\nvn -0.6563 -0.4265 -0.6224\nvn -0.4981 -0.2238 -0.8377\nvn -0.5159 0.0042 -0.8567\nvn -0.4308 -0.0158 -0.9023\nvn -0.3268 -0.1284 -0.9363\nvn -0.2391 -0.1381 -0.9611\nvn -0.8436 -0.0494 -0.5347\nvn -0.9007 -0.0351 -0.4331\nvn -0.6647 -0.0983 -0.7406\nvn -0.7779 -0.1034 -0.6198\nvn -0.6758 0.0328 -0.7364\nvn -0.5356 0.0517 -0.8429\nvn -0.4390 0.0993 -0.8930\nvn -0.2060 0.0448 -0.9775\nvn -0.3244 0.1134 -0.9391\nvn -0.6948 -0.1258 0.7081\nvn -0.5152 -0.3315 0.7904\nvn -0.4730 -0.3570 0.8055\nvn -0.3726 -0.3908 0.8417\nvn -0.4430 -0.4616 0.7685\nvn -0.7051 0.0798 0.7047\nvn -0.5225 0.1235 0.8437\nvn -0.3698 -0.3117 0.8752\nvn -0.3977 -0.2023 0.8949\nvn -0.6630 -0.0470 0.7471\nvn -0.5814 -0.1770 0.7941\nvn -0.7903 0.1795 0.5858\nvn -0.8990 0.0669 0.4328\nvn -0.7105 -0.1675 0.6835\nvn -0.8301 0.1055 0.5475\nvn -0.5401 -0.2989 0.7868\nvn -0.2297 -0.3832 0.8947\nvn -0.3647 -0.3570 0.8599\nvn -0.6449 -0.2834 0.7097\nvn -0.2387 -0.3767 0.8950\nvn -0.1563 -0.3316 0.9304\nvn -0.1169 -0.4216 0.8992\nvn -0.7420 -0.2562 0.6195\nvn -0.2974 -0.4630 0.8350\nvn -0.1796 -0.6118 0.7703\nvn -0.2739 -0.6079 0.7452\nvn -0.5564 -0.5569 0.6166\nvn -0.9414 -0.0305 0.3360\nvn -0.8677 0.0062 0.4971\nvn -0.8138 0.4367 0.3835\nvn -0.9490 -0.2408 0.2036\nvn -0.9482 -0.3174 -0.0104\nvn -0.8119 -0.5792 -0.0729\nvn -0.9447 0.2897 0.1538\nvn -0.8421 -0.3415 0.4174\nvn -0.8616 -0.1299 0.4907\nvn -0.7315 -0.6749 0.0975\nvn -0.7027 -0.5564 0.4434\nvn -0.5306 -0.7881 0.3121\nvn -0.2480 -0.9204 0.3022\nvn -0.1579 -0.8305 0.5342\nvn -0.2976 -0.8729 0.3867\nvn -0.4416 -0.3099 0.8420\nvn -0.7668 0.1971 0.6108\nvn -0.8737 -0.1888 0.4483\nvn -0.4793 0.1685 0.8613\nvn -0.4222 0.2740 0.8641\nvn -0.8152 0.1695 0.5538\nvn -0.9057 0.1431 0.3990\nvn -0.7714 -0.0455 0.6347\nvn -0.6410 -0.2343 0.7309\nvn -0.5237 -0.6121 0.5925\nvn -0.6582 -0.7117 0.2455\nvn -0.3346 -0.9310 -0.1460\nvn -0.2866 -0.9563 0.0582\nvn -0.5471 -0.7917 0.2719\nvn -0.8185 -0.2279 0.5273\nvn -0.1958 -0.9806 0.0078\nvn -0.6718 -0.7221 0.1649\nvn -0.1479 -0.9888 0.0175\nvn -0.1958 -0.9745 -0.1093\nvn -0.9394 -0.1634 0.3014\nvn -0.9064 -0.4213 -0.0315\nvn -0.7979 -0.2428 0.5517\nvn -0.7765 -0.2322 0.5858\nvn -0.9271 0.1124 0.3576\nvn -0.9336 -0.1581 0.3215\nvn -0.8626 -0.0723 0.5007\nvn -0.9990 0.0357 -0.0255\nvn -0.9084 0.0747 0.4115\nvn -0.8571 0.3968 0.3287\nvn -0.5852 0.7900 0.1830\nvn -0.8628 0.3670 0.3476\nvn -0.0039 0.9818 -0.1898\nvn -0.1200 0.9923 0.0304\nvn -0.9612 -0.2394 -0.1368\nvn -0.9359 -0.2321 -0.2651\nvn -0.7216 -0.6142 -0.3196\nvn -0.7546 -0.5436 -0.3676\nvn -0.2685 -0.7902 -0.5509\nvn -0.7224 -0.6650 -0.1894\nvn -0.3275 -0.8359 -0.4404\nvn -0.6940 -0.6958 0.1850\nvn -0.0084 -0.9157 -0.4018\nvn -0.9690 -0.2418 0.0497\nvn -0.5744 -0.7630 0.2965\nvn 0.1743 -0.9845 0.0213\nvn 0.0234 -0.8843 0.4664\nvn -0.3821 -0.7740 0.5050\nvn -0.6005 -0.7079 0.3719\nvn -0.5589 -0.4915 0.6679\nvn -0.2490 -0.6893 0.6804\nvn -0.9978 0.0106 -0.0659\nvn -0.9839 -0.0574 -0.1692\nvn -0.8420 -0.3758 0.3869\nvn -0.8212 -0.3906 0.4160\nvn -0.8537 -0.2999 0.4257\nvn -0.8334 -0.3347 0.4399\nvn -0.9093 -0.2908 0.2977\nvn -0.9198 -0.2887 0.2657\nvn -0.9713 -0.1617 0.1746\nvn -0.8686 0.1042 -0.4844\nvn -0.7290 0.1395 -0.6701\nvn -0.9676 0.2092 -0.1416\nvn -0.8095 0.5698 -0.1414\nvn -0.5957 0.7997 -0.0748\nvn 0.5984 0.6947 -0.3991\nvn 0.6090 0.7443 -0.2741\nvn -0.1342 0.7301 -0.6700\nvn -0.3713 0.3987 -0.8386\nvn -0.2190 0.1749 -0.9599\nvn -0.9179 -0.3208 0.2334\nvn -0.8929 0.1724 0.4159\nvn -0.5193 0.0575 -0.8527\nvn -0.7808 0.0978 -0.6171\nvn -0.8622 -0.0852 -0.4993\nvn -0.9092 -0.2933 0.2955\nvn -0.7559 -0.4732 0.4524\nvn -0.8026 -0.3566 0.4783\nvn -0.9232 -0.0585 0.3798\nvn -0.6403 -0.0172 0.7679\nvn -0.8352 0.4173 0.3583\nvn -0.2731 0.0621 0.9600\nvn -0.7767 -0.3769 0.5046\nvn -0.6533 -0.1862 0.7339\nvn -0.7050 -0.4726 0.5288\nvn -0.6600 -0.5206 0.5416\nvn -0.6997 -0.6800 0.2190\nvn -0.9782 -0.2055 -0.0316\nvn -0.3584 -0.0476 -0.9324\nvn -0.4107 -0.3186 -0.8543\nvn -0.2230 0.0042 -0.9748\nvn -0.0213 0.0854 -0.9961\nvn -0.5923 -0.3322 -0.7340\nvn -0.4477 -0.8926 0.0539\nvn -0.5012 -0.8463 -0.1803\nvn -0.8316 -0.4060 -0.3791\nvn -0.6910 -0.6853 0.2300\nvn -0.6559 -0.5075 0.5588\nvn -0.1887 0.0872 0.9782\nvn -0.8654 0.4829 -0.1339\nvn -0.1342 0.9904 0.0323\nvn -0.5723 0.7928 0.2096\nvn -0.4943 0.8600 -0.1266\nvn -0.8361 0.5373 -0.1105\nvn 0.6541 0.6486 -0.3892\nvn -0.3695 -0.7441 -0.5566\nvn -0.4878 -0.7769 -0.3982\nvn -0.2876 -0.6664 -0.6879\nvn -0.7260 -0.6782 -0.1139\nvn -0.5310 -0.6017 -0.5967\nvn -0.6634 -0.6546 -0.3625\nvn -0.8983 -0.4392 0.0137\nvn -0.6348 -0.6691 -0.3864\nvn -0.8592 -0.5095 0.0455\nvn -0.9778 -0.2085 -0.0199\nvn -0.7549 -0.6078 0.2461\nvn -0.6405 -0.6162 0.4583\nvn 0.5412 0.8216 -0.1794\nvn 0.8664 0.4829 -0.1271\nvn 0.7595 0.6500 0.0262\nvn 0.5288 0.7155 0.4566\nvn 0.0042 0.7266 0.6871\nvn -0.5656 0.0644 0.8222\nvn -0.2927 0.3792 0.8778\nvn -0.4862 -0.6091 0.6265\nvn -0.5539 -0.5740 0.6031\nvn -0.7610 -0.6128 0.2130\nvn -0.5628 -0.7381 0.3720\nvn -0.4677 -0.8662 0.1762\nvn -0.5311 -0.8467 0.0300\nvn -0.2347 -0.5544 0.7985\nvn -0.4390 -0.7526 0.4907\nvn 0.1957 0.5429 0.8167\nvn 0.2615 0.0942 0.9606\nvn -0.1011 0.6125 0.7840\nvn -0.5581 0.2321 0.7967\nvn -0.1977 0.0347 0.9796\nvn 0.8257 0.0397 0.5627\nvn 0.6890 -0.1098 0.7163\nvn 0.3726 -0.7391 0.5612\nvn 0.3372 -0.5274 0.7798\nvn -0.3482 -0.2048 0.9148\nvn 0.0941 -0.6362 0.7658\nvn -0.1062 0.4403 0.8916\nvn -0.1935 0.3044 0.9327\nvn -0.2324 0.4457 0.8645\nvn -0.3452 0.2948 0.8910\nvn -0.3930 0.4772 0.7860\nvn -0.5904 0.4120 0.6941\nvn -0.6944 0.2672 0.6681\nvn -0.1225 0.6103 0.7826\nvn -0.2278 0.5735 0.7869\nvn -0.3602 0.6506 0.6686\nvn -0.5657 0.5503 0.6142\nvn -0.4909 0.6463 0.5842\nvn -0.7321 0.4018 0.5500\nvn -0.5918 0.6477 0.4799\nvn -0.6902 0.5704 0.4453\nvn -0.2305 0.6890 0.6871\nvn -0.3036 0.7529 0.5839\nvn -0.4252 0.7345 0.5289\nvn -0.1797 0.7979 0.5754\nvn -0.2533 0.8317 0.4941\nvn -0.5159 0.7504 0.4132\nvn -0.6345 0.6762 0.3743\nvn -0.8350 0.2289 0.5003\nvn -0.8216 0.3446 0.4542\nvn -0.9038 0.2049 0.3757\nvn -0.9382 0.1378 0.3176\nvn -0.9656 0.0558 0.2541\nvn -0.9644 0.1677 0.2044\nvn -0.9879 0.1276 0.0883\nvn -0.9976 0.0258 0.0646\nvn -0.9876 0.1381 -0.0751\nvn -0.9512 0.0676 -0.3011\nvn -0.9473 -0.0267 -0.3191\nvn -0.9794 -0.0231 -0.2004\nvn -0.9960 0.0263 -0.0852\nvn -0.9635 0.1709 -0.2060\nvn -0.8508 0.0573 -0.5223\nvn -0.7487 0.0657 -0.6597\nvn -0.3806 0.0900 -0.9204\nvn -0.3133 0.1523 -0.9374\nvn -0.2227 0.1772 -0.9586\nvn -0.1404 0.2178 -0.9658\nvn -0.8982 0.3334 0.2865\nvn -0.8657 0.3238 0.3818\nvn -0.8197 0.4449 0.3608\nvn -0.7703 0.4676 0.4336\nvn -0.9658 0.2433 0.0896\nvn -0.9275 0.3153 0.2009\nvn -0.9295 0.3549 0.1004\nvn -0.9295 0.3689 0.0009\nvn -0.9650 0.2572 -0.0506\nvn -0.8683 0.1639 -0.4681\nvn -0.9276 0.2283 -0.2957\nvn -0.7627 0.2227 -0.6072\nvn -0.5891 0.2212 -0.7772\nvn -0.6761 0.2217 -0.7027\nvn -0.4689 0.1872 -0.8632\nvn -0.5981 0.0350 -0.8006\nvn -0.2287 0.1058 -0.9677\nvn -0.1905 0.1301 -0.9730\nvn -0.0734 0.1220 -0.9898\nvn -0.7337 0.5946 0.3290\nvn -0.8650 0.4817 0.1404\nvn -0.8885 0.4562 0.0503\nvn -0.8544 0.3477 -0.3860\nvn -0.8430 0.4837 -0.2353\nvn -0.7675 0.4388 -0.4673\nvn -0.6468 0.4452 -0.6193\nvn -0.1176 0.1944 -0.9738\nvn -0.2727 0.2201 -0.9366\nvn -0.1684 0.0869 -0.9819\nvn -0.7510 0.6195 0.2283\nvn -0.6764 0.7092 0.1988\nvn -0.8375 0.4907 0.2406\nvn -0.7867 0.6056 0.1195\nvn -0.8114 0.5843 0.0158\nvn -0.7510 0.6503 -0.1144\nvn -0.8656 0.4951 -0.0750\nvn -0.7790 0.6265 -0.0263\nvn -0.7565 0.6090 -0.2383\nvn -0.6809 0.5876 -0.4372\nvn -0.6658 0.7035 -0.2487\nvn -0.5993 0.6506 -0.4664\nvn -0.4848 0.5699 -0.6634\nvn -0.4978 0.4123 -0.7630\nvn -0.3264 0.3131 -0.8919\nvn -0.2159 0.4486 -0.8672\nvn -0.1866 0.3601 -0.9141\nvn -0.3462 0.0978 -0.9330\nvn -0.1578 0.3201 -0.9342\nvn 0.1053 0.4707 -0.8760\nvn -0.0634 0.2752 -0.9593\nvn -0.0154 0.3067 -0.9517\nvn -0.1561 0.4540 -0.8772\nvn 0.2276 0.5335 -0.8146\nvn -0.0927 0.3864 -0.9177\nvn 0.0779 0.6371 -0.7669\nvn -0.0560 0.5033 -0.8623\nvn -0.2222 0.6526 -0.7244\nvn -0.2760 0.5694 -0.7743\nvn -0.3882 0.7450 -0.5424\nvn -0.4683 0.6342 -0.6152\nvn -0.4642 0.7193 -0.5168\nvn -0.4653 0.7619 -0.4505\nvn -0.5947 0.7464 -0.2986\nvn -0.6309 0.7610 -0.1510\nvn -0.5819 0.8060 -0.1083\nvn -0.5300 0.8145 -0.2360\nvn -0.6885 0.7214 -0.0747\nvn -0.6120 0.7888 -0.0580\nvn -0.7076 0.7057 -0.0364\nvn -0.5906 0.8064 0.0310\nvn -0.7019 0.7117 0.0284\nvn -0.6494 0.7587 0.0520\nvn -0.6946 0.7114 0.1071\nvn -0.1172 0.7807 -0.6138\nvn -0.1412 0.7013 -0.6987\nvn -0.2331 0.7508 -0.6181\nvn -0.2351 0.8327 -0.5014\nvn -0.3383 0.8129 -0.4741\nvn -0.2851 0.8876 -0.3618\nvn -0.4011 0.8416 -0.3617\nvn -0.5030 0.8095 -0.3029\nvn -0.3581 0.9082 -0.2167\nvn -0.4390 0.8649 -0.2433\nvn -0.4930 0.8603 -0.1300\nvn -0.4325 0.8986 -0.0744\nvn -0.5171 0.8558 -0.0170\nvn -0.6136 0.7868 0.0661\nvn -0.5225 0.8507 0.0566\nvn -0.4403 0.8969 0.0409\nvn -0.5074 0.8443 0.1724\nvn -0.4226 0.8954 0.1402\nvn -0.5361 0.8165 0.2145\nvn -0.1457 0.8936 0.4245\nvn -0.2824 0.9076 0.3106\nvn -0.5301 0.8001 0.2809\nvn -0.3757 0.8069 0.4558\nvn -0.4221 0.8916 0.1643\nvn -0.4728 0.8701 0.1390\nvn -0.1665 0.8727 -0.4589\nvn -0.0821 0.9327 -0.3511\nvn -0.1838 0.9488 -0.2569\nvn -0.2808 0.9508 -0.1308\nvn -0.3603 0.9320 -0.0401\nvn -0.2786 0.9600 -0.0268\nvn -0.3348 0.9416 0.0359\nvn -0.3406 0.9317 0.1259\nvn -0.3645 0.9228 0.1246\nvn -0.3013 0.9439 0.1354\nvn -0.2421 0.9678 0.0690\nvn -0.1951 0.9495 0.2457\nvn -0.1661 0.9717 0.1682\nvn -0.1473 0.9843 -0.0971\nvn -0.1338 0.9909 -0.0152\nvn -0.0947 0.9899 0.1059\nvn -0.1144 0.9921 0.0510\nvn -0.9108 -0.3894 0.1371\nvn -0.9576 -0.2377 0.1628\nvn -0.8042 -0.4976 0.3252\nvn -0.9806 -0.1579 0.1164\nvn -0.9846 -0.1718 -0.0335\nvn -0.9467 -0.3019 -0.1125\nvn -0.7666 -0.3578 -0.5332\nvn -0.6675 -0.4184 -0.6159\nvn -0.3933 -0.4226 -0.8165\nvn -0.4587 -0.4830 -0.7458\nvn -0.2857 -0.4132 -0.8647\nvn -0.8865 -0.2768 -0.3707\nvn -0.7177 -0.3449 -0.6049\nvn -0.5690 -0.4655 -0.6779\nvn -0.5492 -0.4689 -0.6917\nvn -0.4983 -0.5808 -0.6437\nvn -0.5105 -0.6037 -0.6124\nvn -0.4139 -0.5949 -0.6891\nvn -0.3205 -0.6485 -0.6905\nvn -0.1730 -0.4571 -0.8724\nvn -0.8097 -0.5732 -0.1254\nvn -0.8954 -0.3261 -0.3032\nvn -0.9154 -0.1750 -0.3624\nvn -0.8997 -0.3674 -0.2358\nvn -0.8392 -0.3154 -0.4431\nvn -0.9187 -0.3030 -0.2533\nvn -0.9023 -0.2149 -0.3737\nvn -0.8116 -0.2973 -0.5029\nvn -0.7105 -0.3220 -0.6257\nvn -0.6222 -0.3984 -0.6739\nvn -0.4366 -0.5657 -0.6996\nvn -0.4212 -0.6204 -0.6616\nvn -0.3856 -0.6815 -0.6220\nvn -0.8307 -0.5506 -0.0828\nvn -0.9499 -0.2403 0.1998\nvn -0.3949 -0.2872 0.8727\nvn -0.7341 -0.5625 0.3803\nvn -0.7027 -0.2160 0.6779\nvn -0.9264 -0.2800 -0.2520\nvn -0.9630 -0.2694 0.0030\nvn -0.8136 -0.3908 -0.4304\nvn -0.7793 -0.4280 -0.4577\nvn -0.9468 -0.2057 -0.2476\nvn -0.9516 -0.2300 -0.2039\nvn -0.6039 -0.1109 0.7893\nvn -0.9093 -0.3604 -0.2083\nvn -0.8128 -0.4637 -0.3525\nvn -0.7779 -0.1720 0.6044\nvn -0.5926 -0.2059 0.7787\nvn -0.7842 -0.3472 0.5143\nvn -0.9430 -0.3046 0.1343\nvn -0.5356 -0.1391 0.8329\nvn 0.2352 -0.7928 0.5622\nvn -0.0455 -0.5388 0.8412\nvn -0.5814 -0.0120 0.8135\nvn -0.2638 -0.3299 0.9064\nvn -0.3495 -0.2420 0.9052\nvn -0.4293 -0.1425 0.8918\nvn 0.0242 -0.3431 0.9390\nvn -0.3586 -0.3335 0.8719\nvn -0.3429 -0.2165 0.9141\nvn -0.9533 -0.2304 0.1951\nvn -0.4344 -0.8936 0.1130\nvn 0.3123 -0.9468 -0.0777\nvn -0.0887 -0.7687 -0.6335\nvn 0.0340 -0.9040 -0.4261\nvn 0.1784 -0.9109 -0.3722\nvn 0.0082 -0.9996 0.0282\nvn -0.5494 -0.8180 -0.1705\nvn -0.2232 -0.8746 -0.4304\nvn -0.3545 -0.9344 -0.0344\nvn 0.1396 -0.9061 -0.3994\nvn -0.5444 -0.7496 -0.3763\nvn -0.3157 -0.8124 -0.4902\nvn -0.2352 -0.9001 -0.3668\nvn -0.1371 -0.9885 -0.0639\nvn -0.0117 -0.9995 -0.0306\nvn 0.1315 -0.8611 -0.4912\nvn -0.7364 -0.6594 0.1512\nvn 0.4338 -0.5936 -0.6778\nvn 0.4131 -0.6329 -0.6548\nvn 0.7516 -0.1707 -0.6371\nvn 0.7681 -0.0717 -0.6363\nvn 0.6382 -0.1159 -0.7611\nvn 0.3194 -0.7344 -0.5988\nvn 0.4639 -0.2268 -0.8564\nvn 0.1517 -0.4494 -0.8804\nvn 0.0078 -0.7062 -0.7079\nvn 0.7833 -0.6044 -0.1453\nvn 0.7650 -0.4696 -0.4407\nvn 0.7215 -0.6846 0.1032\nvn -0.3458 -0.9334 0.0960\nvn -0.1380 -0.9856 0.0979\nvn 0.5025 -0.7464 0.4364\nvn -0.6706 -0.7401 -0.0493\nvn 0.3711 -0.7720 0.5160\nvn 0.6349 -0.6242 -0.4553\nvn 0.2594 -0.8522 -0.4544\nvn 0.3473 -0.8079 -0.4762\nvn 0.3674 -0.6948 -0.6182\nvn 0.3992 -0.7463 -0.5326\nvn 0.4731 -0.7211 -0.5061\nvn 0.5863 -0.6325 -0.5061\nvn 0.6941 -0.6308 -0.3468\nvn 0.6591 -0.2249 -0.7176\nvn 0.8137 -0.3776 -0.4419\nvn 0.6132 -0.2959 -0.7324\nvn 0.6670 -0.5075 -0.5455\nvn 0.7084 -0.3382 -0.6196\nvn 0.5311 -0.6823 -0.5024\nvn 0.7070 -0.5467 -0.4487\nvn 0.7220 -0.6426 -0.2563\nvn 0.8268 -0.3430 -0.4457\nvn 0.2314 -0.9208 -0.3140\nvn -0.9714 0.0848 0.2216\nvn -0.9270 -0.2916 0.2357\nvn -0.5014 -0.8616 -0.0793\nvn -0.4703 -0.6868 -0.5542\nvn -0.8477 -0.4778 -0.2305\nvn -0.9866 -0.1425 0.0793\nvn -0.9747 0.1062 -0.1968\nvn -0.9783 -0.0115 -0.2068\nvn -0.6296 -0.7242 -0.2813\nvn -0.7140 -0.6212 -0.3230\nvn -0.9214 -0.3808 0.0778\nvn -0.9938 -0.0127 -0.1101\nvn -0.7636 -0.0541 -0.6434\nvn 0.1938 -0.3346 -0.9222\nvn -0.2758 -0.3778 -0.8839\nvn -0.0576 -0.3454 -0.9367\nvn 0.0983 -0.0527 -0.9938\nvn 0.4091 -0.0657 -0.9101\nvn 0.0135 0.0450 -0.9989\nvn 0.1833 -0.0180 -0.9829\nvn -0.9553 0.0215 -0.2950\nvn -0.8735 -0.2324 -0.4278\nvn -0.9419 -0.2056 -0.2657\nvn -0.4712 -0.1998 -0.8591\nvn -0.2025 -0.0797 -0.9760\nvn -0.2163 0.0128 -0.9762\nvn -0.3994 -0.0776 -0.9135\nvn -0.2749 -0.1902 -0.9425\nvn -0.9441 -0.0770 -0.3205\nvn -0.8732 -0.0550 -0.4843\nvn -0.5729 -0.1321 -0.8089\nvn -0.6908 0.0508 -0.7213\nvn -0.9210 -0.3022 -0.2458\nvn -0.9345 -0.0800 -0.3468\nvn -0.8117 -0.3493 -0.4681\nvn -0.6193 -0.2033 -0.7584\nvn -0.4446 -0.5237 -0.7267\nvn 0.4087 0.0803 -0.9091\nvn -0.0061 -0.3868 -0.9221\nvn 0.1590 -0.0820 -0.9839\nvn -0.1709 -0.5870 -0.7913\nvn -0.4718 -0.5953 -0.6504\nvn 0.4034 0.1561 -0.9016\nvn 0.1615 0.3462 -0.9242\nvn 0.0781 0.1029 -0.9916\nvn 0.8067 -0.0440 -0.5893\nvn 0.9399 0.1229 -0.3185\nvn 0.8924 0.1513 -0.4252\nvn 0.8644 -0.0182 -0.5025\nvn 0.8717 0.2090 -0.4433\nvn 0.8432 0.2396 -0.4812\nvn 0.9971 0.0757 -0.0097\nvn 0.9540 -0.0745 -0.2905\nvn 0.8857 0.3671 -0.2843\nvn 0.8764 0.3698 -0.3085\nvn 0.7282 0.3057 -0.6134\nvn 0.3890 0.5344 -0.7504\nvn -0.3130 0.5413 -0.7804\nvn 0.0347 -0.8258 -0.5629\nvn 0.2524 -0.8347 -0.4894\nvn 0.4787 -0.6137 -0.6279\nvn 0.3823 -0.7921 -0.4758\nvn 0.1309 -0.5532 -0.8227\nvn 0.7594 -0.4820 -0.4370\nvn 0.8348 -0.3709 -0.4069\nvn 0.8423 -0.4964 0.2100\nvn 0.9480 -0.2150 0.2348\nvn 0.8347 -0.5424 0.0948\nvn 0.5946 -0.6764 -0.4346\nvn 0.9735 0.0237 0.2273\nvn 0.1512 -0.9767 -0.1520\nvn 0.6125 -0.7735 -0.1629\nvn 0.5448 -0.6876 -0.4801\nvn 0.3704 -0.8057 -0.4622\nvn 0.1609 -0.9113 -0.3791\nvn 0.6720 -0.6247 -0.3978\nvn -0.4751 -0.3242 0.8180\nvn -0.7672 -0.5338 -0.3555\nvn -0.4970 -0.7500 -0.4365\nvn -0.6670 -0.6620 -0.3420\nvn -0.7411 -0.3549 -0.5699\nvn -0.5820 -0.5100 -0.6334\nvn -0.6379 -0.5802 -0.5064\nvn -0.4289 -0.7093 -0.5594\nvn -0.0516 -0.8669 -0.4958\nvn -0.6087 -0.4506 -0.6530\nvn -0.2633 -0.7052 -0.6583\nvn -0.0104 -0.8174 -0.5760\nvn -0.5090 -0.5689 -0.6460\nvn -0.5119 -0.4602 -0.7254\nvn -0.4351 -0.5596 -0.7054\nvn -0.2658 -0.6223 -0.7363\nvn -0.1114 -0.6676 -0.7362\nvn -0.2007 -0.7233 -0.6607\nvn 0.0469 -0.8785 -0.4755\nvn -0.1916 -0.8000 -0.5686\nvn -0.1242 -0.7755 -0.6190\nvn -0.3007 -0.7191 -0.6265\nvn -0.4243 -0.7062 -0.5668\nvn -0.4196 -0.7152 -0.5589\nvn -0.5208 -0.5816 -0.6249\nvn -0.3618 -0.7510 -0.5523\nvn -0.2642 -0.8075 -0.5274\nvn -0.3202 -0.7482 -0.5811\nvn -0.4171 -0.6811 -0.6017\nvn -0.1159 -0.8730 -0.4737\nvn 0.1482 -0.9223 -0.3569\nvn -0.2235 -0.8712 -0.4372\nvn -0.3870 -0.8309 -0.3997\nvn -0.2045 -0.9716 -0.1194\nvn -0.2732 -0.8704 -0.4096\nvn -0.1168 -0.9132 -0.3903\nvn 0.0239 -0.9836 -0.1787\nvn 0.2295 -0.9270 -0.2967\nvn 0.0744 -0.9189 -0.3874\nvn -0.1286 -0.9652 -0.2277\nvn -0.0201 -0.9996 -0.0194\nvn 0.1283 -0.9818 -0.1397\nvn -0.0780 -0.8921 -0.4451\nvn -0.6686 -0.7313 -0.1346\nvn -0.8584 -0.4665 0.2136\nvn -0.8463 -0.5249 -0.0914\nvn -0.3796 -0.7533 0.5370\nvn -0.7173 -0.6750 0.1727\nvn -0.2595 -0.4348 0.8623\nvn 0.2774 -0.9332 -0.2283\nvn 0.4393 -0.8382 -0.3233\nvn -0.9467 -0.3072 -0.0970\nvn -0.5999 -0.7757 0.1960\nvn -0.6379 -0.7175 0.2798\nvn 0.0442 -0.2363 0.9707\nvn 0.0975 -0.9157 -0.3899\nvn -0.2972 -0.9089 -0.2926\nvn 0.5894 -0.7896 -0.1707\nvn 0.4018 -0.8225 -0.4025\nvn 0.1801 -0.9799 0.0856\nvn -0.4001 -0.9163 0.0179\nvn 0.4678 -0.3107 0.8275\nvn 0.4378 -0.3671 0.8207\nvn 0.2902 -0.7461 0.5992\nvn 0.6184 -0.7583 -0.2062\nvn 0.4026 -0.8575 -0.3202\nvn 0.5573 -0.8299 0.0253\nvn 0.1144 -0.9820 0.1503\nvn 0.0246 -0.9988 0.0413\nvn 0.1363 -0.9907 0.0048\nvn 0.0299 -0.9973 0.0669\nvn 0.0772 -0.9512 0.2986\nvn -0.0230 -0.9663 -0.2563\nvn 0.2167 -0.6440 0.7337\nvn 0.6820 -0.4137 0.6031\nvn 0.7829 -0.4255 0.4539\nvn 0.7817 -0.6104 0.1279\nvn 0.4359 -0.8937 -0.1066\nvn 0.6627 -0.7002 -0.2655\nvn 0.5962 -0.7963 -0.1017\nvn 0.1313 -0.9421 0.3085\nvn 0.5962 -0.6218 0.5078\nvn -0.0105 -0.8572 -0.5148\nvn -0.6304 -0.7492 -0.2034\nvn 0.9223 -0.3860 -0.0185\nvn 0.7780 -0.6280 0.0170\nvn 0.8494 -0.4467 0.2810\nvn -0.5496 -0.6965 0.4614\nvn -0.8525 -0.4587 0.2508\nvn -0.3958 -0.4032 0.8251\nvn -0.0909 -0.5594 0.8239\nvn -0.3210 -0.3016 0.8978\nvn -0.6094 -0.0632 0.7904\nvn -0.1891 -0.9560 0.2244\nvn 0.3341 -0.8891 0.3128\nvn -0.0374 -0.9146 0.4025\nvn -0.0190 -0.9692 0.2456\nvn 0.2897 -0.8723 0.3939\nvn 0.2297 -0.9706 0.0718\nvn 0.2945 -0.9068 0.3016\nvn 0.2761 -0.9312 0.2381\nvn 0.4592 -0.8544 0.2432\nvn 0.7121 -0.3975 0.5787\nvn -0.5337 -0.5811 0.6144\nvn 0.0284 -0.5902 0.8068\nvn -0.7348 -0.5857 0.3421\nvn -0.1992 -0.9327 0.3006\nvn -0.2306 -0.9712 -0.0596\nvn 0.1916 -0.7316 0.6543\nvn -0.2448 -0.1023 0.9642\nvn -0.2633 -0.5770 0.7731\nvn 0.3227 -0.7045 0.6321\nvn -0.0254 -0.6073 0.7941\nvn 0.4469 -0.8221 0.3528\nvn 0.2453 -0.7774 0.5792\nvn 0.5769 -0.2127 0.7887\nvn 0.9892 -0.1408 0.0406\nvn 0.9839 0.1577 -0.0841\nvn 0.3085 0.8661 0.3933\nvn 0.2629 0.9600 0.0964\nvn 0.4971 0.6138 0.6132\nvn 0.6070 0.7946 0.0125\nvn 0.9236 0.3782 -0.0631\nvn 0.6919 0.1869 0.6974\nvn 0.5997 0.7903 0.1257\nvn -0.0134 0.9981 0.0594\nvn 0.2618 0.9635 0.0552\nvn 0.1031 0.9903 -0.0931\nvn 0.7286 -0.5949 0.3394\nvn 0.8757 -0.4700 0.1110\nvn -0.5436 0.8365 0.0685\nvn -0.1679 0.9726 0.1610\nvn -0.8628 0.5042 0.0359\nvn -0.6816 0.7316 0.0119\nvn -0.9481 0.3039 0.0937\nvn -0.9544 0.2788 0.1069\nvn -0.9058 0.4206 -0.0511\nvn -0.9703 0.2405 0.0270\nvn -0.5738 0.2481 -0.7805\nvn -0.8354 0.0553 -0.5468\nvn 0.4216 0.8037 -0.4199\nvn 0.8788 0.4324 -0.2020\nvn 0.8161 0.4605 -0.3493\nvn 0.9629 0.1363 -0.2328\nvn 0.9721 -0.2078 -0.1088\nvn 0.9575 -0.2064 -0.2016\nvn 0.7846 -0.5946 0.1758\nvn 0.7930 -0.6085 -0.0314\nvn 0.7868 -0.5929 -0.1718\nvn 0.7130 -0.6842 -0.1531\nvn 0.2951 -0.9462 0.1328\nvn 0.6826 -0.7279 0.0649\nvn 0.0633 -0.9980 0.0012\nvn 0.5574 -0.8139 0.1641\nvn 0.8941 0.4427 -0.0685\nvn -0.9923 -0.0876 0.0881\nvn -0.9747 -0.2104 -0.0757\nvn -0.5842 0.1508 -0.7975\nvn -0.8275 -0.5441 0.1385\nvn -0.8210 -0.5622 0.0992\nvn -0.9181 -0.3412 0.2015\nvn -0.4566 -0.8412 0.2896\nvn -0.5858 -0.8048 0.0950\nvn -0.1113 -0.9920 0.0591\nvn 0.0381 -0.9154 0.4008\nvn -0.3174 -0.8232 0.4708\nvn -0.0418 -0.9871 -0.1543\nvn 0.3579 -0.9230 -0.1412\nvn 0.1616 -0.9657 -0.2034\nvn -0.1322 -0.9896 -0.0564\nvn 0.0582 -0.8773 0.4764\nvn 0.3739 -0.8037 0.4629\nvn 0.3239 -0.9455 0.0338\nvn 0.3765 -0.8665 0.3277\nvn 0.5032 -0.8461 -0.1757\nvn 0.1674 -0.9630 0.2111\nvn 0.2351 -0.9437 0.2325\nvn 0.2283 -0.9735 0.0153\nvn -0.1339 -0.6717 0.7287\nvn -0.3302 -0.5676 0.7542\nvn -0.1404 -0.8024 0.5800\nvn 0.3506 -0.8096 0.4708\nvn 0.3296 -0.8988 0.2891\nvn -0.4636 -0.4613 0.7565\nvn -0.6286 -0.5192 0.5790\nvn -0.4476 -0.8885 0.1009\nvn -0.3997 -0.9125 0.0870\nvn -0.3147 -0.9469 0.0662\nvn -0.5627 -0.8213 -0.0939\nvn 0.2631 -0.9603 -0.0925\nvn 0.7312 -0.4650 0.4992\nvn 0.1213 -0.9612 0.2479\nvn 0.8544 -0.3076 -0.4187\nvn 0.1297 -0.2076 -0.9696\nvn 0.8033 -0.0570 -0.5929\nvn -0.1221 -0.7009 -0.7027\nvn 0.7984 -0.1949 -0.5697\nvn 0.9898 -0.1412 0.0176\nvn 0.9973 0.0471 -0.0561\nvn 0.2619 -0.4016 -0.8776\nvn -0.1670 -0.5688 -0.8053\nvn -0.8502 -0.3214 -0.4169\nvn -0.7305 -0.3896 -0.5608\nvn -0.4498 -0.3004 -0.8411\nvn -0.8198 -0.1219 0.5596\nvn -0.3475 -0.5156 0.7832\nvn -0.3281 -0.0030 0.9446\nvn -0.7146 -0.1629 0.6803\nvn -0.9544 -0.2983 0.0084\nvn -0.7865 -0.6093 0.1012\nvn 0.9563 0.1584 0.2456\nvn 0.4560 0.1184 0.8821\nvn 0.1070 -0.0200 0.9941\nvn 0.0457 -0.1550 0.9868\nvn -0.4554 -0.2772 0.8460\nvn 0.6145 -0.2439 0.7502\nvn 0.5599 -0.1076 0.8216\nvn -0.3686 -0.3087 0.8768\nvn -0.2519 -0.1432 0.9571\nvn -0.0980 -0.2599 0.9607\nvn -0.8965 0.0692 0.4376\nvn -0.3464 -0.5027 0.7920\nvn 0.0924 -0.0284 0.9953\nvn 0.2993 -0.2751 0.9137\nvn -0.1914 -0.9673 0.1663\nvn -0.1471 -0.9873 -0.0599\nvn 0.2382 -0.8868 -0.3960\nvn 0.4427 -0.6924 -0.5698\nvn 0.5258 -0.6466 -0.5526\nvn 0.5394 -0.8378 -0.0843\nvn 0.4422 -0.7523 -0.4884\nvn 0.3633 -0.9029 0.2299\nvn 0.3498 -0.9344 -0.0670\nvn 0.5819 -0.6503 -0.4883\nvn 0.6510 -0.7590 -0.0091\nvn -0.0709 -0.7680 0.6365\nvn -0.4347 -0.6381 -0.6355\nvn -0.5352 -0.8446 0.0127\nvn -0.5240 -0.8302 0.1900\nvn 0.2786 -0.9584 0.0611\nvn -0.1039 -0.9945 -0.0120\nvn -0.0033 -0.9767 0.2145\nvn -0.1142 -0.9890 0.0939\nvn 0.4349 -0.8762 0.2075\nvn -0.2878 -0.9509 0.1137\nvn -0.7254 -0.5129 0.4590\nvn -0.6797 -0.6841 0.2646\nvn -0.6120 -0.7888 -0.0569\nvn -0.0394 -0.9639 -0.2634\nvn -0.5554 -0.8313 0.0206\nvn -0.5189 -0.4323 0.7375\nvn 0.0286 -0.9984 -0.0497\nvn -0.3356 -0.9284 0.1597\nvn -0.5313 -0.7007 0.4761\nvn -0.4459 -0.7604 0.4723\nvn -0.2127 -0.9053 0.3676\nvn -0.4973 -0.4742 0.7265\nvn -0.4227 -0.4588 0.7815\nvn -0.5494 -0.6986 0.4583\nvn -0.3026 -0.5119 0.8040\nvn -0.0613 -0.7797 0.6232\nvn -0.0104 -0.7964 0.6046\nvn -0.1501 -0.7319 0.6647\nvn -0.1491 -0.8703 0.4695\nvn 0.1019 -0.8076 0.5808\nvn -0.4003 -0.4339 0.8072\nvn -0.4788 -0.3556 0.8027\nvn -0.2994 -0.4673 0.8319\nvn -0.2125 -0.7293 0.6503\nvn 0.1742 -0.9553 0.2389\nvn -0.0655 -0.9925 0.1030\nvn 0.1340 -0.8255 0.5482\nvn 0.1991 -0.8383 0.5075\nvn 0.1386 -0.6693 0.7299\nvn 0.3304 -0.6370 0.6964\nvn 0.1458 -0.6659 0.7317\nvn 0.1611 -0.9831 0.0871\nvn 0.1006 -0.9206 0.3772\nvn 0.6047 -0.7056 -0.3695\nvn 0.4720 -0.8814 -0.0203\nvn -0.6828 -0.2978 -0.6672\nvn -0.8245 -0.4670 0.3194\nvn -0.4841 -0.3748 0.7906\nvn 0.1080 -0.3432 0.9330\nvn 0.3741 -0.4482 0.8118\nvn 0.3640 -0.6034 0.7095\nvn -0.2062 -0.3015 0.9309\nvn -0.2286 -0.5631 0.7941\nvn 0.2036 -0.7648 0.6113\nvn 0.2124 0.0074 0.9772\nvn 0.6634 -0.5584 0.4981\nvn 0.4321 -0.5851 0.6862\nvn -0.1781 -0.5515 0.8149\nvn 0.4589 -0.7487 0.4784\nvn 0.5794 -0.7617 0.2900\nvn 0.7673 -0.5792 -0.2754\nvn 0.5982 -0.7710 -0.2187\nvn 0.3701 -0.9264 -0.0700\nvn 0.4878 -0.6802 -0.5472\nvn 0.4131 -0.8099 -0.4164\nvn 0.4957 -0.8315 -0.2508\nvn 0.4539 -0.8768 -0.1588\nvn 0.6468 -0.6722 0.3603\nvn 0.6944 -0.6443 -0.3204\nvn 0.6694 -0.3902 0.6322\nvn 0.3489 -0.9117 0.2169\nvn 0.1547 -0.9545 0.2548\nvn 0.2512 -0.9350 -0.2504\nvn 0.3244 -0.8409 -0.4332\nvn 0.3368 -0.9301 0.1466\nvn -0.0586 -0.7787 -0.6247\nvn 0.1755 -0.7258 -0.6651\nvn 0.4292 -0.6421 -0.6352\nvn 0.1475 -0.8077 -0.5708\nvn 0.0738 -0.7311 0.6783\nvn -0.1857 -0.7110 0.6782\nvn 0.1603 -0.7571 0.6334\nvn -0.1684 -0.9374 0.3047\nvn 0.0536 -0.8668 0.4958\nvn 0.1731 -0.8848 0.4327\nvn -0.4099 -0.8954 -0.1739\nvn -0.2778 -0.9605 0.0127\nvn -0.2670 -0.9626 0.0457\nvn -0.4510 -0.8907 0.0577\nvn -0.6025 -0.7537 -0.2626\nvn -0.5079 -0.8601 -0.0462\nvn -0.5355 -0.8326 -0.1415\nvn -0.0649 -0.9653 0.2528\nvn 0.1263 -0.7795 0.6136\nvn 0.4047 -0.7328 0.5469\nvn 0.2609 -0.8356 0.4835\nvn -0.0165 -0.9969 -0.0774\nvn -0.2647 -0.8862 -0.3802\nvn 0.1638 -0.9454 0.2816\nvn 0.1233 -0.9619 -0.2438\nvn -0.5677 -0.7848 -0.2485\nvn -0.2305 -0.9730 -0.0074\nvn -0.6799 -0.7306 -0.0632\nvn 0.0593 -0.9010 0.4297\nvn 0.5018 -0.7632 0.4072\nvn 0.4826 -0.8305 0.2783\nvn -0.7189 -0.5998 0.3514\nvn -0.5993 -0.7521 -0.2743\nvn -0.2412 -0.8918 -0.3827\nvn -0.6411 -0.6301 -0.4382\nvn 0.5328 -0.3808 0.7557\nvn 0.2876 -0.6540 0.6997\nvn 0.3254 -0.8645 0.3831\nvn 0.1714 -0.9828 -0.0683\nvn -0.4854 -0.8497 -0.2060\nvn -0.1585 -0.9317 0.3268\nvn 0.2285 -0.9734 -0.0167\nvn -0.4668 -0.8265 0.3147\nvn 0.0711 -0.8922 0.4461\nvn -0.4288 -0.9029 -0.0298\nvn -0.5803 -0.7498 -0.3180\nvn -0.4706 -0.8185 0.3296\nvn -0.1650 -0.9848 -0.0550\nvn 0.2653 -0.9604 0.0856\nvn 0.2608 -0.9605 -0.0966\nvn 0.1974 -0.8275 0.5256\nvn -0.1408 -0.7887 0.5984\nvn 0.3555 -0.9266 0.1225\nvn 0.2006 -0.9190 0.3395\nvn -0.2127 -0.9723 0.0970\nvn -0.0242 -0.6741 0.7383\nvn 0.5264 -0.8186 0.2298\nvn 0.3378 -0.8604 0.3814\nvn 0.7331 0.0234 0.6797\nvn 0.9314 -0.1275 0.3408\nvn 0.7306 -0.6324 0.2574\nvn 0.4056 -0.5563 0.7253\nvn -0.0498 -0.6738 0.7372\nvn -0.7594 -0.6505 -0.0102\nvn -0.8922 -0.4478 -0.0595\nvn -0.8544 -0.3967 -0.3357\nvn -0.4308 -0.9015 0.0419\nvn -0.7262 -0.4788 -0.4934\nvn -0.9330 -0.2154 -0.2884\nvn -0.4521 -0.4618 -0.7631\nvn -0.9574 -0.2803 0.0698\nvn -0.7779 -0.6152 0.1280\nvn -0.5550 -0.8154 0.1645\nvn -0.0686 -0.8975 0.4356\nvn -0.7119 -0.6155 0.3383\nvn -0.2694 -0.9438 -0.1912\nvn -0.7173 -0.6353 -0.2861\nvn 0.8295 -0.0699 -0.5540\nvn 0.2167 -0.9681 -0.1256\nvn 0.0560 -0.5579 -0.8281\nvn -0.4337 -0.9008 -0.0196\nvn -0.8683 0.1017 -0.4856\nvn -0.4594 -0.1144 -0.8808\nvn -0.9728 -0.0339 -0.2291\nvn -0.9225 -0.2492 -0.2947\nvn -0.9609 -0.0895 -0.2619\nvn -0.9702 -0.0323 -0.2402\nvn -0.8684 -0.0769 -0.4898\nvn -0.8443 -0.0721 -0.5309\nvn -0.8961 -0.2234 -0.3835\nvn -0.9071 0.0704 -0.4150\nvn -0.7278 -0.0959 -0.6790\nvn -0.1694 -0.9724 0.1603\nvn -0.2214 -0.9417 -0.2535\nvn -0.1389 -0.8228 -0.5511\nvn 0.2191 -0.8644 -0.4525\nvn -0.1670 -0.6054 -0.7782\nvn -0.4442 -0.5913 -0.6731\nvn -0.5814 -0.7224 -0.3744\nvn -0.2285 -0.9545 0.1917\nvn -0.4851 -0.8529 -0.1931\nvn 0.1198 -0.8049 0.5811\nvn 0.5505 -0.3419 0.7616\nvn 0.5267 -0.5660 0.6342\nvn -0.4271 -0.8781 0.2155\nvn -0.6028 -0.4766 -0.6399\nvn 0.4046 -0.9125 -0.0609\nvn 0.6409 -0.7565 -0.1304\nvn 0.2244 -0.6469 -0.7288\nvn 0.5754 -0.4820 -0.6608\nvn -0.0419 -0.4681 -0.8827\nvn 0.9590 -0.2330 0.1613\nvn 0.9486 -0.2242 0.2234\nvn 0.9418 0.0408 0.3337\nvn 0.8280 0.1156 0.5487\nvn 0.8296 -0.3596 0.4272\nvn 0.7289 -0.6114 0.3081\nvn 0.7071 -0.7060 -0.0388\nvn 0.8278 -0.5290 0.1870\nvn 0.8644 -0.3506 0.3604\nvn 0.7363 -0.6049 0.3033\nvn 0.7582 -0.5369 0.3700\nvn 0.4397 -0.8553 0.2742\nvn 0.9228 -0.3852 0.0091\nvn 0.8308 -0.3038 0.4663\nvn 0.8212 -0.4945 0.2847\nvn 0.8872 -0.3645 0.2828\nvn 0.9574 -0.0292 0.2873\nvn 0.4104 -0.6529 -0.6367\nvn 0.5211 -0.5575 -0.6463\nvn -0.9711 -0.1736 -0.1638\nvn -0.9371 -0.1225 -0.3270\nvn -0.6448 -0.2788 -0.7117\nvn -0.9048 0.0381 -0.4242\nvn -0.8093 -0.0288 -0.5866\nvn -0.8372 0.0147 -0.5468\nvn -0.8887 -0.0534 -0.4554\nvn -0.8559 0.0165 -0.5169\nvn -0.4766 -0.2648 -0.8383\nvn -0.4481 -0.3949 -0.8020\nvn -0.1169 -0.4598 -0.8803\nvn 0.2318 -0.4113 -0.8815\nvn 0.1425 -0.9818 0.1258\nvn -0.3817 -0.9228 0.0520\nvn 0.0675 -0.9971 0.0347\nvn -0.0986 -0.9090 -0.4049\nvn -0.2824 -0.9467 0.1547\nvn -0.0212 -0.9494 -0.3134\nvn 0.9263 -0.2001 -0.3192\nvn 0.9526 -0.2292 -0.2002\nvn 0.9892 0.1372 -0.0524\nvn 0.5965 -0.0962 -0.7968\nvn 0.3652 -0.5444 -0.7552\nvn -0.0121 -0.7948 -0.6068\nvn 0.4421 0.0958 -0.8918\nvn 0.8840 0.1446 -0.4446\nvn 0.9379 -0.3236 -0.1250\nvn 0.6948 -0.4775 -0.5379\nvn 0.8071 -0.3783 -0.4533\nvn 0.6546 0.2359 -0.7182\nvn -0.2104 -0.8801 -0.4256\nvn 0.0341 -0.7138 -0.6996\nvn -0.7984 -0.0939 -0.5948\nvn 0.2537 -0.6862 -0.6817\nvn 0.0573 -0.9773 -0.2040\nvn -0.2335 -0.1329 -0.9632\nvn -0.6071 -0.7625 -0.2239\nvn -0.5074 -0.6480 0.5681\nvn -0.1996 -0.9759 -0.0885\nvn -0.0820 -0.9960 0.0367\nvn -0.5601 -0.7396 0.3732\nvn -0.0001 -0.9882 -0.1530\nvn 0.2059 -0.9629 0.1744\nvn -0.2638 -0.9645 0.0152\nvn -0.2971 -0.9492 0.1041\nvn 0.0554 -0.9682 0.2439\nvn -0.2390 -0.9509 0.1966\nvn -0.1129 -0.9800 -0.1640\nvn -0.1818 -0.9564 -0.2285\nvn 0.1426 -0.9728 -0.1825\nvn -0.6315 -0.6431 -0.4331\nvn -0.5304 -0.2824 -0.7993\nvn -0.2588 -0.3812 -0.8875\nvn 0.8404 -0.2789 -0.4646\nvn -0.0106 -0.4339 -0.9009\nvn 0.0602 -0.6752 0.7352\nvn -0.8907 -0.3421 0.2993\nvn -0.4333 0.4277 0.7933\nvn -0.9879 -0.1333 0.0788\nvn 0.2133 0.1740 -0.9614\nvn 0.1231 0.5306 0.8386\nvn 0.6535 0.7479 0.1168\nvn 0.5037 0.8234 0.2613\nvn -0.5069 -0.1667 0.8458\nvn 0.4663 -0.7033 0.5366\nvn 0.6174 0.7492 0.2396\nvn -0.0049 0.7848 0.6197\nvn 0.4411 -0.5085 -0.7394\nvn -0.3565 -0.2444 -0.9017\nvn 0.9192 -0.0646 -0.3885\nvn -0.0183 -0.9940 0.1081\nvn -0.8478 -0.1762 -0.5002\nvn -0.0377 -0.1348 0.9902\nvn 0.5527 -0.6241 0.5523\nvn 0.6423 -0.3200 0.6965\nvn -0.9155 -0.2568 0.3095\nvn -0.8876 -0.3047 0.3453\nvn -0.7752 -0.0231 -0.6313\nvn -0.8003 -0.1098 0.5894\nvn 0.6180 0.6435 -0.4516\nvn -0.7421 0.5859 -0.3256\nvn 0.7381 0.5997 -0.3091\nvn -0.1465 0.7294 0.6682\nvn -0.9218 0.3533 -0.1597\nvn -0.6131 0.7273 0.3083\nvn -0.5798 0.7839 0.2223\nvn -0.5640 0.7696 0.2994\nvn -0.2368 -0.9187 -0.3160\nvn 0.3467 -0.9277 -0.1383\nvn 0.1245 -0.4354 0.8916\nvn 0.5452 -0.8382 -0.0133\nvn 0.4458 -0.8946 -0.0299\nvn -0.6357 -0.7644 0.1077\nvn 0.5229 -0.6682 0.5292\nvn 0.1295 -0.9910 0.0341\nvn -0.4946 -0.0279 -0.8687\nusemtl _teeth_maxwire_214228153\ns off\nf 1/1/1 2/2/2 3/3/3\nf 1/4/4 2/5/4 4/6/4\nf 2/5/5 5/7/5 4/6/5\nf 6/8/6 5/7/6 2/5/6\nf 3/3/7 4/9/7 5/10/7\nf 1094/11/8 4/9/8 3/3/8\nf 1/1/9 4/9/10 1094/11/11\nf 7/12/12 8/13/13 9/14/13\nf 7/15/14 10/16/14 9/17/14\nf 9/17/15 10/16/15 11/18/15\nf 12/19/16 9/17/16 11/18/16\nf 8/13/17 11/20/17 10/21/17\nf 1210/22/18 8/13/18 10/21/18\nf 7/12/19 1210/22/20 10/21/21\ns 1\nf 13/23/22 49/24/23 14/25/24\nf 49/26/23 32/27/25 14/28/24\nf 14/29/24 19/30/26 13/31/22\nf 59/32/27 15/33/28 13/23/22\nf 19/30/26 21/34/29 20/35/30\nf 26/36/31 27/37/32 28/38/33\nf 29/39/34 31/40/35 30/41/36\nf 24/42/37 46/43/38 34/44/39\nf 31/45/35 22/46/40 27/47/32\nf 36/48/41 31/40/35 29/39/34\nf 36/48/41 22/49/40 31/40/35\nf 40/50/42 37/51/43 39/52/44\nf 21/34/29 29/39/34 41/53/45\nf 59/54/27 17/55/46 15/56/28\nf 44/57/47 16/58/48 47/59/49\nf 38/60/50 37/51/43 40/50/42\nf 58/61/51 43/62/52 17/55/46\nf 18/63/53 43/62/52 58/61/51\nf 45/64/54 15/65/28 16/58/48\nf 32/27/25 33/66/55 46/43/38\nf 26/36/31 42/67/56 48/68/57\nf 47/59/49 38/60/50 55/69/58\nf 49/70/23 33/66/55 32/27/25\nf 48/68/57 56/71/59 26/36/31\nf 34/44/39 25/72/60 24/42/37\nf 40/50/42 55/69/58 38/60/50\nf 44/73/47 34/74/39 49/24/23\nf 35/75/61 48/68/57 42/67/56\nf 51/76/62 52/77/63 57/78/64\nf 48/68/57 35/75/61 50/79/65\nf 20/80/30 50/79/65 35/75/61\nf 26/36/31 56/71/59 27/37/32\nf 32/27/25 46/43/38 53/81/66\nf 17/55/46 59/54/27 58/61/51\nf 55/82/58 40/83/42 25/72/60\nf 25/72/60 23/84/67 24/42/37\nf 49/24/23 45/85/54 44/73/47\nf 44/86/47 55/87/58 34/88/39\nf 55/69/58 44/57/47 47/59/49\nf 23/84/67 25/72/60 40/83/42\nf 23/89/67 40/50/42 39/52/44\nf 50/90/65 20/35/30 41/53/45\nf 58/91/51 59/32/27 18/92/53\nf 20/80/30 35/75/61 43/62/52\nf 52/77/63 51/76/62 42/67/56\nf 22/46/40 23/93/67 39/94/44\nf 49/70/23 34/95/39 33/66/55\nf 17/55/46 42/67/56 51/76/62\nf 14/28/24 32/27/25 54/96/68\nf 38/60/50 47/59/49 57/97/64\nf 54/98/68 19/30/26 14/29/24\nf 30/99/36 31/45/35 56/100/59\nf 24/42/37 53/81/66 46/43/38\nf 43/62/52 18/63/53 20/80/30\nf 28/38/33 52/77/63 26/36/31\nf 38/60/50 28/101/33 37/51/43\nf 29/39/34 21/34/29 54/98/68\nf 19/30/26 54/98/68 21/34/29\nf 18/92/53 59/32/27 13/23/22\nf 50/79/65 30/102/36 56/71/59\nf 54/98/68 53/103/66 29/39/34\nf 16/58/48 17/104/46 51/105/62\nf 25/72/60 34/44/39 55/82/58\nf 42/67/56 26/36/31 52/77/63\nf 15/33/28 45/85/54 49/24/23\nf 33/106/55 34/88/39 46/107/38\nf 28/101/33 38/60/50 57/97/64\nf 51/105/62 57/97/64 47/59/49\nf 41/53/45 20/35/30 21/34/29\nf 39/52/44 37/51/43 28/101/33\nf 22/108/40 36/109/41 24/42/37\nf 42/67/56 17/55/46 35/75/61\nf 24/42/37 36/109/41 53/81/66\nf 29/39/34 53/103/66 36/110/41\nf 49/24/23 13/23/22 15/33/28\nf 28/101/33 57/97/64 52/111/63\nf 23/112/67 22/49/40 24/113/37\nf 27/47/32 56/100/59 31/45/35\nf 17/55/46 43/62/52 35/75/61\nf 47/59/49 16/58/48 51/105/62\nf 39/94/44 28/114/33 27/47/32\nf 30/41/36 50/90/65 29/39/34\nf 41/53/45 29/39/34 50/90/65\nf 17/104/46 16/58/48 15/65/28\nf 20/35/30 18/115/53 19/30/26\nf 22/46/40 39/94/44 27/47/32\nf 48/68/57 50/79/65 56/71/59\nf 13/23/22 19/116/26 18/92/53\nf 53/81/66 54/96/68 32/27/25\nf 45/64/54 16/58/48 44/57/47\nf 121/117/69 91/118/70 60/119/71\nf 67/120/72 69/121/73 68/122/74\nf 97/123/75 75/124/76 74/125/77\nf 73/126/78 71/127/79 84/128/80\nf 77/129/81 67/130/72 79/131/82\nf 100/132/83 80/133/84 101/134/85\nf 64/135/86 96/136/87 81/137/88\nf 60/138/71 83/139/89 113/140/90\nf 61/141/91 78/142/92 89/143/93\nf 66/144/94 81/137/88 96/136/87\nf 93/145/95 94/146/96 76/147/97\nf 76/147/97 75/148/76 93/145/95\nf 87/149/98 94/146/96 102/150/99\nf 85/151/100 90/152/101 103/153/102\nf 98/154/103 97/123/75 74/125/77\nf 62/155/104 91/118/70 121/117/69\nf 65/156/105 66/144/94 96/136/87\nf 67/130/72 77/129/81 105/157/106\nf 103/153/102 86/158/107 85/151/100\nf 61/159/91 99/160/108 78/161/92\nf 75/148/76 70/162/109 95/163/110\nf 62/164/104 111/165/111 90/152/101\nf 82/166/112 92/167/113 81/137/88\nf 76/168/97 74/125/77 75/124/76\nf 85/151/100 86/158/107 88/169/114\nf 106/170/115 79/171/82 70/172/109\nf 106/170/115 70/172/109 75/124/76\nf 73/173/78 107/174/116 71/175/79\nf 72/176/117 107/174/116 104/177/118\nf 118/178/119 69/179/73 67/130/72\nf 86/158/107 87/180/98 88/169/114\nf 108/181/120 84/128/80 69/182/73\nf 121/117/69 63/183/121 62/155/104\nf 65/156/105 96/136/87 83/184/89\nf 87/180/98 86/158/107 109/185/122\nf 67/130/72 105/157/106 118/178/119\nf 107/186/116 115/187/123 85/188/100\nf 107/174/116 85/189/100 104/177/118\nf 101/134/85 123/190/124 118/178/119\nf 78/191/92 123/190/124 101/134/85\nf 60/138/71 113/140/90 121/192/69\nf 119/193/125 100/194/83 110/195/126\nf 119/193/125 66/144/94 65/156/105\nf 101/134/85 114/196/127 78/191/92\nf 120/197/128 89/198/93 114/196/127\nf 91/199/70 115/200/123 61/159/91\nf 115/200/123 107/201/116 61/159/91\nf 100/194/83 77/202/81 117/203/129\nf 73/173/78 99/204/108 107/174/116\nf 99/160/108 61/159/91 107/201/116\nf 61/159/91 60/205/71 91/199/70\nf 123/206/124 108/207/120 118/208/119\nf 69/179/73 118/178/119 108/209/120\nf 81/210/88 111/165/111 64/211/86\nf 110/195/126 82/166/112 119/193/125\nf 91/199/70 62/212/104 115/200/123\nf 122/213/130 112/214/131 95/163/110\nf 116/215/132 103/153/102 74/216/77\nf 79/171/82 106/170/115 77/202/81\nf 82/166/112 66/144/94 119/193/125\nf 90/217/101 115/200/123 62/212/104\nf 90/218/101 85/188/100 115/187/123\nf 98/154/103 92/167/113 82/166/112\nf 94/219/96 109/220/122 76/168/97\nf 84/128/80 68/221/74 69/182/73\nf 103/153/102 116/215/132 86/158/107\nf 93/145/95 102/150/99 94/146/96\nf 102/150/99 93/145/95 112/214/131\nf 110/195/126 117/203/129 97/123/75\nf 109/185/122 86/158/107 116/215/132\nf 113/222/90 96/223/87 63/183/121\nf 118/178/119 105/157/106 101/134/85\nf 102/224/99 112/225/131 104/226/118\nf 64/211/86 62/164/104 63/227/121\nf 84/128/80 108/181/120 73/126/78\nf 83/139/89 80/133/84 65/228/105\nf 120/197/128 83/139/89 60/138/71\nf 109/185/122 94/229/96 87/180/98\nf 62/164/104 64/211/86 111/165/111\nf 89/198/93 120/197/128 61/230/91\nf 60/138/71 61/230/91 120/197/128\nf 104/177/118 85/189/100 88/231/114\nf 76/168/97 109/220/122 74/125/77\nf 108/207/120 123/206/124 99/204/108\nf 111/165/111 103/153/102 90/152/101\nf 97/123/75 98/154/103 110/195/126\nf 96/136/87 113/232/90 83/184/89\nf 117/203/129 110/195/126 100/194/83\nf 95/163/110 70/162/109 122/213/130\nf 117/203/129 75/124/76 97/123/75\nf 93/145/95 95/163/110 112/214/131\nf 95/163/110 93/145/95 75/148/76\nf 120/197/128 114/196/127 80/133/84\nf 109/185/122 116/215/132 74/216/77\nf 74/125/77 92/167/113 98/154/103\nf 92/233/113 74/216/77 103/153/102\nf 89/198/93 78/191/92 114/196/127\nf 87/234/98 102/224/99 88/235/114\nf 104/236/118 112/214/131 72/237/117\nf 101/134/85 80/133/84 114/196/127\nf 82/166/112 110/195/126 98/154/103\nf 80/133/84 83/139/89 120/197/128\nf 122/213/130 70/162/109 68/122/74\nf 68/122/74 70/162/109 79/238/82\nf 81/210/88 92/233/113 111/165/111\nf 75/124/76 117/203/129 106/170/115\nf 100/194/83 119/193/125 80/239/84\nf 63/183/121 121/117/69 113/222/90\nf 71/127/79 68/221/74 84/128/80\nf 64/135/86 63/240/121 96/136/87\nf 112/214/131 122/213/130 72/237/117\nf 65/228/105 80/133/84 119/241/125\nf 100/132/83 101/134/85 77/129/81\nf 105/157/106 77/129/81 101/134/85\nf 111/165/111 92/233/113 103/153/102\nf 99/204/108 73/173/78 108/207/120\nf 78/161/92 99/160/108 123/242/124\nf 81/137/88 66/144/94 82/166/112\nf 68/122/74 71/243/79 72/237/117\nf 72/237/117 122/213/130 68/122/74\nf 107/174/116 72/176/117 71/175/79\nf 68/122/74 79/238/82 67/120/72\nf 106/170/115 117/203/129 77/202/81\nf 88/235/114 102/224/99 104/226/118\nf 148/244/133 129/245/134 162/246/135\nf 187/247/136 153/248/137 148/244/133\nf 139/249/138 132/250/139 131/251/140\nf 160/252/141 136/253/142 137/254/143\nf 160/255/141 141/256/144 161/257/145\nf 144/258/146 145/259/147 176/260/148\nf 146/261/149 130/262/150 166/263/151\nf 149/264/152 169/265/153 147/266/154\nf 150/267/155 126/268/156 175/269/157\nf 154/270/158 135/271/159 133/272/160\nf 147/273/154 169/274/153 155/275/161\nf 166/276/151 169/277/153 172/278/162\nf 157/279/163 149/280/152 163/281/164\nf 152/282/165 163/283/164 164/284/166\nf 147/266/154 150/267/155 165/285/167\nf 141/256/144 160/255/141 137/286/143\nf 158/287/168 133/272/160 134/288/169\nf 156/289/170 142/290/171 127/291/172\nf 142/290/171 145/292/147 128/293/173\nf 167/294/174 130/295/150 162/296/135\nf 148/297/133 136/298/142 168/299/175\nf 132/300/139 130/295/150 140/301/176\nf 143/302/177 151/303/178 142/290/171\nf 135/271/159 134/288/169 133/272/160\nf 184/304/179 148/305/133 153/306/137\nf 184/304/179 153/306/137 154/270/158\nf 132/307/139 166/308/151 130/309/150\nf 164/310/166 134/288/169 135/271/159\nf 149/280/152 157/279/163 169/277/153\nf 180/311/180 164/312/166 163/313/164\nf 140/301/176 131/314/140 132/300/139\nf 131/314/140 140/301/176 167/294/174\nf 181/315/181 167/316/174 168/299/175\nf 172/278/162 157/279/163 173/317/182\nf 146/261/149 173/318/182 186/319/183\nf 133/272/160 185/320/184 184/304/179\nf 138/321/185 188/322/186 161/257/145\nf 161/257/145 188/322/186 181/315/181\nf 174/323/187 179/324/188 155/325/161\nf 174/326/187 155/275/161 169/274/153\nf 161/257/145 177/327/189 138/321/185\nf 183/328/190 178/329/191 177/327/189\nf 170/330/192 137/331/143 185/320/184\nf 124/332/193 179/324/188 125/333/194\nf 179/324/188 174/323/187 125/333/194\nf 132/250/139 139/249/138 174/326/187\nf 139/334/138 125/333/194 174/323/187\nf 180/311/180 171/335/195 134/336/169\nf 127/337/172 142/338/171 151/339/178\nf 167/316/174 181/315/181 131/340/140\nf 157/341/163 182/342/196 173/318/182\nf 124/332/193 126/343/156 179/324/188\nf 171/335/195 165/285/167 134/336/169\nf 181/315/181 188/322/186 159/344/197\nf 148/305/133 184/304/179 136/345/142\nf 143/302/177 128/293/173 170/330/192\nf 150/346/155 179/324/188 126/343/156\nf 150/346/155 155/325/161 179/324/188\nf 158/287/168 151/303/178 143/302/177\nf 185/320/184 143/302/177 170/330/192\nf 133/272/160 158/287/168 185/320/184\nf 182/342/196 153/248/137 173/318/182\nf 153/248/137 182/342/196 154/347/158\nf 152/282/165 164/284/166 135/348/159\nf 152/282/165 157/341/163 163/283/164\nf 125/349/194 138/350/185 178/351/191\nf 176/352/148 156/353/170 127/354/172\nf 181/315/181 168/299/175 161/257/145\nf 135/348/159 154/347/158 152/282/165\nf 168/299/175 129/355/134 148/297/133\nf 176/356/148 142/290/171 156/289/170\nf 187/247/136 173/318/182 153/248/137\nf 146/357/149 186/358/183 162/296/135\nf 187/247/136 186/319/183 173/318/182\nf 127/354/172 144/359/146 176/352/148\nf 165/285/167 171/335/195 147/266/154\nf 145/259/147 141/256/144 128/360/173\nf 183/328/190 145/259/147 144/258/146\nf 178/329/191 183/328/190 125/361/194\nf 124/362/193 125/361/194 183/328/190\nf 126/363/156 124/364/193 144/359/146\nf 129/245/134 167/365/174 162/246/135\nf 148/244/133 162/246/135 186/319/183\nf 137/331/143 136/345/142 184/304/179\nf 175/269/157 165/285/167 150/267/155\nf 164/310/166 180/366/180 134/288/169\nf 150/346/155 147/367/154 155/325/161\nf 152/282/165 182/342/196 157/341/163\nf 183/328/190 177/327/189 141/256/144\nf 134/336/169 151/339/178 158/368/168\nf 151/339/178 134/336/169 165/285/167\nf 184/304/179 185/320/184 137/331/143\nf 178/329/191 138/321/185 177/327/189\nf 161/257/145 141/256/144 177/327/189\nf 148/244/133 186/319/183 187/247/136\nf 139/334/138 138/369/185 125/333/194\nf 143/302/177 185/320/184 158/287/168\nf 172/278/162 169/277/153 157/279/163\nf 138/321/185 159/344/197 188/322/186\nf 141/256/144 145/259/147 183/328/190\nf 146/261/149 166/263/151 173/318/182\nf 182/342/196 152/282/165 154/347/158\nf 137/331/143 170/330/192 141/370/144\nf 176/356/148 145/292/147 142/290/171\nf 130/295/150 167/294/174 140/301/176\nf 172/371/162 173/318/182 166/263/151\nf 159/344/197 131/340/140 181/315/181\nf 171/335/195 163/313/164 149/264/152\nf 149/264/152 147/266/154 171/335/195\nf 166/372/151 132/373/139 174/374/187\nf 183/328/190 144/258/146 124/362/193\nf 128/293/173 141/370/144 170/330/192\nf 160/255/141 161/257/145 136/298/142\nf 168/299/175 136/298/142 161/257/145\nf 175/269/157 151/339/178 165/285/167\nf 126/363/156 144/359/146 127/354/172\nf 131/251/140 159/375/197 139/249/138\nf 163/313/164 171/335/195 180/311/180\nf 159/376/197 138/369/185 139/334/138\nf 128/293/173 143/302/177 142/290/171\nf 151/339/178 175/269/157 127/337/172\nf 126/268/156 127/337/172 175/269/157\nf 169/274/153 166/377/151 174/326/187\nf 168/299/175 167/316/174 129/355/134\nf 130/295/150 146/357/149 162/296/135\nf 184/304/179 154/270/158 133/272/160\nf 189/378/198 190/379/199 225/380/200\nf 225/381/200 190/382/199 207/383/201\nf 190/384/199 189/385/198 195/386/202\nf 235/387/203 189/378/198 191/388/204\nf 195/386/202 196/389/205 210/390/206\nf 201/391/207 202/392/208 203/393/209\nf 204/394/210 205/395/211 206/396/212\nf 199/397/213 209/398/214 222/399/215\nf 206/400/212 203/401/209 197/402/216\nf 212/403/217 204/394/210 206/396/212\nf 212/403/217 206/396/212 197/404/216\nf 216/405/218 215/406/219 213/407/220\nf 210/390/206 217/408/221 204/394/210\nf 235/409/203 191/410/204 193/411/222\nf 220/412/223 223/413/224 192/414/225\nf 214/415/226 216/405/218 213/407/220\nf 234/416/227 193/417/222 219/418/228\nf 194/419/229 234/416/227 219/418/228\nf 207/383/201 222/399/215 208/420/230\nf 201/391/207 224/421/231 218/422/232\nf 223/413/224 231/423/233 214/415/226\nf 225/424/200 207/383/201 208/420/230\nf 224/421/231 201/391/207 232/425/234\nf 209/398/214 199/397/213 200/426/235\nf 216/405/218 214/415/226 231/423/233\nf 220/427/223 225/380/200 209/428/214\nf 211/429/236 218/422/232 224/421/231\nf 227/430/237 233/431/238 228/432/239\nf 224/421/231 226/433/240 211/429/236\nf 196/434/205 211/429/236 226/433/240\nf 201/391/207 203/393/209 232/425/234\nf 207/383/201 229/435/241 222/399/215\nf 193/417/222 234/416/227 235/436/203\nf 231/437/233 200/426/235 216/438/218\nf 200/426/235 199/397/213 198/439/242\nf 225/380/200 220/427/223 221/440/243\nf 220/441/223 209/442/214 231/443/233\nf 231/423/233 223/413/224 220/412/223\nf 198/439/242 216/438/218 200/426/235\nf 198/439/242 215/444/219 216/438/218\nf 226/433/240 217/445/221 196/434/205\nf 234/446/227 194/447/229 235/387/203\nf 196/434/205 219/418/228 211/429/236\nf 228/448/239 218/422/232 227/449/237\nf 197/402/216 215/450/219 198/451/242\nf 225/380/200 208/452/230 209/428/214\nf 193/417/222 227/449/237 218/422/232\nf 190/382/199 230/453/244 207/383/201\nf 214/415/226 233/431/238 223/413/224\nf 230/454/244 190/384/199 195/386/202\nf 205/455/211 232/456/234 206/400/212\nf 199/397/213 222/399/215 229/435/241\nf 219/418/228 196/434/205 194/419/229\nf 202/457/208 201/391/207 228/448/239\nf 214/415/226 213/407/220 202/458/208\nf 204/394/210 230/454/244 210/390/206\nf 195/386/202 210/390/206 230/454/244\nf 194/447/229 189/378/198 235/387/203\nf 226/433/240 232/425/234 205/459/211\nf 230/454/244 204/394/210 229/460/241\nf 192/414/225 227/430/237 193/411/222\nf 200/426/235 231/437/233 209/398/214\nf 218/422/232 228/448/239 201/391/207\nf 191/388/204 225/380/200 221/440/243\nf 208/461/230 222/462/215 209/442/214\nf 202/458/208 233/431/238 214/415/226\nf 227/430/237 223/413/224 233/431/238\nf 217/408/221 210/390/206 196/389/205\nf 215/406/219 202/458/208 213/407/220\nf 197/404/216 199/463/213 212/403/217\nf 218/422/232 211/429/236 193/417/222\nf 199/397/213 229/435/241 212/464/217\nf 204/394/210 212/403/217 229/460/241\nf 225/380/200 191/388/204 189/378/198\nf 202/458/208 228/465/239 233/431/238\nf 192/414/225 191/410/204 221/466/243\nf 198/467/242 199/463/213 197/404/216\nf 203/401/209 206/400/212 232/456/234\nf 193/417/222 211/429/236 219/418/228\nf 223/413/224 227/430/237 192/414/225\nf 215/406/219 203/468/209 202/458/208\nf 205/395/211 204/394/210 226/469/240\nf 217/408/221 226/469/240 204/394/210\nf 193/411/222 191/410/204 192/414/225\nf 196/389/205 195/386/202 194/470/229\nf 197/402/216 203/401/209 215/450/219\nf 224/421/231 232/425/234 226/433/240\nf 189/385/198 194/470/229 195/386/202\nf 229/435/241 207/383/201 230/453/244\nf 221/440/243 220/471/223 192/472/225\nf 244/473/245 245/474/246 246/475/247\nf 274/476/248 251/477/249 252/478/250\nf 250/479/251 261/480/252 248/481/253\nf 254/482/254 256/483/255 244/484/245\nf 277/485/256 278/486/257 257/487/258\nf 241/488/259 258/489/260 273/490/261\nf 237/491/262 288/492/263 260/493/264\nf 238/494/265 266/495/266 255/496/267\nf 267/497/268 268/498/269 240/499/270\nf 243/500/271 273/490/261 258/489/260\nf 270/501/272 253/502/273 271/503/274\nf 253/502/273 270/501/272 252/504/250\nf 264/505/275 279/506/276 271/503/274\nf 262/507/277 280/508/278 267/497/268\nf 275/509/279 251/477/249 274/476/248\nf 240/510/270 239/511/280 236/512/281\nf 242/513/282 273/490/261 243/500/271\nf 244/484/245 282/514/283 254/482/254\nf 280/508/278 262/507/277 263/515/284\nf 238/494/265 255/496/267 276/516/285\nf 252/504/250 272/517/286 247/518/287\nf 259/519/288 258/489/260 269/520/289\nf 253/521/273 252/478/250 251/477/249\nf 262/507/277 265/522/290 263/515/284\nf 283/523/291 247/524/287 256/525/255\nf 283/523/291 252/478/250 247/524/287\nf 250/526/251 248/527/253 284/528/292\nf 249/529/293 281/530/294 284/528/292\nf 296/531/295 244/484/245 246/532/247\nf 263/515/284 265/522/290 264/533/275\nf 285/534/296 246/532/247 261/535/252\nf 237/536/262 236/512/281 239/511/280\nf 242/513/282 260/537/264 273/490/261\nf 264/533/275 286/538/297 263/515/284\nf 244/484/245 296/531/295 282/514/283\nf 284/539/292 262/540/277 292/541/298\nf 284/528/292 281/530/294 262/542/277\nf 278/486/257 296/531/295 298/543/299\nf 255/544/267 278/486/257 298/543/299\nf 290/545/300 287/546/301 277/547/256\nf 290/545/300 242/513/282 243/500/271\nf 278/486/257 255/544/267 291/548/302\nf 295/549/303 291/548/302 266/550/266\nf 236/551/281 238/494/265 292/552/298\nf 292/541/298 238/553/265 284/539/292\nf 277/547/256 294/554/304 254/555/254\nf 250/526/251 284/528/292 276/556/285\nf 276/516/285 284/557/292 238/494/265\nf 298/543/299 296/531/295 285/534/296\nf 246/532/247 285/534/296 296/531/295\nf 258/558/260 241/559/259 268/498/269\nf 287/546/301 290/545/300 259/519/288\nf 236/551/281 292/552/298 240/560/270\nf 297/561/305 272/517/286 289/562/306\nf 293/563/307 251/564/249 280/508/278\nf 256/525/255 254/555/254 283/523/291\nf 259/519/288 290/545/300 243/500/271\nf 267/565/268 240/560/270 292/552/298\nf 267/566/268 292/541/298 262/540/277\nf 275/509/279 259/519/288 269/520/289\nf 271/567/274 253/568/273 286/538/297\nf 261/480/252 246/569/247 245/570/246\nf 280/508/278 263/515/284 293/563/307\nf 270/501/272 271/503/274 279/506/276\nf 279/506/276 289/562/306 270/501/272\nf 287/546/301 274/476/248 294/554/304\nf 286/538/297 293/563/307 263/515/284\nf 288/571/263 239/511/280 273/572/261\nf 296/531/295 278/486/257 282/514/283\nf 279/573/276 281/574/294 289/575/306\nf 241/559/259 239/576/280 240/499/270\nf 239/511/280 288/571/263 237/536/262\nf 261/480/252 250/479/251 285/577/296\nf 260/493/264 242/578/282 257/487/258\nf 295/549/303 237/491/262 260/493/264\nf 286/538/297 264/533/275 271/567/274\nf 240/499/270 268/498/269 241/559/259\nf 266/550/266 238/579/265 295/549/303\nf 237/491/262 295/549/303 238/579/265\nf 281/530/294 265/580/290 262/542/277\nf 253/521/273 251/477/249 286/581/297\nf 285/582/296 276/556/285 298/583/299\nf 268/498/269 267/497/268 280/508/278\nf 274/476/248 287/546/301 275/509/279\nf 273/490/261 260/537/264 288/584/263\nf 294/554/304 277/547/256 287/546/301\nf 272/517/286 297/561/305 247/518/287\nf 294/554/304 274/476/248 252/478/250\nf 270/501/272 289/562/306 272/517/286\nf 272/517/286 252/504/250 270/501/272\nf 295/549/303 257/487/258 291/548/302\nf 286/538/297 251/564/249 293/563/307\nf 251/564/249 275/585/279 269/586/289\nf 269/586/289 280/508/278 251/564/249\nf 266/550/266 291/548/302 255/544/267\nf 264/587/275 265/588/290 279/573/276\nf 281/589/294 249/590/293 289/562/306\nf 278/486/257 291/548/302 257/487/258\nf 259/519/288 275/509/279 287/546/301\nf 257/487/258 295/549/303 260/493/264\nf 297/561/305 245/474/246 247/518/287\nf 245/474/246 256/591/255 247/518/287\nf 258/558/260 268/498/269 269/586/289\nf 252/478/250 283/523/291 294/554/304\nf 277/547/256 257/592/258 290/545/300\nf 248/481/253 261/480/252 245/570/246\nf 241/488/259 273/490/261 239/593/280\nf 289/562/306 249/590/293 297/561/305\nf 242/513/282 290/545/300 257/592/258\nf 277/485/256 254/482/254 278/486/257\nf 282/514/283 278/486/257 254/482/254\nf 268/498/269 280/508/278 269/586/289\nf 276/556/285 285/582/296 250/526/251\nf 255/496/267 298/594/299 276/516/285\nf 258/489/260 259/519/288 243/500/271\nf 238/579/265 236/595/281 237/491/262\nf 245/474/246 249/590/293 248/596/253\nf 249/590/293 245/474/246 297/561/305\nf 284/528/292 248/527/253 249/529/293\nf 245/474/246 244/473/245 256/591/255\nf 283/523/291 254/555/254 294/554/304\nf 265/588/290 281/574/294 279/573/276\nf 324/597/308 304/598/309 305/599/310\nf 361/600/311 324/597/308 329/601/312\nf 315/602/313 307/603/314 308/604/315\nf 336/605/316 312/606/317 313/607/318\nf 336/608/316 337/609/319 317/610/320\nf 320/611/321 349/612/322 321/613/323\nf 322/614/324 341/615/325 306/616/326\nf 325/617/327 326/618/328 301/619/329\nf 331/620/330 344/621/331 323/622/332\nf 330/623/333 309/624/334 311/625/335\nf 341/615/325 332/626/336 344/627/331\nf 333/628/337 339/629/338 344/627/331\nf 328/630/339 338/631/340 339/632/338\nf 323/633/332 340/634/341 325/617/327\nf 317/610/320 312/635/317 336/608/316\nf 334/636/342 310/637/343 309/624/334\nf 350/638/344 302/639/345 318/640/346\nf 318/641/346 303/642/347 321/643/323\nf 342/644/348 304/645/309 306/616/326\nf 324/646/308 343/647/349 313/648/318\nf 308/649/315 316/650/350 306/616/326\nf 319/651/351 318/641/346 327/652/352\nf 311/625/335 309/624/334 310/637/343\nf 359/653/353 329/654/312 324/655/308\nf 359/653/353 330/623/333 329/654/312\nf 308/604/315 306/656/326 341/657/325\nf 323/633/332 344/658/331 363/659/354\nf 338/660/340 311/625/335 310/637/343\nf 355/661/355 363/659/354 338/662/340\nf 316/650/350 308/649/315 307/663/314\nf 307/664/314 342/665/348 316/666/350\nf 357/667/356 343/647/349 342/665/348\nf 332/626/336 347/668/357 333/628/337\nf 322/669/324 360/670/358 347/671/357\nf 309/624/334 359/653/353 345/672/359\nf 314/673/360 337/609/319 362/674/361\nf 337/609/319 357/667/356 362/674/361\nf 348/675/362 331/676/330 354/677/363\nf 348/678/362 344/621/331 331/620/330\nf 337/609/319 314/673/360 352/679/364\nf 356/680/365 352/679/364 353/681/366\nf 351/682/367 345/672/359 312/606/317\nf 299/683/368 300/684/369 354/685/363\nf 354/685/363 300/684/369 348/686/362\nf 308/604/315 348/678/362 315/602/313\nf 315/687/313 348/686/362 300/684/369\nf 355/661/355 310/688/343 346/689/370\nf 302/639/345 327/690/352 318/640/346\nf 342/665/348 307/664/314 357/667/356\nf 333/691/337 347/671/357 358/692/371\nf 299/683/368 354/685/363 301/693/329\nf 346/689/370 310/688/343 340/634/341\nf 357/667/356 335/694/372 362/674/361\nf 324/655/308 313/607/318 359/653/353\nf 319/651/351 351/682/367 303/642/347\nf 325/695/327 301/693/329 354/685/363\nf 325/695/327 354/685/363 331/696/330\nf 334/636/342 319/651/351 327/652/352\nf 345/672/359 351/682/367 319/651/351\nf 309/624/334 345/672/359 334/636/342\nf 358/692/371 347/671/357 329/601/312\nf 329/601/312 330/697/333 358/692/371\nf 328/630/339 311/698/335 338/631/340\nf 328/630/339 339/632/338 333/691/337\nf 300/699/369 353/700/366 314/701/360\nf 349/702/322 302/703/345 350/704/344\nf 338/662/340 363/659/354 339/705/338\nf 357/667/356 337/609/319 343/647/349\nf 311/698/335 328/630/339 330/697/333\nf 343/647/349 324/646/308 305/706/310\nf 339/705/338 363/659/354 344/658/331\nf 349/707/322 350/708/344 318/641/346\nf 361/600/311 329/601/312 347/671/357\nf 322/614/324 304/645/309 360/709/358\nf 361/600/311 347/671/357 360/670/358\nf 302/703/345 349/702/322 320/710/321\nf 340/634/341 323/633/332 346/689/370\nf 321/613/323 303/711/347 317/610/320\nf 356/680/365 320/611/321 321/613/323\nf 353/681/366 300/712/369 356/680/365\nf 299/713/368 356/680/365 300/712/369\nf 301/714/329 320/710/321 299/715/368\nf 305/599/310 304/598/309 342/716/348\nf 324/597/308 360/670/358 304/598/309\nf 312/606/317 359/653/353 313/607/318\nf 326/618/328 325/617/327 340/634/341\nf 338/662/340 310/688/343 355/661/355\nf 325/717/327 331/718/330 323/719/332\nf 328/630/339 333/691/337 358/692/371\nf 356/680/365 317/610/320 352/679/364\nf 310/688/343 334/720/342 327/690/352\nf 327/690/352 340/634/341 310/688/343\nf 359/653/353 312/606/317 345/672/359\nf 353/681/366 352/679/364 314/673/360\nf 337/609/319 352/679/364 317/610/320\nf 324/597/308 361/600/311 360/670/358\nf 315/687/313 300/684/369 314/721/360\nf 319/651/351 334/636/342 345/672/359\nf 332/626/336 333/628/337 344/627/331\nf 314/673/360 362/674/361 335/694/372\nf 317/610/320 356/680/365 321/613/323\nf 322/669/324 347/671/357 341/722/325\nf 358/692/371 330/697/333 328/630/339\nf 312/606/317 317/723/320 351/682/367\nf 349/707/322 318/641/346 321/643/323\nf 306/616/326 316/650/350 342/644/348\nf 332/724/336 341/722/325 347/671/357\nf 335/694/372 357/667/356 307/664/314\nf 363/659/354 346/689/370 323/633/332\nf 341/657/325 348/678/362 308/604/315\nf 356/680/365 299/713/368 320/611/321\nf 303/642/347 351/682/367 317/723/320\nf 336/608/316 313/648/318 337/609/319\nf 343/647/349 337/609/319 313/648/318\nf 326/618/328 340/634/341 327/690/352\nf 301/714/329 302/703/345 320/710/321\nf 307/603/314 315/602/313 335/725/372\nf 363/659/354 355/661/355 346/689/370\nf 335/726/372 315/687/313 314/721/360\nf 303/642/347 318/641/346 319/651/351\nf 327/690/352 302/639/345 326/618/328\nf 301/619/329 326/618/328 302/639/345\nf 344/621/331 348/678/362 341/657/325\nf 343/647/349 305/706/310 342/665/348\nf 306/616/326 304/645/309 322/614/324\nf 359/653/353 309/624/334 330/623/333\nf 1946/727/373 1947/728/374 1945/729/375\nf 1945/729/375 1977/730/376 2000/731/377\nf 1948/732/378 1950/733/379 1949/734/380\nf 1988/735/381 1952/736/382 1951/737/383\nf 1953/738/384 1954/739/385 1984/740/386\nf 1968/741/387 1969/742/388 1971/743/389\nf 1974/744/390 1980/745/391 1965/746/392\nf 1961/747/393 1975/748/394 1979/749/395\nf 1975/750/394 1971/751/389 1979/752/395\nf 1982/753/396 1955/754/397 1962/755/398\nf 1957/756/399 1958/757/400 1981/758/401\nf 1970/759/402 1983/760/403 1968/741/387\nf 1982/753/396 1962/755/398 1963/761/404\nf 1953/762/384 1984/763/386 1980/764/391\nf 1946/727/373 1985/765/405 1947/728/374\nf 1983/760/403 1989/766/406 1972/767/407\nf 1942/768/408 1936/769/409 1967/770/410\nf 1944/771/411 1942/772/408 1964/773/412\nf 1939/774/413 1940/775/414 1937/776/415\nf 1961/747/393 1976/777/416 1954/778/385\nf 1978/779/417 1971/751/389 1969/780/388\nf 1980/781/391 1974/782/390 1953/783/384\nf 1983/760/403 1970/759/402 1989/766/406\nf 1958/784/400 1957/785/399 1959/786/418\nf 1948/732/378 1949/734/380 1952/736/382\nf 1978/779/417 1949/734/380 1950/733/379\nf 1966/787/419 1974/744/390 1965/746/392\nf 1951/788/383 1981/758/401 1998/789/420\nf 1971/743/389 1970/759/402 1968/741/387\nf 1954/778/385 1977/730/376 1992/790/421\nf 1949/734/380 1978/779/417 1952/736/382\nf 1954/739/385 1953/738/384 1961/791/393\nf 1986/792/422 1948/732/378 1988/735/381\nf 1947/793/374 1985/794/405 1999/795/423\nf 1987/796/424 1970/759/402 1971/743/389\nf 1946/727/373 1990/797/425 1950/798/379\nf 1962/755/398 2006/799/426 1993/800/427\nf 1974/801/390 1972/767/407 1989/766/406\nf 1974/801/390 1995/802/428 1972/767/407\nf 1993/800/427 1963/761/404 1962/755/398\nf 1938/803/429 2001/804/430 1939/805/413\nf 1959/806/418 1994/807/431 2007/808/432\nf 2005/809/433 1951/788/383 1952/810/382\nf 1994/807/431 1959/806/418 1957/756/399\nf 1996/811/434 1943/812/435 1973/813/436\nf 1937/776/415 1936/814/409 1938/815/429\nf 1950/733/379 1990/816/425 1991/817/437\nf 1988/818/381 1999/795/423 1985/794/405\nf 1958/819/400 1993/800/427 2006/799/426\nf 1943/812/435 1938/820/429 1936/769/409\nf 1956/821/438 2003/822/439 1992/790/421\nf 2007/808/432 1994/807/431 2001/823/430\nf 1982/824/396 1997/825/440 2003/826/439\nf 1997/825/440 1980/764/391 1984/763/386\nf 1983/827/403 1994/807/431 2005/809/433\nf 1985/765/405 1946/727/373 1986/828/422\nf 1987/829/424 1961/791/393 1953/738/384\nf 1996/830/434 1960/831/441 1938/803/429\nf 1963/761/404 1993/800/427 1996/811/434\nf 1979/752/395 1991/817/437 1990/816/425\nf 1951/788/383 1998/789/420 1988/832/381\nf 1945/729/375 1992/790/421 1977/730/376\nf 1992/790/421 1945/729/375 1956/821/438\nf 1944/771/411 1943/833/435 1942/772/408\nf 1940/775/414 1941/834/442 1967/835/410\nf 1944/771/411 1973/836/436 1943/833/435\nf 1962/755/398 1955/754/397 1998/837/420\nf 1979/749/395 1976/777/416 1961/747/393\nf 1941/838/442 1964/773/412 1942/772/408\nf 1984/763/386 2003/826/439 1997/825/440\nf 1977/730/376 1990/797/425 2000/731/377\nf 1957/756/399 2005/809/433 1994/807/431\nf 1986/792/422 1946/839/373 1950/733/379\nf 1996/811/434 1973/813/436 1963/761/404\nf 1990/797/425 1946/727/373 2000/731/377\nf 1952/736/382 1988/735/381 1948/732/378\nf 1940/840/414 1939/841/413 1941/842/442\nf 1939/841/413 1995/802/428 1966/843/419\nf 1967/835/410 1936/814/409 1940/775/414\nf 1936/769/409 1942/768/408 1943/812/435\nf 1939/805/413 1937/844/415 1938/803/429\nf 1954/778/385 1976/777/416 1977/730/376\nf 1936/814/409 1937/776/415 1940/775/414\nf 1961/747/393 2002/845/443 1975/748/394\nf 1963/846/404 1973/836/436 1997/847/440\nf 1979/749/395 2004/848/444 1976/777/416\nf 1985/794/405 1986/849/422 1988/818/381\nf 1942/772/408 1967/850/410 1941/838/442\nf 1938/803/429 2007/851/432 2001/804/430\nf 2005/809/433 1968/852/387 1983/827/403\nf 1945/729/375 1947/728/374 1956/853/438\nf 1944/771/411 1997/847/440 1973/836/436\nf 2005/809/433 1978/854/417 1969/855/388\nf 1964/773/412 1965/746/392 1944/771/411\nf 1989/766/406 1953/856/384 1974/801/390\nf 1960/831/441 1996/830/434 1993/857/427\nf 2003/822/439 1956/821/438 1982/858/396\nf 1962/755/398 1998/837/420 2006/799/426\nf 1981/758/401 2006/859/426 1998/789/420\nf 1972/860/407 2001/823/430 1983/827/403\nf 2004/848/444 1977/730/376 1976/777/416\nf 1990/797/425 1977/730/376 2004/848/444\nf 2000/731/377 1946/727/373 1945/729/375\nf 1950/733/379 1948/732/378 1986/792/422\nf 1978/779/417 1950/733/379 1971/751/389\nf 2006/799/426 1981/861/401 1958/819/400\nf 1944/771/411 1965/746/392 1980/745/391\nf 1995/802/428 1939/841/413 1972/767/407\nf 1956/862/438 1947/793/374 1955/754/397\nf 1995/802/428 1974/801/390 1966/843/419\nf 2003/863/439 1984/740/386 1992/864/421\nf 1979/752/395 1990/816/425 2004/865/444\nf 1993/866/427 1958/867/400 1959/868/418\nf 1939/805/413 2001/804/430 1972/869/407\nf 1953/856/384 1989/766/406 1987/796/424\nf 1966/843/419 1941/842/442 1939/841/413\nf 1981/758/401 1951/788/383 1957/756/399\nf 1999/795/423 1998/837/420 1955/754/397\nf 1971/743/389 2002/870/443 1987/796/424\nf 1950/733/379 1979/752/395 1971/751/389\nf 1951/788/383 2005/809/433 1957/756/399\nf 2005/809/433 1952/810/382 1978/854/417\nf 1987/796/424 1989/766/406 1970/759/402\nf 2007/851/432 1960/831/441 1959/871/418\nf 1988/818/381 1998/837/420 1999/795/423\nf 1954/739/385 1992/864/421 1984/740/386\nf 1955/754/397 1982/753/396 1956/862/438\nf 1975/872/394 2002/870/443 1971/743/389\nf 1961/873/393 1987/796/424 2002/870/443\nf 1964/773/412 1966/787/419 1965/746/392\nf 1980/745/391 1997/847/440 1944/771/411\nf 1994/807/431 1983/827/403 2001/823/430\nf 1938/820/429 1943/812/435 1996/811/434\nf 1993/857/427 1959/871/418 1960/831/441\nf 2007/851/432 1938/803/429 1960/831/441\nf 1999/795/423 1955/754/397 1947/793/374\nf 1950/733/379 1991/817/437 1979/752/395\nf 1997/874/440 1982/753/396 1963/761/404\nf 2005/809/433 1969/855/388 1968/852/387\nf 1966/843/419 1964/875/412 1941/842/442\nf 2013/876/445 2014/877/446 2063/878/447\nf 2024/879/448 2025/880/449 2045/881/450\nf 2048/882/451 2033/883/452 2017/884/453\nf 2011/885/454 2008/886/455 2037/887/456\nf 2022/888/457 2054/889/458 2049/890/459\nf 2032/891/460 2047/892/461 2031/893/462\nf 2048/894/451 2017/895/453 2030/896/463\nf 2049/897/459 2054/898/458 2034/899/464\nf 2038/900/465 2027/901/466 2028/902/467\nf 2040/903/468 2044/904/469 2039/905/470\nf 2015/906/471 2014/907/446 2029/908/472\nf 2063/909/447 2008/910/455 2012/911/473\nf 2027/901/466 2046/912/474 2028/902/467\nf 2025/913/449 2024/914/448 2026/915/475\nf 2050/916/476 2051/917/477 2041/918/478\nf 2044/919/469 2021/920/479 2022/921/457\nf 2035/922/480 2032/891/460 2031/893/462\nf 2018/923/481 2048/894/451 2030/896/463\nf 2033/924/452 2048/925/451 2057/926/482\nf 2048/894/451 2018/923/481 2053/927/483\nf 2008/928/455 2009/929/484 2012/930/473\nf 2061/931/485 2059/932/486 2042/933/487\nf 2055/934/488 2032/891/460 2035/922/480\nf 2056/935/489 2021/936/479 2040/937/468\nf 2037/887/456 2060/938/490 2064/939/491\nf 2043/940/492 2031/893/462 2052/941/493\nf 2022/921/457 2042/942/487 2044/919/469\nf 2065/943/494 2016/944/495 2051/917/477\nf 2049/897/459 2066/945/496 2050/946/476\nf 2064/947/491 2060/948/490 2024/879/448\nf 2010/949/497 2011/885/454 2040/937/468\nf 2040/903/468 2029/908/472 2010/950/497\nf 2029/908/472 2062/951/498 2015/906/471\nf 2045/952/450 2025/953/449 2058/954/499\nf 2040/937/468 2032/891/460 2056/935/489\nf 2028/902/467 2036/955/500 2014/956/446\nf 2023/957/501 2061/958/485 2051/959/477\nf 2049/890/459 2041/918/478 2022/888/457\nf 2041/918/478 2049/890/459 2050/916/476\nf 2047/892/461 2064/939/491 2031/893/462\nf 2065/943/494 2030/960/463 2017/884/453\nf 2028/902/467 2025/953/449 2036/961/500\nf 2055/934/488 2056/935/489 2032/891/460\nf 2056/962/489 2055/963/488 2021/920/479\nf 2009/929/484 2010/964/497 2013/876/445\nf 2046/912/474 2057/926/482 2053/965/483\nf 2010/950/497 2029/908/472 2014/907/446\nf 2057/926/482 2023/957/501 2033/924/452\nf 2055/963/488 2022/921/457 2021/920/479\nf 2009/966/484 2008/886/455 2010/949/497\nf 2008/886/455 2011/885/454 2010/949/497\nf 2013/876/445 2012/930/473 2009/929/484\nf 2020/967/502 2053/927/483 2018/923/481\nf 2034/968/464 2054/969/458 2055/934/488\nf 2037/970/456 2063/909/447 2060/971/490\nf 2050/916/476 2019/972/503 2065/943/494\nf 2019/973/503 2020/967/502 2018/923/481\nf 2059/974/486 2046/912/474 2027/901/466\nf 2016/975/495 2033/924/452 2023/957/501\nf 2014/907/446 2015/906/471 2038/976/465\nf 2062/951/498 2038/976/465 2015/906/471\nf 2053/965/483 2057/926/482 2048/925/451\nf 2062/951/498 2042/933/487 2059/932/486\nf 2029/908/472 2039/905/470 2062/951/498\nf 2014/907/446 2013/977/445 2010/950/497\nf 2033/883/452 2016/944/495 2017/884/453\nf 2065/943/494 2051/917/477 2050/916/476\nf 2042/942/487 2022/921/457 2041/978/478\nf 2020/979/502 2052/980/493 2064/981/491\nf 2020/979/502 2064/981/491 2024/982/448\nf 2058/954/499 2028/902/467 2046/912/474\nf 2061/958/485 2023/957/501 2059/974/486\nf 2046/912/474 2059/974/486 2023/957/501\nf 2052/941/493 2031/893/462 2064/939/491\nf 2046/912/474 2053/965/483 2058/954/499\nf 2045/983/450 2058/984/499 2053/985/483\nf 2024/982/448 2045/983/450 2020/979/502\nf 2040/937/468 2011/885/454 2032/891/460\nf 2036/986/500 2026/915/475 2063/909/447\nf 2020/967/502 2019/973/503 2052/987/493\nf 2063/878/447 2012/930/473 2013/876/445\nf 2057/926/482 2046/912/474 2023/957/501\nf 2064/939/491 2047/892/461 2037/887/456\nf 2027/988/466 2038/989/465 2059/990/486\nf 2039/905/470 2029/908/472 2040/903/468\nf 2034/899/464 2035/991/480 2043/992/492\nf 2052/987/493 2019/973/503 2043/992/492\nf 2031/893/462 2043/940/492 2035/922/480\nf 2044/904/469 2040/903/468 2021/993/479\nf 2037/887/456 2047/892/461 2011/885/454\nf 2032/891/460 2011/885/454 2047/892/461\nf 2063/994/447 2014/956/446 2036/955/500\nf 2062/951/498 2039/905/470 2044/904/469\nf 2028/902/467 2014/956/446 2038/900/465\nf 2060/948/490 2026/995/475 2024/879/448\nf 2023/957/501 2051/959/477 2016/975/495\nf 2019/973/503 2018/923/481 2030/896/463\nf 2020/979/502 2045/983/450 2053/985/483\nf 2054/996/458 2022/997/457 2055/998/488\nf 2055/934/488 2035/922/480 2034/968/464\nf 2065/943/494 2017/884/453 2016/944/495\nf 2019/973/503 2050/946/476 2066/945/496\nf 2059/974/486 2038/900/465 2062/999/498\nf 2026/915/475 2036/1000/500 2025/913/449\nf 2065/943/494 2019/972/503 2030/960/463\nf 2066/945/496 2043/992/492 2019/973/503\nf 2049/897/459 2043/992/492 2066/945/496\nf 2043/992/492 2049/897/459 2034/899/464\nf 2037/970/456 2008/910/455 2063/909/447\nf 2062/951/498 2044/904/469 2042/933/487\nf 2025/953/449 2028/902/467 2058/954/499\nf 2026/915/475 2060/971/490 2063/909/447\nf 2042/942/487 2041/978/478 2061/1001/485\nf 2051/1002/477 2061/1001/485 2041/978/478\nf 2100/1003/504 2080/1004/505 2067/1005/506\nf 2067/1005/506 2069/1006/507 2070/1007/508\nf 2095/1008/509 2094/1009/510 2076/1010/511\nf 2093/1011/512 2078/1012/513 2081/1013/514\nf 2072/1014/515 2069/1015/507 2088/1016/516\nf 2101/1017/517 2073/1018/518 2083/1019/519\nf 2071/1020/520 2091/1021/521 2084/1022/522\nf 2093/1011/512 2081/1013/514 2092/1023/523\nf 2077/1024/524 2078/1012/513 2103/1025/525\nf 2093/1011/512 2092/1023/523 2074/1026/526\nf 2094/1009/510 2095/1008/509 2080/1027/505\nf 2088/1016/516 2096/1028/527 2072/1014/515\nf 2080/1027/505 2100/1029/504 2094/1009/510\nf 2080/1004/505 2095/1030/509 2096/1031/527\nf 2097/1032/528 2099/1033/529 2091/1034/521\nf 2076/1035/511 2094/1036/510 2085/1037/530\nf 2096/1031/527 2088/1038/516 2080/1004/505\nf 2072/1014/515 2096/1028/527 2086/1039/531\nf 2069/1006/507 2080/1004/505 2088/1038/516\nf 2071/1040/520 2069/1015/507 2072/1014/515\nf 2103/1025/525 2082/1041/532 2079/1042/533\nf 2082/1041/532 2093/1011/512 2074/1026/526\nf 2101/1017/517 2100/1043/504 2068/1044/534\nf 2083/1045/519 2099/1046/529 2097/1047/528\nf 2068/1048/534 2070/1049/508 2084/1022/522\nf 2084/1022/522 2099/1046/529 2073/1050/518\nf 2097/1032/528 2089/1051/535 2083/1052/519\nf 2069/1006/507 2067/1005/506 2080/1004/505\nf 2104/1053/536 2090/1054/537 2071/1040/520\nf 2104/1053/536 2072/1014/515 2086/1039/531\nf 2068/1044/534 2073/1018/518 2101/1017/517\nf 2093/1011/512 2103/1025/525 2078/1012/513\nf 2082/1041/532 2103/1025/525 2093/1011/512\nf 2077/1055/524 2090/1054/537 2098/1056/538\nf 2084/1022/522 2073/1050/518 2068/1048/534\nf 2070/1007/508 2068/1057/534 2067/1005/506\nf 2076/1010/511 2075/1058/539 2092/1059/523\nf 2087/1060/540 2092/1061/523 2081/1062/514\nf 2070/1063/508 2069/1015/507 2071/1040/520\nf 2076/1010/511 2102/1064/541 2095/1008/509\nf 2091/1065/521 2090/1054/537 2077/1055/524\nf 2091/1021/521 2071/1020/520 2090/1066/537\nf 2104/1053/536 2086/1039/531 2098/1056/538\nf 2085/1037/530 2094/1036/510 2100/1043/504\nf 2072/1014/515 2104/1053/536 2071/1040/520\nf 2076/1035/511 2079/1067/533 2074/1068/526\nf 2085/1037/530 2079/1067/533 2076/1035/511\nf 2090/1054/537 2104/1053/536 2098/1056/538\nf 2102/1064/541 2087/1069/540 2086/1070/531\nf 2076/1035/511 2074/1068/526 2075/1071/539\nf 2084/1022/522 2091/1021/521 2099/1046/529\nf 2077/1055/524 2098/1056/538 2078/1072/513\nf 2081/1062/514 2098/1056/538 2087/1060/540\nf 2086/1039/531 2087/1060/540 2098/1056/538\nf 2089/1073/535 2085/1037/530 2101/1017/517\nf 2102/1064/541 2076/1010/511 2087/1069/540\nf 2092/1059/523 2087/1069/540 2076/1010/511\nf 2083/1045/519 2073/1050/518 2099/1046/529\nf 2078/1072/513 2098/1056/538 2081/1062/514\nf 2079/1042/533 2097/1032/528 2103/1025/525\nf 2097/1032/528 2079/1042/533 2089/1051/535\nf 2074/1068/526 2079/1067/533 2082/1074/532\nf 2070/1063/508 2071/1040/520 2084/1075/522\nf 2103/1025/525 2097/1032/528 2077/1024/524\nf 2077/1076/524 2097/1077/528 2091/1078/521\nf 2101/1017/517 2083/1019/519 2089/1073/535\nf 2100/1043/504 2101/1017/517 2085/1037/530\nf 2074/1026/526 2092/1023/523 2075/1079/539\nf 2095/1080/509 2086/1081/531 2096/1082/527\nf 2086/1081/531 2095/1080/509 2102/1083/541\nf 2079/1067/533 2085/1037/530 2089/1073/535\nf 2067/1005/506 2068/1057/534 2100/1084/504\nf 2113/1085/542 2128/1086/543 2114/1087/544\nf 2128/1086/543 2115/1088/545 2141/1089/546\nf 2116/1090/547 2117/1091/548 2118/1092/549\nf 2155/1093/550 2147/1094/551 2119/1095/552\nf 2120/1096/553 2151/1097/554 2121/1098/555\nf 2148/1099/556 2149/1100/557 2122/1101/558\nf 2131/1102/559 2106/1103/560 2111/1104/561\nf 2132/1105/562 2135/1106/563 2133/1107/564\nf 2138/1108/565 2130/1109/566 2145/1110/567\nf 2127/1111/568 2144/1112/569 2139/1113/570\nf 2139/1114/570 2144/1115/569 2135/1116/563\nf 2123/1117/571 2146/1118/572 2124/1119/573\nf 2134/1120/574 2132/1105/562 2150/1121/575\nf 2148/1099/556 2129/1122/576 2149/1100/557\nf 2120/1123/553 2145/1124/567 2151/1125/554\nf 2113/1085/542 2114/1087/544 2152/1126/577\nf 2150/1127/575 2136/1128/578 2157/1129/579\nf 2108/1130/580 2105/1131/581 2109/1132/582\nf 2127/1111/568 2121/1133/555 2140/1134/583\nf 2114/1135/544 2128/1136/543 2122/1101/558\nf 2143/1137/584 2133/1138/564 2135/1116/563\nf 2145/1139/567 2120/1140/553 2138/1141/565\nf 2150/1121/575 2157/1142/579 2134/1120/574\nf 2124/1143/573 2125/1144/585 2123/1145/571\nf 2116/1090/547 2119/1095/552 2117/1091/548\nf 2143/1137/584 2118/1092/549 2117/1091/548\nf 2166/1146/586 2130/1109/566 2138/1108/565\nf 2147/1147/551 2167/1148/587 2146/1118/572\nf 2135/1106/563 2132/1105/562 2134/1120/574\nf 2121/1133/555 2160/1149/588 2141/1089/546\nf 2117/1091/548 2119/1095/552 2143/1137/584\nf 2121/1098/555 2127/1150/568 2120/1096/553\nf 2153/1151/589 2155/1152/550 2116/1153/547\nf 2114/1135/544 2168/1154/590 2152/1155/577\nf 2154/1156/591 2135/1106/563 2134/1120/574\nf 2113/1157/542 2118/1158/549 2158/1159/592\nf 2129/1122/576 2161/1160/593 2174/1161/594\nf 2138/1162/565 2157/1142/579 2136/1163/578\nf 2138/1162/565 2136/1163/578 2163/1164/595\nf 2107/1165/596 2108/1166/580 2169/1167/597\nf 2125/1168/585 2175/1169/598 2162/1170/599\nf 2112/1171/600 2156/1172/601 2142/1173/602\nf 2173/1174/603 2119/1175/552 2147/1147/551\nf 2162/1170/599 2123/1117/571 2125/1168/585\nf 2164/1176/604 2137/1177/605 2112/1178/600\nf 2118/1092/549 2159/1179/606 2158/1180/592\nf 2155/1152/550 2152/1155/577 2168/1154/590\nf 2124/1181/573 2174/1161/594 2161/1160/593\nf 2112/1178/600 2106/1103/560 2164/1176/604\nf 2148/1182/556 2160/1149/588 2171/1183/607\nf 2156/1172/601 2130/1109/566 2142/1173/602\nf 2175/1169/598 2169/1184/597 2162/1170/599\nf 2148/1185/556 2171/1186/607 2165/1187/608\nf 2165/1187/608 2151/1188/554 2145/1189/567\nf 2150/1190/575 2173/1174/603 2162/1170/599\nf 2152/1126/577 2153/1191/589 2113/1085/542\nf 2154/1156/591 2120/1192/553 2127/1193/568\nf 2164/1194/604 2107/1165/596 2126/1195/609\nf 2129/1122/576 2164/1176/604 2161/1160/593\nf 2144/1115/569 2158/1180/592 2159/1179/606\nf 2147/1147/551 2155/1196/550 2167/1148/587\nf 2128/1086/543 2141/1089/546 2160/1149/588\nf 2160/1149/588 2148/1182/556 2128/1086/543\nf 2142/1173/602 2111/1197/561 2112/1171/600\nf 2109/1132/582 2131/1198/559 2110/1199/610\nf 2156/1172/601 2112/1171/600 2137/1200/605\nf 2149/1100/557 2167/1201/587 2122/1101/558\nf 2144/1112/569 2127/1111/568 2140/1134/583\nf 2110/1202/610 2111/1197/561 2142/1173/602\nf 2151/1188/554 2165/1187/608 2171/1186/607\nf 2141/1089/546 2115/1088/545 2158/1203/592\nf 2123/1117/571 2162/1170/599 2173/1174/603\nf 2153/1204/589 2118/1092/549 2113/1205/542\nf 2164/1176/604 2129/1122/576 2137/1177/605\nf 2158/1203/592 2115/1088/545 2113/1085/542\nf 2119/1095/552 2116/1090/547 2155/1093/550\nf 2109/1206/582 2110/1207/610 2108/1208/580\nf 2108/1208/580 2166/1209/586 2163/1164/595\nf 2131/1198/559 2109/1132/582 2106/1210/560\nf 2106/1103/560 2112/1178/600 2111/1104/561\nf 2108/1166/580 2107/1165/596 2105/1211/581\nf 2121/1133/555 2141/1089/546 2140/1134/583\nf 2106/1210/560 2109/1132/582 2105/1131/581\nf 2127/1111/568 2139/1113/570 2170/1212/611\nf 2129/1213/576 2165/1214/608 2137/1200/605\nf 2144/1112/569 2140/1134/583 2172/1215/612\nf 2152/1155/577 2155/1152/550 2153/1151/589\nf 2111/1197/561 2110/1202/610 2131/1216/559\nf 2107/1165/596 2169/1167/597 2175/1217/598\nf 2173/1174/603 2150/1190/575 2132/1218/562\nf 2156/1172/601 2137/1200/605 2165/1214/608\nf 2173/1174/603 2133/1219/564 2143/1220/584\nf 2157/1142/579 2138/1162/565 2120/1192/553\nf 2126/1195/609 2161/1221/593 2164/1194/604\nf 2149/1100/557 2174/1161/594 2167/1201/587\nf 2146/1222/572 2167/1201/587 2174/1161/594\nf 2136/1223/578 2150/1190/575 2169/1184/597\nf 2172/1215/612 2140/1134/583 2141/1089/546\nf 2158/1203/592 2172/1215/612 2141/1089/546\nf 2115/1088/545 2128/1086/543 2113/1085/542\nf 2118/1092/549 2153/1204/589 2116/1090/547\nf 2143/1137/584 2135/1116/563 2118/1092/549\nf 2174/1161/594 2124/1181/573 2146/1222/572\nf 2164/1176/604 2105/1224/581 2107/1225/596\nf 2174/1161/594 2149/1100/557 2129/1122/576\nf 2156/1172/601 2145/1110/567 2130/1109/566\nf 2163/1164/595 2136/1163/578 2108/1208/580\nf 2163/1164/595 2166/1209/586 2138/1162/565\nf 2171/1226/607 2160/1227/588 2151/1097/554\nf 2144/1115/569 2172/1228/612 2158/1180/592\nf 2161/1229/593 2125/1230/585 2124/1231/573\nf 2108/1166/580 2136/1232/578 2169/1167/597\nf 2120/1192/553 2154/1156/591 2157/1142/579\nf 2166/1209/586 2108/1208/580 2110/1207/610\nf 2146/1118/572 2123/1117/571 2147/1147/551\nf 2168/1154/590 2122/1101/558 2167/1201/587\nf 2135/1106/563 2154/1156/591 2170/1233/611\nf 2118/1092/549 2135/1116/563 2144/1115/569\nf 2147/1147/551 2123/1117/571 2173/1174/603\nf 2122/1101/558 2128/1136/543 2148/1099/556\nf 2173/1234/603 2143/1137/584 2119/1095/552\nf 2154/1156/591 2134/1120/574 2157/1142/579\nf 2175/1217/598 2125/1235/585 2126/1195/609\nf 2155/1152/550 2168/1154/590 2167/1201/587\nf 2121/1098/555 2151/1097/554 2160/1227/588\nf 2139/1236/570 2135/1106/563 2170/1233/611\nf 2127/1193/568 2170/1233/611 2154/1156/591\nf 2145/1110/567 2156/1172/601 2165/1214/608\nf 2162/1170/599 2169/1184/597 2150/1190/575\nf 2161/1221/593 2126/1195/609 2125/1235/585\nf 2105/1224/581 2164/1176/604 2106/1103/560\nf 2175/1217/598 2126/1195/609 2107/1165/596\nf 2168/1154/590 2114/1135/544 2122/1101/558\nf 2118/1092/549 2144/1115/569 2159/1179/606\nf 2165/1187/608 2129/1237/576 2148/1185/556\nf 2142/1173/602 2130/1109/566 2110/1202/610\nf 2173/1174/603 2132/1218/562 2133/1219/564\nf 2166/1209/586 2110/1207/610 2130/1238/566\nf 2179/1239/613 2176/1240/614 2195/1241/615\nf 2189/1242/616 2209/1243/617 2190/1244/618\nf 2197/1245/619 2198/1246/620 2200/1247/621\nf 2212/1248/622 2182/1249/623 2199/1250/624\nf 2178/1251/625 2201/1252/626 2230/1253/627\nf 2187/1254/628 2213/1255/629 2204/1256/630\nf 2212/1257/622 2196/1258/631 2182/1259/623\nf 2213/1260/629 2198/1261/620 2204/1262/630\nf 2224/1263/632 2193/1264/633 2192/1265/634\nf 2203/1266/635 2202/1267/636 2208/1268/637\nf 2211/1269/638 2201/1252/626 2197/1245/619\nf 2231/1270/639 2230/1271/627 2179/1272/613\nf 2225/1273/640 2194/1274/641 2180/1275/642\nf 2192/1265/634 2193/1264/633 2210/1276/643\nf 2190/1277/618 2191/1278/644 2189/1279/616\nf 2214/1280/645 2205/1281/646 2215/1282/647\nf 2208/1283/637 2187/1284/628 2186/1285/648\nf 2183/1286/649 2196/1258/631 2212/1257/622\nf 2199/1287/624 2235/1288/650 2212/1289/622\nf 2212/1289/622 2217/1290/651 2183/1291/649\nf 2228/1292/652 2206/1293/653 2223/1294/654\nf 2219/1295/655 2203/1296/635 2186/1297/648\nf 2201/1252/626 2232/1298/656 2227/1299/657\nf 2207/1300/658 2216/1301/659 2211/1269/638\nf 2187/1284/628 2208/1283/637 2206/1302/653\nf 2220/1303/660 2210/1276/643 2221/1304/661\nf 2233/1305/662 2215/1282/647 2181/1306/663\nf 2213/1260/629 2214/1307/645 2234/1308/664\nf 2186/1285/648 2218/1309/665 2219/1310/655\nf 2232/1311/656 2189/1242/616 2227/1312/657\nf 2221/1304/661 2209/1313/617 2220/1303/660\nf 2177/1314/666 2203/1296/635 2178/1251/625\nf 2203/1296/635 2177/1314/666 2194/1315/641\nf 2194/1274/641 2225/1273/640 2229/1316/667\nf 2209/1313/617 2221/1304/661 2190/1317/618\nf 2193/1264/633 2195/1241/615 2226/1318/668\nf 2188/1319/669 2215/1320/647 2228/1321/652\nf 2213/1255/629 2187/1254/628 2205/1281/646\nf 2205/1281/646 2214/1280/645 2213/1255/629\nf 2233/1322/662 2182/1323/623 2196/1324/631\nf 2193/1264/633 2226/1318/668 2190/1317/618\nf 2231/1325/639 2195/1326/615 2222/1327/670\nf 2222/1328/670 2180/1275/642 2194/1274/641\nf 2235/1288/650 2199/1287/624 2188/1319/669\nf 2218/1329/665 2186/1285/648 2187/1284/628\nf 2195/1326/615 2231/1325/639 2179/1330/613\nf 2185/1331/671 2183/1286/649 2217/1332/651\nf 2198/1246/620 2218/1333/665 2204/1334/630\nf 2201/1335/626 2227/1336/657 2230/1271/627\nf 2214/1280/645 2233/1305/662 2184/1337/672\nf 2177/1314/666 2230/1253/627 2231/1338/639\nf 2184/1339/672 2183/1286/649 2185/1331/671\nf 2223/1340/654 2192/1265/634 2210/1276/643\nf 2181/1341/663 2188/1319/669 2199/1287/624\nf 2180/1275/642 2224/1342/632 2225/1273/640\nf 2229/1316/667 2225/1273/640 2224/1342/632\nf 2217/1290/651 2212/1289/622 2235/1288/650\nf 2235/1288/650 2220/1303/660 2217/1290/651\nf 2229/1316/667 2223/1294/654 2206/1293/653\nf 2194/1274/641 2229/1316/667 2202/1267/636\nf 2197/1245/619 2218/1333/665 2198/1246/620\nf 2180/1275/642 2222/1328/670 2195/1343/615\nf 2199/1250/624 2182/1249/623 2181/1306/663\nf 2233/1305/662 2214/1280/645 2215/1282/647\nf 2206/1302/653 2205/1344/646 2187/1284/628\nf 2185/1345/671 2232/1346/656 2216/1347/659\nf 2185/1345/671 2189/1348/616 2232/1346/656\nf 2235/1288/650 2210/1276/643 2220/1303/660\nf 2221/1304/661 2210/1276/643 2193/1264/633\nf 2228/1321/652 2223/1340/654 2188/1319/669\nf 2210/1276/643 2188/1319/669 2223/1340/654\nf 2216/1347/659 2232/1346/656 2211/1349/638\nf 2189/1348/616 2185/1345/671 2209/1350/617\nf 2203/1296/635 2219/1295/655 2178/1251/625\nf 2226/1351/668 2176/1352/614 2191/1353/644\nf 2185/1331/671 2216/1354/659 2184/1339/672\nf 2230/1253/627 2177/1314/666 2178/1251/625\nf 2235/1288/650 2188/1319/669 2210/1276/643\nf 2232/1298/656 2201/1252/626 2211/1269/638\nf 2192/1355/634 2223/1356/654 2224/1357/632\nf 2202/1267/636 2203/1266/635 2194/1274/641\nf 2198/1261/620 2207/1358/658 2200/1359/621\nf 2216/1354/659 2207/1358/658 2184/1339/672\nf 2211/1360/638 2200/1361/621 2207/1362/658\nf 2218/1333/665 2197/1245/619 2219/1295/655\nf 2177/1363/666 2222/1328/670 2194/1274/641\nf 2208/1268/637 2186/1364/648 2203/1266/635\nf 2230/1271/627 2191/1278/644 2176/1365/614\nf 2176/1365/614 2179/1272/613 2230/1271/627\nf 2201/1252/626 2178/1251/625 2197/1245/619\nf 2219/1295/655 2197/1245/619 2178/1251/625\nf 2180/1366/642 2195/1241/615 2193/1264/633\nf 2176/1240/614 2226/1318/668 2195/1241/615\nf 2222/1328/670 2177/1363/666 2231/1367/639\nf 2229/1316/667 2208/1268/637 2202/1267/636\nf 2193/1264/633 2224/1263/632 2180/1366/642\nf 2227/1312/657 2189/1242/616 2191/1368/644\nf 2188/1369/669 2181/1306/663 2215/1282/647\nf 2220/1370/660 2209/1350/617 2217/1371/651\nf 2184/1339/672 2196/1258/631 2183/1286/649\nf 2185/1345/671 2217/1371/651 2209/1350/617\nf 2204/1334/630 2218/1333/665 2187/1372/628\nf 2233/1305/662 2181/1306/663 2182/1249/623\nf 2184/1339/672 2234/1308/664 2214/1307/645\nf 2223/1294/654 2229/1316/667 2224/1342/632\nf 2191/1278/644 2190/1277/618 2226/1373/668\nf 2233/1374/662 2196/1258/631 2184/1339/672\nf 2234/1308/664 2184/1339/672 2207/1358/658\nf 2213/1260/629 2234/1308/664 2207/1358/658\nf 2207/1358/658 2198/1261/620 2213/1260/629\nf 2229/1316/667 2206/1293/653 2208/1268/637\nf 2190/1317/618 2221/1304/661 2193/1264/633\nf 2197/1245/619 2200/1247/621 2211/1269/638\nf 2191/1278/644 2230/1271/627 2227/1336/657\nf 2206/1302/653 2228/1375/652 2205/1344/646\nf 2215/1376/647 2205/1344/646 2228/1375/652\nf 2268/1377/673 2236/1378/674 2249/1379/675\nf 2236/1378/674 2239/1380/676 2238/1381/677\nf 2263/1382/678 2245/1383/679 2262/1384/680\nf 2261/1385/681 2250/1386/682 2247/1387/683\nf 2241/1388/684 2257/1389/685 2238/1390/677\nf 2269/1391/686 2252/1392/687 2242/1393/688\nf 2240/1394/689 2253/1395/690 2259/1396/691\nf 2250/1386/682 2261/1385/681 2243/1397/692\nf 2246/1398/693 2271/1399/694 2247/1387/683\nf 2262/1400/680 2249/1401/675 2263/1402/678\nf 2257/1389/685 2241/1388/684 2264/1403/695\nf 2249/1401/675 2262/1400/680 2268/1404/673\nf 2249/1379/675 2264/1405/695 2263/1406/678\nf 2265/1407/696 2259/1408/691 2267/1409/697\nf 2245/1410/679 2254/1411/698 2262/1400/680\nf 2264/1405/695 2249/1379/675 2257/1412/685\nf 2241/1413/684 2255/1414/699 2264/1415/695\nf 2238/1381/677 2257/1412/685 2249/1379/675\nf 2240/1416/689 2241/1388/684 2238/1390/677\nf 2271/1399/694 2248/1417/700 2251/1418/701\nf 2251/1418/701 2243/1397/692 2261/1385/681\nf 2269/1419/686 2237/1420/702 2268/1404/673\nf 2252/1392/687 2265/1421/696 2267/1422/697\nf 2237/1423/702 2253/1395/690 2239/1424/676\nf 2253/1395/690 2242/1393/688 2267/1422/697\nf 2265/1407/696 2252/1425/687 2258/1426/703\nf 2250/1386/682 2243/1397/692 2244/1427/704\nf 2238/1381/677 2249/1379/675 2236/1378/674\nf 2272/1428/705 2240/1416/689 2260/1429/706\nf 2272/1428/705 2255/1430/699 2241/1388/684\nf 2237/1420/702 2269/1419/686 2242/1431/688\nf 2261/1385/681 2247/1387/683 2271/1399/694\nf 2251/1418/701 2261/1385/681 2271/1399/694\nf 2246/1432/693 2266/1433/707 2260/1429/706\nf 2253/1395/690 2237/1423/702 2242/1393/688\nf 2239/1380/676 2236/1378/674 2237/1434/702\nf 2245/1383/679 2250/1435/682 2244/1436/704\nf 2239/1437/676 2240/1416/689 2238/1390/677\nf 2245/1383/679 2263/1382/678 2270/1438/708\nf 2259/1439/691 2246/1432/693 2260/1429/706\nf 2259/1439/691 2260/1429/706 2240/1416/689\nf 2272/1428/705 2266/1433/707 2255/1430/699\nf 2254/1411/698 2268/1404/673 2262/1400/680\nf 2241/1388/684 2240/1416/689 2272/1428/705\nf 2245/1410/679 2243/1440/692 2248/1441/700\nf 2254/1411/698 2245/1410/679 2248/1441/700\nf 2260/1429/706 2266/1433/707 2272/1428/705\nf 2270/1438/708 2255/1442/699 2256/1443/709\nf 2245/1410/679 2244/1444/704 2243/1440/692\nf 2253/1395/690 2267/1422/697 2259/1396/691\nf 2246/1432/693 2247/1445/683 2266/1433/707\nf 2250/1446/682 2256/1447/709 2266/1433/707\nf 2255/1430/699 2266/1433/707 2256/1447/709\nf 2258/1448/703 2269/1419/686 2254/1411/698\nf 2270/1438/708 2256/1443/709 2245/1383/679\nf 2250/1435/682 2245/1383/679 2256/1443/709\nf 2252/1392/687 2267/1422/697 2242/1393/688\nf 2247/1445/683 2250/1446/682 2266/1433/707\nf 2248/1417/700 2271/1399/694 2265/1407/696\nf 2265/1407/696 2258/1426/703 2248/1417/700\nf 2243/1440/692 2251/1449/701 2248/1441/700\nf 2239/1437/676 2253/1450/690 2240/1416/689\nf 2271/1399/694 2246/1398/693 2265/1407/696\nf 2246/1451/693 2259/1452/691 2265/1453/696\nf 2269/1419/686 2258/1448/703 2252/1454/687\nf 2268/1404/673 2254/1411/698 2269/1419/686\nf 2263/1455/678 2264/1415/695 2255/1414/699\nf 2255/1414/699 2270/1456/708 2263/1455/678\nf 2248/1441/700 2258/1448/703 2254/1411/698\nf 2236/1457/674 2268/1404/673 2237/1420/702\nusemtl _teeth_maxwire_008008136\nf 365/1458/710 366/1459/711 364/1460/712\nf 368/1461/713 367/1462/714 386/1463/715\nf 373/1464/716 374/1465/717 417/1466/718\nf 375/1467/719 377/1468/720 454/1469/721\nf 449/1470/722 379/1471/723 378/1472/724\nf 381/1473/725 366/1459/711 440/1474/726\nf 369/1475/727 383/1476/728 430/1477/729\nf 386/1478/715 452/1479/730 432/1480/731\nf 385/1481/732 386/1463/715 367/1462/714\nf 400/1482/733 394/1483/734 389/1484/735\nf 452/1479/730 447/1485/736 433/1486/737\nf 433/1486/737 372/1487/738 371/1488/739\nf 390/1489/740 389/1490/735 396/1491/741\nf 446/1492/742 396/1493/741 388/1494/743\nf 372/1487/738 446/1492/742 388/1494/743\nf 394/1495/734 400/1496/733 393/1497/744\nf 379/1471/723 449/1470/722 380/1498/745\nf 368/1461/713 381/1473/725 440/1474/726\nf 404/1499/746 435/1500/747 429/1501/748\nf 433/1486/737 432/1480/731 452/1479/730\nf 430/1502/729 412/1503/749 413/1504/750\nf 395/1505/751 430/1477/729 383/1476/728\nf 456/1506/752 458/1507/753 448/1508/754\nf 400/1496/733 424/1509/755 391/1510/756\nf 424/1511/755 400/1482/733 421/1512/757\nf 424/1511/755 427/1513/758 417/1514/718\nf 392/1515/759 391/1516/756 380/1498/745\nf 391/1510/756 434/1517/760 400/1496/733\nf 421/1512/757 427/1513/758 424/1511/755\nf 418/1518/761 419/1519/762 370/1520/763\nf 453/1521/764 454/1469/721 424/1509/755\nf 458/1522/753 405/1523/765 410/1524/766\nf 420/1525/767 402/1526/768 365/1458/710\nf 427/1527/758 421/1528/757 390/1489/740\nf 426/1529/769 422/1530/770 442/1531/771\nf 417/1514/718 453/1532/764 424/1511/755\nf 425/1533/772 402/1526/768 420/1525/767\nf 431/1534/773 411/1535/774 455/1536/775\nf 426/1529/769 455/1536/775 411/1535/774\nf 376/1537/776 417/1466/718 427/1527/758\nf 430/1477/729 382/1538/777 369/1475/727\nf 452/1479/730 385/1539/732 439/1540/778\nf 456/1506/752 443/1541/779 458/1507/753\nf 395/1505/751 412/1542/749 430/1477/729\nf 383/1543/728 414/1544/780 445/1545/781\nf 451/1546/782 426/1529/769 411/1535/774\nf 431/1534/773 455/1536/775 436/1547/783\nf 382/1548/777 437/1549/784 369/1550/727\nf 373/1551/716 385/1481/732 397/1552/785\nf 446/1492/742 439/1540/778 376/1553/776\nf 402/1526/768 367/1462/714 440/1474/726\nf 423/1554/786 387/1555/787 441/1556/788\nf 381/1557/725 401/1558/789 366/1559/711\nf 380/1560/745 391/1561/756 379/1562/723\nf 384/1563/790 364/1564/712 445/1565/781\nf 390/1489/740 376/1537/776 427/1527/758\nf 414/1544/780 383/1543/728 369/1566/727\nf 445/1545/781 364/1567/712 383/1543/728\nf 456/1506/752 448/1508/754 435/1568/747\nf 449/1569/722 384/1563/790 445/1565/781\nf 386/1478/715 385/1539/732 452/1479/730\nf 366/1459/711 395/1570/751 364/1460/712\nf 412/1571/749 395/1570/751 366/1459/711\nf 428/1572/791 392/1515/759 380/1498/745\nf 378/1573/724 384/1563/790 449/1569/722\nf 365/1458/710 402/1526/768 440/1474/726\nf 451/1546/782 411/1535/774 401/1558/789\nf 446/1492/742 447/1485/736 452/1479/730\nf 437/1549/784 370/1520/763 399/1574/792\nf 380/1498/745 449/1470/722 428/1572/791\nf 452/1479/730 439/1540/778 446/1492/742\nf 437/1549/784 407/1575/793 406/1576/794\nf 370/1520/763 437/1549/784 406/1576/794\nf 441/1556/788 399/1574/792 370/1520/763\nf 432/1480/731 433/1486/737 408/1577/795\nf 412/1503/749 431/1578/773 436/1579/783\nf 367/1462/714 402/1526/768 385/1481/732\nf 454/1469/721 453/1521/764 375/1467/719\nf 402/1526/768 374/1580/717 397/1552/785\nf 450/1581/796 394/1582/734 423/1554/786\nf 455/1536/775 426/1529/769 407/1583/793\nf 368/1461/713 405/1523/765 381/1473/725\nf 416/1584/797 404/1499/746 429/1501/748\nf 393/1497/744 400/1496/733 434/1517/760\nf 408/1577/795 438/1585/798 432/1480/731\nf 422/1530/770 426/1529/769 451/1546/782\nf 374/1580/717 402/1526/768 375/1586/719\nf 387/1587/787 428/1588/791 399/1589/792\nf 391/1516/756 392/1515/759 434/1590/760\nf 415/1591/799 458/1507/753 457/1592/800\nf 432/1480/731 368/1593/713 386/1478/715\nf 429/1594/748 435/1568/747 448/1508/754\nf 389/1490/735 390/1489/740 421/1528/757\nf 369/1566/727 399/1595/792 414/1544/780\nf 409/1596/801 426/1529/769 442/1531/771\nf 415/1597/799 457/1598/800 416/1599/797\nf 426/1529/769 406/1600/794 407/1583/793\nf 444/1601/802 422/1602/770 381/1603/725\nf 458/1507/753 415/1591/799 448/1508/754\nf 378/1472/724 454/1604/721 377/1605/720\nf 401/1558/789 422/1530/770 451/1546/782\nf 423/1606/786 393/1607/744 392/1515/759\nf 453/1532/764 417/1514/718 374/1608/717\nf 391/1510/756 424/1509/755 454/1469/721\nf 421/1512/757 400/1482/733 389/1484/735\nf 438/1585/798 416/1599/797 457/1598/800\nf 393/1497/744 423/1609/786 394/1495/734\nf 402/1526/768 425/1533/772 375/1586/719\nf 376/1553/776 390/1610/740 446/1492/742\nf 436/1579/783 413/1504/750 412/1503/749\nf 370/1520/763 419/1519/762 441/1556/788\nf 420/1525/767 365/1458/710 384/1611/790\nf 382/1548/777 413/1612/750 437/1549/784\nf 403/1613/803 389/1484/735 394/1483/734\nf 373/1614/716 439/1540/778 385/1539/732\nf 385/1481/732 402/1526/768 397/1552/785\nf 423/1554/786 441/1556/788 450/1581/796\nf 425/1533/772 377/1615/720 375/1586/719\nf 384/1611/790 378/1616/724 420/1525/767\nf 392/1515/759 428/1572/791 398/1617/804\nf 429/1618/748 448/1508/754 415/1591/799\nf 415/1619/799 416/1584/797 429/1501/748\nf 370/1520/763 371/1620/739 418/1518/761\nf 409/1621/801 442/1622/771 456/1506/752\nf 372/1623/738 388/1624/743 419/1519/762\nf 450/1581/796 419/1519/762 388/1624/743\nf 388/1624/743 396/1625/741 450/1581/796\nf 414/1626/780 399/1589/792 428/1588/791\nf 399/1574/792 369/1550/727 437/1549/784\nf 454/1627/721 379/1562/723 391/1561/756\nf 447/1485/736 372/1487/738 433/1486/737\nf 368/1593/713 432/1480/731 410/1628/766\nf 392/1515/759 398/1617/804 423/1606/786\nf 374/1608/717 375/1629/719 453/1532/764\nf 450/1581/796 403/1630/803 394/1582/734\nf 458/1507/753 443/1541/779 405/1631/765\nf 387/1555/787 423/1554/786 398/1632/804\nf 444/1601/802 381/1603/725 405/1631/765\nf 456/1506/752 444/1601/802 443/1541/779\nf 408/1577/795 416/1599/797 438/1585/798\nf 446/1492/742 372/1487/738 447/1485/736\nf 396/1491/741 446/1633/742 390/1489/740\nf 409/1634/801 435/1500/747 371/1620/739\nf 393/1607/744 434/1590/760 392/1515/759\nf 387/1635/787 398/1617/804 428/1572/791\nf 444/1601/802 442/1622/771 422/1602/770\nf 441/1556/788 419/1519/762 450/1581/796\nf 454/1604/721 378/1472/724 379/1471/723\nf 425/1533/772 420/1525/767 378/1616/724\nf 416/1599/797 433/1486/737 404/1636/746\nf 444/1601/802 456/1506/752 442/1622/771\nf 409/1634/801 370/1520/763 406/1576/794\nf 443/1541/779 444/1601/802 405/1631/765\nf 383/1476/728 364/1637/712 395/1505/751\nf 455/1536/775 407/1583/793 436/1547/783\nf 401/1638/789 411/1639/774 366/1459/711\nf 405/1523/765 368/1461/713 410/1524/766\nf 456/1506/752 435/1568/747 409/1621/801\nf 418/1518/761 371/1620/739 372/1623/738\nf 364/1460/712 384/1611/790 365/1458/710\nf 410/1628/766 432/1480/731 438/1585/798\nf 399/1574/792 441/1556/788 387/1555/787\nf 433/1486/737 416/1599/797 408/1577/795\nf 377/1615/720 425/1533/772 378/1616/724\nf 458/1522/753 410/1524/766 457/1640/800\nf 368/1461/713 440/1474/726 367/1462/714\nf 430/1502/729 413/1504/750 382/1641/777\nf 412/1571/749 366/1459/711 411/1639/774\nf 433/1486/737 371/1488/739 404/1636/746\nf 412/1571/749 411/1639/774 431/1642/773\nf 396/1491/741 389/1490/735 403/1643/803\nf 457/1598/800 410/1628/766 438/1585/798\nf 419/1519/762 418/1518/761 372/1623/738\nf 422/1530/770 401/1558/789 381/1557/725\nf 435/1500/747 404/1499/746 371/1620/739\nf 439/1644/778 373/1464/716 376/1537/776\nf 373/1464/716 417/1466/718 376/1537/776\nf 366/1459/711 365/1458/710 440/1474/726\nf 450/1581/796 396/1625/741 403/1630/803\nf 397/1552/785 374/1580/717 373/1645/716\nf 428/1588/791 449/1569/722 414/1626/780\nf 414/1626/780 449/1569/722 445/1565/781\nf 371/1620/739 370/1520/763 409/1634/801\nf 437/1549/784 413/1612/750 407/1575/793\nf 406/1600/794 426/1529/769 409/1596/801\nf 436/1646/783 407/1575/793 413/1612/750\nf 460/1647/805 461/1648/806 459/1649/807\nf 460/1650/805 462/1651/808 461/1652/806\nf 491/1653/809 464/1654/810 465/1655/811\nf 466/1656/812 465/1655/811 463/1657/813\nf 493/1658/814 467/1659/815 468/1660/816\nf 473/1661/817 475/1662/818 474/1663/819\nf 475/1662/818 476/1664/820 477/1665/821\nf 479/1666/822 480/1667/823 474/1663/819\nf 481/1668/824 504/1669/825 560/1670/826\nf 487/1671/827 462/1651/808 463/1657/813\nf 469/1672/828 468/1660/816 544/1673/829\nf 468/1660/816 467/1659/815 544/1673/829\nf 467/1674/815 488/1675/830 547/1676/831\nf 472/1677/832 554/1678/833 551/1679/834\nf 471/1680/835 494/1681/836 470/1682/837\nf 459/1683/807 486/1684/838 489/1685/839\nf 471/1680/835 495/1686/840 494/1681/836\nf 506/1687/841 501/1688/842 496/1689/843\nf 535/1690/844 471/1680/835 470/1682/837\nf 503/1691/845 502/1692/846 495/1686/840\nf 490/1693/847 473/1694/817 531/1695/848\nf 474/1663/819 546/1696/849 473/1661/817\nf 471/1680/835 503/1691/845 495/1686/840\nf 516/1697/850 529/1698/851 517/1699/852\nf 501/1700/842 506/1701/841 500/1702/853\nf 560/1670/826 478/1703/854 481/1668/824\nf 483/1704/855 482/1705/856 484/1706/857\nf 465/1655/811 487/1671/827 463/1657/813\nf 507/1707/858 475/1708/818 490/1693/847\nf 465/1655/811 466/1656/812 491/1653/809\nf 485/1709/859 489/1710/839 486/1711/838\nf 508/1712/860 496/1713/843 501/1714/842\nf 509/1715/861 552/1716/862 532/1717/863\nf 562/1718/864 534/1719/865 472/1677/832\nf 537/1720/866 547/1676/831 488/1675/830\nf 541/1721/867 538/1722/868 555/1723/869\nf 516/1724/850 517/1725/852 513/1726/870\nf 506/1701/841 566/1727/871 498/1728/872\nf 566/1729/871 506/1687/841 526/1730/873\nf 499/1731/874 498/1732/872 484/1706/857\nf 498/1728/872 539/1733/875 506/1701/841\nf 526/1730/873 522/1734/876 566/1729/871\nf 523/1735/877 524/1736/878 561/1737/879\nf 559/1738/880 560/1670/826 566/1727/871\nf 553/1739/881 525/1740/882 512/1741/883\nf 538/1742/868 510/1743/884 515/1744/885\nf 489/1745/839 507/1707/858 460/1650/805\nf 522/1746/876 526/1747/873 497/1748/886\nf 492/1749/887 548/1750/888 505/1751/889\nf 477/1752/821 559/1753/880 566/1729/871\nf 545/1754/890 517/1699/852 525/1740/882\nf 528/1755/891 525/1740/882 517/1699/852\nf 479/1666/822 477/1665/821 522/1746/876\nf 541/1721/867 549/1756/892 538/1722/868\nf 537/1720/866 536/1757/893 518/1758/894\nf 472/1677/832 464/1759/810 558/1760/895\nf 488/1761/830 519/1762/896 550/1763/897\nf 529/1698/851 528/1755/891 517/1699/852\nf 549/1764/892 541/1765/867 533/1766/898\nf 545/1754/890 525/1740/882 542/1767/899\nf 547/1768/831 544/1673/829 467/1659/815\nf 536/1769/893 513/1770/870 545/1771/890\nf 546/1772/849 531/1695/848 473/1694/817\nf 543/1773/900 531/1774/848 480/1775/823\nf 531/1774/848 546/1776/849 480/1775/823\nf 507/1707/858 466/1656/812 563/1777/901\nf 557/1778/902 548/1750/888 561/1737/879\nf 527/1779/903 567/1780/904 533/1766/898\nf 484/1781/857 498/1782/872 483/1783/855\nf 486/1684/838 459/1683/807 550/1784/897\nf 530/1785/905 499/1731/874 484/1706/857\nf 497/1748/886 479/1666/822 522/1746/876\nf 519/1762/896 488/1761/830 467/1786/815\nf 550/1787/897 459/1649/807 488/1675/830\nf 472/1677/832 558/1760/895 554/1678/833\nf 556/1788/906 486/1684/838 550/1784/897\nf 540/1789/907 518/1790/894 542/1791/899\nf 536/1757/893 537/1720/866 461/1648/806\nf 490/1693/847 491/1653/809 466/1656/812\nf 460/1650/805 507/1707/858 563/1777/901\nf 486/1684/838 482/1792/856 485/1793/859\nf 484/1706/857 556/1794/906 530/1785/905\nf 558/1760/895 531/1774/848 554/1678/833\nf 469/1672/828 544/1673/829 512/1795/883\nf 472/1677/832 551/1679/834 562/1718/864\nf 529/1698/851 567/1796/904 527/1797/903\nf 536/1769/893 545/1771/890 542/1791/899\nf 543/1798/900 480/1667/823 479/1666/822\nf 564/1799/908 520/1800/909 555/1801/869\nf 466/1656/812 507/1707/858 490/1693/847\nf 560/1670/826 559/1738/880 478/1703/854\nf 554/1678/833 531/1774/848 543/1773/900\nf 500/1802/853 548/1750/888 501/1714/842\nf 557/1778/902 501/1714/842 548/1750/888\nf 465/1655/811 510/1803/884 487/1804/827\nf 554/1678/833 543/1773/900 503/1691/845\nf 463/1657/813 563/1777/901 466/1656/812\nf 500/1702/853 506/1701/841 539/1733/875\nf 556/1794/906 484/1706/857 482/1705/856\nf 548/1750/888 500/1802/853 505/1751/889\nf 487/1671/827 516/1724/850 462/1651/808\nf 489/1745/839 481/1805/824 478/1806/854\nf 492/1807/887 530/1808/905 493/1809/814\nf 491/1810/809 490/1811/847 531/1774/848\nf 482/1792/856 486/1684/838 556/1788/906\nf 498/1732/872 499/1731/874 539/1812/875\nf 532/1813/863 541/1765/867 555/1801/869\nf 551/1679/834 535/1690/844 562/1718/864\nf 496/1814/843 508/1815/860 502/1816/846\nf 553/1817/881 512/1795/883 544/1673/829\nf 467/1786/815 493/1818/814 519/1762/896\nf 521/1819/910 509/1820/861 532/1821/863\nf 514/1822/911 528/1755/891 527/1797/903\nf 528/1755/891 512/1741/883 525/1740/882\nf 476/1823/820 475/1824/818 478/1825/854\nf 559/1753/880 477/1752/821 476/1823/820\nf 498/1728/872 566/1727/871 560/1670/826\nf 526/1730/873 506/1687/841 496/1689/843\nf 479/1666/822 497/1748/886 543/1798/900\nf 565/1826/912 520/1827/909 564/1828/908\nf 475/1708/818 489/1745/839 478/1806/854\nf 489/1745/839 475/1708/818 507/1707/858\nf 542/1791/899 518/1790/894 536/1769/893\nf 532/1821/863 520/1827/909 521/1819/910\nf 472/1677/832 534/1719/865 464/1759/810\nf 538/1829/868 515/1830/885 565/1831/912\nf 538/1829/868 565/1831/912 564/1832/908\nf 565/1826/912 521/1819/910 520/1827/909\nf 492/1749/887 493/1833/814 468/1660/816\nf 566/1729/871 522/1734/876 477/1752/821\nf 561/1737/879 548/1750/888 492/1749/887\nf 530/1834/905 505/1835/889 499/1731/874\nf 532/1836/863 555/1801/869 520/1800/909\nf 469/1672/828 470/1837/837 523/1735/877\nf 543/1773/900 502/1838/846 503/1691/845\nf 502/1816/846 543/1798/900 497/1748/886\nf 494/1681/836 495/1686/840 524/1839/878\nf 557/1840/902 524/1839/878 495/1686/840\nf 495/1841/840 502/1842/846 557/1778/902\nf 519/1843/896 493/1809/814 530/1808/905\nf 560/1670/826 483/1844/855 498/1728/872\nf 554/1678/833 471/1680/835 535/1690/844\nf 528/1755/891 529/1698/851 527/1797/903\nf 464/1759/810 491/1810/809 558/1760/895\nf 476/1823/820 478/1825/854 559/1753/880\nf 557/1778/902 508/1712/860 501/1714/842\nf 538/1742/868 549/1764/892 510/1743/884\nf 510/1743/884 549/1764/892 511/1845/913\nf 477/1665/821 474/1663/819 475/1662/818\nf 537/1720/866 518/1758/894 547/1676/831\nf 461/1648/806 537/1720/866 459/1649/807\nf 533/1766/898 511/1845/913 549/1764/892\nf 562/1718/864 521/1819/910 565/1826/912\nf 503/1691/845 471/1680/835 554/1678/833\nf 514/1846/911 552/1716/862 470/1837/837\nf 500/1847/853 539/1812/875 499/1731/874\nf 492/1848/887 505/1835/889 530/1834/905\nf 531/1774/848 558/1760/895 491/1810/809\nf 526/1747/873 496/1814/843 497/1748/886\nf 510/1743/884 511/1845/913 487/1849/827\nf 535/1690/844 551/1679/834 554/1678/833\nf 561/1737/879 524/1736/878 557/1778/902\nf 564/1799/908 555/1801/869 538/1742/868\nf 540/1850/907 544/1673/829 547/1768/831\nf 552/1716/862 541/1851/867 532/1717/863\nf 499/1731/874 505/1835/889 500/1847/853\nf 560/1852/826 504/1853/825 483/1704/855\nf 482/1705/856 483/1704/855 504/1853/825\nf 481/1805/824 489/1745/839 485/1854/859\nf 521/1819/910 535/1690/844 509/1820/861\nf 490/1693/847 475/1708/818 473/1694/817\nf 567/1780/904 487/1849/827 511/1845/913\nf 514/1846/911 469/1672/828 512/1795/883\nf 511/1845/913 533/1766/898 567/1780/904\nf 488/1675/830 459/1649/807 537/1720/866\nf 552/1855/862 533/1766/898 541/1765/867\nf 516/1724/850 513/1726/870 462/1651/808\nf 513/1726/870 517/1725/852 545/1856/890\nf 510/1857/884 465/1655/811 515/1830/885\nf 533/1766/898 552/1855/862 514/1858/911\nf 523/1735/877 470/1837/837 494/1859/836\nf 547/1768/831 518/1860/894 540/1850/907\nf 542/1767/899 525/1740/882 540/1861/907\nf 459/1862/807 489/1745/839 460/1650/805\nf 534/1719/865 515/1863/885 464/1759/810\nf 468/1660/816 561/1737/879 492/1749/887\nf 535/1690/844 521/1819/910 562/1718/864\nf 504/1853/825 481/1864/824 485/1865/859\nf 563/1777/901 463/1657/813 462/1651/808\nf 534/1719/865 562/1718/864 565/1826/912\nf 462/1651/808 513/1726/870 461/1652/806\nf 535/1690/844 470/1682/837 509/1820/861\nf 485/1865/859 482/1705/856 504/1853/825\nf 515/1863/885 534/1719/865 565/1826/912\nf 502/1816/846 497/1748/886 496/1814/843\nf 527/1797/903 533/1866/898 514/1822/911\nf 524/1736/878 523/1735/877 494/1859/836\nf 561/1737/879 468/1660/816 523/1735/877\nf 469/1672/828 523/1735/877 468/1660/816\nf 567/1796/904 516/1697/850 487/1867/827\nf 516/1697/850 567/1796/904 529/1698/851\nf 552/1716/862 509/1715/861 470/1837/837\nf 546/1696/849 474/1663/819 480/1667/823\nf 474/1663/819 477/1665/821 479/1666/822\nf 464/1654/810 515/1830/885 465/1655/811\nf 462/1651/808 460/1650/805 563/1777/901\nf 540/1850/907 553/1817/881 544/1673/829\nf 557/1778/902 502/1842/846 508/1712/860\nf 530/1808/905 556/1788/906 519/1843/896\nf 519/1843/896 556/1788/906 550/1784/897\nf 470/1837/837 469/1672/828 514/1846/911\nf 525/1868/882 553/1817/881 540/1850/907\nf 461/1869/806 513/1770/870 536/1769/893\nf 512/1741/883 528/1755/891 514/1822/911\nf 569/1870/914 570/1871/915 568/1872/916\nf 568/1872/916 599/1873/917 569/1870/914\nf 571/1874/918 594/1875/919 595/1876/920\nf 601/1877/921 573/1878/922 574/1879/923\nf 574/1879/923 572/1880/924 601/1877/921\nf 603/1881/925 575/1882/926 684/1883/927\nf 581/1884/928 583/1885/929 584/1886/930\nf 576/1887/931 575/1882/926 628/1888/932\nf 575/1889/926 597/1890/933 627/1891/934\nf 598/1892/935 594/1893/919 620/1894/936\nf 579/1895/937 673/1896/938 671/1897/939\nf 673/1898/938 660/1899/940 671/1900/939\nf 614/1901/941 601/1877/921 572/1880/924\nf 579/1895/937 604/1902/942 630/1903/943\nf 617/1904/944 612/1905/945 606/1906/946\nf 597/1890/933 605/1907/947 675/1908/948\nf 666/1909/949 652/1910/950 648/1911/951\nf 600/1912/952 590/1913/953 688/1914/954\nf 654/1915/955 585/1916/956 584/1917/930\nf 613/1918/957 607/1919/958 606/1920/946\nf 676/1921/959 606/1920/946 612/1922/945\nf 614/1901/941 581/1923/928 656/1924/960\nf 582/1925/961 656/1926/960 581/1884/928\nf 616/1927/962 587/1928/963 586/1929/964\nf 578/1930/965 671/1900/939 660/1899/940\nf 596/1931/966 628/1888/932 575/1882/926\nf 574/1879/923 594/1875/919 571/1874/918\nf 584/1917/930 583/1932/929 654/1915/955\nf 585/1933/956 654/1934/955 588/1935/967\nf 612/1922/945 617/1936/944 611/1937/968\nf 666/1909/949 658/1938/969 580/1939/970\nf 624/1940/971 657/1941/972 680/1942/973\nf 659/1943/974 651/1944/975 624/1940/971\nf 675/1908/948 627/1891/934 597/1890/933\nf 617/1936/944 636/1945/976 672/1946/977\nf 636/1947/976 617/1904/944 662/1948/978\nf 672/1946/977 647/1949/979 617/1936/944\nf 635/1950/980 662/1948/978 617/1904/944\nf 682/1951/981 650/1952/982 646/1953/983\nf 593/1954/984 592/1955/985 591/1956/986\nf 585/1933/956 677/1957/987 672/1946/977\nf 675/1908/948 644/1958/988 627/1891/934\nf 657/1941/972 642/1959/989 680/1942/973\nf 662/1960/978 635/1961/980 607/1919/958\nf 586/1929/964 607/1919/958 608/1962/990\nf 636/1947/976 662/1948/978 585/1916/956\nf 672/1946/977 636/1945/976 585/1933/956\nf 666/1909/949 649/1963/991 658/1938/969\nf 671/1897/939 648/1911/951 579/1895/937\nf 674/1964/992 640/1965/993 641/1966/994\nf 643/1967/995 680/1942/973 642/1959/989\nf 597/1968/933 639/1969/996 665/1970/997\nf 627/1971/934 644/1972/988 631/1973/998\nf 665/1970/997 605/1974/947 597/1968/933\nf 682/1951/981 661/1975/999 650/1952/982\nf 620/1894/936 637/1976/1000 621/1977/1001\nf 669/1978/1002 634/1979/1003 577/1980/1004\nf 576/1887/931 628/1888/932 577/1981/1004\nf 656/1924/960 640/1982/993 614/1901/941\nf 627/1891/934 596/1983/966 575/1889/926\nf 667/1984/1005 641/1966/994 616/1985/962\nf 641/1966/994 656/1986/960 616/1985/962\nf 643/1967/995 642/1959/989 633/1987/1006\nf 662/1960/978 587/1928/963 632/1988/1007\nf 685/1989/1008 650/1952/982 637/1976/1000\nf 568/1872/916 665/1990/997 599/1873/917\nf 668/1991/1009 599/1992/917 665/1993/997\nf 583/1994/929 653/1995/1010 654/1996/955\nf 639/1969/996 597/1968/933 575/1997/926\nf 665/1990/997 568/1872/916 605/1907/947\nf 580/1939/970 674/1964/992 652/1910/950\nf 650/1952/982 661/1975/999 621/1977/1001\nf 679/1998/1011 602/1999/1012 670/2000/1013\nf 574/1879/923 626/2001/1014 637/2002/1000\nf 653/1995/1010 618/2003/1015 681/2004/1016\nf 638/2005/1017 609/2006/1018 592/1955/985\nf 571/1874/918 595/1876/920 623/2007/1019\nf 591/1956/986 600/1912/952 668/2008/1009\nf 647/1949/979 611/1937/968 617/1936/944\nf 644/1972/988 643/2009/995 631/1973/998\nf 582/1925/961 584/1886/930 632/1988/1007\nf 674/1964/992 641/1966/994 652/1910/950\nf 595/1876/920 680/2010/973 623/2007/1019\nf 570/2011/915 569/2012/914 571/1874/918\nf 608/1962/990 616/1927/962 586/1929/964\nf 682/1951/981 622/2013/1020 578/2014/965\nf 602/1999/1012 603/1881/925 684/1883/927\nf 662/1960/978 586/1929/964 587/1928/963\nf 656/1986/960 641/1966/994 640/1965/993\nf 612/2015/945 619/2016/1021 676/2017/959\nf 619/2016/1021 612/2015/945 679/1998/1011\nf 598/1892/935 661/1975/999 659/2018/974\nf 652/1910/950 641/1966/994 667/1984/1005\nf 642/1959/989 657/1941/972 634/1979/1003\nf 611/1937/968 647/1949/979 610/2019/1022\nf 681/2004/1016 655/2020/1023 569/2012/914\nf 670/2000/1013 619/2016/1021 679/1998/1011\nf 652/1910/950 667/1984/1005 604/1902/942\nf 570/1871/915 675/1908/948 568/1872/916\nf 652/1910/950 666/1909/949 580/1939/970\nf 574/1879/923 620/2021/936 594/1875/919\nf 620/2021/936 574/1879/923 637/2002/1000\nf 621/1977/1001 637/1976/1000 650/1952/982\nf 585/1916/956 662/1948/978 632/2022/1007\nf 657/1941/972 624/1940/971 651/1944/975\nf 623/2007/1019 680/2010/973 687/2023/1024\nf 602/2024/1012 638/2025/1017 603/2026/925\nf 622/2013/1020 682/1951/981 646/1953/983\nf 601/2027/921 614/2028/941 640/1965/993\nf 629/2029/1025 650/1952/982 685/1989/1008\nf 678/2030/1026 670/2000/1013 602/1999/1012\nf 618/2003/1015 583/1994/929 614/1901/941\nf 606/1920/946 607/1919/958 635/1961/980\nf 683/2031/1027 576/1887/931 577/1981/1004\nf 674/1964/992 580/1939/970 601/2032/921\nf 643/2009/995 633/2033/1006 631/1973/998\nf 634/1979/1003 633/1987/1006 642/1959/989\nf 638/2025/1017 593/2034/984 639/2035/996\nf 611/1937/968 679/2036/1011 612/1922/945\nf 669/2037/1002 577/1981/1004 628/1888/932\nf 608/1962/990 607/1919/958 667/2038/1005\nf 575/1997/926 603/2039/925 639/1969/996\nf 657/1941/972 577/1980/1004 634/1979/1003\nf 606/1906/946 635/1950/980 617/1904/944\nf 625/2040/1028 646/1953/983 629/2029/1025\nf 630/1903/943 673/1896/938 579/1895/937\nf 686/2041/1029 629/2042/1025 685/2043/1008\nf 616/1985/962 608/2044/990 667/1984/1005\nf 665/1993/997 593/2034/984 668/1991/1009\nf 670/2000/1013 664/2045/1030 619/2016/1021\nf 622/2046/1020 625/2047/1028 649/1963/991\nf 581/1923/928 614/1901/941 583/1994/929\nf 633/2048/1006 634/2049/1003 663/2050/1031\nf 629/2042/1025 649/1963/991 625/2047/1028\nf 637/2002/1000 686/2051/1029 685/2052/1008\nf 630/1903/943 604/1902/942 664/2053/1030\nf 590/1913/953 600/1912/952 591/1956/986\nf 592/1955/985 609/2006/1018 647/2054/979\nf 649/1963/991 671/1897/939 622/2046/1020\nf 602/1999/1012 679/1998/1011 615/2055/1032\nf 671/1900/939 578/1930/965 622/2056/1020\nf 574/1879/923 571/1874/918 681/2004/1016\nf 609/2006/1018 638/2005/1017 615/2057/1032\nf 604/2058/942 613/2059/957 664/2045/1030\nf 594/1893/919 598/1892/935 659/2018/974\nf 613/1918/957 667/2038/1005 607/1919/958\nf 653/1995/1010 569/2012/914 600/2060/952\nf 684/1883/927 575/1882/926 576/1887/931\nf 639/2035/996 603/2026/925 638/2025/1017\nf 595/1876/920 624/2061/971 680/2010/973\nf 592/2062/985 672/1946/977 677/1957/987\nf 652/1910/950 579/1895/937 648/1911/951\nf 622/2056/1020 646/2063/983 625/2064/1028\nf 573/1878/922 601/1877/921 580/2065/970\nf 585/1933/956 588/1935/967 677/1957/987\nf 585/1916/956 632/2022/1007 584/1917/930\nf 572/1880/924 618/2003/1015 614/1901/941\nf 620/1894/936 621/1977/1001 598/1892/935\nf 607/1919/958 586/1929/964 662/1960/978\nf 573/1878/922 580/2066/970 626/2001/1014\nf 584/1886/930 582/1925/961 581/1884/928\nf 610/2067/1022 615/2055/1032 679/1998/1011\nf 599/2068/917 600/2060/952 569/2012/914\nf 591/1956/986 668/2008/1009 593/1954/984\nf 600/2069/952 599/1992/917 668/1991/1009\nf 591/1956/986 677/2070/987 589/2071/1033\nf 649/1963/991 629/2042/1025 686/2041/1029\nf 647/2054/979 672/2072/977 592/1955/985\nf 604/1902/942 579/1895/937 652/1910/950\nf 667/1984/1005 613/2073/957 604/1902/942\nf 688/2074/954 589/2075/1033 588/2076/967\nf 577/1980/1004 657/1941/972 651/1944/975\nf 589/2077/1033 677/1957/987 588/1935/967\nf 602/1999/1012 615/2055/1032 638/2078/1017\nf 640/1965/993 674/1964/992 601/2027/921\nf 618/2003/1015 572/1880/924 681/2004/1016\nf 654/1996/955 653/1995/1010 688/2074/954\nf 594/2079/919 659/1943/974 624/1940/971\nf 630/2080/943 660/1899/940 673/1898/938\nf 663/2050/1031 628/1888/932 596/1931/966\nf 677/2070/987 591/1956/986 592/1955/985\nf 589/2071/1033 590/1913/953 591/1956/986\nf 576/1887/931 578/1930/965 660/1899/940\nf 655/2020/1023 571/1874/918 569/2012/914\nf 643/2009/995 644/1972/988 687/2081/1024\nf 688/2074/954 653/1995/1010 600/2060/952\nf 649/1963/991 648/1911/951 671/1897/939\nf 570/1871/915 687/2082/1024 675/1908/948\nf 615/2057/1032 610/2083/1022 609/2006/1018\nf 646/1953/983 650/1952/982 629/2029/1025\nf 583/1994/929 618/2003/1015 653/1995/1010\nf 578/2014/965 645/2084/1034 682/1951/981\nf 610/2083/1022 647/2054/979 609/2006/1018\nf 664/2045/1030 676/2017/959 619/2016/1021\nf 605/1907/947 568/1872/916 675/1908/948\nf 651/2085/975 659/2018/974 661/1975/999\nf 570/2011/915 571/1874/918 623/2007/1019\nf 687/2023/1024 680/2010/973 643/2086/995\nf 631/1973/998 663/2087/1031 627/1971/934\nf 661/1975/999 645/2084/1034 651/2085/975\nf 684/1883/927 678/2030/1026 602/1999/1012\nf 678/2030/1026 630/2080/943 664/2045/1030\nf 658/1938/969 626/2088/1014 580/1939/970\nf 661/1975/999 682/1951/981 645/2084/1034\nf 649/1963/991 666/1909/949 648/1911/951\nf 678/2030/1026 684/1883/927 630/2080/943\nf 660/1899/940 630/2080/943 684/1883/927\nf 621/1977/1001 661/1975/999 598/1892/935\nf 570/2011/915 623/2007/1019 687/2023/1024\nf 574/1879/923 681/2004/1016 572/1880/924\nf 588/2076/967 654/1996/955 688/2074/954\nf 627/1971/934 663/2087/1031 596/2089/966\nf 658/1938/969 649/1963/991 686/2041/1029\nf 675/1908/948 687/2090/1024 644/1958/988\nf 626/2088/1014 658/1938/969 686/2041/1029\nf 651/1944/975 683/2091/1027 577/1980/1004\nf 610/2019/1022 679/2036/1011 611/1937/968\nf 684/1883/927 576/1887/931 660/1899/940\nf 626/2001/1014 686/2051/1029 637/2002/1000\nf 587/1928/963 616/1927/962 582/1925/961\nf 656/1926/960 582/1925/961 616/1927/962\nf 688/1914/954 590/1913/953 589/2071/1033\nf 606/1920/946 676/2092/959 613/1918/957\nf 632/1988/1007 587/1928/963 582/1925/961\nf 670/2000/1013 678/2030/1026 664/2045/1030\nf 664/2045/1030 613/2059/957 676/2017/959\nf 573/1878/922 626/2001/1014 574/1879/923\nf 651/2085/975 645/2084/1034 683/2093/1027\nf 683/2093/1027 645/2084/1034 578/2094/965\nf 663/2050/1031 669/2037/1002 628/1888/932\nf 578/1930/965 576/1887/931 683/2031/1027\nf 653/1995/1010 681/2004/1016 569/2012/914\nf 639/2035/996 593/2034/984 665/1993/997\nf 624/1940/971 595/2095/920 594/2079/919\nf 634/2049/1003 669/2037/1002 663/2050/1031\nf 631/1973/998 633/2033/1006 663/2087/1031\nf 592/1955/985 593/1954/984 638/2005/1017\nf 681/2004/1016 571/1874/918 655/2020/1023\nf 774/2096/1035 689/2097/1036 690/2098/1037\nf 691/2099/1038 709/2100/1039 773/2101/1040\nf 695/2102/1041 739/2103/1042 696/2104/1043\nf 698/2105/1044 776/2106/1045 700/2107/1046\nf 769/2108/1047 701/2109/1048 702/2110/1049\nf 705/2111/1050 762/2112/1051 704/2113/1052\nf 690/2098/1037 704/2113/1052 762/2112/1051\nf 692/2114/1053 758/2115/1054 711/2116/1055\nf 711/2117/1055 761/2118/1056 706/2119/1057\nf 706/2119/1057 761/2118/1056 723/2120/1058\nf 708/2121/1059 773/2101/1040 709/2100/1039\nf 722/2122/1060 712/2123/1061 717/2124/1062\nf 731/2125/1063 753/2126/1064 767/2127/1065\nf 753/2126/1064 693/2128/1066 694/2129/1067\nf 713/2130/1068 719/2131/1069 712/2132/1061\nf 766/2133/1070 770/2134/1071 719/2135/1069\nf 720/2136/1072 715/2137/1073 716/2138/1074\nf 694/2129/1067 770/2134/1071 766/2133/1070\nf 717/2139/1062 716/2140/1074 722/2141/1060\nf 716/2140/1074 717/2139/1062 720/2142/1072\nf 702/2110/1049 703/2143/1075 769/2108/1047\nf 691/2099/1038 762/2112/1051 705/2111/1050\nf 693/2144/1066 738/2145/1076 756/2146/1077\nf 690/2098/1037 729/2147/1078 704/2113/1052\nf 761/2148/1056 755/2149/1079 735/2150/1080\nf 718/2151/1081 723/2120/1058 761/2118/1056\nf 778/2152/1082 768/2153/1083 779/2154/1084\nf 704/2155/1052 729/2156/1078 734/2157/1085\nf 722/2141/1060 714/2158/1086 747/2159/1087\nf 747/2160/1087 745/2161/1088 722/2122/1060\nf 751/2162/1089 766/2133/1070 760/2163/1090\nf 747/2160/1087 739/2164/1042 749/2165/1091\nf 715/2137/1073 703/2143/1075 714/2166/1086\nf 714/2158/1086 722/2141/1060 716/2140/1074\nf 745/2161/1088 747/2160/1087 749/2165/1091\nf 775/2167/1092 747/2159/1087 776/2106/1045\nf 758/2168/1054 728/2169/1093 741/2170/1094\nf 779/2171/1084 742/2172/1095 727/2173/1096\nf 743/2174/1097 774/2096/1035 725/2175/1098\nf 749/2176/1091 713/2130/1068 745/2177/1088\nf 744/2178/1099 764/2179/1100 746/2180/1101\nf 739/2164/1042 747/2160/1087 775/2181/1092\nf 748/2182/1102 743/2174/1097 725/2175/1098\nf 752/2183/1103 777/2184/1104 734/2157/1085\nf 744/2178/1099 734/2157/1085 777/2184/1104\nf 699/2185/1105 749/2176/1091 739/2103/1042\nf 751/2162/1089 760/2163/1090 708/2186/1059\nf 778/2152/1082 779/2154/1084 732/2187/1106\nf 718/2151/1081 761/2118/1056 735/2188/1080\nf 706/2189/1057 723/2190/1058 724/2191/1107\nf 755/2192/1079 741/2193/1094 757/2194/1108\nf 772/2195/1109 734/2157/1085 744/2178/1099\nf 752/2183/1103 757/2196/1108 777/2184/1104\nf 761/2197/1056 711/2116/1055 758/2115/1054\nf 697/2198/1110 695/2199/1041 708/2200/1059\nf 725/2175/1098 762/2112/1051 773/2101/1040\nf 720/2201/1072 763/2202/1111 710/2203/1112\nf 703/2143/1075 702/2110/1049 714/2166/1086\nf 707/2204/1113 723/2205/1058 689/2206/1036\nf 713/2130/1068 749/2176/1091 699/2185/1105\nf 758/2115/1054 741/2193/1094 755/2192/1079\nf 734/2157/1085 729/2207/1078 752/2183/1103\nf 778/2152/1082 756/2208/1077 768/2153/1083\nf 731/2125/1063 767/2127/1065 751/2162/1089\nf 769/2209/1047 723/2205/1058 707/2204/1113\nf 709/2210/1039 751/2162/1089 708/2186/1059\nf 690/2098/1037 689/2097/1036 718/2211/1081\nf 735/2212/1080 690/2098/1037 718/2211/1081\nf 750/2213/1114 703/2143/1075 715/2137/1073\nf 701/2109/1048 769/2108/1047 707/2204/1113\nf 774/2096/1035 762/2112/1051 725/2175/1098\nf 772/2195/1109 704/2155/1052 734/2157/1085\nf 766/2133/1070 751/2162/1089 767/2127/1065\nf 703/2143/1075 750/2213/1114 769/2108/1047\nf 692/2114/1053 728/2214/1093 758/2115/1054\nf 763/2202/1111 692/2114/1053 711/2116/1055\nf 731/2125/1063 730/2215/1115 753/2126/1064\nf 735/2150/1080 757/2216/1108 752/2217/1103\nf 735/2150/1080 752/2217/1103 729/2218/1078\nf 754/2219/1116 768/2153/1083 736/2220/1117\nf 706/2189/1057 724/2191/1107 711/2221/1055\nf 776/2106/1045 698/2105/1044 775/2167/1092\nf 771/2222/1118 720/2201/1072 717/2223/1062\nf 777/2184/1104 741/2170/1094 744/2178/1099\nf 691/2099/1038 705/2111/1050 727/2173/1096\nf 711/2224/1055 724/2225/1107 710/2226/1112\nf 730/2215/1115 731/2125/1063 759/2227/1119\nf 746/2180/1101 772/2195/1109 744/2178/1099\nf 696/2228/1043 698/2229/1044 725/2175/1098\nf 710/2226/1112 724/2225/1107 750/2230/1114\nf 714/2166/1086 716/2138/1074 715/2137/1073\nf 768/2153/1083 754/2219/1116 779/2154/1084\nf 731/2125/1063 709/2210/1039 691/2231/1038\nf 738/2232/1076 768/2153/1083 756/2208/1077\nf 751/2162/1089 709/2210/1039 731/2125/1063\nf 712/2132/1061 745/2177/1088 713/2130/1068\nf 741/2170/1094 777/2184/1104 757/2196/1108\nf 737/2233/1120 738/2145/1076 693/2144/1066\nf 733/2234/1121 764/2179/1100 744/2178/1099\nf 744/2178/1099 741/2170/1094 728/2169/1093\nf 765/2235/1122 705/2236/1050 746/2237/1101\nf 701/2109/1048 700/2238/1046 776/2239/1045\nf 704/2155/1052 772/2195/1109 746/2180/1101\nf 775/2181/1092 696/2240/1043 739/2164/1042\nf 714/2158/1086 776/2106/1045 747/2159/1087\nf 745/2161/1088 712/2123/1061 722/2122/1060\nf 759/2227/1119 754/2241/1116 736/2242/1117\nf 725/2175/1098 698/2229/1044 748/2182/1102\nf 699/2243/1105 766/2133/1070 713/2244/1068\nf 757/2216/1108 735/2150/1080 755/2149/1079\nf 692/2114/1053 763/2202/1111 770/2245/1071\nf 743/2174/1097 707/2246/1113 774/2096/1035\nf 726/2247/1123 717/2124/1062 712/2123/1061\nf 697/2248/1110 708/2186/1059 760/2163/1090\nf 738/2145/1076 737/2233/1120 736/2249/1117\nf 696/2228/1043 725/2175/1098 695/2199/1041\nf 720/2201/1072 771/2222/1118 763/2202/1111\nf 739/2103/1042 695/2102/1041 697/2250/1110\nf 748/2182/1102 698/2229/1044 700/2251/1046\nf 759/2227/1119 736/2242/1117 737/2252/1120\nf 707/2246/1113 743/2174/1097 701/2253/1048\nf 715/2137/1073 721/2254/1124 750/2213/1114\nf 738/2232/1076 736/2220/1117 768/2153/1083\nf 692/2114/1053 740/2255/1125 693/2144/1066\nf 733/2256/1121 778/2152/1082 764/2257/1100\nf 770/2245/1071 771/2222/1118 719/2258/1069\nf 776/2259/1045 714/2260/1086 702/2261/1049\nf 767/2127/1065 753/2126/1064 694/2129/1067\nf 773/2101/1040 708/2121/1059 725/2175/1098\nf 691/2231/1038 742/2262/1095 731/2125/1063\nf 715/2137/1073 720/2136/1072 721/2254/1124\nf 696/2240/1043 775/2181/1092 698/2263/1044\nf 771/2222/1118 717/2223/1062 726/2264/1123\nf 779/2154/1084 727/2265/1096 732/2187/1106\nf 710/2203/1112 721/2266/1124 720/2201/1072\nf 765/2235/1122 727/2265/1096 705/2236/1050\nf 778/2152/1082 732/2187/1106 765/2235/1122\nf 730/2215/1115 759/2227/1119 737/2252/1120\nf 766/2133/1070 767/2127/1065 694/2129/1067\nf 719/2131/1069 713/2130/1068 766/2267/1070\nf 733/2268/1121 693/2144/1066 756/2146/1077\nf 710/2269/1112 750/2213/1114 721/2254/1124\nf 765/2235/1122 746/2237/1101 764/2257/1100\nf 763/2202/1111 771/2222/1118 770/2245/1071\nf 755/2192/1079 761/2197/1056 758/2115/1054\nf 776/2239/1045 702/2110/1049 701/2109/1048\nf 748/2182/1102 701/2253/1048 743/2174/1097\nf 737/2252/1120 693/2270/1066 753/2126/1064\nf 765/2235/1122 764/2257/1100 778/2152/1082\nf 733/2268/1121 728/2214/1093 692/2114/1053\nf 732/2187/1106 727/2265/1096 765/2235/1122\nf 695/2199/1041 725/2175/1098 708/2121/1059\nf 723/2120/1058 718/2151/1081 689/2271/1036\nf 727/2173/1096 742/2172/1095 691/2099/1038\nf 778/2152/1082 733/2256/1121 756/2208/1077\nf 740/2255/1125 694/2272/1067 693/2144/1066\nf 689/2097/1036 774/2096/1035 707/2246/1113\nf 742/2262/1095 759/2227/1119 731/2125/1063\nf 711/2116/1055 710/2203/1112 763/2202/1111\nf 753/2126/1064 730/2215/1115 737/2252/1120\nf 699/2243/1105 760/2163/1090 766/2133/1070\nf 700/2251/1046 701/2253/1048 748/2182/1102\nf 779/2171/1084 754/2273/1116 742/2172/1095\nf 770/2245/1071 740/2255/1125 692/2114/1053\nf 691/2099/1038 773/2101/1040 762/2112/1051\nf 735/2212/1080 729/2147/1078 690/2098/1037\nf 719/2131/1069 726/2274/1123 712/2132/1061\nf 754/2241/1116 759/2227/1119 742/2262/1095\nf 770/2245/1071 694/2272/1067 740/2255/1125\nf 746/2180/1101 705/2275/1050 704/2155/1052\nf 760/2276/1090 699/2185/1105 697/2250/1110\nf 697/2250/1110 699/2185/1105 739/2103/1042\nf 690/2098/1037 762/2112/1051 774/2096/1035\nf 771/2222/1118 726/2264/1123 719/2258/1069\nf 750/2230/1114 724/2225/1107 769/2209/1047\nf 724/2225/1107 723/2205/1058 769/2209/1047\nf 693/2144/1066 733/2268/1121 692/2114/1053\nf 728/2169/1093 733/2234/1121 744/2178/1099\nf 879/2277/1126 780/2278/1127 781/2279/1128\nf 809/2280/1129 784/2281/1130 839/2282/1131\nf 785/2283/1132 783/2284/1133 784/2281/1130\nf 824/2285/1134 790/2286/1135 791/2287/1136\nf 791/2287/1136 792/2288/1137 793/2289/1138\nf 795/2290/1139 790/2286/1135 796/2291/1140\nf 794/2292/1141 882/2293/1142 797/2294/1143\nf 797/2294/1143 882/2293/1142 823/2295/1144\nf 803/2296/1145 783/2284/1133 782/2297/1146\nf 787/2298/1147 866/2299/1148 846/2300/1149\nf 846/2300/1149 866/2299/1148 786/2301/1150\nf 786/2302/1150 868/2303/1151 805/2304/1152\nf 789/2305/1153 788/2306/1154 812/2307/1155\nf 780/2308/1127 807/2309/1156 802/2310/1157\nf 789/2311/1153 812/2312/1155 813/2313/1158\nf 826/2314/1159 814/2315/1160 819/2316/1161\nf 883/2317/1162 872/2318/1163 875/2319/1164\nf 857/2320/1165 788/2321/1154 789/2311/1153\nf 822/2322/1166 813/2313/1158 821/2323/1167\nf 808/2324/1168 854/2325/1169 824/2326/1134\nf 790/2286/1135 824/2285/1134 867/2327/1170\nf 789/2311/1153 813/2313/1158 822/2322/1166\nf 827/2328/1171 840/2329/1172 852/2330/1173\nf 819/2331/1161 818/2332/1174 826/2333/1159\nf 799/2334/1175 800/2335/1176 798/2336/1177\nf 784/2281/1130 783/2284/1133 803/2296/1145\nf 829/2337/1178 808/2324/1168 791/2338/1136\nf 784/2281/1130 809/2339/1129 785/2283/1132\nf 801/2340/1179 802/2341/1157 807/2342/1156\nf 830/2343/1180 819/2344/1161 814/2345/1160\nf 781/2346/1128 834/2347/1181 782/2297/1146\nf 872/2318/1163 883/2317/1162 806/2348/1182\nf 835/2349/1183 806/2348/1182 856/2350/1184\nf 885/2351/1185 855/2352/1186 859/2353/1187\nf 827/2328/1171 834/2354/1181 840/2329/1172\nf 826/2333/1159 816/2355/1188 888/2356/1189\nf 888/2357/1189 851/2358/1190 826/2314/1159\nf 817/2359/1191 800/2335/1176 816/2360/1188\nf 816/2355/1188 826/2333/1159 861/2361/1192\nf 851/2358/1190 888/2357/1189 844/2362/1193\nf 845/2363/1194 846/2300/1149 847/2364/1195\nf 880/2365/1196 888/2356/1189 882/2293/1142\nf 874/2366/1197 833/2367/1198 848/2368/1199\nf 807/2342/1156 879/2369/1126 829/2337/1178\nf 844/2370/1193 815/2371/1200 851/2372/1190\nf 850/2373/1201 870/2374/1202 852/2330/1173\nf 810/2375/1203 825/2376/1204 869/2377/1205\nf 792/2378/1137 888/2357/1189 880/2379/1196\nf 876/2380/1206 848/2368/1199 840/2329/1172\nf 850/2373/1201 840/2329/1172 848/2368/1199\nf 795/2290/1139 844/2370/1193 792/2288/1137\nf 868/2303/1151 786/2302/1150 804/2381/1207\nf 885/2351/1185 859/2353/1187 836/2382/1208\nf 868/2303/1151 841/2383/1209 858/2384/1210\nf 806/2348/1182 883/2317/1162 839/2385/1131\nf 805/2386/1152 871/2387/1211 828/2388/1212\nf 852/2330/1173 840/2329/1172 850/2373/1201\nf 876/2380/1206 864/2389/1213 848/2368/1199\nf 804/2390/1207 786/2301/1150 866/2299/1148\nf 858/2391/1210 876/2392/1206 834/2393/1181\nf 867/2394/1170 824/2326/1134 854/2325/1169\nf 865/2395/1214 796/2396/1140 854/2325/1169\nf 854/2325/1169 796/2396/1140 867/2394/1170\nf 855/2397/1186 843/2398/1215 842/2399/1216\nf 829/2337/1178 886/2400/1217 785/2283/1132\nf 878/2401/1218 884/2402/1219 869/2377/1205\nf 803/2403/1145 782/2404/1146 827/2328/1171\nf 827/2405/1171 782/2297/1146 834/2347/1181\nf 800/2406/1176 799/2407/1175 816/2408/1188\nf 860/2409/1220 849/2410/1221 859/2353/1187\nf 802/2310/1157 871/2411/1211 780/2308/1127\nf 853/2412/1222 800/2335/1176 817/2359/1191\nf 815/2371/1200 844/2370/1193 795/2290/1139\nf 828/2388/1212 786/2413/1150 805/2386/1152\nf 871/2414/1211 805/2304/1152 780/2278/1127\nf 885/2351/1185 863/2415/1223 855/2352/1186\nf 877/2416/1224 871/2411/1211 802/2310/1157\nf 862/2417/1225 864/2418/1213 841/2419/1209\nf 784/2281/1130 849/2420/1221 838/2421/1226\nf 781/2279/1128 780/2278/1127 820/2422/1227\nf 858/2391/1210 781/2423/1128 820/2424/1227\nf 808/2324/1168 785/2283/1132 809/2339/1129\nf 879/2369/1126 886/2400/1217 829/2337/1178\nf 802/2310/1157 801/2425/1179 798/2426/1177\nf 800/2335/1176 853/2412/1222 877/2427/1224\nf 883/2317/1162 875/2319/1164 854/2325/1169\nf 787/2298/1147 833/2428/1198 866/2299/1148\nf 806/2348/1182 835/2349/1183 872/2318/1163\nf 852/2330/1173 870/2374/1202 889/2429/1228\nf 781/2346/1128 782/2297/1146 879/2369/1126\nf 858/2391/1210 864/2418/1213 876/2392/1206\nf 865/2430/1214 795/2290/1139 796/2291/1140\nf 843/2431/1215 855/2432/1186 831/2433/1229\nf 785/2283/1132 808/2324/1168 829/2337/1178\nf 882/2293/1142 794/2292/1141 880/2365/1196\nf 875/2319/1164 865/2395/1214 854/2325/1169\nf 818/2434/1174 819/2344/1161 869/2377/1205\nf 878/2401/1218 869/2377/1205 819/2344/1161\nf 784/2281/1130 803/2435/1145 832/2436/1230\nf 875/2319/1164 822/2322/1166 865/2395/1214\nf 783/2284/1133 785/2283/1132 886/2400/1217\nf 818/2332/1174 861/2361/1192 826/2333/1159\nf 877/2427/1224 798/2336/1177 800/2335/1176\nf 869/2377/1205 825/2376/1204 818/2434/1174\nf 832/2437/1230 859/2353/1187 849/2410/1221\nf 807/2342/1156 794/2438/1141 797/2439/1143\nf 810/2440/1203 811/2441/1231 853/2442/1222\nf 809/2339/1129 854/2325/1169 808/2324/1168\nf 798/2426/1177 877/2416/1224 802/2310/1157\nf 816/2360/1188 861/2443/1192 817/2359/1191\nf 872/2318/1163 835/2349/1183 857/2320/1165\nf 814/2444/1160 821/2445/1167 830/2446/1180\nf 874/2447/1197 866/2299/1148 833/2428/1198\nf 786/2413/1150 828/2388/1212 811/2448/1231\nf 855/2352/1186 842/2449/1216 859/2353/1187\nf 837/2450/1232 870/2374/1202 850/2373/1201\nf 842/2399/1216 843/2398/1215 860/2451/1220\nf 850/2373/1201 848/2368/1199 833/2367/1198\nf 793/2452/1138 794/2453/1141 791/2454/1136\nf 880/2379/1196 793/2452/1138 792/2378/1137\nf 816/2355/1188 882/2293/1142 888/2356/1189\nf 851/2358/1190 814/2315/1160 826/2314/1159\nf 795/2290/1139 865/2430/1214 815/2371/1200\nf 887/2455/1233 860/2451/1220 843/2398/1215\nf 791/2338/1136 794/2438/1141 807/2342/1156\nf 807/2342/1156 829/2337/1178 791/2338/1136\nf 864/2418/1213 858/2391/1210 841/2419/1209\nf 846/2300/1149 884/2402/1219 847/2364/1195\nf 806/2348/1182 839/2385/1131 856/2350/1184\nf 849/2420/1221 860/2456/1220 887/2457/1233\nf 810/2375/1203 846/2300/1149 811/2458/1231\nf 888/2357/1189 792/2378/1137 844/2362/1193\nf 855/2432/1186 873/2459/1234 831/2433/1229\nf 884/2402/1219 810/2375/1203 869/2377/1205\nf 853/2460/1222 817/2359/1191 825/2461/1204\nf 787/2298/1147 845/2363/1194 788/2306/1154\nf 837/2462/1232 885/2351/1185 870/2463/1202\nf 865/2395/1214 822/2322/1166 821/2464/1167\nf 821/2445/1167 815/2371/1200 865/2430/1214\nf 812/2312/1155 847/2465/1195 813/2313/1158\nf 878/2401/1218 813/2466/1158 847/2364/1195\nf 781/2346/1128 858/2467/1210 834/2347/1181\nf 813/2466/1158 878/2401/1218 821/2468/1167\nf 828/2469/1212 853/2442/1222 811/2441/1231\nf 811/2458/1231 846/2300/1149 786/2301/1150\nf 882/2293/1142 816/2355/1188 799/2470/1175\nf 875/2319/1164 857/2320/1165 789/2311/1153\nf 839/2385/1131 883/2317/1162 809/2280/1129\nf 793/2452/1138 880/2379/1196 794/2453/1141\nf 878/2401/1218 819/2344/1161 830/2343/1180\nf 859/2353/1187 832/2437/1230 836/2382/1208\nf 792/2288/1137 791/2287/1136 790/2286/1135\nf 858/2384/1210 820/2422/1227 868/2303/1151\nf 881/2471/1235 832/2437/1230 803/2472/1145\nf 885/2351/1185 836/2382/1208 881/2471/1235\nf 835/2349/1183 887/2455/1233 843/2398/1215\nf 822/2322/1166 875/2319/1164 789/2311/1153\nf 804/2381/1207 841/2383/1209 868/2303/1151\nf 837/2473/1232 788/2306/1154 873/2459/1234\nf 818/2474/1174 817/2359/1191 861/2443/1192\nf 810/2475/1203 853/2460/1222 825/2461/1204\nf 854/2325/1169 809/2339/1129 883/2317/1162\nf 851/2372/1190 815/2371/1200 814/2444/1160\nf 857/2320/1165 875/2319/1164 872/2318/1163\nf 884/2402/1219 878/2401/1218 847/2364/1195\nf 860/2409/1220 859/2353/1187 842/2449/1216\nf 862/2476/1225 804/2390/1207 866/2299/1148\nf 873/2459/1234 855/2432/1186 863/2477/1223\nf 817/2359/1191 818/2474/1174 825/2461/1204\nf 882/2478/1142 799/2334/1175 823/2479/1144\nf 798/2336/1177 823/2479/1144 799/2334/1175\nf 797/2439/1143 801/2340/1179 807/2342/1156\nf 843/2398/1215 831/2480/1229 857/2320/1165\nf 808/2324/1168 824/2326/1134 791/2338/1136\nf 820/2422/1227 805/2304/1152 868/2303/1151\nf 803/2472/1145 889/2481/1228 881/2471/1235\nf 881/2471/1235 870/2463/1202 885/2351/1185\nf 837/2473/1232 833/2428/1198 787/2298/1147\nf 836/2382/1208 832/2437/1230 881/2471/1235\nf 881/2471/1235 889/2481/1228 870/2463/1202\nf 805/2304/1152 820/2422/1227 780/2278/1127\nf 873/2482/1234 863/2415/1223 885/2351/1185\nf 834/2347/1181 876/2483/1206 840/2484/1172\nf 832/2436/1230 849/2420/1221 784/2281/1130\nf 885/2351/1185 837/2462/1232 873/2482/1234\nf 845/2363/1194 812/2307/1155 788/2306/1154\nf 804/2485/1207 862/2417/1225 841/2419/1209\nf 864/2389/1213 862/2486/1225 848/2368/1199\nf 780/2487/1127 879/2369/1126 807/2342/1156\nf 856/2350/1184 839/2385/1131 838/2488/1226\nf 846/2300/1149 810/2375/1203 884/2402/1219\nf 857/2320/1165 835/2349/1183 843/2398/1215\nf 823/2489/1144 801/2490/1179 797/2491/1143\nf 886/2400/1217 782/2297/1146 783/2284/1133\nf 856/2350/1184 887/2455/1233 835/2349/1183\nf 857/2320/1165 831/2480/1229 788/2321/1154\nf 801/2492/1179 823/2479/1144 798/2336/1177\nf 838/2488/1226 887/2455/1233 856/2350/1184\nf 821/2445/1167 814/2444/1160 815/2371/1200\nf 847/2364/1195 812/2307/1155 845/2363/1194\nf 838/2421/1226 849/2420/1221 887/2457/1233\nf 787/2298/1147 846/2300/1149 845/2363/1194\nf 889/2429/1228 803/2403/1145 827/2328/1171\nf 827/2328/1171 852/2330/1173 889/2429/1228\nf 873/2459/1234 788/2306/1154 831/2433/1229\nf 867/2327/1170 796/2291/1140 790/2286/1135\nf 790/2286/1135 795/2290/1139 792/2288/1137\nf 839/2282/1131 784/2281/1130 838/2421/1226\nf 782/2297/1146 886/2400/1217 879/2369/1126\nf 862/2476/1225 866/2299/1148 874/2447/1197\nf 878/2401/1218 830/2343/1180 821/2468/1167\nf 853/2442/1222 828/2469/1212 877/2416/1224\nf 828/2469/1212 871/2411/1211 877/2416/1224\nf 788/2306/1154 837/2473/1232 787/2298/1147\nf 848/2493/1199 862/2476/1225 874/2447/1197\nf 833/2367/1198 837/2450/1232 850/2373/1201\nf 891/2494/1236 890/2495/1237 892/2496/1238\nf 890/2495/1237 891/2494/1236 919/2497/1239\nf 893/2498/1240 915/2499/1241 914/2500/1242\nf 921/2501/1243 895/2502/1244 951/2503/1245\nf 895/2502/1244 921/2501/1243 894/2504/1246\nf 902/2505/1247 904/2506/1248 905/2507/1249\nf 897/2508/1250 953/2509/1251 896/2510/1252\nf 896/2511/1252 952/2512/1253 917/2513/1254\nf 918/2514/1255 944/2515/1256 914/2516/1242\nf 900/2517/1257 997/2518/1258 938/2519/1259\nf 938/2519/1259 997/2518/1258 987/2520/1260\nf 934/2521/1261 894/2504/1246 921/2501/1243\nf 900/2522/1257 955/2523/1262 924/2524/1263\nf 940/2525/1264 926/2526/1265 931/2527/1266\nf 917/2513/1254 932/2528/1267 925/2529/1268\nf 948/2530/1269 982/2531/1270 978/2532/1271\nf 927/2533/1272 933/2534/1273 936/2535/1274\nf 934/2521/1261 983/2536/1275 902/2537/1247\nf 903/2538/1276 902/2505/1247 983/2539/1275\nf 937/2540/1277 907/2541/1278 908/2542/1279\nf 899/2543/1280 987/2520/1260 997/2518/1258\nf 916/2544/1281 896/2510/1252 953/2509/1251\nf 895/2502/1244 893/2498/1240 914/2500/1242\nf 904/2545/1248 906/2546/1282 905/2547/1249\nf 931/2548/1266 930/2549/1283 940/2550/1264\nf 948/2530/1269 901/2551/1284 985/2552/1285\nf 972/2553/1286 1007/2554/1287 984/2555/1288\nf 986/2556/1289 972/2553/1286 976/2557/1290\nf 932/2528/1267 917/2513/1254 952/2512/1253\nf 940/2550/1264 1000/2558/1291 961/2559/1292\nf 961/2560/1292 1001/2561/1293 940/2525/1264\nf 1000/2558/1291 940/2550/1264 971/2562/1294\nf 959/2563/1295 940/2525/1264 1001/2561/1293\nf 993/2564/1296 970/2565/1297 974/2566/1298\nf 913/2567/1299 911/2568/1300 912/2569/1301\nf 960/2570/1302 1000/2558/1291 979/2571/1303\nf 932/2528/1267 952/2512/1253 968/2572/1304\nf 984/2555/1288 1007/2554/1287 967/2573/1305\nf 1001/2574/1293 927/2533/1272 959/2575/1295\nf 961/2560/1292 960/2576/1302 1001/2561/1293\nf 1000/2558/1291 960/2570/1302 961/2559/1292\nf 948/2530/1269 985/2552/1285 973/2577/1306\nf 997/2578/1258 900/2522/1257 982/2531/1270\nf 939/2579/1307 965/2580/1308 966/2581/1309\nf 977/2582/1310 967/2573/1305 1007/2554/1287\nf 917/2583/1254 942/2584/1311 964/2585/1312\nf 1002/2586/1313 931/2587/1266 926/2588/1265\nf 952/2589/1253 956/2590/1314 968/2591/1304\nf 942/2584/1311 917/2583/1254 925/2592/1268\nf 993/2564/1296 974/2566/1298 989/2593/1315\nf 944/2515/1256 945/2594/1316 962/2595/1317\nf 999/2596/1318 906/2597/1282 1011/2598/1319\nf 995/2599/1320 898/2600/1321 958/2601/1322\nf 897/2508/1250 898/2602/1321 953/2509/1251\nf 1003/2603/1323 979/2571/1303 1000/2558/1291\nf 983/2536/1275 934/2521/1261 966/2604/1309\nf 952/2512/1253 896/2511/1252 916/2605/1281\nf 992/2606/1324 937/2607/1277 965/2580/1308\nf 965/2580/1308 937/2607/1277 983/2608/1275\nf 969/2609/1325 899/2543/1280 946/2610/1326\nf 977/2582/1310 988/2611/1327 967/2573/1305\nf 1001/2574/1293 957/2612/1328 908/2542/1279\nf 975/2613/1329 962/2595/1317 974/2566/1298\nf 890/2495/1237 919/2497/1239 942/2614/1311\nf 920/2615/1330 942/2616/1311 919/2617/1239\nf 905/2618/1249 906/2597/1282 999/2596/1318\nf 964/2585/1312 896/2619/1252 917/2583/1254\nf 942/2614/1311 925/2529/1268 890/2495/1237\nf 901/2551/1284 978/2532/1271 939/2579/1307\nf 994/2620/1331 942/2616/1311 920/2615/1330\nf 974/2566/1298 945/2594/1316 989/2593/1315\nf 1006/2621/1332 996/2622/1333 922/2623/1334\nf 895/2502/1244 962/2624/1317 950/2625/1335\nf 999/2596/1318 998/2626/1336 941/2627/1337\nf 963/2628/1338 912/2569/1301 928/2629/1339\nf 893/2498/1240 947/2630/1340 915/2499/1241\nf 971/2562/1294 940/2550/1264 930/2549/1283\nf 968/2591/1304 956/2590/1314 977/2631/1310\nf 903/2538/1276 957/2612/1328 904/2506/1248\nf 904/2545/1248 960/2576/1302 906/2546/1282\nf 979/2571/1303 906/2632/1282 960/2570/1302\nf 939/2579/1307 978/2532/1271 965/2580/1308\nf 915/2499/1241 947/2630/1340 1007/2633/1287\nf 892/2634/1238 893/2498/1240 891/2635/1236\nf 992/2636/1324 907/2541/1278 937/2540/1277\nf 993/2564/1296 969/2637/1325 946/2638/1326\nf 922/2623/1334 1005/2639/1341 923/2640/1342\nf 1001/2574/1293 908/2542/1279 907/2541/1278\nf 983/2608/1275 966/2581/1309 965/2580/1308\nf 931/2587/1266 1002/2586/1313 943/2641/1343\nf 943/2641/1343 1006/2621/1332 931/2587/1266\nf 918/2514/1255 986/2642/1289 989/2593/1315\nf 978/2532/1271 992/2606/1324 965/2580/1308\nf 967/2573/1305 958/2601/1322 984/2555/1288\nf 930/2549/1283 929/2643/1344 971/2562/1294\nf 998/2626/1336 891/2635/1236 981/2644/1345\nf 910/2645/1346 909/2646/1347 1003/2647/1323\nf 996/2622/1333 1006/2621/1332 943/2641/1343\nf 978/2532/1271 924/2524/1263 992/2606/1324\nf 892/2496/1238 890/2495/1237 932/2528/1267\nf 978/2532/1271 901/2551/1284 948/2530/1269\nf 895/2502/1244 914/2500/1242 944/2648/1256\nf 944/2648/1256 962/2624/1317 895/2502/1244\nf 1011/2598/1319 906/2597/1282 909/2649/1347\nf 945/2594/1316 974/2566/1298 962/2595/1317\nf 960/2576/1302 957/2650/1328 1001/2561/1293\nf 984/2555/1288 976/2557/1290 972/2553/1286\nf 947/2630/1340 1010/2651/1348 1007/2633/1287\nf 922/2652/1334 923/2653/1342 963/2654/1338\nf 946/2638/1326 970/2565/1297 993/2564/1296\nf 921/2655/1243 966/2581/1309 934/2656/1261\nf 980/2657/1349 994/2620/1331 920/2615/1330\nf 980/2658/1349 910/2645/1346 911/2568/1300\nf 954/2659/1350 975/2613/1329 974/2566/1298\nf 1004/2660/1351 922/2623/1334 996/2622/1333\nf 1002/2586/1313 926/2588/1265 936/2661/1274\nf 941/2627/1337 934/2521/1261 905/2618/1249\nf 936/2535/1274 959/2575/1295 927/2533/1272\nf 1008/2662/1352 898/2602/1321 897/2508/1250\nf 939/2579/1307 921/2663/1243 901/2551/1284\nf 977/2631/1310 956/2590/1314 988/2664/1327\nf 958/2601/1322 967/2573/1305 988/2611/1327\nf 963/2654/1338 964/2665/1312 913/2666/1299\nf 930/2549/1283 931/2548/1266 1006/2667/1332\nf 995/2668/1320 953/2509/1251 898/2602/1321\nf 896/2619/1252 964/2585/1312 923/2669/1342\nf 920/2670/1330 910/2645/1346 980/2658/1349\nf 984/2555/1288 958/2601/1322 898/2600/1321\nf 926/2526/1265 940/2525/1264 959/2563/1295\nf 976/2671/1290 969/2637/1325 993/2564/1296\nf 949/2672/1353 954/2659/1350 970/2565/1297\nf 907/2541/1278 992/2636/1324 927/2533/1272\nf 955/2673/1262 900/2674/1257 938/2519/1259\nf 1009/2675/1354 975/2676/1329 954/2677/1350\nf 996/2622/1333 943/2641/1343 991/2678/1355\nf 946/2679/1326 973/2577/1306 949/2680/1353\nf 902/2537/1247 905/2618/1249 934/2521/1261\nf 988/2664/1327 990/2681/1356 958/2682/1322\nf 980/2658/1349 911/2568/1300 913/2567/1299\nf 954/2677/1350 949/2680/1353 973/2577/1306\nf 962/2624/1317 975/2683/1329 1009/2684/1354\nf 955/2673/1262 991/2678/1355 924/2685/1263\nf 920/2686/1330 999/2596/1318 910/2687/1346\nf 912/2569/1301 971/2688/1294 928/2629/1339\nf 973/2577/1306 946/2679/1326 997/2578/1258\nf 922/2623/1334 935/2689/1357 1006/2621/1332\nf 997/2518/1258 946/2610/1326 899/2543/1280\nf 895/2502/1244 998/2626/1336 893/2498/1240\nf 928/2629/1339 935/2690/1357 963/2628/1338\nf 924/2685/1263 991/2678/1355 933/2691/1273\nf 914/2516/1242 986/2642/1289 918/2514/1255\nf 933/2534/1273 927/2533/1272 992/2636/1324\nf 999/2596/1318 920/2686/1330 891/2635/1236\nf 923/2640/1342 897/2508/1250 896/2510/1252\nf 964/2665/1312 963/2654/1338 923/2653/1342\nf 915/2692/1241 1007/2554/1287 972/2553/1286\nf 912/2693/1301 1003/2694/1323 1000/2695/1291\nf 978/2532/1271 982/2531/1270 900/2522/1257\nf 946/2696/1326 949/2672/1353 970/2565/1297\nf 951/2697/1245 901/2551/1284 921/2663/1243\nf 906/2632/1282 979/2571/1303 909/2698/1347\nf 960/2576/1302 904/2545/1248 957/2650/1328\nf 894/2504/1246 934/2521/1261 941/2627/1337\nf 944/2515/1256 918/2514/1255 945/2594/1316\nf 927/2533/1272 1001/2574/1293 907/2541/1278\nf 951/2697/1245 950/2699/1335 901/2551/1284\nf 904/2506/1248 902/2505/1247 903/2538/1276\nf 929/2700/1344 1006/2621/1332 935/2689/1357\nf 919/2701/1239 891/2635/1236 920/2686/1330\nf 994/2620/1331 980/2657/1349 913/2666/1299\nf 973/2577/1306 1009/2675/1354 954/2677/1350\nf 971/2688/1294 912/2569/1301 1000/2702/1291\nf 924/2524/1263 978/2532/1271 900/2522/1257\nf 992/2606/1324 924/2524/1263 933/2703/1273\nf 898/2600/1321 976/2557/1290 984/2555/1288\nf 1003/2603/1323 909/2698/1347 979/2571/1303\nf 959/2575/1295 936/2535/1274 926/2704/1265\nf 922/2705/1334 963/2628/1338 935/2690/1357\nf 966/2581/1309 921/2655/1243 939/2579/1307\nf 941/2627/1337 998/2626/1336 894/2504/1246\nf 914/2706/1242 972/2553/1286 986/2556/1289\nf 955/2673/1262 938/2519/1259 987/2520/1260\nf 990/2707/1356 916/2544/1281 953/2509/1251\nf 1003/2647/1323 912/2569/1301 911/2568/1300\nf 936/2661/1274 933/2691/1273 991/2678/1355\nf 1003/2647/1323 911/2568/1300 910/2645/1346\nf 897/2508/1250 987/2520/1260 899/2543/1280\nf 981/2644/1345 891/2635/1236 893/2498/1240\nf 977/2631/1310 1010/2708/1348 968/2591/1304\nf 1011/2598/1319 910/2687/1346 999/2596/1318\nf 973/2577/1306 997/2578/1258 982/2531/1270\nf 892/2496/1238 932/2528/1267 1010/2709/1348\nf 935/2690/1357 928/2629/1339 929/2710/1344\nf 970/2565/1297 954/2659/1350 974/2566/1298\nf 905/2618/1249 999/2596/1318 941/2627/1337\nf 929/2710/1344 928/2629/1339 971/2688/1294\nf 991/2678/1355 943/2641/1343 1002/2586/1313\nf 925/2529/1268 932/2528/1267 890/2495/1237\nf 897/2508/1250 923/2640/1342 1005/2639/1341\nf 976/2671/1290 989/2593/1315 986/2642/1289\nf 892/2634/1238 947/2630/1340 893/2498/1240\nf 1010/2651/1348 977/2711/1310 1007/2633/1287\nf 956/2590/1314 952/2589/1253 990/2681/1356\nf 989/2593/1315 976/2671/1290 993/2564/1296\nf 1005/2639/1341 922/2623/1334 1004/2660/1351\nf 1004/2660/1351 991/2678/1355 955/2673/1262\nf 985/2552/1285 901/2551/1284 950/2699/1335\nf 973/2577/1306 982/2531/1270 948/2530/1269\nf 1004/2660/1351 955/2673/1262 1005/2639/1341\nf 987/2520/1260 1005/2639/1341 955/2673/1262\nf 945/2594/1316 918/2514/1255 989/2593/1315\nf 892/2634/1238 1010/2651/1348 947/2630/1340\nf 895/2502/1244 894/2504/1246 998/2626/1336\nf 952/2589/1253 916/2712/1281 990/2681/1356\nf 985/2552/1285 1009/2675/1354 973/2577/1306\nf 932/2528/1267 968/2572/1304 1010/2709/1348\nf 950/2699/1335 1009/2675/1354 985/2552/1285\nf 964/2665/1312 994/2620/1331 913/2666/1299\nf 976/2557/1290 898/2600/1321 1008/2713/1352\nf 929/2643/1344 930/2549/1283 1006/2667/1332\nf 1005/2639/1341 987/2520/1260 897/2508/1250\nf 950/2625/1335 962/2624/1317 1009/2684/1354\nf 908/2542/1279 903/2538/1276 937/2540/1277\nf 983/2539/1275 937/2540/1277 903/2538/1276\nf 1011/2714/1319 909/2646/1347 910/2645/1346\nf 957/2612/1328 903/2538/1276 908/2542/1279\nf 996/2622/1333 991/2678/1355 1004/2660/1351\nf 991/2678/1355 1002/2586/1313 936/2661/1274\nf 951/2503/1245 895/2502/1244 950/2625/1335\nf 976/2671/1290 1008/2715/1352 969/2637/1325\nf 1008/2715/1352 899/2716/1280 969/2637/1325\nf 990/2707/1356 953/2509/1251 995/2668/1320\nf 899/2543/1280 1008/2662/1352 897/2508/1250\nf 999/2596/1318 891/2635/1236 998/2626/1336\nf 964/2665/1312 942/2616/1311 994/2620/1331\nf 972/2553/1286 914/2706/1242 915/2692/1241\nf 958/2717/1322 990/2707/1356 995/2668/1320\nf 956/2590/1314 990/2681/1356 988/2664/1327\nf 912/2569/1301 963/2628/1338 913/2567/1299\nf 998/2626/1336 981/2644/1345 893/2498/1240\nf 2284/2718/1358 2285/2719/1359 2283/2720/1360\nf 2375/2721/1361 2290/2722/1362 2289/2723/1363\nf 2278/2724/1364 2277/2725/1365 2297/2726/1366\nf 2356/2727/1367 2279/2728/1368 2278/2724/1364\nf 2306/2729/1369 2310/2730/1370 2314/2731/1371\nf 2342/2732/1372 2304/2733/1373 2296/2734/1374\nf 2274/2735/1375 2273/2736/1376 2304/2737/1373\nf 2311/2738/1377 2306/2739/1369 2307/2740/1378\nf 2313/2741/1379 2311/2738/1377 2303/2742/1380\nf 2286/2743/1381 2283/2744/1360 2350/2745/1382\nf 2302/2746/1383 2303/2742/1380 2361/2747/1384\nf 2273/2748/1376 2274/2749/1375 2275/2750/1385\nf 2289/2751/1363 2287/2752/1386 2375/2753/1361\nf 2293/2754/1387 2291/2755/1388 2292/2756/1389\nf 2279/2728/1368 2299/2757/1390 2278/2724/1364\nf 2317/2758/1391 2306/2759/1369 2313/2760/1379\nf 2326/2761/1392 2281/2762/1393 2338/2763/1394\nf 2321/2764/1395 2275/2750/1385 2274/2749/1375\nf 2312/2765/1396 2300/2766/1397 2301/2767/1398\nf 2323/2768/1399 2277/2725/1365 2362/2769/1400\nf 2355/2770/1401 2357/2771/1402 2314/2772/1371\nf 2331/2773/1403 2314/2731/1371 2357/2774/1402\nf 2345/2775/1404 2351/2776/1405 2337/2777/1406\nf 2293/2754/1387 2355/2778/1401 2308/2779/1407\nf 2314/2772/1371 2344/2780/1408 2355/2770/1401\nf 2357/2774/1402 2374/2781/1409 2331/2773/1403\nf 2357/2782/1402 2375/2753/1361 2332/2783/1410\nf 2328/2784/1411 2364/2785/1412 2329/2786/1413\nf 2307/2787/1378 2331/2773/1403 2374/2781/1409\nf 2357/2774/1402 2332/2788/1410 2284/2718/1358\nf 2377/2789/1414 2352/2790/1415 2348/2791/1416\nf 2359/2792/1417 2315/2793/1418 2289/2794/1363\nf 2335/2795/1419 2336/2796/1420 2330/2797/1421\nf 2374/2798/1409 2284/2799/1358 2286/2743/1381\nf 2351/2776/1405 2298/2800/1422 2337/2777/1406\nf 2329/2801/1413 2364/2802/1412 2360/2803/1423\nf 2373/2804/1424 2321/2805/1395 2334/2806/1425\nf 2345/2807/1404 2307/2740/1378 2288/2808/1426\nf 2363/2809/1427 2349/2810/1428 2296/2811/1374\nf 2296/2811/1374 2304/2737/1373 2363/2809/1427\nf 2323/2812/1399 2362/2813/1400 2339/2814/1429\nf 2291/2755/1388 2293/2754/1387 2316/2815/1430\nf 2279/2816/1368 2376/2817/1431 2337/2818/1406\nf 2283/2819/1360 2298/2820/1422 2350/2821/1382\nf 2288/2808/1426 2351/2822/1405 2345/2807/1404\nf 2288/2808/1426 2350/2745/1382 2351/2822/1405\nf 2300/2766/1397 2370/2823/1432 2372/2824/1433\nf 2292/2825/1389 2355/2826/1401 2293/2827/1387\nf 2343/2828/1434 2367/2829/1435 2333/2830/1436\nf 2276/2831/1437 2363/2809/1427 2304/2737/1373\nf 2374/2781/1409 2288/2832/1426 2307/2787/1378\nf 2361/2747/1384 2337/2818/1406 2376/2817/1431\nf 2330/2833/1421 2339/2814/1429 2362/2813/1400\nf 2322/2834/1438 2339/2835/1429 2338/2836/1394\nf 2293/2754/1387 2308/2779/1407 2365/2837/1439\nf 2316/2838/1430 2294/2839/1440 2291/2840/1388\nf 2370/2823/1432 2312/2765/1396 2309/2841/1441\nf 2371/2842/1442 2299/2757/1390 2315/2793/1418\nf 2337/2818/1406 2361/2747/1384 2345/2807/1404\nf 2294/2839/1440 2316/2838/1430 2363/2809/1427\nf 2301/2767/1398 2353/2843/1443 2280/2844/1444\nf 2338/2836/1394 2346/2845/1445 2322/2834/1438\nf 2281/2846/1393 2326/2847/1392 2347/2848/1446\nf 2353/2843/1443 2301/2767/1398 2300/2766/1397\nf 2378/2849/1447 2341/2850/1448 2295/2851/1449\nf 2321/2764/1395 2274/2749/1375 2380/2852/1450\nf 2319/2853/1451 2322/2834/1438 2364/2802/1412\nf 2354/2854/1452 2319/2853/1451 2364/2802/1412\nf 2286/2743/1381 2288/2808/1426 2374/2798/1409\nf 2349/2810/1428 2301/2855/1398 2280/2856/1444\nf 2287/2752/1386 2332/2783/1410 2375/2753/1361\nf 2277/2857/1365 2373/2804/1424 2362/2813/1400\nf 2282/2858/1453 2379/2859/1454 2340/2860/1455\nf 2296/2734/1374 2341/2861/1448 2342/2732/1372\nf 2317/2862/1391 2370/2863/1432 2309/2864/1441\nf 2370/2823/1432 2317/2758/1391 2372/2824/1433\nf 2326/2865/1392 2330/2797/1421 2336/2796/1420\nf 2334/2806/1425 2336/2866/1420 2335/2867/1419\nf 2328/2868/1411 2354/2869/1452 2364/2870/1412\nf 2281/2846/1393 2353/2843/1443 2379/2859/1454\nf 2290/2871/1362 2291/2840/1388 2294/2839/1440\nf 2275/2750/1385 2321/2764/1395 2277/2725/1365\nf 2304/2737/1373 2342/2872/1372 2274/2735/1375\nf 2344/2873/1408 2314/2874/1371 2310/2875/1370\nf 2376/2817/1431 2305/2876/1456 2361/2747/1384\nf 2349/2810/1428 2312/2877/1396 2301/2855/1398\nf 2282/2858/1453 2318/2878/1457 2346/2879/1445\nf 2347/2880/1446 2369/2881/1458 2378/2882/1447\nf 2303/2883/1380 2372/2824/1433 2313/2760/1379\nf 2287/2884/1386 2315/2793/1418 2285/2885/1359\nf 2372/2824/1433 2303/2883/1380 2379/2859/1454\nf 2349/2810/1428 2365/2886/1439 2312/2877/1396\nf 2280/2856/1444 2296/2811/1374 2349/2810/1428\nf 2337/2887/1406 2298/2820/1422 2299/2757/1390\nf 2344/2888/1408 2308/2779/1407 2355/2778/1401\nf 2278/2889/1364 2297/2890/1366 2354/2854/1452\nf 2299/2757/1390 2279/2728/1368 2337/2887/1406\nf 2331/2891/1403 2307/2740/1378 2306/2739/1369\nf 2312/2765/1396 2365/2892/1439 2308/2893/1407\nf 2306/2729/1369 2317/2894/1391 2310/2730/1370\nf 2309/2864/1441 2310/2875/1370 2317/2862/1391\nf 2336/2866/1420 2334/2806/1425 2327/2895/1459\nf 2347/2848/1446 2326/2847/1392 2369/2896/1458\nf 2352/2790/1415 2333/2897/1436 2324/2898/1460\nf 2346/2845/1445 2360/2803/1423 2322/2834/1438\nf 2285/2719/1359 2284/2718/1358 2332/2788/1410\nf 2375/2753/1361 2357/2782/1402 2355/2899/1401\nf 2338/2900/1394 2282/2858/1453 2346/2879/1445\nf 2306/2729/1369 2314/2731/1371 2331/2773/1403\nf 2327/2901/1459 2334/2902/1425 2366/2903/1461\nf 2333/2897/1436 2352/2790/1415 2377/2789/1414\nf 2343/2904/1434 2329/2905/1413 2367/2906/1435\nf 2287/2884/1386 2289/2794/1363 2315/2793/1418\nf 2300/2766/1397 2379/2859/1454 2353/2843/1443\nf 2367/2907/1435 2324/2908/1460 2333/2830/1436\nf 2294/2909/1440 2358/2910/1462 2359/2911/1417\nf 2298/2912/1422 2351/2822/1405 2350/2745/1382\nf 2356/2913/1367 2320/2914/1463 2376/2915/1431\nf 2280/2844/1444 2353/2843/1443 2281/2846/1393\nf 2315/2793/1418 2298/2820/1422 2285/2885/1359\nf 2283/2744/1360 2286/2743/1381 2284/2799/1358\nf 2281/2846/1393 2347/2848/1446 2280/2844/1444\nf 2303/2742/1380 2345/2807/1404 2361/2747/1384\nf 2340/2916/1455 2348/2791/1416 2325/2917/1464\nf 2311/2738/1377 2313/2741/1379 2306/2739/1369\nf 2359/2792/1417 2290/2918/1362 2294/2919/1440\nf 2284/2718/1358 2374/2781/1409 2357/2774/1402\nf 2325/2920/1464 2352/2921/1415 2318/2878/1457\nf 2318/2878/1457 2282/2858/1453 2325/2920/1464\nf 2304/2737/1373 2273/2736/1376 2276/2831/1437\nf 2312/2765/1396 2370/2823/1432 2300/2766/1397\nf 2379/2859/1454 2282/2858/1453 2281/2846/1393\nf 2355/2899/1401 2292/2922/1389 2375/2753/1361\nf 2373/2923/1424 2277/2725/1365 2321/2764/1395\nf 2305/2876/1456 2302/2746/1383 2361/2747/1384\nf 2340/2924/1455 2302/2746/1383 2305/2876/1456\nf 2310/2925/1370 2309/2926/1441 2344/2888/1408\nf 2280/2927/1444 2295/2928/1449 2296/2734/1374\nf 2298/2820/1422 2315/2793/1418 2299/2757/1390\nf 2332/2788/1410 2287/2929/1386 2285/2719/1359\nf 2279/2816/1368 2356/2930/1367 2376/2817/1431\nf 2317/2758/1391 2313/2760/1379 2372/2824/1433\nf 2294/2839/1440 2363/2809/1427 2276/2831/1437\nf 2319/2853/1451 2323/2931/1399 2322/2834/1438\nf 2341/2850/1448 2378/2849/1447 2366/2903/1461\nf 2303/2742/1380 2311/2738/1377 2345/2807/1404\nf 2308/2779/1407 2344/2888/1408 2309/2926/1441\nf 2278/2724/1364 2328/2932/1411 2356/2727/1367\nf 2283/2819/1360 2285/2885/1359 2298/2820/1422\nf 2372/2824/1433 2379/2859/1454 2300/2766/1397\nf 2280/2844/1444 2347/2848/1446 2295/2933/1449\nf 2307/2740/1378 2345/2807/1404 2311/2738/1377\nf 2346/2879/1445 2318/2878/1457 2360/2934/1423\nf 2277/2725/1365 2358/2935/1462 2275/2750/1385\nf 2292/2756/1389 2290/2722/1362 2375/2721/1361\nf 2290/2722/1362 2292/2756/1389 2291/2755/1388\nf 2341/2850/1448 2366/2903/1461 2334/2902/1425\nf 2336/2866/1420 2327/2895/1459 2368/2936/1465\nf 2289/2794/1363 2290/2918/1362 2359/2792/1417\nf 2378/2937/1447 2369/2896/1458 2327/2938/1459\nf 2379/2859/1454 2302/2939/1383 2340/2860/1455\nf 2338/2900/1394 2281/2846/1393 2282/2858/1453\nf 2339/2835/1429 2322/2834/1438 2323/2931/1399\nf 2273/2748/1376 2275/2750/1385 2358/2935/1462\nf 2358/2935/1462 2276/2940/1437 2273/2748/1376\nf 2376/2915/1431 2320/2914/1463 2305/2941/1456\nf 2378/2849/1447 2295/2851/1449 2347/2942/1446\nf 2320/2943/1463 2356/2727/1367 2328/2932/1411\nf 2323/2931/1399 2297/2890/1366 2277/2944/1365\nf 2328/2945/1411 2278/2724/1364 2354/2946/1452\nf 2324/2908/1460 2360/2803/1423 2318/2947/1457\nf 2305/2948/1456 2320/2949/1463 2348/2791/1416\nf 2366/2950/1461 2378/2951/1447 2327/2952/1459\nf 2369/2953/1458 2368/2936/1465 2327/2895/1459\nf 2358/2935/1462 2294/2954/1440 2276/2955/1437\nf 2358/2935/1462 2315/2793/1418 2359/2792/1417\nf 2360/2956/1423 2324/2957/1460 2367/2906/1435\nf 2277/2725/1365 2278/2724/1364 2371/2842/1442\nf 2296/2734/1374 2295/2928/1449 2341/2861/1448\nf 2316/2838/1430 2365/2886/1439 2349/2810/1428\nf 2342/2872/1372 2380/2958/1450 2274/2735/1375\nf 2308/2893/1407 2309/2841/1441 2312/2765/1396\nf 2364/2802/1412 2322/2834/1438 2360/2803/1423\nf 2335/2867/1419 2362/2813/1400 2373/2804/1424\nf 2377/2789/1414 2348/2791/1416 2320/2949/1463\nf 2282/2858/1453 2340/2860/1455 2325/2920/1464\nf 2321/2959/1395 2380/2958/1450 2334/2902/1425\nf 2377/2789/1414 2343/2960/1434 2333/2897/1436\nf 2369/2961/1458 2326/2865/1392 2336/2796/1420\nf 2338/2962/1394 2330/2833/1421 2326/2963/1392\nf 2330/2833/1421 2338/2962/1394 2339/2814/1429\nf 2323/2931/1399 2319/2853/1451 2354/2854/1452\nf 2360/2956/1423 2367/2906/1435 2329/2905/1413\nf 2318/2878/1457 2352/2921/1415 2324/2964/1460\nf 2371/2842/1442 2315/2793/1418 2358/2935/1462\nf 2354/2854/1452 2297/2890/1366 2323/2931/1399\nf 2288/2808/1426 2286/2743/1381 2350/2745/1382\nf 2341/2850/1448 2334/2902/1425 2380/2958/1450\nf 2334/2806/1425 2335/2867/1419 2373/2804/1424\nf 2371/2842/1442 2278/2724/1364 2299/2757/1390\nf 2320/2943/1463 2328/2932/1411 2377/2965/1414\nf 2341/2850/1448 2380/2958/1450 2342/2872/1372\nf 2362/2966/1400 2335/2795/1419 2330/2797/1421\nf 2365/2837/1439 2316/2815/1430 2293/2754/1387\nf 2363/2809/1427 2316/2838/1430 2349/2810/1428\nf 2369/2961/1458 2336/2796/1420 2368/2967/1465\nf 2377/2965/1414 2328/2932/1411 2343/2968/1434\nf 2379/2859/1454 2303/2883/1380 2302/2939/1383\nf 2277/2725/1365 2371/2842/1442 2358/2935/1462\nf 2352/2790/1415 2325/2917/1464 2348/2791/1416\nf 2348/2791/1416 2340/2916/1455 2305/2948/1456\nf 2329/2905/1413 2343/2904/1434 2328/2969/1411\nf 2418/2970/1466 2382/2971/1467 2381/2972/1468\nf 2387/2973/1469 2388/2974/1470 2436/2975/1471\nf 2393/2976/1472 2394/2977/1473 2392/2978/1474\nf 2391/2979/1475 2475/2980/1476 2396/2981/1477\nf 2489/2982/1478 2427/2983/1479 2397/2984/1480\nf 2401/2985/1481 2411/2986/1482 2398/2987/1483\nf 2402/2988/1484 2381/2989/1468 2382/2990/1467\nf 2402/2988/1484 2403/2991/1485 2381/2989/1468\nf 2404/2992/1486 2385/2993/1487 2386/2994/1488\nf 2405/2995/1489 2406/2996/1490 2385/2993/1487\nf 2383/2997/1491 2403/2991/1485 2507/2998/1492\nf 2408/2999/1493 2384/3000/1494 2383/2997/1491\nf 2491/3001/1495 2384/3000/1494 2408/2999/1493\nf 2461/3002/1496 2419/3003/1497 2390/3004/1498\nf 2409/3005/1499 2388/2974/1470 2389/3006/1500\nf 2412/3007/1501 2413/3008/1502 2428/3009/1503\nf 2407/3010/1504 2417/3011/1505 2418/3012/1466\nf 2463/3013/1506 2406/3014/1490 2407/3010/1504\nf 2401/2985/1481 2410/3015/1507 2411/2986/1482\nf 2395/3016/1508 2397/3017/1480 2499/3018/1509\nf 2394/2977/1473 2395/3019/1508 2499/3020/1509\nf 2392/3021/1474 2428/3009/1503 2473/3022/1510\nf 2424/3023/1511 2425/3024/1512 2432/3025/1513\nf 2423/3026/1514 2424/3027/1511 2453/3028/1515\nf 2416/3029/1516 2426/3030/1517 2415/3031/1518\nf 2425/3032/1512 2420/3033/1519 2432/3034/1513\nf 2392/3035/1474 2473/3036/1510 2391/2979/1475\nf 2475/2980/1476 2391/2979/1475 2473/3036/1510\nf 2436/2975/1471 2404/2992/1486 2386/2994/1488\nf 2485/3037/1520 2455/3038/1521 2443/3039/1522\nf 2432/3025/1513 2453/3040/1515 2424/3023/1511\nf 2437/3041/1523 2402/2988/1484 2465/3042/1524\nf 2440/3043/1525 2493/3044/1526 2441/3045/1527\nf 2437/3041/1523 2442/3046/1528 2443/3047/1522\nf 2477/3048/1529 2476/3049/1530 2468/3050/1531\nf 2396/2981/1477 2475/2980/1476 2421/3051/1532\nf 2496/3052/1533 2505/3053/1534 2425/3024/1512\nf 2451/3054/1535 2425/3032/1512 2505/3055/1534\nf 2483/3056/1536 2475/3057/1476 2457/3058/1537\nf 2425/3024/1512 2424/3023/1511 2496/3052/1533\nf 2505/3055/1534 2497/3059/1538 2451/3054/1535\nf 2399/3060/1539 2400/3061/1540 2500/3062/1541\nf 2496/3052/1533 2489/3063/1478 2395/3016/1508\nf 2480/3064/1542 2478/3065/1543 2448/3066/1544\nf 2507/2998/1492 2447/3067/1545 2408/2999/1493\nf 2383/2997/1491 2507/2998/1492 2408/2999/1493\nf 2421/3051/1532 2451/3068/1535 2497/3069/1538\nf 2505/3055/1534 2395/3019/1508 2393/2976/1472\nf 2476/3049/1530 2467/3070/1546 2468/3050/1531\nf 2485/3037/1520 2450/3071/1547 2455/3038/1521\nf 2475/3057/1476 2428/3072/1503 2457/3058/1537\nf 2403/3073/1485 2479/3074/1548 2434/3075/1549\nf 2415/3076/1518 2389/3077/1500 2416/3078/1516\nf 2410/3015/1507 2431/3079/1550 2381/3080/1468\nf 2483/3056/1536 2469/3081/1551 2482/3082/1552\nf 2385/2993/1487 2404/2992/1486 2405/2995/1489\nf 2438/3083/1553 2467/3070/1546 2454/3084/1554\nf 2471/3085/1555 2461/3002/1496 2472/3086/1556\nf 2385/2993/1487 2406/2996/1490 2430/3087/1557\nf 2474/3088/1558 2459/3089/1559 2464/3090/1560\nf 2401/2985/1481 2500/3091/1541 2431/3079/1550\nf 2402/3092/1484 2437/3093/1523 2443/3039/1522\nf 2490/3094/1561 2488/3095/1562 2434/3096/1549\nf 2434/3075/1549 2479/3074/1548 2490/3097/1561\nf 2431/3079/1550 2410/3015/1507 2401/2985/1481\nf 2497/3069/1538 2396/2981/1477 2421/3051/1532\nf 2393/3098/1472 2396/2981/1477 2497/3069/1538\nf 2431/3079/1550 2481/3099/1563 2463/3013/1506\nf 2445/3100/1564 2503/3101/1565 2404/2992/1486\nf 2419/3102/1497 2389/3103/1500 2469/3104/1551\nf 2469/3105/1551 2457/3106/1537 2419/3003/1497\nf 2487/3107/1566 2490/3097/1561 2452/3108/1567\nf 2447/3067/1545 2508/3109/1568 2408/2999/1493\nf 2429/3110/1569 2414/3111/1570 2456/3112/1571\nf 2440/3113/1525 2458/3114/1572 2510/3115/1573\nf 2457/3058/1537 2469/3081/1551 2483/3056/1536\nf 2464/3090/1560 2417/3116/1505 2474/3088/1558\nf 2485/3037/1520 2486/3117/1574 2446/3118/1575\nf 2468/3119/1531 2466/3120/1576 2493/3121/1526\nf 2436/3122/1471 2435/3123/1577 2404/3124/1486\nf 2460/3125/1578 2486/3126/1574 2492/3127/1579\nf 2384/3128/1494 2390/3004/1498 2457/3106/1537\nf 2428/3072/1503 2475/3057/1476 2473/3129/1510\nf 2481/3130/1563 2430/3087/1557 2406/2996/1490\nf 2440/3131/1525 2477/3132/1529 2493/3121/1526\nf 2403/3133/1485 2443/3039/1522 2455/3038/1521\nf 2502/3134/1580 2492/3127/1579 2459/3135/1559\nf 2407/3136/1504 2474/3088/1558 2417/3116/1505\nf 2445/3137/1564 2435/3123/1577 2450/3071/1547\nf 2403/2991/1485 2434/3138/1549 2507/2998/1492\nf 2503/3139/1565 2502/3140/1580 2459/3089/1559\nf 2463/3013/1506 2481/3099/1563 2406/3014/1490\nf 2467/3070/1546 2476/3049/1530 2454/3084/1554\nf 2418/3141/1466 2417/3116/1505 2382/3142/1467\nf 2463/3013/1506 2418/3012/1466 2431/3079/1550\nf 2481/3099/1563 2414/3143/1570 2430/3144/1557\nf 2436/3145/1471 2433/3146/1581 2470/3147/1582\nf 2459/3135/1559 2492/3127/1579 2464/3148/1560\nf 2499/3149/1509 2498/3150/1583 2448/3066/1544\nf 2481/3099/1563 2456/3151/1571 2414/3143/1570\nf 2406/3014/1490 2405/3152/1489 2407/3010/1504\nf 2485/3037/1520 2443/3039/1522 2442/3153/1528\nf 2487/3107/1566 2452/3108/1567 2436/3145/1471\nf 2458/3154/1572 2440/3155/1525 2441/3156/1527\nf 2462/3157/1584 2509/3158/1585 2433/3159/1581\nf 2424/3027/1511 2422/3160/1586 2400/3061/1540\nf 2441/3161/1527 2493/3121/1526 2488/3162/1562\nf 2413/3163/1502 2384/3128/1494 2457/3106/1537\nf 2460/3125/1578 2446/3164/1575 2486/3126/1574\nf 2426/3030/1517 2506/3165/1587 2420/3166/1519\nf 2481/3099/1563 2500/3091/1541 2456/3151/1571\nf 2384/3000/1494 2478/3065/1543 2383/2997/1491\nf 2398/2987/1483 2399/3167/1539 2401/2985/1481\nf 2479/3168/1548 2449/3169/1588 2490/3170/1561\nf 2492/3127/1579 2502/3134/1580 2460/3125/1578\nf 2394/2977/1473 2393/2976/1472 2395/3019/1508\nf 2482/3171/1552 2415/3031/1518 2426/3030/1517\nf 2420/3033/1519 2425/3032/1512 2451/3054/1535\nf 2407/3010/1504 2418/3012/1466 2463/3013/1506\nf 2482/3171/1552 2421/3051/1532 2475/2980/1476\nf 2489/3063/1478 2397/3017/1480 2395/3016/1508\nf 2466/3120/1576 2447/3172/1545 2493/3121/1526\nf 2500/3091/1541 2422/3173/1586 2456/3151/1571\nf 2433/3159/1581 2388/2974/1470 2409/3005/1499\nf 2499/3149/1509 2448/3066/1544 2394/3174/1473\nf 2412/3007/1501 2394/3174/1473 2448/3066/1544\nf 2483/3175/1536 2482/3171/1552 2475/2980/1476\nf 2493/3121/1526 2477/3132/1529 2468/3119/1531\nf 2385/2993/1487 2484/3176/1589 2386/2994/1488\nf 2394/3174/1473 2428/3009/1503 2392/3021/1474\nf 2499/3149/1509 2397/3177/1480 2498/3150/1583\nf 2415/3076/1518 2482/3082/1552 2469/3081/1551\nf 2461/3002/1496 2471/3085/1555 2462/3178/1584\nf 2479/3168/1548 2403/3133/1485 2449/3169/1588\nf 2448/3066/1544 2398/3179/1483 2411/3180/1482\nf 2484/3176/1589 2430/3087/1557 2414/3111/1570\nf 2393/2976/1472 2497/3059/1538 2505/3055/1534\nf 2444/3181/1590 2476/3182/1530 2510/3183/1573\nf 2418/3012/1466 2381/3080/1468 2431/3079/1550\nf 2470/3184/1582 2433/3159/1581 2458/3185/1572\nf 2429/3110/1569 2495/3186/1591 2501/3187/1592\nf 2422/3160/1586 2429/3188/1569 2456/3189/1571\nf 2436/2975/1471 2386/2994/1488 2387/2973/1469\nf 2421/3051/1532 2482/3171/1552 2426/3030/1517\nf 2387/2973/1469 2416/3190/1516 2389/3006/1500\nf 2439/3191/1593 2426/3192/1517 2416/3190/1516\nf 2489/3063/1478 2496/3052/1533 2400/3193/1540\nf 2435/3123/1577 2449/3169/1588 2450/3071/1547\nf 2390/3004/1498 2419/3003/1497 2457/3106/1537\nf 2508/3109/1568 2491/3001/1495 2408/2999/1493\nf 2466/3194/1576 2468/3050/1531 2467/3070/1546\nf 2447/3172/1545 2488/3162/1562 2493/3121/1526\nf 2454/3084/1554 2444/3195/1590 2504/3196/1594\nf 2392/3035/1474 2391/2979/1475 2393/3098/1472\nf 2495/3186/1591 2429/3110/1569 2423/3197/1514\nf 2423/3197/1514 2453/3198/1515 2495/3186/1591\nf 2452/3199/1567 2435/3123/1577 2436/3122/1471\nf 2469/3081/1551 2389/3077/1500 2415/3076/1518\nf 2400/3061/1540 2496/3200/1533 2424/3027/1511\nf 2388/2974/1470 2433/3159/1581 2436/2975/1471\nf 2413/3201/1502 2457/3058/1537 2428/3072/1503\nf 2421/3051/1532 2420/3166/1519 2451/3068/1535\nf 2474/3088/1558 2407/3136/1504 2405/3202/1489\nf 2409/3005/1499 2462/3157/1584 2433/3159/1581\nf 2390/3004/1498 2472/3086/1556 2461/3002/1496\nf 2464/3090/1560 2382/3142/1467 2417/3116/1505\nf 2383/2997/1491 2480/3203/1542 2381/2989/1468\nf 2424/3027/1511 2423/3026/1514 2422/3160/1586\nf 2399/3060/1539 2427/2983/1479 2489/2982/1478\nf 2427/2983/1479 2399/3060/1539 2398/3204/1483\nf 2509/3158/1585 2510/3183/1573 2433/3159/1581\nf 2400/3061/1540 2399/3060/1539 2489/2982/1478\nf 2435/3123/1577 2452/3199/1567 2449/3169/1588\nf 2398/3179/1483 2448/3066/1544 2498/3150/1583\nf 2445/3137/1564 2450/3071/1547 2446/3118/1575\nf 2501/3187/1592 2495/3186/1591 2439/3191/1593\nf 2422/3160/1586 2423/3026/1514 2429/3188/1569\nf 2485/3037/1520 2442/3153/1528 2486/3117/1574\nf 2428/3009/1503 2394/3174/1473 2412/3007/1501\nf 2478/3065/1543 2413/3008/1502 2412/3007/1501\nf 2459/3089/1559 2474/3088/1558 2503/3139/1565\nf 2458/3205/1572 2487/3107/1566 2470/3147/1582\nf 2448/3066/1544 2411/3180/1482 2480/3064/1542\nf 2432/3206/1513 2420/3207/1519 2506/3208/1587\nf 2480/3203/1542 2410/3209/1507 2381/2989/1468\nf 2472/3210/1556 2438/3083/1553 2471/3211/1555\nf 2438/3083/1553 2472/3210/1556 2491/3212/1495\nf 2455/3038/1521 2449/3169/1588 2403/3133/1485\nf 2477/3132/1529 2440/3131/1525 2510/3213/1573\nf 2471/3211/1555 2438/3083/1553 2504/3196/1594\nf 2492/3127/1579 2486/3126/1574 2511/3214/1595\nf 2500/3091/1541 2401/2985/1481 2399/3167/1539\nf 2460/3215/1578 2494/3216/1596 2446/3118/1575\nf 2480/3217/1542 2411/3218/1482 2410/3219/1507\nf 2478/3065/1543 2412/3007/1501 2448/3066/1544\nf 2453/3198/1515 2432/3206/1513 2439/3191/1593\nf 2491/3212/1495 2508/3220/1568 2438/3083/1553\nf 2441/3161/1527 2490/3097/1561 2487/3107/1566\nf 2490/3097/1561 2441/3161/1527 2488/3162/1562\nf 2510/3183/1573 2509/3158/1585 2444/3181/1590\nf 2462/3221/1584 2504/3196/1594 2444/3195/1590\nf 2430/3087/1557 2484/3176/1589 2385/2993/1487\nf 2398/3179/1483 2498/3150/1583 2427/3222/1479\nf 2494/3223/1596 2502/3224/1580 2503/3101/1565\nf 2387/2973/1469 2484/3176/1589 2416/3190/1516\nf 2403/3133/1485 2402/3092/1484 2443/3039/1522\nf 2503/3101/1565 2445/3100/1564 2494/3223/1596\nf 2511/3214/1595 2464/3148/1560 2492/3127/1579\nf 2511/3225/1595 2437/3041/1523 2465/3042/1524\nf 2504/3196/1594 2438/3083/1553 2454/3084/1554\nf 2462/3178/1584 2409/3226/1499 2461/3002/1496\nf 2467/3070/1546 2438/3083/1553 2508/3220/1568\nf 2458/3227/1572 2433/3228/1581 2510/3229/1573\nf 2511/3225/1595 2442/3046/1528 2437/3041/1523\nf 2442/3046/1528 2511/3225/1595 2486/3230/1574\nf 2420/3166/1519 2421/3051/1532 2426/3030/1517\nf 2501/3187/1592 2414/3111/1570 2429/3110/1569\nf 2444/3195/1590 2454/3084/1554 2476/3049/1530\nf 2388/2974/1470 2387/2973/1469 2389/3006/1500\nf 2503/3231/1565 2405/3232/1489 2404/3233/1486\nf 2462/3178/1584 2471/3085/1555 2504/3234/1594\nf 2465/3042/1524 2402/2988/1484 2382/2990/1467\nf 2452/3199/1567 2490/3170/1561 2449/3169/1588\nf 2491/3235/1495 2390/3004/1498 2384/3128/1494\nf 2390/3004/1498 2491/3235/1495 2472/3086/1556\nf 2397/3177/1480 2427/3222/1479 2498/3150/1583\nf 2510/3183/1573 2476/3182/1530 2477/3236/1529\nf 2395/3016/1508 2505/3053/1534 2496/3052/1533\nf 2432/3206/1513 2506/3208/1587 2439/3191/1593\nf 2500/3091/1541 2481/3099/1563 2431/3079/1550\nf 2484/3176/1589 2387/2973/1469 2386/2994/1488\nf 2509/3237/1585 2462/3221/1584 2444/3195/1590\nf 2446/3118/1575 2450/3071/1547 2485/3037/1520\nf 2436/3145/1471 2470/3147/1582 2487/3107/1566\nf 2419/3003/1497 2461/3002/1496 2409/3226/1499\nf 2405/3202/1489 2503/3139/1565 2474/3088/1558\nf 2488/3162/1562 2447/3172/1545 2434/3075/1549\nf 2466/3238/1576 2467/3239/1546 2508/3109/1568\nf 2391/2979/1475 2396/2981/1477 2393/3098/1472\nf 2480/3203/1542 2383/2997/1491 2478/3065/1543\nf 2446/3118/1575 2494/3216/1596 2445/3137/1564\nf 2478/3065/1543 2384/3000/1494 2413/3008/1502\nf 2465/3240/1524 2464/3148/1560 2511/3214/1595\nf 2506/3208/1587 2426/3192/1517 2439/3191/1593\nf 2501/3187/1592 2416/3190/1516 2484/3176/1589\nf 2439/3191/1593 2495/3186/1591 2453/3198/1515\nf 2439/3191/1593 2416/3190/1516 2501/3187/1592\nf 2381/2989/1468 2403/2991/1485 2383/2997/1491\nf 2487/3241/1566 2458/3154/1572 2441/3156/1527\nf 2404/3124/1486 2435/3123/1577 2445/3137/1564\nf 2409/3226/1499 2389/3242/1500 2419/3003/1497\nf 2447/3172/1545 2507/3243/1492 2434/3075/1549\nf 2382/3142/1467 2464/3090/1560 2465/3244/1524\nf 2455/3245/1521 2450/3246/1547 2449/3247/1588\nf 2414/3111/1570 2501/3187/1592 2484/3176/1589\nf 2508/3109/1568 2447/3067/1545 2466/3238/1576\nf 2422/3160/1586 2500/3062/1541 2400/3061/1540\nf 2502/3224/1580 2494/3223/1596 2460/3248/1578\nf 2544/3249/1597 2515/3250/1598 2512/3251/1599\nf 2587/3252/1600 2520/3253/1601 2518/3254/1602\nf 2524/3255/1603 2616/3256/1604 2523/3257/1605\nf 2576/3258/1606 2526/3259/1607 2520/3260/1601\nf 2586/3261/1608 2532/3262/1609 2528/3263/1610\nf 2529/3264/1611 2530/3265/1612 2531/3266/1613\nf 2605/3267/1614 2537/3268/1615 2534/3269/1616\nf 2568/3270/1617 2545/3271/1618 2537/3272/1615\nf 2628/3273/1619 2540/3274/1620 2539/3275/1621\nf 2542/3276/1622 2519/3277/1623 2517/3278/1624\nf 2608/3279/1625 2524/3280/1603 2525/3281/1626\nf 2632/3282/1627 2546/3283/1628 2565/3284/1629\nf 2549/3285/1630 2567/3286/1631 2587/3287/1600\nf 2552/3288/1632 2558/3289/1633 2613/3290/1634\nf 2553/3291/1635 2552/3292/1632 2613/3293/1634\nf 2531/3266/1613 2530/3265/1612 2554/3294/1636\nf 2557/3295/1637 2556/3296/1638 2596/3297/1639\nf 2565/3284/1629 2546/3283/1628 2582/3298/1640\nf 2559/3299/1641 2550/3300/1642 2540/3274/1620\nf 2560/3301/1643 2512/3302/1599 2550/3300/1642\nf 2562/3303/1644 2553/3291/1635 2561/3304/1645\nf 2561/3304/1645 2553/3291/1635 2554/3294/1636\nf 2548/3305/1646 2562/3303/1644 2561/3304/1645\nf 2521/3306/1647 2522/3307/1648 2539/3308/1621\nf 2563/3309/1649 2544/3249/1597 2545/3271/1618\nf 2620/3310/1650 2591/3311/1651 2564/3312/1652\nf 2556/3296/1638 2557/3295/1637 2634/3313/1653\nf 2529/3314/1611 2527/3315/1654 2564/3312/1652\nf 2590/3316/1655 2556/3317/1638 2565/3284/1629\nf 2547/3318/1656 2548/3305/1646 2622/3319/1657\nf 2587/3252/1600 2518/3320/1602 2549/3321/1630\nf 2591/3311/1651 2620/3310/1650 2567/3322/1631\nf 2520/3253/1601 2587/3252/1600 2519/3277/1623\nf 2569/3323/1658 2582/3324/1640 2563/3309/1649\nf 2537/3272/1615 2605/3325/1614 2568/3270/1617\nf 2558/3326/1633 2634/3327/1653 2557/3328/1637\nf 2573/3329/1659 2618/3330/1660 2514/3331/1661\nf 2540/3274/1620 2628/3273/1619 2559/3299/1641\nf 2628/3273/1619 2635/3332/1662 2560/3301/1643\nf 2581/3333/1663 2515/3250/1598 2582/3324/1640\nf 2636/3334/1664 2588/3335/1665 2626/3336/1666\nf 2612/3337/1667 2626/3338/1666 2588/3339/1665\nf 2601/3340/1668 2595/3341/1669 2583/3342/1670\nf 2626/3336/1666 2596/3343/1639 2636/3334/1664\nf 2626/3338/1666 2612/3337/1667 2613/3290/1634\nf 2594/3344/1671 2624/3345/1672 2623/3346/1673\nf 2584/3347/1674 2637/3348/1675 2547/3349/1656\nf 2534/3269/1616 2536/3350/1676 2535/3351/1677\nf 2636/3334/1664 2604/3352/1678 2586/3353/1608\nf 2623/3354/1673 2577/3355/1679 2615/3356/1680\nf 2635/3332/1662 2593/3357/1681 2560/3301/1643\nf 2599/3358/1682 2619/3359/1683 2597/3360/1684\nf 2586/3353/1608 2588/3335/1665 2636/3334/1664\nf 2542/3361/1622 2541/3362/1685 2589/3363/1686\nf 2592/3364/1687 2575/3365/1688 2618/3366/1660\nf 2515/3250/1598 2581/3333/1663 2539/3308/1621\nf 2558/3367/1633 2552/3368/1632 2630/3369/1689\nf 2614/3370/1690 2593/3357/1681 2635/3332/1662\nf 2539/3308/1621 2540/3371/1620 2515/3250/1598\nf 2624/3345/1672 2571/3372/1691 2623/3346/1673\nf 2633/3373/1692 2551/3374/1693 2576/3258/1606\nf 2545/3271/1618 2568/3270/1617 2563/3309/1649\nf 2536/3350/1676 2636/3375/1664 2596/3297/1639\nf 2585/3376/1694 2531/3266/1613 2612/3377/1667\nf 2617/3378/1695 2609/3379/1696 2592/3364/1687\nf 2515/3250/1598 2544/3249/1597 2563/3309/1649\nf 2599/3358/1682 2627/3380/1697 2619/3359/1683\nf 2521/3306/1647 2539/3308/1621 2581/3333/1663\nf 2622/3319/1657 2518/3381/1602 2526/3382/1607\nf 2523/3257/1605 2574/3383/1698 2538/3384/1699\nf 2621/3385/1700 2614/3386/1690 2629/3387/1701\nf 2610/3388/1702 2543/3389/1703 2572/3390/1704\nf 2573/3329/1659 2513/3391/1705 2611/3392/1706\nf 2518/3381/1602 2622/3319/1657 2601/3340/1668\nf 2560/3301/1643 2559/3299/1641 2628/3273/1619\nf 2592/3364/1687 2578/3393/1707 2629/3394/1701\nf 2571/3395/1691 2516/3396/1708 2577/3355/1679\nf 2601/3340/1668 2583/3342/1670 2518/3381/1602\nf 2579/3397/1709 2545/3398/1618 2544/3399/1597\nf 2530/3265/1612 2595/3400/1669 2561/3304/1645\nf 2529/3264/1611 2595/3400/1669 2530/3265/1612\nf 2612/3337/1667 2531/3401/1613 2554/3402/1636\nf 2574/3403/1698 2523/3404/1605 2603/3405/1710\nf 2569/3323/1658 2590/3406/1655 2582/3324/1640\nf 2603/3405/1710 2609/3379/1696 2617/3378/1695\nf 2597/3360/1684 2572/3407/1704 2543/3408/1703\nf 2522/3409/1648 2523/3257/1605 2538/3384/1699\nf 2577/3410/1679 2575/3365/1688 2609/3379/1696\nf 2524/3280/1603 2608/3279/1625 2543/3411/1703\nf 2565/3284/1629 2634/3412/1653 2625/3413/1711\nf 2526/3382/1607 2551/3414/1693 2622/3319/1657\nf 2617/3415/1695 2614/3416/1690 2574/3383/1698\nf 2563/3309/1649 2582/3324/1640 2515/3250/1598\nf 2576/3258/1606 2599/3358/1682 2597/3360/1684\nf 2585/3417/1694 2528/3263/1610 2527/3418/1654\nf 2624/3419/1672 2594/3420/1671 2598/3421/1712\nf 2585/3417/1694 2612/3337/1667 2588/3339/1665\nf 2525/3281/1626 2551/3414/1693 2608/3279/1625\nf 2613/3290/1634 2558/3289/1633 2626/3338/1666\nf 2596/3343/1639 2626/3336/1666 2558/3326/1633\nf 2519/3277/1623 2587/3252/1600 2517/3278/1624\nf 2619/3359/1683 2572/3407/1704 2597/3360/1684\nf 2594/3344/1671 2623/3346/1673 2610/3422/1702\nf 2528/3263/1610 2532/3262/1609 2602/3423/1713\nf 2638/3424/1714 2602/3425/1713 2532/3426/1609\nf 2596/3297/1639 2555/3427/1715 2535/3351/1677\nf 2570/3428/1716 2547/3349/1656 2625/3413/1711\nf 2591/3429/1651 2583/3342/1670 2595/3341/1669\nf 2579/3397/1709 2567/3322/1631 2602/3425/1713\nf 2514/3331/1661 2618/3330/1660 2516/3430/1708\nf 2526/3259/1607 2576/3258/1606 2551/3374/1693\nf 2613/3293/1634 2554/3294/1636 2553/3291/1635\nf 2520/3431/1601 2526/3382/1607 2518/3381/1602\nf 2524/3280/1603 2637/3432/1675 2584/3433/1674\nf 2573/3329/1659 2514/3331/1661 2513/3391/1705\nf 2565/3434/1629 2582/3324/1640 2590/3406/1655\nf 2535/3351/1677 2555/3427/1715 2590/3435/1655\nf 2595/3436/1669 2529/3437/1611 2591/3438/1651\nf 2581/3333/1663 2566/3439/1717 2521/3306/1647\nf 2546/3440/1628 2581/3333/1663 2582/3324/1640\nf 2551/3414/1693 2525/3281/1626 2622/3319/1657\nf 2558/3326/1633 2557/3328/1637 2596/3343/1639\nf 2627/3380/1697 2599/3358/1682 2631/3441/1718\nf 2524/3280/1603 2584/3433/1674 2525/3281/1626\nf 2602/3423/1713 2620/3442/1650 2528/3263/1610\nf 2631/3441/1718 2599/3358/1682 2598/3443/1712\nf 2535/3351/1677 2536/3350/1676 2596/3297/1639\nf 2627/3444/1697 2594/3420/1671 2572/3445/1704\nf 2594/3420/1671 2627/3444/1697 2631/3446/1718\nf 2577/3355/1679 2623/3354/1673 2571/3395/1691\nf 2629/3394/1701 2617/3378/1695 2592/3364/1687\nf 2561/3304/1645 2554/3294/1636 2530/3265/1612\nf 2629/3387/1701 2578/3447/1707 2621/3385/1700\nf 2637/3348/1675 2632/3282/1627 2547/3349/1656\nf 2598/3421/1712 2594/3420/1671 2631/3446/1718\nf 2574/3383/1698 2635/3448/1662 2640/3449/1719\nf 2568/3270/1617 2569/3323/1658 2563/3309/1649\nf 2527/3450/1654 2529/3264/1611 2585/3376/1694\nf 2512/3302/1599 2560/3301/1643 2513/3451/1705\nf 2611/3452/1706 2560/3301/1643 2593/3357/1681\nf 2533/3453/1720 2638/3454/1714 2532/3455/1609\nf 2534/3269/1616 2535/3351/1677 2605/3267/1614\nf 2599/3456/1682 2589/3457/1686 2598/3458/1712\nf 2562/3303/1644 2570/3459/1716 2630/3460/1689\nf 2601/3340/1668 2622/3319/1657 2548/3305/1646\nf 2550/3461/1642 2512/3251/1599 2515/3250/1598\nf 2610/3388/1702 2600/3462/1721 2543/3389/1703\nf 2565/3284/1629 2625/3413/1711 2632/3282/1627\nf 2546/3463/1628 2632/3464/1627 2566/3465/1717\nf 2567/3322/1631 2549/3321/1630 2591/3311/1651\nf 2607/3466/1722 2567/3322/1631 2579/3397/1709\nf 2604/3352/1678 2636/3334/1664 2536/3467/1676\nf 2572/3390/1704 2594/3468/1671 2610/3388/1702\nf 2576/3258/1606 2520/3260/1601 2519/3469/1623\nf 2604/3352/1678 2532/3455/1609 2586/3353/1608\nf 2602/3425/1713 2537/3470/1615 2579/3397/1709\nf 2569/3471/1658 2568/3472/1617 2605/3267/1614\nf 2547/3318/1656 2622/3319/1657 2525/3281/1626\nf 2624/3419/1672 2589/3363/1686 2541/3362/1685\nf 2533/3473/1720 2604/3474/1678 2534/3269/1616\nf 2609/3379/1696 2575/3365/1688 2592/3364/1687\nf 2573/3329/1659 2611/3392/1706 2578/3475/1707\nf 2573/3476/1659 2578/3393/1707 2592/3364/1687\nf 2549/3477/1630 2518/3381/1602 2583/3342/1670\nf 2549/3477/1630 2583/3342/1670 2591/3429/1651\nf 2532/3455/1609 2604/3352/1678 2533/3453/1720\nf 2580/3478/1723 2599/3358/1682 2576/3258/1606\nf 2524/3255/1603 2600/3462/1721 2616/3256/1604\nf 2580/3478/1723 2576/3258/1606 2519/3479/1623\nf 2537/3470/1615 2602/3425/1713 2638/3424/1714\nf 2596/3297/1639 2556/3296/1638 2555/3427/1715\nf 2536/3350/1676 2534/3269/1616 2604/3474/1678\nf 2623/3354/1673 2615/3356/1680 2600/3480/1721\nf 2584/3433/1674 2547/3318/1656 2525/3281/1626\nf 2555/3427/1715 2556/3296/1638 2590/3435/1655\nf 2611/3481/1706 2513/3482/1705 2560/3483/1643\nf 2550/3300/1642 2559/3299/1641 2560/3301/1643\nf 2554/3402/1636 2613/3290/1634 2612/3337/1667\nf 2529/3437/1611 2564/3484/1652 2591/3438/1651\nf 2633/3373/1692 2608/3485/1625 2551/3374/1693\nf 2606/3486/1724 2544/3487/1597 2512/3488/1599\nf 2588/3339/1665 2586/3261/1608 2585/3417/1694\nf 2541/3489/1685 2542/3276/1622 2516/3430/1708\nf 2633/3373/1692 2576/3258/1606 2597/3360/1684\nf 2621/3385/1700 2578/3447/1707 2611/3490/1706\nf 2618/3366/1660 2573/3491/1659 2592/3364/1687\nf 2630/3369/1689 2570/3428/1716 2558/3367/1633\nf 2634/3412/1653 2558/3367/1633 2570/3428/1716\nf 2635/3448/1662 2574/3383/1698 2614/3416/1690\nf 2640/3492/1719 2635/3332/1662 2628/3273/1619\nf 2609/3379/1696 2615/3493/1680 2577/3410/1679\nf 2587/3252/1600 2567/3322/1631 2607/3466/1722\nf 2522/3409/1648 2521/3494/1647 2523/3257/1605\nf 2523/3257/1605 2521/3494/1647 2566/3495/1717\nf 2580/3496/1723 2519/3277/1623 2542/3276/1622\nf 2564/3312/1652 2527/3315/1654 2620/3310/1650\nf 2614/3386/1690 2621/3385/1700 2593/3497/1681\nf 2543/3408/1703 2608/3485/1625 2597/3360/1684\nf 2602/3425/1713 2567/3322/1631 2620/3310/1650\nf 2552/3292/1632 2553/3291/1635 2562/3303/1644\nf 2637/3348/1675 2566/3495/1717 2632/3282/1627\nf 2639/3498/1725 2587/3252/1600 2607/3466/1722\nf 2570/3459/1716 2562/3303/1644 2548/3305/1646\nf 2571/3395/1691 2541/3499/1685 2516/3396/1708\nf 2527/3315/1654 2528/3500/1610 2620/3310/1650\nf 2572/3407/1704 2619/3359/1683 2627/3380/1697\nf 2561/3501/1645 2601/3502/1668 2548/3503/1646\nf 2601/3502/1668 2561/3501/1645 2595/3436/1669\nf 2574/3383/1698 2640/3449/1719 2538/3384/1699\nf 2607/3466/1722 2606/3486/1724 2512/3488/1599\nf 2637/3348/1675 2523/3257/1605 2566/3495/1717\nf 2589/3363/1686 2624/3419/1672 2598/3421/1712\nf 2600/3504/1721 2610/3422/1702 2623/3346/1673\nf 2548/3505/1646 2547/3349/1656 2570/3428/1716\nf 2516/3506/1708 2618/3366/1660 2575/3365/1688\nf 2616/3507/1604 2600/3480/1721 2615/3356/1680\nf 2533/3473/1720 2534/3269/1616 2537/3268/1615\nf 2516/3430/1708 2542/3276/1622 2517/3278/1624\nf 2541/3508/1685 2571/3372/1691 2624/3345/1672\nf 2611/3490/1706 2593/3497/1681 2621/3385/1700\nf 2540/3371/1620 2550/3461/1642 2515/3250/1598\nf 2585/3417/1694 2586/3261/1608 2528/3263/1610\nf 2514/3331/1661 2516/3430/1708 2639/3498/1725\nf 2517/3278/1624 2639/3498/1725 2516/3430/1708\nf 2547/3349/1656 2632/3282/1627 2625/3413/1711\nf 2579/3397/1709 2537/3470/1615 2545/3398/1618\nf 2562/3303/1644 2630/3509/1689 2552/3292/1632\nf 2542/3276/1622 2599/3456/1682 2580/3496/1723\nf 2531/3266/1613 2585/3376/1694 2529/3264/1611\nf 2616/3510/1604 2603/3405/1710 2523/3404/1605\nf 2516/3506/1708 2575/3365/1688 2577/3410/1679\nf 2570/3428/1716 2625/3413/1711 2634/3412/1653\nf 2600/3511/1721 2524/3512/1603 2543/3513/1703\nf 2523/3514/1605 2637/3432/1675 2524/3280/1603\nf 2535/3351/1677 2590/3435/1655 2569/3471/1658\nf 2537/3268/1615 2638/3515/1714 2533/3473/1720\nf 2514/3331/1661 2512/3488/1599 2513/3391/1705\nf 2512/3488/1599 2514/3331/1661 2607/3466/1722\nf 2544/3399/1597 2606/3486/1724 2579/3397/1709\nf 2605/3267/1614 2535/3351/1677 2569/3471/1658\nf 2617/3378/1695 2574/3516/1698 2603/3405/1710\nf 2539/3275/1621 2640/3492/1719 2628/3273/1619\nf 2640/3492/1719 2539/3275/1621 2522/3517/1648\nf 2603/3405/1710 2616/3510/1604 2609/3379/1696\nf 2615/3493/1680 2609/3379/1696 2616/3510/1604\nf 2599/3456/1682 2542/3276/1622 2589/3457/1686\nf 2608/3485/1625 2633/3373/1692 2597/3360/1684\nf 2514/3331/1661 2639/3498/1725 2607/3466/1722\nf 2587/3252/1600 2639/3498/1725 2517/3278/1624\nf 2606/3518/1724 2607/3519/1722 2579/3520/1709\nf 2614/3386/1690 2617/3521/1695 2629/3387/1701\nf 2556/3317/1638 2634/3412/1653 2565/3284/1629\nf 2640/3492/1719 2522/3517/1648 2538/3522/1699\nf 2581/3333/1663 2546/3440/1628 2566/3439/1717\nf 2652/3523/1726 2651/3524/1727 2653/3525/1728\nf 2735/3526/1729 2655/3527/1730 2657/3528/1731\nf 2662/3529/1732 2647/3530/1733 2663/3531/1734\nf 2665/3532/1735 2664/3533/1736 2645/3534/1737\nf 2665/3532/1735 2645/3534/1737 2667/3535/1738\nf 2726/3536/1739 2667/3535/1738 2646/3537/1740\nf 2674/3538/1741 2682/3539/1742 2678/3540/1743\nf 2677/3541/1744 2676/3542/1745 2680/3543/1746\nf 2709/3544/1747 2663/3531/1734 2672/3545/1748\nf 2679/3546/1749 2675/3547/1750 2674/3548/1741\nf 2681/3549/1751 2671/3550/1752 2679/3546/1749\nf 2654/3551/1753 2719/3552/1754 2651/3553/1727\nf 2650/3554/1755 2732/3555/1756 2671/3550/1752\nf 2642/3556/1757 2643/3557/1758 2641/3558/1759\nf 2660/3559/1760 2661/3560/1761 2658/3561/1762\nf 2685/3562/1763 2681/3563/1751 2674/3564/1741\nf 2731/3565/1764 2690/3566/1765 2649/3567/1766\nf 2693/3568/1767 2705/3569/1768 2648/3570/1769\nf 2687/3571/1770 2641/3558/1759 2643/3557/1758\nf 2663/3531/1734 2709/3544/1747 2662/3529/1732\nf 2669/3572/1771 2670/3573/1772 2668/3574/1773\nf 2731/3575/1764 2730/3576/1774 2696/3577/1775\nf 2689/3578/1776 2733/3579/1777 2645/3580/1737\nf 2725/3581/1778 2682/3582/1742 2746/3583/1779\nf 2699/3584/1780 2746/3585/1779 2682/3539/1742\nf 2714/3586/1781 2704/3587/1782 2691/3588/1783\nf 2659/3589/1784 2676/3542/1745 2725/3590/1778\nf 2682/3582/1742 2725/3581/1778 2713/3591/1785\nf 2746/3585/1779 2699/3584/1780 2741/3592/1786\nf 2746/3583/1779 2700/3593/1787 2735/3526/1729\nf 2695/3594/1788 2696/3595/1775 2734/3596/1789\nf 2675/3597/1750 2741/3592/1786 2699/3584/1780\nf 2746/3585/1779 2652/3523/1726 2700/3598/1787\nf 2743/3599/1790 2717/3600/1791 2720/3601/1792\nf 2728/3602/1793 2701/3603/1794 2683/3604/1795\nf 2702/3605/1796 2698/3606/1797 2703/3607/1798\nf 2741/3608/1786 2654/3551/1753 2652/3609/1726\nf 2691/3588/1783 2704/3587/1782 2666/3610/1799\nf 2696/3577/1775 2730/3576/1774 2734/3611/1789\nf 2740/3612/1800 2729/3613/1801 2687/3614/1770\nf 2714/3615/1781 2656/3616/1802 2675/3547/1750\nf 2727/3617/1803 2663/3618/1734 2718/3619/1804\nf 2663/3618/1734 2727/3617/1803 2672/3620/1748\nf 2689/3578/1776 2706/3621/1805 2733/3579/1777\nf 2646/3622/1740 2704/3623/1782 2742/3624/1806\nf 2651/3625/1727 2719/3626/1754 2666/3627/1799\nf 2656/3616/1802 2714/3615/1781 2691/3628/1783\nf 2656/3616/1802 2691/3628/1783 2719/3552/1754\nf 2668/3574/1773 2722/3629/1807 2723/3630/1808\nf 2735/3631/1729 2659/3589/1784 2725/3590/1778\nf 2711/3632/1809 2712/3633/1810 2710/3634/1811\nf 2644/3635/1812 2672/3620/1748 2727/3617/1803\nf 2741/3592/1786 2675/3597/1750 2656/3636/1802\nf 2732/3555/1756 2742/3624/1806 2704/3623/1782\nf 2698/3637/1797 2733/3579/1777 2706/3621/1805\nf 2727/3617/1803 2684/3638/1813 2644/3635/1812\nf 2688/3639/1814 2705/3640/1768 2706/3641/1805\nf 2684/3638/1813 2658/3561/1762 2661/3560/1761\nf 2739/3642/1815 2683/3604/1795 2667/3535/1738\nf 2704/3623/1782 2714/3615/1781 2732/3555/1756\nf 2661/3560/1761 2644/3635/1812 2684/3638/1813\nf 2670/3573/1772 2647/3643/1733 2692/3644/1816\nf 2705/3640/1768 2688/3639/1814 2715/3645/1817\nf 2648/3570/1769 2716/3646/1818 2693/3568/1767\nf 2692/3644/1816 2668/3574/1773 2670/3573/1772\nf 2744/3647/1819 2662/3648/1732 2708/3649/1820\nf 2687/3571/1770 2747/3650/1821 2641/3558/1759\nf 2724/3651/1822 2734/3611/1789 2688/3639/1814\nf 2654/3551/1753 2741/3608/1786 2656/3616/1802\nf 2659/3589/1784 2658/3652/1762 2684/3653/1813\nf 2655/3527/1730 2735/3526/1729 2700/3593/1787\nf 2645/3580/1737 2733/3579/1777 2740/3612/1800\nf 2649/3567/1766 2707/3654/1823 2745/3655/1824\nf 2662/3529/1732 2709/3544/1747 2708/3656/1820\nf 2685/3562/1763 2677/3657/1744 2723/3630/1808\nf 2723/3630/1808 2722/3629/1807 2685/3562/1763\nf 2693/3658/1767 2703/3607/1798 2698/3606/1797\nf 2729/3613/1801 2702/3659/1796 2703/3660/1798\nf 2695/3661/1788 2734/3662/1789 2665/3663/1735\nf 2648/3570/1769 2745/3655/1824 2692/3644/1816\nf 2643/3557/1758 2645/3534/1737 2687/3571/1770\nf 2672/3664/1748 2641/3665/1759 2709/3666/1747\nf 2713/3591/1785 2678/3667/1743 2682/3582/1742\nf 2742/3624/1806 2732/3555/1756 2673/3668/1825\nf 2649/3567/1766 2715/3669/1817 2731/3565/1764\nf 2716/3670/1818 2744/3647/1819 2738/3671/1826\nf 2671/3672/1752 2681/3563/1751 2722/3629/1807\nf 2655/3673/1730 2653/3674/1728 2683/3604/1795\nf 2722/3629/1807 2745/3655/1824 2671/3672/1752\nf 2647/3675/1733 2718/3619/1804 2663/3618/1734\nf 2704/3587/1782 2667/3676/1738 2666/3610/1799\nf 2690/3566/1765 2707/3654/1823 2649/3567/1766\nf 2713/3677/1785 2725/3590/1778 2676/3542/1745\nf 2667/3535/1738 2704/3678/1782 2646/3537/1740\nf 2699/3679/1780 2674/3548/1741 2675/3547/1750\nf 2674/3538/1741 2678/3540/1743 2685/3680/1763\nf 2677/3681/1744 2685/3682/1763 2678/3667/1743\nf 2718/3619/1804 2669/3683/1771 2684/3638/1813\nf 2703/3660/1798 2694/3684/1827 2729/3613/1801\nf 2718/3619/1804 2647/3675/1733 2670/3685/1772\nf 2716/3646/1818 2738/3686/1826 2693/3568/1767\nf 2720/3601/1792 2721/3687/1828 2712/3688/1810\nf 2715/3645/1817 2688/3639/1814 2730/3576/1774\nf 2653/3525/1728 2700/3598/1787 2652/3523/1726\nf 2735/3526/1729 2725/3581/1778 2746/3583/1779\nf 2705/3689/1768 2715/3669/1817 2649/3567/1766\nf 2674/3538/1741 2699/3584/1780 2682/3539/1742\nf 2694/3690/1827 2736/3691/1829 2729/3692/1801\nf 2712/3688/1810 2743/3599/1790 2720/3601/1792\nf 2711/3693/1809 2710/3694/1811 2696/3695/1775\nf 2655/3673/1730 2683/3604/1795 2701/3603/1794\nf 2668/3574/1773 2692/3644/1816 2745/3655/1824\nf 2710/3696/1811 2712/3633/1810 2721/3697/1828\nf 2661/3698/1761 2728/3602/1793 2642/3556/1757\nf 2666/3699/1799 2719/3552/1754 2691/3628/1783\nf 2726/3700/1739 2742/3624/1806 2686/3701/1830\nf 2647/3643/1733 2648/3570/1769 2692/3644/1816\nf 2683/3604/1795 2653/3674/1728 2666/3627/1799\nf 2651/3553/1727 2652/3609/1726 2654/3551/1753\nf 2739/3642/1815 2645/3534/1737 2697/3702/1831\nf 2648/3570/1769 2647/3643/1733 2716/3646/1818\nf 2655/3673/1730 2701/3603/1794 2657/3703/1731\nf 2671/3550/1752 2732/3555/1756 2714/3615/1781\nf 2707/3704/1823 2690/3705/1765 2717/3600/1791\nf 2679/3546/1749 2674/3548/1741 2681/3549/1751\nf 2728/3602/1793 2661/3698/1761 2660/3706/1760\nf 2652/3523/1726 2746/3585/1779 2741/3592/1786\nf 2669/3572/1771 2668/3574/1773 2723/3630/1808\nf 2676/3542/1745 2669/3707/1771 2680/3543/1746\nf 2720/3708/1792 2731/3565/1764 2721/3709/1828\nf 2745/3655/1824 2648/3570/1769 2649/3567/1766\nf 2669/3683/1771 2718/3619/1804 2670/3685/1772\nf 2740/3710/1800 2687/3571/1770 2645/3534/1737\nf 2673/3668/1825 2732/3555/1756 2650/3554/1755\nf 2707/3711/1823 2673/3668/1825 2650/3554/1755\nf 2678/3667/1743 2713/3591/1785 2677/3681/1744\nf 2666/3627/1799 2667/3535/1738 2683/3604/1795\nf 2700/3598/1787 2653/3525/1728 2655/3712/1730\nf 2646/3622/1740 2742/3624/1806 2726/3700/1739\nf 2685/3562/1763 2722/3629/1807 2681/3563/1751\nf 2724/3651/1822 2688/3639/1814 2689/3713/1776\nf 2708/3714/1820 2736/3715/1829 2744/3716/1819\nf 2671/3550/1752 2714/3615/1781 2679/3546/1749\nf 2676/3542/1745 2677/3541/1744 2713/3677/1785\nf 2665/3532/1735 2726/3536/1739 2695/3717/1788\nf 2651/3625/1727 2666/3627/1799 2653/3674/1728\nf 2664/3718/1736 2665/3719/1735 2724/3651/1822\nf 2722/3629/1807 2668/3574/1773 2745/3655/1824\nf 2647/3643/1733 2662/3720/1732 2716/3646/1818\nf 2675/3547/1750 2679/3546/1749 2714/3615/1781\nf 2715/3669/1817 2730/3721/1774 2731/3565/1764\nf 2645/3534/1737 2643/3557/1758 2697/3702/1831\nf 2658/3652/1762 2735/3631/1729 2657/3722/1731\nf 2659/3589/1784 2735/3631/1729 2658/3652/1762\nf 2708/3649/1820 2729/3692/1801 2736/3691/1829\nf 2703/3660/1798 2737/3723/1832 2694/3684/1827\nf 2701/3603/1794 2728/3602/1793 2660/3706/1760\nf 2744/3724/1819 2694/3725/1827 2738/3686/1826\nf 2745/3655/1824 2707/3654/1823 2650/3726/1755\nf 2731/3565/1764 2720/3708/1792 2690/3566/1765\nf 2705/3689/1768 2649/3567/1766 2648/3570/1769\nf 2706/3641/1805 2689/3713/1776 2688/3639/1814\nf 2642/3556/1757 2697/3702/1831 2643/3557/1758\nf 2642/3556/1757 2672/3727/1748 2644/3728/1812\nf 2742/3624/1806 2673/3668/1825 2686/3701/1830\nf 2744/3647/1819 2716/3670/1818 2662/3648/1732\nf 2686/3729/1830 2695/3717/1788 2726/3536/1739\nf 2689/3713/1776 2645/3730/1737 2664/3718/1736\nf 2642/3556/1757 2641/3558/1759 2672/3727/1748\nf 2673/3731/1825 2717/3600/1791 2686/3732/1830\nf 2667/3535/1738 2726/3536/1739 2665/3532/1735\nf 2736/3733/1829 2694/3734/1827 2744/3735/1819\nf 2738/3736/1826 2694/3684/1827 2737/3723/1832\nf 2642/3556/1757 2644/3728/1812 2661/3698/1761\nf 2697/3702/1831 2728/3602/1793 2683/3604/1795\nf 2731/3737/1764 2710/3694/1811 2721/3738/1828\nf 2645/3534/1737 2739/3642/1815 2667/3535/1738\nf 2709/3666/1747 2641/3665/1759 2747/3739/1821\nf 2680/3740/1746 2723/3630/1808 2677/3657/1744\nf 2669/3683/1771 2676/3741/1745 2684/3638/1813\nf 2734/3611/1789 2730/3576/1774 2688/3639/1814\nf 2702/3659/1796 2740/3612/1800 2733/3579/1777\nf 2743/3599/1790 2686/3732/1830 2717/3600/1791\nf 2687/3742/1770 2729/3692/1801 2747/3739/1821\nf 2743/3599/1790 2712/3688/1810 2711/3743/1809\nf 2738/3744/1826 2703/3607/1798 2693/3658/1767\nf 2705/3745/1768 2693/3746/1767 2698/3637/1797\nf 2698/3637/1797 2706/3621/1805 2705/3745/1768\nf 2731/3737/1764 2696/3695/1775 2710/3694/1811\nf 2739/3642/1815 2697/3702/1831 2683/3604/1795\nf 2724/3651/1822 2689/3713/1776 2664/3718/1736\nf 2642/3556/1757 2728/3602/1793 2697/3702/1831\nf 2656/3616/1802 2719/3552/1754 2654/3551/1753\nf 2658/3652/1762 2657/3722/1731 2660/3747/1760\nf 2708/3649/1820 2747/3739/1821 2729/3692/1801\nf 2729/3613/1801 2740/3612/1800 2702/3659/1796\nf 2686/3729/1830 2743/3748/1790 2695/3717/1788\nf 2708/3649/1820 2709/3666/1747 2747/3739/1821\nf 2733/3749/1777 2698/3606/1797 2702/3605/1796\nf 2659/3589/1784 2684/3653/1813 2676/3542/1745\nf 2660/3706/1760 2657/3703/1731 2701/3603/1794\nf 2727/3617/1803 2718/3619/1804 2684/3638/1813\nf 2738/3744/1826 2737/3750/1832 2703/3607/1798\nf 2734/3751/1789 2724/3752/1822 2665/3532/1735\nf 2743/3748/1790 2711/3753/1809 2695/3717/1788\nf 2745/3655/1824 2650/3726/1755 2671/3672/1752\nf 2720/3601/1792 2717/3600/1791 2690/3705/1765\nf 2717/3600/1791 2673/3731/1825 2707/3704/1823\nf 2680/3740/1746 2669/3572/1771 2723/3630/1808\nf 2696/3695/1775 2695/3754/1788 2711/3693/1809\nf 2783/3755/1833 2748/3756/1834 2749/3757/1835\nf 2755/3758/1836 2803/3759/1837 2754/3760/1838\nf 2760/3761/1839 2759/3762/1840 2761/3763/1841\nf 2758/3764/1842 2763/3765/1843 2844/3766/1844\nf 2858/3767/1845 2764/3768/1846 2792/3769/1847\nf 2769/3770/1848 2749/3771/1835 2748/3772/1834\nf 2769/3770/1848 2748/3772/1834 2770/3773/1849\nf 2771/3774/1850 2753/3775/1851 2752/3776/1852\nf 2772/3777/1853 2752/3778/1852 2773/3779/1854\nf 2750/3780/1855 2875/3781/1856 2770/3773/1849\nf 2775/3782/1857 2750/3780/1855 2751/3783/1858\nf 2861/3784/1859 2775/3782/1857 2751/3783/1858\nf 2829/3785/1860 2757/3786/1861 2784/3787/1862\nf 2776/3788/1863 2756/3789/1864 2754/3760/1838\nf 2797/3790/1865 2794/3791/1866 2778/3792/1867\nf 2866/3793/1868 2780/3794/1869 2781/3795/1870\nf 2774/3796/1871 2783/3797/1833 2782/3798/1872\nf 2831/3799/1873 2774/3796/1871 2773/3800/1854\nf 2762/3801/1874 2793/3802/1875 2764/3803/1846\nf 2761/3804/1841 2793/3805/1875 2762/3806/1874\nf 2759/3807/1840 2842/3808/1876 2794/3791/1866\nf 2789/3809/1877 2799/3810/1878 2790/3811/1879\nf 2788/3812/1880 2819/3813/1881 2789/3814/1877\nf 2866/3793/1868 2781/3795/1870 2791/3815/1882\nf 2790/3816/1879 2799/3817/1878 2785/3818/1883\nf 2759/3762/1840 2758/3764/1842 2842/3819/1876\nf 2844/3766/1844 2842/3819/1876 2758/3764/1842\nf 2803/3759/1837 2753/3775/1851 2771/3774/1850\nf 2854/3820/1884 2809/3821/1885 2821/3822/1886\nf 2799/3810/1878 2789/3809/1877 2819/3823/1881\nf 2804/3824/1887 2833/3825/1888 2769/3770/1848\nf 2807/3826/1889 2808/3827/1890 2834/3828/1891\nf 2804/3824/1887 2809/3829/1885 2810/3830/1892\nf 2846/3831/1893 2837/3832/1894 2845/3833/1895\nf 2763/3765/1843 2786/3834/1896 2844/3766/1844\nf 2863/3835/1897 2790/3811/1879 2873/3836/1898\nf 2817/3837/1899 2873/3838/1898 2790/3816/1879\nf 2840/3839/1900 2824/3840/1901 2844/3841/1844\nf 2790/3811/1879 2863/3835/1897 2789/3809/1877\nf 2873/3838/1898 2817/3837/1899 2864/3842/1902\nf 2863/3835/1897 2762/3801/1874 2858/3843/1845\nf 2850/3844/1903 2814/3845/1904 2847/3846/1905\nf 2875/3781/1856 2775/3782/1857 2813/3847/1906\nf 2750/3780/1855 2775/3782/1857 2875/3781/1856\nf 2786/3834/1896 2864/3848/1902 2817/3849/1899\nf 2873/3838/1898 2760/3850/1839 2762/3806/1874\nf 2845/3833/1895 2837/3832/1894 2836/3851/1907\nf 2854/3820/1884 2821/3822/1886 2816/3852/1908\nf 2844/3841/1844 2824/3840/1901 2794/3853/1866\nf 2770/3854/1849 2801/3855/1909 2849/3856/1910\nf 2840/3839/1900 2780/3857/1869 2838/3858/1911\nf 2752/3859/1852 2772/3860/1853 2771/3861/1850\nf 2805/3862/1912 2820/3863/1913 2836/3851/1907\nf 2868/3864/1914 2841/3865/1915 2829/3785/1860\nf 2752/3776/1852 2796/3866/1916 2773/3867/1854\nf 2843/3868/1917 2832/3869/1918 2826/3870/1919\nf 2769/3871/1848 2809/3821/1885 2804/3872/1887\nf 2859/3873/1920 2801/3874/1909 2857/3875/1921\nf 2801/3855/1909 2859/3876/1920 2849/3856/1910\nf 2864/3848/1902 2786/3834/1896 2763/3765/1843\nf 2760/3761/1839 2864/3848/1902 2763/3765/1843\nf 2798/3877/1922 2831/3799/1873 2851/3878/1923\nf 2812/3879/1924 2771/3774/1850 2823/3880/1925\nf 2784/3881/1862 2838/3882/1911 2756/3883/1864\nf 2838/3884/1911 2784/3787/1862 2824/3885/1901\nf 2798/3877/1922 2768/3886/1926 2777/3887/1927\nf 2856/3888/1928 2818/3889/1929 2859/3876/1920\nf 2813/3847/1906 2775/3782/1857 2860/3890/1930\nf 2795/3891/1931 2822/3892/1932 2779/3893/1933\nf 2807/3826/1889 2877/3894/1934 2825/3895/1935\nf 2824/3840/1901 2840/3839/1900 2838/3858/1911\nf 2832/3869/1918 2843/3868/1917 2782/3896/1872\nf 2854/3820/1884 2869/3897/1936 2855/3898/1937\nf 2837/3899/1894 2834/3900/1891 2835/3901/1938\nf 2803/3902/1837 2771/3903/1850 2802/3904/1939\nf 2840/3905/1900 2781/3906/1870 2780/3907/1869\nf 2827/3908/1940 2862/3909/1941 2855/3910/1937\nf 2751/3911/1858 2824/3885/1901 2757/3786/1861\nf 2794/3853/1866 2842/3912/1876 2844/3841/1844\nf 2828/3913/1942 2852/3914/1943 2755/3758/1836\nf 2851/3878/1923 2773/3800/1854 2796/3915/1916\nf 2807/3916/1889 2834/3900/1891 2846/3917/1893\nf 2770/3918/1849 2821/3822/1886 2809/3821/1885\nf 2870/3919/1944 2826/3920/1919 2862/3909/1941\nf 2774/3921/1871 2782/3896/1872 2843/3868/1917\nf 2812/3922/1924 2816/3852/1908 2802/3904/1939\nf 2770/3773/1849 2875/3781/1856 2801/3923/1909\nf 2823/3924/1925 2826/3870/1919 2870/3925/1944\nf 2831/3799/1873 2773/3800/1854 2851/3878/1923\nf 2836/3851/1907 2820/3863/1913 2845/3833/1895\nf 2783/3926/1833 2749/3927/1835 2782/3896/1872\nf 2831/3799/1873 2777/3887/1927 2783/3797/1833\nf 2851/3878/1923 2796/3915/1916 2779/3928/1933\nf 2803/3929/1837 2839/3930/1945 2800/3931/1946\nf 2826/3920/1919 2832/3932/1918 2862/3909/1941\nf 2793/3933/1875 2814/3845/1904 2865/3934/1947\nf 2851/3878/1923 2779/3928/1933 2822/3935/1932\nf 2773/3800/1854 2774/3796/1871 2772/3936/1853\nf 2854/3820/1884 2810/3937/1892 2809/3821/1885\nf 2856/3888/1928 2803/3929/1837 2818/3889/1929\nf 2825/3895/1935 2808/3827/1890 2807/3826/1889\nf 2798/3877/1922 2766/3938/1948 2768/3886/1926\nf 2830/3939/1949 2800/3940/1946 2876/3941/1950\nf 2789/3814/1877 2767/3942/1951 2787/3943/1952\nf 2808/3944/1890 2857/3945/1921 2834/3900/1891\nf 2778/3946/1867 2824/3885/1901 2751/3911/1858\nf 2827/3908/1940 2855/3910/1937 2869/3947/1936\nf 2791/3948/1882 2785/3949/1883 2874/3950/1953\nf 2851/3878/1923 2822/3935/1932 2872/3951/1954\nf 2751/3783/1858 2750/3780/1855 2847/3846/1905\nf 2765/3952/1955 2768/3886/1926 2766/3938/1948\nf 2849/3953/1910 2859/3954/1920 2815/3955/1956\nf 2862/3909/1941 2827/3908/1940 2870/3919/1944\nf 2761/3804/1841 2762/3806/1874 2760/3850/1839\nf 2785/3818/1883 2817/3837/1899 2790/3816/1879\nf 2774/3796/1871 2831/3799/1873 2783/3797/1833\nf 2840/3905/1900 2844/3766/1844 2786/3834/1896\nf 2858/3843/1845 2762/3801/1874 2764/3803/1846\nf 2835/3901/1938 2834/3900/1891 2813/3956/1906\nf 2872/3951/1954 2822/3935/1932 2787/3957/1952\nf 2800/3940/1946 2776/3788/1863 2754/3760/1838\nf 2793/3933/1875 2761/3958/1841 2814/3845/1904\nf 2797/3790/1865 2814/3845/1904 2761/3958/1841\nf 2834/3900/1891 2837/3899/1894 2846/3917/1893\nf 2752/3776/1852 2753/3775/1851 2852/3914/1943\nf 2761/3958/1841 2759/3807/1840 2794/3791/1866\nf 2793/3933/1875 2865/3934/1947 2764/3959/1846\nf 2829/3785/1860 2830/3960/1949 2868/3864/1914\nf 2849/3953/1910 2815/3955/1956 2770/3918/1849\nf 2814/3845/1904 2768/3961/1926 2765/3962/1955\nf 2852/3914/1943 2779/3893/1933 2796/3866/1916\nf 2760/3850/1839 2873/3838/1898 2864/3842/1902\nf 2811/3963/1957 2877/3964/1934 2845/3965/1895\nf 2783/3797/1833 2777/3887/1927 2748/3966/1834\nf 2839/3967/1945 2825/3968/1935 2800/3940/1946\nf 2795/3891/1931 2867/3969/1958 2848/3970/1959\nf 2787/3943/1952 2822/3971/1932 2795/3972/1931\nf 2803/3759/1837 2755/3758/1836 2753/3775/1851\nf 2781/3906/1870 2840/3905/1900 2791/3948/1882\nf 2786/3834/1896 2791/3948/1882 2840/3905/1900\nf 2828/3913/1942 2756/3789/1864 2780/3794/1869\nf 2780/3794/1869 2866/3793/1868 2828/3913/1942\nf 2806/3973/1960 2866/3793/1868 2791/3815/1882\nf 2858/3843/1845 2767/3974/1951 2863/3835/1897\nf 2802/3904/1939 2816/3852/1908 2815/3955/1956\nf 2757/3786/1861 2824/3885/1901 2784/3787/1862\nf 2860/3975/1930 2775/3976/1857 2861/3977/1859\nf 2835/3978/1938 2836/3851/1907 2837/3832/1894\nf 2872/3979/1954 2767/3942/1951 2766/3980/1948\nf 2813/3956/1906 2834/3900/1891 2857/3945/1921\nf 2766/3938/1948 2798/3877/1922 2872/3951/1954\nf 2820/3863/1913 2871/3981/1961 2811/3982/1957\nf 2759/3762/1840 2760/3761/1839 2758/3764/1842\nf 2848/3970/1959 2788/3983/1880 2795/3891/1931\nf 2788/3983/1880 2848/3970/1959 2819/3984/1881\nf 2818/3985/1929 2803/3902/1837 2802/3904/1939\nf 2838/3858/1911 2780/3857/1869 2756/3986/1864\nf 2767/3942/1951 2789/3814/1877 2863/3987/1897\nf 2754/3760/1838 2803/3759/1837 2800/3940/1946\nf 2816/3852/1908 2869/3897/1936 2854/3820/1884\nf 2778/3988/1867 2794/3853/1866 2824/3840/1901\nf 2786/3834/1896 2817/3849/1899 2785/3949/1883\nf 2843/3868/1917 2772/3989/1853 2774/3921/1871\nf 2776/3788/1863 2800/3940/1946 2830/3939/1949\nf 2757/3786/1861 2829/3785/1860 2841/3865/1915\nf 2831/3799/1873 2798/3877/1922 2777/3887/1927\nf 2832/3869/1918 2782/3896/1872 2749/3927/1835\nf 2750/3780/1855 2748/3772/1834 2850/3990/1903\nf 2789/3814/1877 2787/3943/1952 2788/3812/1880\nf 2766/3980/1948 2858/3767/1845 2792/3769/1847\nf 2792/3769/1847 2765/3991/1955 2766/3980/1948\nf 2876/3941/1950 2800/3940/1946 2877/3964/1934\nf 2767/3942/1951 2858/3767/1845 2766/3980/1948\nf 2802/3904/1939 2815/3955/1956 2818/3985/1929\nf 2765/3962/1955 2865/3934/1947 2814/3845/1904\nf 2867/3969/1958 2806/3973/1960 2848/3970/1959\nf 2787/3943/1952 2795/3972/1931 2788/3812/1880\nf 2854/3820/1884 2855/3898/1937 2810/3937/1892\nf 2794/3791/1866 2797/3790/1865 2761/3958/1841\nf 2847/3846/1905 2797/3790/1865 2778/3792/1867\nf 2826/3870/1919 2823/3924/1925 2843/3868/1917\nf 2825/3992/1935 2839/3930/1945 2856/3888/1928\nf 2814/3845/1904 2850/3844/1903 2768/3961/1926\nf 2799/3993/1878 2874/3994/1953 2785/3995/1883\nf 2850/3990/1903 2748/3772/1834 2777/3996/1927\nf 2841/3997/1915 2868/3998/1914 2805/3862/1912\nf 2805/3862/1912 2861/3977/1859 2841/3997/1915\nf 2853/3999/1962 2869/3897/1936 2812/3922/1924\nf 2821/3822/1886 2770/3918/1849 2815/3955/1956\nf 2846/3917/1893 2877/4000/1934 2807/3916/1889\nf 2868/3998/1914 2871/3981/1961 2805/3862/1912\nf 2862/3909/1941 2878/4001/1963 2855/3910/1937\nf 2827/4002/1940 2869/3897/1936 2853/3999/1962\nf 2850/4003/1903 2777/4004/1927 2768/4005/1926\nf 2847/3846/1905 2814/3845/1904 2797/3790/1865\nf 2819/3984/1881 2806/3973/1960 2799/3993/1878\nf 2861/3977/1859 2805/3862/1912 2860/3975/1930\nf 2808/3944/1890 2856/3888/1928 2859/3876/1920\nf 2859/3873/1920 2857/3875/1921 2808/4006/1890\nf 2877/3964/1934 2811/3963/1957 2876/3941/1950\nf 2830/4007/1949 2811/3982/1957 2871/3981/1961\nf 2796/3866/1916 2752/3776/1852 2852/3914/1943\nf 2765/3962/1955 2792/4008/1847 2865/3934/1947\nf 2853/4009/1962 2823/3880/1925 2870/4010/1944\nf 2828/3913/1942 2866/3793/1868 2852/3914/1943\nf 2770/3918/1849 2809/3821/1885 2769/3871/1848\nf 2823/3880/1925 2853/4009/1962 2812/3879/1924\nf 2878/4001/1963 2862/3909/1941 2832/3932/1918\nf 2878/4011/1963 2833/3825/1888 2804/3824/1887\nf 2871/3981/1961 2820/3863/1913 2805/3862/1912\nf 2830/3960/1949 2829/3785/1860 2776/4012/1863\nf 2836/3851/1907 2860/3975/1930 2805/3862/1912\nf 2825/3895/1935 2877/3894/1934 2800/4013/1946\nf 2878/4011/1963 2804/3824/1887 2810/3830/1892\nf 2810/3830/1892 2855/4014/1937 2878/4011/1963\nf 2785/3949/1883 2791/3948/1882 2786/3834/1896\nf 2867/3969/1958 2795/3891/1931 2779/3893/1933\nf 2811/3982/1957 2845/3833/1895 2820/3863/1913\nf 2828/3913/1942 2755/3758/1836 2756/3789/1864\nf 2754/3760/1838 2756/3789/1864 2755/3758/1836\nf 2823/4015/1925 2771/4016/1850 2772/4017/1853\nf 2830/3960/1949 2871/4018/1961 2868/3864/1914\nf 2833/3825/1888 2749/3771/1835 2769/3770/1848\nf 2818/3985/1929 2815/3955/1956 2859/3954/1920\nf 2861/4019/1859 2751/3911/1858 2757/3786/1861\nf 2757/3786/1861 2841/3865/1915 2861/4019/1859\nf 2764/3959/1846 2865/3934/1947 2792/4008/1847\nf 2877/4000/1934 2846/3917/1893 2845/4020/1895\nf 2762/3801/1874 2863/3835/1897 2873/3836/1898\nf 2799/3993/1878 2806/3973/1960 2874/3994/1953\nf 2872/3951/1954 2798/3877/1922 2851/3878/1923\nf 2852/3914/1943 2753/3775/1851 2755/3758/1836\nf 2876/4021/1950 2811/3982/1957 2830/4007/1949\nf 2803/3929/1837 2856/3888/1928 2839/3930/1945\nf 2784/3787/1862 2776/4012/1863 2829/3785/1860\nf 2772/3989/1853 2843/3868/1917 2823/3924/1925\nf 2857/3945/1921 2801/3855/1909 2813/3956/1906\nf 2835/3978/1938 2860/3975/1930 2836/3851/1907\nf 2758/3764/1842 2760/3761/1839 2763/3765/1843\nf 2850/3990/1903 2847/3846/1905 2750/3780/1855\nf 2847/3846/1905 2778/3792/1867 2751/3783/1858\nf 2833/4022/1888 2878/4001/1963 2832/3932/1918\nf 2874/3994/1953 2806/3973/1960 2791/3815/1882\nf 2867/3969/1958 2852/3914/1943 2866/3793/1868\nf 2806/3973/1960 2819/3984/1881 2848/3970/1959\nf 2806/3973/1960 2867/3969/1958 2866/3793/1868\nf 2748/3772/1834 2750/3780/1855 2770/3773/1849\nf 2856/4023/1928 2808/4024/1890 2825/4025/1935\nf 2771/3774/1850 2812/3879/1924 2802/4026/1939\nf 2869/3897/1936 2816/3852/1908 2812/3922/1924\nf 2776/4012/1863 2784/3787/1862 2756/4027/1864\nf 2813/3847/1906 2801/4028/1909 2875/3781/1856\nf 2749/3927/1835 2833/4029/1888 2832/3869/1918\nf 2821/3822/1886 2815/3955/1956 2816/3852/1908\nf 2779/3893/1933 2852/3914/1943 2867/3969/1958\nf 2860/3890/1930 2835/4030/1938 2813/3847/1906\nf 2787/3943/1952 2767/3942/1951 2872/3979/1954\nf 2870/4010/1944 2827/4031/1940 2853/4009/1962\nf 2971/4032/1964 2879/4033/1965 2911/4034/1966\nf 2888/4035/1967 2887/4036/1968 2951/4037/1969\nf 2885/4038/1970 2890/4039/1971 2975/4040/1972\nf 2894/4041/1973 2892/4042/1974 2897/4043/1975\nf 2893/4044/1976 2896/4045/1977 2895/4046/1978\nf 2970/4047/1979 2899/4048/1980 2902/4049/1981\nf 2937/4050/1982 2902/4051/1981 2912/4052/1983\nf 2887/4036/1968 2904/4053/1984 2951/4037/1969\nf 2999/4054/1985 2906/4055/1986 2907/4056/1987\nf 2909/4057/1988 2883/4058/1989 2884/4059/1990\nf 2972/4060/1991 2889/4061/1992 2888/4062/1967\nf 2992/4063/1993 2934/4064/1994 2914/4065/1995\nf 2917/4066/1996 2984/4067/1997 2913/4068/1998\nf 2921/4069/1999 2920/4070/2000 2927/4071/2001\nf 2922/4072/2002 2920/4070/2000 2921/4069/1999\nf 2896/4045/1977 2923/4073/2003 2895/4046/1978\nf 2926/4074/2004 2960/4075/2005 2925/4076/2006\nf 2934/4064/1994 2955/4077/2007 2914/4065/1995\nf 2928/4078/2008 2907/4056/1987 2918/4079/2009\nf 2929/4080/2010 2918/4079/2009 2879/4081/1965\nf 2931/4082/2011 2930/4083/2012 2922/4084/2002\nf 2930/4083/2012 2923/4073/2003 2922/4084/2002\nf 2916/4085/2013 2930/4083/2012 2931/4082/2011\nf 2886/4086/2014 2906/4087/1986 2887/4088/1968\nf 2986/4089/2015 2886/4086/2014 2935/4090/2016\nf 2932/4091/2017 2912/4052/1983 2911/4034/1966\nf 2985/4092/2018 2891/4093/2019 2933/4094/2020\nf 2893/4044/1976 2933/4095/2020 2891/4096/2019\nf 2986/4089/2015 2935/4097/2016 2914/4098/1995\nf 2915/4099/2021 2988/4100/2022 2916/4085/2013\nf 2984/4101/1997 2917/4102/1996 3013/4103/2023\nf 2885/4104/1970 2884/4059/1990 3013/4105/2023\nf 2938/4106/2024 2932/4091/2017 2947/4107/2025\nf 2902/4051/1981 2937/4050/1982 2970/4108/1979\nf 2940/4109/2026 2881/4110/2027 2903/4111/2028\nf 2907/4056/1987 2928/4078/2008 2999/4054/1985\nf 2999/4054/1985 2929/4080/2010 3008/4112/2029\nf 2986/4089/2015 2947/4107/2025 3004/4113/2030\nf 3009/4114/2031 2995/4115/2032 2952/4116/2033\nf 2997/4117/2034 2952/4118/2033 2995/4119/2032\nf 2966/4120/2035 2949/4121/2036 2948/4122/2037\nf 2995/4115/2032 3009/4114/2031 2960/4123/2005\nf 2995/4119/2032 2920/4070/2000 2997/4117/2034\nf 2959/4124/2038 2989/4125/2039 2990/4126/2040\nf 2998/4127/2041 2915/4128/2021 3010/4129/2042\nf 2899/4048/1980 2900/4130/2043 2901/4131/2044\nf 3009/4114/2031 2894/4132/1973 2969/4133/2045\nf 2989/4134/2039 2977/4135/2046 2942/4136/2047\nf 3008/4112/2029 2929/4080/2010 2958/4137/2048\nf 3003/4138/2049 2962/4139/2050 2983/4140/2051\nf 2894/4132/1973 3009/4114/2031 2952/4116/2033\nf 2909/4057/1988 2953/4141/2052 2908/4142/2053\nf 2981/4143/2054 2989/4125/2039 2959/4124/2038\nf 2957/4144/2055 2903/4145/2028 2961/4146/2056\nf 3004/4113/2030 2906/4087/1986 2986/4089/2015\nf 2927/4147/2001 3001/4148/2057 2921/4149/1999\nf 2979/4150/2058 3008/4112/2029 2958/4137/2048\nf 2906/4087/1986 3004/4113/2030 2907/4151/1987\nf 2990/4126/2040 2989/4125/2039 2939/4152/2059\nf 2904/4053/1984 2887/4036/1968 2905/4153/2060\nf 3006/4154/2061 2975/4040/1972 2919/4155/2062\nf 2912/4052/1983 2932/4091/2017 2937/4050/1982\nf 2901/4131/2044 2960/4075/2005 3009/4156/2031\nf 2950/4157/2063 2997/4158/2034 2896/4045/1977\nf 2982/4159/2064 2957/4144/2055 2973/4160/2065\nf 2947/4107/2025 2955/4161/2007 2938/4106/2024\nf 3003/4138/2049 2983/4140/2051 2996/4162/2066\nf 2886/4086/2014 2986/4089/2015 2906/4087/1986\nf 2988/4100/2022 2890/4163/1971 2991/4164/2067\nf 2904/4053/1984 2905/4153/2060 2941/4165/2068\nf 2987/4166/2069 3000/4167/2070 2979/4168/2058\nf 2976/4169/2071 2945/4170/2072 2910/4171/2073\nf 2994/4172/2074 2944/4173/2075 2936/4174/2076\nf 2940/4109/2026 2978/4175/2077 2880/4176/2078\nf 2977/4177/2046 2951/4178/1969 2974/4179/2079\nf 2991/4164/2067 2966/4120/2035 2988/4100/2022\nf 2929/4080/2010 2999/4054/1985 2928/4078/2008\nf 2957/4144/2055 3000/4180/2070 2943/4181/2080\nf 2939/4182/2059 2942/4136/2047 2882/4183/2081\nf 2966/4120/2035 2991/4164/2067 2949/4121/2036\nf 3004/4113/2030 2932/4091/2017 2911/4034/1966\nf 3003/4138/2049 2946/4184/2082 2975/4040/1972\nf 2944/4173/2075 2971/4185/1964 2912/4186/1983\nf 2895/4046/1978 2930/4083/2012 2948/4187/2037\nf 2893/4044/1976 2895/4046/1978 2948/4187/2037\nf 2997/4117/2034 2923/4188/2003 2896/4189/1977\nf 2941/4190/2068 2968/4191/2083 2904/4192/1984\nf 2938/4106/2024 2955/4161/2007 2954/4193/2084\nf 2968/4191/2083 2982/4159/2064 2973/4160/2065\nf 2962/4139/2050 2910/4194/2073 2945/4195/2072\nf 2942/4196/2047 2974/4179/2079 2961/4146/2056\nf 2888/4062/1967 2910/4197/2073 2972/4060/1991\nf 2911/4034/1966 2918/4198/2009 3004/4113/2030\nf 2890/4163/1971 2988/4100/2022 2919/4199/2062\nf 2947/4107/2025 2986/4089/2015 2914/4098/1995\nf 2982/4200/2064 2941/4165/2068 2979/4201/2058\nf 2932/4091/2017 3004/4113/2030 2947/4107/2025\nf 2975/4040/1972 2962/4139/2050 3003/4138/2049\nf 2950/4202/2063 2891/4203/2019 2892/4042/1974\nf 2990/4204/2040 2963/4205/2085 2959/4206/2038\nf 2950/4202/2063 2952/4118/2033 2997/4117/2034\nf 2889/4061/1992 2972/4207/1991 2919/4199/2062\nf 2920/4070/2000 2995/4119/2032 2927/4071/2001\nf 2960/4123/2005 2927/4208/2001 2995/4115/2032\nf 2884/4059/1990 2883/4058/1989 3013/4105/2023\nf 2947/4107/2025 2914/4098/1995 2955/4161/2007\nf 2983/4140/2051 2962/4139/2050 2945/4195/2072\nf 2959/4124/2038 2976/4209/2071 2981/4143/2054\nf 2892/4042/1974 2967/4210/2086 2897/4043/1975\nf 3011/4211/2087 2897/4212/1975 2967/4213/2086\nf 2913/4214/1998 2893/4215/1976 2956/4216/2088\nf 2960/4075/2005 2900/4130/2043 2924/4217/2089\nf 2980/4218/2090 2992/4063/1993 2915/4128/2021\nf 2956/4219/2088 2948/4122/2037 2949/4121/2036\nf 2944/4173/2075 2967/4213/2086 2936/4174/2076\nf 2881/4110/2027 2882/4220/2081 2903/4111/2028\nf 2890/4039/1971 2919/4155/2062 2975/4040/1972\nf 2920/4221/2000 2922/4084/2002 2923/4073/2003\nf 2888/4035/1967 2998/4127/2041 3010/4129/2042\nf 3013/4103/2023 2991/4164/2067 2890/4163/1971\nf 2940/4109/2026 2880/4176/2078 2881/4110/2027\nf 2900/4130/2043 2954/4222/2084 2924/4217/2089\nf 2948/4223/2037 2956/4216/2088 2893/4215/1976\nf 2927/4208/2001 2926/4224/2004 3007/4225/2091\nf 2919/4199/2062 2988/4100/2022 2889/4061/1992\nf 2927/4208/2001 2960/4123/2005 2926/4224/2004\nf 2964/4226/2092 3003/4138/2049 3002/4227/2093\nf 2996/4162/2066 3002/4227/2093 3003/4138/2049\nf 2888/4062/1967 2889/4061/1992 2998/4228/2041\nf 2967/4210/2086 2892/4042/1974 2985/4229/2018\nf 3002/4227/2093 2963/4230/2085 2964/4226/2092\nf 2900/4130/2043 2960/4075/2005 2901/4131/2044\nf 2996/4231/2066 2945/4232/2072 2959/4206/2038\nf 2959/4206/2038 3002/4233/2093 2996/4231/2066\nf 2942/4136/2047 2939/4182/2059 2989/4134/2039\nf 3000/4180/2070 2957/4144/2055 2982/4159/2064\nf 2930/4083/2012 2895/4046/1978 2923/4073/2003\nf 2951/4178/1969 2973/4160/2065 2974/4179/2079\nf 3000/4167/2070 2987/4166/2069 2943/4234/2080\nf 3010/4129/2042 2915/4128/2021 3005/4235/2094\nf 2963/4205/2085 3002/4233/2093 2959/4206/2038\nf 2941/4165/2068 3014/4236/2095 3008/4237/2029\nf 2937/4050/1982 2932/4091/2017 2938/4106/2024\nf 2891/4096/2019 2950/4157/2063 2893/4044/1976\nf 3013/4103/2023 2917/4102/1996 2991/4164/2067\nf 2879/4081/1965 2880/4238/2078 2929/4080/2010\nf 2978/4239/2077 2958/4137/2048 2929/4080/2010\nf 2898/4240/2096 2897/4241/1975 3011/4242/2087\nf 2899/4048/1980 2970/4047/1979 2900/4130/2043\nf 2964/4243/2092 2963/4244/2085 2953/4141/2052\nf 2931/4245/2011 3001/4148/2057 2980/4218/2090\nf 2956/4219/2088 2917/4102/1996 2913/4246/1998\nf 2966/4120/2035 2916/4085/2013 2988/4100/2022\nf 2918/4198/2009 2911/4034/1966 2879/4033/1965\nf 2976/4169/2071 2910/4171/2073 2965/4247/2097\nf 2934/4064/1994 2992/4063/1993 2993/4248/2098\nf 2914/4249/1995 2935/4250/2016 3005/4251/2094\nf 3012/4252/2099 2994/4172/2074 2936/4174/2076\nf 2969/4253/2045 2901/4254/2044 3009/4255/2031\nf 2945/4170/2072 2976/4169/2071 2959/4256/2038\nf 2890/4163/1971 2885/4257/1970 3013/4103/2023\nf 2969/4133/2045 2894/4132/1973 2897/4241/1975\nf 2967/4213/2086 2944/4173/2075 2902/4258/1981\nf 2971/4259/1964 2911/4260/1966 2912/4261/1983\nf 2938/4262/2024 2970/4047/1979 2937/4263/1982\nf 2915/4099/2021 2889/4061/1992 2988/4100/2022\nf 2990/4204/2040 2908/4264/2053 2953/4265/2052\nf 2898/4266/2096 2899/4048/1980 2969/4267/2045\nf 2973/4160/2065 2957/4144/2055 2961/4146/2056\nf 2940/4109/2026 2943/4268/2080 2978/4175/2077\nf 2940/4269/2026 2957/4144/2055 2943/4181/2080\nf 2917/4102/1996 2949/4121/2036 2991/4164/2067\nf 2917/4102/1996 2956/4219/2088 2949/4121/2036\nf 2897/4241/1975 2898/4240/2096 2969/4133/2045\nf 2888/4035/1967 2951/4037/1969 2965/4247/2097\nf 2955/4270/2007 2934/4271/1994 2954/4222/2084\nf 2946/4184/2082 2884/4272/1990 2885/4038/1970\nf 2902/4258/1981 3011/4211/2087 2967/4213/2086\nf 2960/4075/2005 2924/4217/2089 2925/4076/2006\nf 2901/4131/2044 2969/4267/2045 2899/4048/1980\nf 2998/4228/2041 2889/4061/1992 2915/4099/2021\nf 2924/4217/2089 2954/4222/2084 2925/4076/2006\nf 2978/4273/2077 2929/4274/2010 2880/4275/2078\nf 2918/4079/2009 2929/4080/2010 2928/4078/2008\nf 2923/4188/2003 2997/4117/2034 2920/4070/2000\nf 2885/4038/1970 2975/4040/1972 2946/4184/2082\nf 2904/4192/1984 2973/4160/2065 2951/4178/1969\nf 2893/4215/1976 2913/4214/1998 2933/4276/2020\nf 3006/4154/2061 2919/4155/2062 2972/4277/1991\nf 2933/4094/2020 2913/4278/1998 2985/4092/2018\nf 2952/4118/2033 2950/4202/2063 2894/4041/1973\nf 2908/4142/2053 2882/4220/2081 2909/4057/1988\nf 3006/4154/2061 2962/4139/2050 2975/4040/1972\nf 2973/4160/2065 2961/4146/2056 2974/4179/2079\nf 2987/4166/2069 2978/4279/2077 2943/4234/2080\nf 2903/4145/2028 2957/4144/2055 2940/4269/2026\nf 3001/4148/2057 2927/4147/2001 2980/4218/2090\nf 3007/4280/2091 2980/4218/2090 2927/4147/2001\nf 3008/4237/2029 2979/4201/2058 2941/4165/2068\nf 3014/4281/2095 2999/4054/1985 3008/4112/2029\nf 2974/4179/2079 2942/4196/2047 2977/4177/2046\nf 2984/4282/1997 3012/4252/2099 2936/4174/2076\nf 3012/4252/2099 2971/4185/1964 2994/4283/2074\nf 2887/4036/1968 2935/4284/2016 2886/4285/2014\nf 2946/4286/2082 2909/4057/1988 2884/4059/1990\nf 2979/4168/2058 2958/4287/2048 2987/4166/2069\nf 2910/4194/2073 2962/4139/2050 2972/4277/1991\nf 2967/4213/2086 2985/4092/2018 2936/4174/2076\nf 2921/4288/1999 2931/4082/2011 2922/4084/2002\nf 3010/4129/2042 3005/4235/2094 2935/4284/2016\nf 3012/4252/2099 2984/4282/1997 3013/4105/2023\nf 2980/4218/2090 2916/4289/2013 2931/4245/2011\nf 2939/4182/2059 2882/4183/2081 2908/4290/2053\nf 2891/4093/2019 2985/4092/2018 2892/4291/1974\nf 2945/4195/2072 2996/4162/2066 2983/4140/2051\nf 2930/4292/2012 2916/4293/2013 2966/4294/2035\nf 2966/4294/2035 2948/4223/2037 2930/4292/2012\nf 2925/4295/2006 3007/4280/2091 2926/4296/2004\nf 2941/4165/2068 2905/4153/2060 3014/4236/2095\nf 2946/4184/2082 3003/4138/2049 2964/4226/2092\nf 3012/4252/2099 2879/4297/1965 2971/4185/1964\nf 3010/4129/2042 2935/4284/2016 2887/4036/1968\nf 2953/4265/2052 2963/4205/2085 2990/4204/2040\nf 2965/4298/2097 2981/4143/2054 2976/4209/2071\nf 2916/4289/2013 2980/4218/2090 2915/4128/2021\nf 2882/4299/2081 2961/4146/2056 2903/4145/2028\nf 2951/4300/1969 2981/4301/2054 2965/4302/2097\nf 2898/4266/2096 2902/4303/1981 2899/4048/1980\nf 2882/4220/2081 2883/4058/1989 2909/4057/1988\nf 2908/4304/2053 2990/4126/2040 2939/4152/2059\nf 2978/4279/2077 2987/4166/2069 2958/4287/2048\nf 2907/4151/1987 3004/4113/2030 2918/4198/2009\nf 2950/4202/2063 2892/4042/1974 2894/4041/1973\nf 2881/4110/2027 3012/4252/2099 2882/4220/2081\nf 2883/4058/1989 2882/4220/2081 3012/4252/2099\nf 2989/4134/2039 2981/4301/2054 2977/4135/2046\nf 2915/4128/2021 2992/4063/1993 3005/4235/2094\nf 2944/4173/2075 2912/4186/1983 2902/4258/1981\nf 2931/4245/2011 2921/4149/1999 3001/4148/2057\nf 2909/4057/1988 2946/4286/2082 2964/4243/2092\nf 2896/4045/1977 2893/4044/1976 2950/4157/2063\nf 2968/4191/2083 2973/4160/2065 2904/4192/1984\nf 2882/4299/2081 2942/4196/2047 2961/4146/2056\nf 2980/4218/2090 3007/4280/2091 2993/4248/2098\nf 2965/4305/2097 2910/4306/2073 2888/4307/1967\nf 2887/4036/1968 2888/4035/1967 3010/4129/2042\nf 2900/4130/2043 2938/4262/2024 2954/4222/2084\nf 2902/4258/1981 2898/4308/2096 3011/4211/2087\nf 2993/4248/2098 2992/4063/1993 2980/4218/2090\nf 2881/4110/2027 2880/4176/2078 2879/4297/1965\nf 2879/4297/1965 3012/4252/2099 2881/4110/2027\nf 2981/4301/2054 2951/4300/1969 2977/4135/2046\nf 2971/4185/1964 2944/4173/2075 2994/4309/2074\nf 2913/4278/1998 2936/4174/2076 2985/4092/2018\nf 2970/4047/1979 2938/4262/2024 2900/4130/2043\nf 2982/4159/2064 2968/4191/2083 2941/4310/2068\nf 2906/4055/1986 2999/4054/1985 3014/4281/2095\nf 3014/4281/2095 2887/4311/1968 2906/4055/1986\nf 2964/4243/2092 2953/4141/2052 2909/4057/1988\nf 2972/4277/1991 2962/4139/2050 3006/4154/2061\nf 2936/4174/2076 2913/4278/1998 2984/4282/1997\nf 3013/4105/2023 2883/4058/1989 3012/4252/2099\nf 2979/4168/2058 3000/4167/2070 2982/4312/2064\nf 2914/4065/1995 3005/4235/2094 2992/4063/1993\nf 2954/4313/2084 2934/4064/1994 2925/4295/2006\nf 2993/4248/2098 2925/4295/2006 2934/4064/1994\nf 3014/4281/2095 2905/4314/2060 2887/4311/1968\nf 2925/4295/2006 2993/4248/2098 3007/4280/2091\nusemtl _teeth_maxwire_087224198\nf 1012/4315/2100 1014/4316/2101 1013/4317/2102\nf 1017/4318/2103 1018/4319/2104 1016/4320/2105\nf 1016/4320/2105 1021/4321/2106 1017/4318/2103\nf 1021/4321/2106 1016/4320/2105 1022/4322/2107\nf 1030/4323/2108 1031/4324/2109 1062/4325/2110\nf 1018/4326/2104 1020/4327/2111 1053/4328/2112\nf 1019/4329/2113 1017/4318/2103 1064/4330/2114\nf 1034/4331/2115 1036/4332/2116 1051/4333/2117\nf 1035/4334/2118 1020/4327/2111 1067/4335/2119\nf 1051/4333/2117 1036/4332/2116 1015/4336/2120\nf 1035/4334/2118 1053/4328/2112 1020/4327/2111\nf 1015/4337/2120 1013/4317/2102 1014/4338/2101\nf 1058/4339/2121 1057/4340/2122 1015/4337/2120\nf 1033/4341/2123 1049/4342/2124 1034/4331/2115\nf 1067/4335/2119 1055/4343/2125 1056/4344/2126\nf 1068/4345/2127 1056/4344/2126 1055/4343/2125\nf 1055/4343/2125 1063/4346/2128 1068/4345/2127\nf 1056/4344/2126 1066/4347/2129 1067/4335/2119\nf 1066/4347/2129 1042/4348/2130 1067/4335/2119\nf 1027/4349/2131 1060/4350/2132 1037/4351/2133\nf 1046/4352/2134 1049/4353/2124 1047/4354/2135\nf 1042/4348/2130 1032/4355/2136 1043/4356/2137\nf 1042/4348/2130 1066/4347/2129 1032/4355/2136\nf 1012/4315/2100 1013/4317/2102 1023/4357/2138\nf 1015/4337/2120 1057/4340/2122 1013/4317/2102\nf 1067/4335/2119 1020/4327/2111 1055/4343/2125\nf 1055/4343/2125 1020/4327/2111 1018/4326/2104\nf 1016/4358/2105 1053/4359/2112 1014/4360/2101\nf 1039/4361/2139 1059/4362/2140 1045/4363/2141\nf 1026/4364/2142 1024/4365/2143 1057/4340/2122\nf 1045/4366/2141 1061/4367/2144 1040/4368/2145\nf 1064/4330/2114 1021/4321/2106 1012/4369/2100\nf 1033/4341/2123 1034/4331/2115 1052/4370/2146\nf 1050/4371/2147 1025/4372/2148 1024/4365/2143\nf 1059/4373/2140 1039/4374/2139 1026/4364/2142\nf 1026/4364/2142 1058/4339/2121 1059/4373/2140\nf 1066/4375/2129 1056/4376/2126 1027/4349/2131\nf 1028/4377/2149 1068/4378/2127 1019/4379/2113\nf 1063/4346/2128 1055/4343/2125 1018/4326/2104\nf 1060/4380/2132 1050/4371/2147 1024/4365/2143\nf 1025/4372/2148 1054/4381/2150 1023/4357/2138\nf 1012/4315/2100 1023/4357/2138 1054/4381/2150\nf 1014/4360/2101 1022/4382/2107 1016/4358/2105\nf 1040/4383/2145 1030/4384/2108 1029/4385/2151\nf 1062/4325/2110 1029/4386/2151 1030/4323/2108\nf 1041/4387/2152 1028/4377/2149 1050/4388/2147\nf 1021/4321/2106 1064/4330/2114 1017/4318/2103\nf 1028/4377/2149 1019/4379/2113 1025/4389/2148\nf 1066/4375/2129 1044/4390/2153 1032/4391/2136\nf 1041/4387/2152 1060/4350/2132 1027/4349/2131\nf 1037/4392/2133 1060/4393/2132 1065/4394/2154\nf 1047/4395/2135 1061/4367/2144 1046/4396/2134\nf 1061/4367/2144 1045/4366/2141 1046/4396/2134\nf 1030/4397/2108 1040/4368/2145 1061/4367/2144\nf 1053/4359/2112 1016/4358/2105 1018/4398/2104\nf 1033/4341/2123 1052/4370/2146 1035/4399/2118\nf 1054/4381/2150 1064/4400/2114 1012/4315/2100\nf 1031/4324/2109 1047/4354/2135 1049/4353/2124\nf 1066/4375/2129 1027/4349/2131 1037/4351/2133\nf 1014/4360/2101 1051/4333/2117 1015/4336/2120\nf 1035/4334/2118 1067/4335/2119 1042/4348/2130\nf 1063/4401/2128 1018/4319/2104 1017/4318/2103\nf 1025/4389/2148 1050/4388/2147 1028/4377/2149\nf 1023/4357/2138 1024/4365/2143 1025/4372/2148\nf 1027/4402/2131 1056/4344/2126 1068/4345/2127\nf 1036/4332/2116 1058/4403/2121 1015/4336/2120\nf 1060/4350/2132 1041/4387/2152 1050/4388/2147\nf 1032/4404/2136 1044/4390/2153 1029/4385/2151\nf 1068/4378/2127 1041/4387/2152 1027/4349/2131\nf 1029/4385/2151 1065/4405/2154 1040/4383/2145\nf 1039/4406/2139 1040/4368/2145 1065/4407/2154\nf 1047/4395/2135 1030/4397/2108 1061/4367/2144\nf 1044/4390/2153 1066/4375/2129 1038/4408/2155\nf 1051/4333/2117 1014/4360/2101 1053/4359/2112\nf 1049/4342/2124 1033/4341/2123 1031/4409/2109\nf 1064/4330/2114 1054/4410/2150 1019/4329/2113\nf 1025/4411/2148 1019/4329/2113 1054/4410/2150\nf 1048/4412/2156 1058/4403/2121 1036/4332/2116\nf 1019/4329/2113 1063/4401/2128 1017/4318/2103\nf 1033/4341/2123 1062/4413/2110 1031/4409/2109\nf 1022/4414/2107 1012/4369/2100 1021/4321/2106\nf 1053/4328/2112 1035/4334/2118 1052/4415/2146\nf 1035/4399/2118 1042/4416/2130 1033/4341/2123\nf 1046/4396/2134 1048/4417/2156 1036/4418/2116\nf 1043/4419/2137 1032/4420/2136 1062/4325/2110\nf 1037/4351/2133 1038/4408/2155 1066/4375/2129\nf 1059/4362/2140 1048/4421/2156 1045/4363/2141\nf 1048/4421/2156 1059/4362/2140 1058/4422/2121\nf 1060/4380/2132 1024/4365/2143 1026/4364/2142\nf 1047/4354/2135 1031/4324/2109 1030/4323/2108\nf 1034/4331/2115 1051/4333/2117 1053/4359/2112\nf 1034/4331/2115 1049/4342/2124 1046/4423/2134\nf 1014/4360/2101 1012/4424/2100 1022/4382/2107\nf 1041/4387/2152 1068/4378/2127 1028/4377/2149\nf 1026/4364/2142 1039/4374/2139 1060/4380/2132\nf 1048/4417/2156 1046/4396/2134 1045/4366/2141\nf 1053/4359/2112 1052/4370/2146 1034/4331/2115\nf 1043/4356/2137 1033/4425/2123 1042/4348/2130\nf 1033/4425/2123 1043/4356/2137 1062/4426/2110\nf 1057/4340/2122 1058/4339/2121 1026/4364/2142\nf 1068/4427/2127 1063/4401/2128 1019/4329/2113\nf 1057/4340/2122 1023/4357/2138 1013/4317/2102\nf 1024/4365/2143 1023/4357/2138 1057/4340/2122\nf 1040/4368/2145 1039/4406/2139 1045/4366/2141\nf 1062/4325/2110 1032/4420/2136 1029/4386/2151\nf 1044/4390/2153 1038/4408/2155 1029/4385/2151\nf 1065/4405/2154 1029/4385/2151 1038/4408/2155\nf 1038/4408/2155 1037/4351/2133 1065/4405/2154\nf 1039/4361/2139 1065/4394/2154 1060/4393/2132\nf 1046/4423/2134 1036/4332/2116 1034/4331/2115\nf 1070/4428/2157 1071/4429/2158 1069/4430/2159\nf 1113/4431/2160 1114/4432/2161 6/4433/2162\nf 1118/4434/2163 1082/4435/2164 1081/4436/2165\nf 1118/4434/2163 1083/4437/2166 1082/4435/2164\nf 1127/4438/2167 1088/4439/2168 1089/4440/2169\nf 1078/4441/2170 1094/11/2171 1116/4442/2172\nf 1113/4431/2160 1077/4443/2173 1095/4444/2174\nf 1095/4444/2174 1071/4429/2158 1113/4431/2160\nf 1079/4445/2175 1080/4446/2176 1074/4447/2177\nf 1072/4448/2178 1073/4449/2179 1074/4447/2177\nf 1128/4450/2180 1085/4451/2181 1086/4452/2182\nf 1083/4437/2166 1085/4453/2181 1128/4454/2180\nf 1103/4455/2183 1081/4456/2165 1098/4457/2184\nf 1103/4455/2183 1089/4440/2169 1084/4458/2185\nf 1099/4459/2186 1100/4460/2187 1101/4461/2188\nf 1124/4462/2189 1093/4463/2190 1100/4460/2187\nf 1094/11/2171 1090/4464/2191 1117/4465/2192\nf 1090/4464/2191 1094/11/2171 1122/4466/2193\nf 1099/4459/2186 1101/4461/2188 1096/4467/2194\nf 1075/4468/2195 1124/4462/2189 1100/4460/2187\nf 1092/4469/2196 1095/4444/2174 1104/4470/2197\nf 1126/4471/2198 1115/4472/2199 1107/4473/2200\nf 1115/4472/2199 1126/4471/2198 1106/4474/2201\nf 1106/4474/2201 1124/4475/2189 1115/4472/2199\nf 1107/4473/2200 1120/4476/2202 1126/4471/2198\nf 1107/4473/2200 1097/4477/2203 1120/4476/2202\nf 1127/4438/2167 1122/4466/2193 1088/4439/2168\nf 1084/4478/2185 1120/4476/2202 1097/4477/2203\nf 1069/4430/2159 1095/4444/2174 1092/4469/2196\nf 1102/4479/2204 1108/4480/2205 1121/4481/2206\nf 1087/4482/2207 1109/4483/2208 1110/4484/2209\nf 1125/4485/2210 1113/4431/2160 1071/4429/2158\nf 1095/4444/2174 1077/4443/2173 1078/4486/2170\nf 1092/4469/2196 1104/4470/2197 1121/4487/2206\nf 1099/4488/2186 1107/4473/2200 1115/4472/2199\nf 1071/4429/2158 1076/4489/2211 1125/4485/2210\nf 1112/4490/2212 1104/4470/2197 1078/4486/2170\nf 1088/4491/2168 1126/4471/2198 1120/4476/2202\nf 1074/4447/2177 1106/4492/2201 1079/4445/2175\nf 1119/4493/2213 1083/4437/2166 1118/4434/2163\nf 1072/4448/2178 1125/4494/2210 1076/4495/2211\nf 1102/4496/2204 1117/4497/2192 1123/4498/2214\nf 1103/4455/2183 1098/4457/2184 1091/4499/2215\nf 1085/4451/2181 1096/4467/2194 1111/4500/2216\nf 6/4501/2162 1080/4502/2176 1079/4503/2175\nf 1107/4473/2200 1096/4504/2194 1097/4477/2203\nf 1112/4490/2212 1121/4487/2206 1104/4470/2197\nf 1076/4505/2211 1093/4463/2190 1072/4506/2178\nf 1075/4507/2195 1115/4472/2199 1124/4475/2189\nf 1088/4439/2168 1122/4466/2193 3/3/2217\nf 1079/4503/2175 3/3/2217 6/4501/2162\nf 1090/4464/2191 1122/4466/2193 1127/4438/2167\nf 1105/4508/2218 1102/4496/2204 1123/4498/2214\nf 1123/4509/2214 1091/4499/2215 1098/4457/2184\nf 1110/4484/2209 1069/4510/2159 1092/4511/2196\nf 1069/4430/2159 1110/4512/2209 1070/4428/2157\nf 1115/4472/2199 1100/4513/2187 1099/4488/2186\nf 1075/4468/2195 1100/4460/2187 1115/4514/2199\nf 1093/4463/2190 1110/4484/2209 1109/4483/2208\nf 1101/4461/2188 1111/4500/2216 1096/4467/2194\nf 1128/4454/2180 1105/4515/2218 1083/4437/2166\nf 1087/4516/2207 1092/4469/2196 1108/4517/2205\nf 1118/4518/2163 1084/4478/2185 1119/4519/2213\nf 1119/4520/2213 1097/4521/2203 1096/4467/2194\nf 1092/4511/2196 1087/4482/2207 1110/4484/2209\nf 1096/4467/2194 1107/4522/2200 1099/4459/2186\nf 1097/4477/2203 1119/4519/2213 1084/4478/2185\nf 1111/4500/2216 1087/4482/2207 1086/4452/2182\nf 1113/4431/2160 1125/4485/2210 1114/4432/2161\nf 6/4523/2162 1077/4443/2173 1113/4431/2160\nf 1078/4441/2170 6/4501/2162 1/1/2219\nf 1072/4448/2178 1124/4524/2189 1073/4449/2179\nf 1124/4524/2189 1072/4448/2178 1093/4525/2190\nf 1079/4526/2175 1126/4471/2198 1088/4491/2168\nf 1092/4469/2196 1121/4487/2206 1108/4517/2205\nf 1078/4486/2170 1116/4527/2172 1112/4490/2212\nf 1125/4494/2210 1072/4448/2178 1074/4447/2177\nf 1090/4464/2191 1091/4499/2215 1117/4465/2192\nf 1091/4499/2215 1127/4438/2167 1103/4455/2183\nf 1127/4438/2167 1091/4499/2215 1090/4464/2191\nf 1123/4528/2214 1098/4529/2184 1105/4515/2218\nf 1105/4508/2218 1086/4530/2182 1108/4531/2205\nf 1084/4458/2185 1118/4532/2163 1081/4456/2165\nf 6/4501/2162 1078/4441/2170 1077/4533/2173\nf 1108/4531/2205 1086/4530/2182 1087/4534/2207\nf 1086/4452/2182 1085/4451/2181 1111/4500/2216\nf 1074/4447/2177 1114/4535/2161 1125/4494/2210\nf 1114/4535/2161 1074/4447/2177 1080/4446/2176\nf 3/3/2217 1079/4503/2175 1088/4439/2168\nf 1076/4489/2211 1071/4429/2158 1070/4428/2157\nf 1108/4531/2205 1102/4496/2204 1105/4508/2218\nf 1086/4530/2182 1105/4508/2218 1128/4536/2180\nf 1098/4457/2184 1081/4456/2165 1082/4537/2164\nf 1120/4476/2202 1089/4538/2169 1088/4491/2168\nf 1102/4479/2204 1121/4481/2206 1112/4539/2212\nf 1117/4465/2192 1116/4442/2172 1094/11/2171\nf 1080/4502/2176 6/4501/2162 1114/4540/2161\nf 1082/4435/2164 1083/4437/2166 1105/4515/2218\nf 1109/4483/2208 1087/4482/2207 1111/4500/2216\nf 1110/4484/2209 1093/4463/2190 1076/4505/2211\nf 1102/4479/2204 1112/4539/2212 1116/4541/2172\nf 1116/4541/2172 1117/4542/2192 1102/4479/2204\nf 1096/4467/2194 1085/4451/2181 1119/4543/2213\nf 1111/4500/2216 1101/4461/2188 1109/4483/2208\nf 1100/4460/2187 1109/4483/2208 1101/4461/2188\nf 1120/4476/2202 1084/4478/2185 1089/4538/2169\nf 1076/4505/2211 1070/4544/2157 1110/4484/2209\nf 1109/4483/2208 1100/4460/2187 1093/4463/2190\nf 1073/4545/2179 1124/4475/2189 1106/4474/2201\nf 1078/4486/2170 1104/4470/2197 1095/4444/2174\nf 1074/4447/2177 1073/4449/2179 1106/4492/2201\nf 1069/4430/2159 1071/4429/2158 1095/4444/2174\nf 1091/4546/2215 1123/4498/2214 1117/4497/2192\nf 1089/4440/2169 1103/4455/2183 1127/4438/2167\nf 1078/4441/2170 1/1/2219 1094/11/2171\nf 1119/4493/2213 1085/4453/2181 1083/4437/2166\nf 1103/4455/2183 1084/4458/2185 1081/4456/2165\nf 1082/4435/2164 1105/4515/2218 1098/4529/2184\nf 1126/4471/2198 1079/4526/2175 1106/4474/2201\nf 4/9/2220 6/4501/2162 5/10/2221\nf 1129/4547/2222 1130/4548/2223 1131/4549/2224\nf 1134/4550/2225 1133/4551/2226 1135/4552/2227\nf 1133/4551/2226 1134/4550/2225 1139/4553/2228\nf 1139/4553/2228 1138/4554/2229 1133/4551/2226\nf 1147/4555/2230 1148/4556/2231 1149/4557/2232\nf 1135/4558/2227 1174/4559/2233 1137/4560/2234\nf 1136/4561/2235 1181/4562/2236 1134/4550/2225\nf 1153/4563/2237 1159/4564/2238 1154/4565/2239\nf 1161/4566/2240 1184/4567/2241 1137/4560/2234\nf 1159/4564/2238 1132/4568/2242 1154/4565/2239\nf 1161/4566/2240 1137/4560/2234 1174/4559/2233\nf 1132/4568/2242 1131/4549/2224 1130/4548/2223\nf 1165/4569/2243 1132/4570/2242 1176/4571/2244\nf 1152/4572/2245 1153/4563/2237 1169/4573/2246\nf 1184/4567/2241 1175/4574/2247 1173/4575/2248\nf 1163/4576/2249 1173/4575/2248 1175/4574/2247\nf 1173/4575/2248 1163/4576/2249 1180/4577/2250\nf 1175/4574/2247 1184/4567/2241 1183/4578/2251\nf 1183/4578/2251 1184/4567/2241 1160/4579/2252\nf 1144/4580/2253 1155/4581/2254 1178/4582/2255\nf 1166/4583/2256 1167/4584/2257 1169/4573/2246\nf 1160/4579/2252 1150/4585/2258 1183/4578/2251\nf 1129/4586/2222 1140/4587/2259 1130/4588/2223\nf 1132/4570/2242 1130/4588/2223 1176/4571/2244\nf 1184/4567/2241 1173/4575/2248 1137/4560/2234\nf 1173/4575/2248 1135/4558/2227 1137/4560/2234\nf 1133/4589/2226 1131/4549/2224 1174/4590/2233\nf 1157/4591/2260 1164/4592/2261 1177/4593/2262\nf 1143/4594/2263 1176/4571/2244 1141/4595/2264\nf 1164/4596/2261 1158/4597/2265 1179/4598/2266\nf 1181/4562/2236 1129/4599/2222 1139/4553/2228\nf 1152/4572/2245 1171/4600/2267 1153/4563/2237\nf 1170/4601/2268 1141/4595/2264 1142/4602/2269\nf 1177/4603/2262 1143/4594/2263 1157/4604/2260\nf 1143/4594/2263 1177/4603/2262 1165/4569/2243\nf 1183/4605/2251 1144/4580/2253 1175/4606/2247\nf 1145/4607/2270 1136/4608/2235 1163/4609/2249\nf 1180/4577/2250 1135/4558/2227 1173/4575/2248\nf 1178/4610/2255 1141/4595/2264 1170/4601/2268\nf 1142/4602/2269 1140/4587/2259 1172/4611/2271\nf 1129/4586/2222 1172/4611/2271 1140/4587/2259\nf 1131/4549/2224 1133/4589/2226 1138/4612/2229\nf 1158/4613/2265 1146/4614/2272 1147/4555/2230\nf 1148/4556/2231 1147/4555/2230 1146/4614/2272\nf 1162/4615/2273 1170/4616/2268 1145/4607/2270\nf 1139/4553/2228 1134/4550/2225 1181/4562/2236\nf 1145/4607/2270 1142/4617/2269 1136/4608/2235\nf 1183/4605/2251 1150/4618/2258 1151/4619/2274\nf 1152/4572/2245 1149/4620/2232 1148/4621/2231\nf 1162/4615/2273 1144/4580/2253 1178/4582/2255\nf 1155/4622/2254 1182/4623/2275 1178/4624/2255\nf 1167/4625/2257 1166/4626/2256 1179/4598/2266\nf 1179/4598/2266 1166/4626/2256 1164/4596/2261\nf 1147/4627/2230 1179/4598/2266 1158/4597/2265\nf 1174/4559/2233 1135/4558/2227 1133/4628/2226\nf 1152/4629/2245 1161/4566/2240 1171/4630/2267\nf 1172/4611/2271 1129/4586/2222 1181/4631/2236\nf 1149/4620/2232 1169/4573/2246 1167/4584/2257\nf 1183/4605/2251 1155/4581/2254 1144/4580/2253\nf 1131/4549/2224 1132/4568/2242 1159/4564/2238\nf 1161/4566/2240 1160/4579/2252 1184/4567/2241\nf 1160/4579/2252 1148/4632/2231 1150/4585/2258\nf 1180/4633/2250 1134/4550/2225 1135/4552/2227\nf 1142/4617/2269 1145/4607/2270 1170/4616/2268\nf 1140/4587/2259 1142/4602/2269 1141/4595/2264\nf 1144/4580/2253 1163/4609/2249 1175/4606/2247\nf 1154/4565/2239 1132/4568/2242 1165/4634/2243\nf 1178/4582/2255 1170/4616/2268 1162/4615/2273\nf 1163/4609/2249 1144/4580/2253 1162/4615/2273\nf 1146/4614/2272 1158/4613/2265 1182/4635/2275\nf 1157/4636/2260 1182/4637/2275 1158/4597/2265\nf 1167/4625/2257 1179/4598/2266 1147/4638/2230\nf 1151/4619/2274 1156/4639/2276 1183/4605/2251\nf 1159/4564/2238 1174/4590/2233 1131/4549/2224\nf 1169/4573/2246 1149/4620/2232 1152/4572/2245\nf 1181/4562/2236 1136/4561/2235 1172/4640/2271\nf 1142/4641/2269 1172/4640/2271 1136/4561/2235\nf 1168/4642/2277 1154/4565/2239 1165/4634/2243\nf 1136/4561/2235 1134/4550/2225 1180/4633/2250\nf 1138/4554/2229 1139/4553/2228 1129/4599/2222\nf 1174/4559/2233 1171/4630/2267 1161/4566/2240\nf 1161/4566/2240 1152/4629/2245 1160/4579/2252\nf 1166/4583/2256 1154/4565/2239 1168/4642/2277\nf 1150/4643/2258 1148/4556/2231 1151/4644/2274\nf 1155/4581/2254 1183/4605/2251 1156/4639/2276\nf 1177/4593/2262 1164/4592/2261 1168/4645/2277\nf 1168/4645/2277 1165/4646/2243 1177/4593/2262\nf 1178/4610/2255 1143/4594/2263 1141/4595/2264\nf 1167/4647/2257 1147/4555/2230 1149/4557/2232\nf 1153/4563/2237 1174/4590/2233 1159/4564/2238\nf 1153/4563/2237 1166/4583/2256 1169/4573/2246\nf 1131/4549/2224 1138/4612/2229 1129/4547/2222\nf 1162/4615/2273 1145/4607/2270 1163/4609/2249\nf 1143/4594/2263 1178/4610/2255 1157/4604/2260\nf 1168/4648/2277 1164/4596/2261 1166/4626/2256\nf 1174/4590/2233 1153/4563/2237 1171/4600/2267\nf 1148/4632/2231 1160/4579/2252 1152/4629/2245\nf 1176/4571/2244 1143/4594/2263 1165/4569/2243\nf 1163/4649/2249 1136/4561/2235 1180/4633/2250\nf 1176/4571/2244 1130/4588/2223 1140/4587/2259\nf 1141/4595/2264 1176/4571/2244 1140/4587/2259\nf 1158/4597/2265 1164/4596/2261 1157/4636/2260\nf 1148/4556/2231 1146/4614/2272 1151/4644/2274\nf 1151/4619/2274 1146/4650/2272 1156/4639/2276\nf 1182/4651/2275 1156/4639/2276 1146/4650/2272\nf 1156/4639/2276 1182/4651/2275 1155/4581/2254\nf 1157/4591/2260 1178/4624/2255 1182/4623/2275\nf 1166/4583/2256 1153/4563/2237 1154/4565/2239\nf 1186/4652/2278 1185/4653/2279 1187/4654/2280\nf 1227/4655/2281 12/4656/2282 1228/4657/2283\nf 1233/4658/2284 1196/4659/2285 1197/4660/2286\nf 1233/4661/2284 1197/4662/2286 1198/4663/2287\nf 1241/4664/2288 1205/4665/2289 1204/4666/2290\nf 1224/4667/2291 1209/4668/2292 1213/4669/2293\nf 1193/4670/2294 1231/4671/2295 1210/22/2296\nf 1227/4672/2281 1235/4673/2297 1192/4674/2298\nf 1235/4673/2297 1227/4672/2281 1187/4654/2280\nf 1194/4675/2299 1190/4676/2300 1195/4677/2301\nf 1188/4678/2302 1190/4676/2300 1189/4679/2303\nf 1198/4663/2287 1220/4680/2304 1200/4681/2305\nf 1216/4682/2306 1211/4683/2307 1196/4659/2285\nf 1216/4682/2306 1199/4684/2308 1205/4665/2289\nf 1212/4685/2309 1214/4686/2310 1213/4669/2293\nf 1238/4687/2311 1213/4669/2293 1209/4668/2292\nf 1210/22/2296 1232/4688/2312 1206/4689/2313\nf 1206/4689/2313 1237/4690/2314 1210/22/2296\nf 1213/4669/2293 1214/4686/2310 1224/4667/2291\nf 1212/4685/2309 1202/4691/2315 1214/4686/2310\nf 1208/4692/2316 1217/4693/2317 1235/4673/2297\nf 1230/4694/2318 1239/4695/2319 1229/4696/2320\nf 1229/4696/2320 1219/4697/2321 1230/4694/2318\nf 1219/4697/2321 1229/4696/2320 1238/4698/2311\nf 1239/4695/2319 1230/4694/2318 1234/4699/2322\nf 1239/4695/2319 1234/4699/2322 1202/4700/2315\nf 1241/4664/2288 1204/4666/2290 1237/4690/2314\nf 1199/4701/2308 1202/4700/2315 1234/4699/2322\nf 1185/4653/2279 1208/4692/2316 1235/4673/2297\nf 1215/4702/2323 1236/4703/2324 1221/4704/2325\nf 1203/4705/2326 1222/4706/2327 1223/4707/2328\nf 1240/4708/2329 1187/4654/2280 1227/4672/2281\nf 1238/4698/2311 1229/4696/2320 1213/4709/2293\nf 1200/4710/2305 1202/4691/2315 1242/4711/2330\nf 1235/4673/2297 1193/4712/2294 1192/4674/2298\nf 1208/4692/2316 1236/4713/2324 1217/4693/2317\nf 1207/4714/2331 1218/4715/2332 1211/4683/2307\nf 1207/4716/2331 1215/4717/2323 1218/4718/2332\nf 1212/4719/2309 1229/4696/2320 1239/4695/2319\nf 1187/4654/2280 1240/4708/2329 1191/4720/2333\nf 1226/4721/2334 1193/4712/2294 1217/4693/2317\nf 1204/4722/2290 1234/4699/2322 1230/4694/2318\nf 1190/4676/2300 1194/4675/2299 1219/4723/2321\nf 1242/4724/2330 1233/4661/2284 1198/4663/2287\nf 1188/4678/2302 1191/4725/2333 1240/4726/2329\nf 1215/4717/2323 1207/4716/2331 1232/4727/2312\nf 1216/4682/2306 1207/4714/2331 1211/4683/2307\nf 1200/4710/2305 1225/4728/2335 1202/4691/2315\nf 12/4656/2282 1194/4729/2299 1195/4730/2301\nf 1226/4721/2334 1217/4693/2317 1236/4713/2324\nf 1191/4731/2333 1188/4732/2302 1209/4668/2292\nf 1204/4666/2290 8/13/2336 1237/4690/2314\nf 1194/4729/2299 12/4656/2282 8/13/2336\nf 1206/4689/2313 1241/4664/2288 1237/4690/2314\nf 1243/4733/2337 1218/4718/2332 1215/4717/2323\nf 1222/4734/2327 1208/4692/2316 1185/4653/2279\nf 1185/4653/2279 1186/4652/2278 1222/4734/2327\nf 1229/4735/2320 1212/4685/2309 1213/4669/2293\nf 1209/4668/2292 1223/4707/2328 1222/4706/2327\nf 1214/4686/2310 1202/4691/2315 1225/4728/2335\nf 1203/4736/2326 1221/4737/2325 1208/4692/2316\nf 1233/4738/2284 1242/4739/2330 1199/4701/2308\nf 1208/4740/2316 1222/4706/2327 1203/4705/2326\nf 1202/4691/2315 1212/4685/2309 1239/4741/2319\nf 1202/4700/2315 1199/4701/2308 1242/4739/2330\nf 1225/4728/2335 1201/4742/2338 1203/4705/2326\nf 1227/4672/2281 1228/4743/2283 1240/4708/2329\nf 12/4744/2282 1227/4672/2281 1192/4674/2298\nf 1193/4670/2294 7/12/2339 12/4656/2282\nf 1188/4678/2302 1189/4679/2303 1238/4745/2311\nf 1238/4745/2311 1209/4746/2292 1188/4678/2302\nf 1194/4747/2299 1204/4722/2290 1230/4694/2318\nf 1208/4692/2316 1221/4737/2325 1236/4713/2324\nf 1193/4712/2294 1226/4721/2334 1231/4748/2295\nf 1240/4726/2329 1190/4676/2300 1188/4678/2302\nf 1206/4689/2313 1232/4688/2312 1207/4714/2331\nf 1224/4667/2291 1225/4728/2335 1223/4707/2328\nf 1207/4714/2331 1216/4682/2306 1241/4664/2288\nf 1241/4664/2288 1206/4689/2313 1207/4714/2331\nf 1243/4733/2337 1221/4749/2325 1201/4750/2338\nf 1199/4701/2308 1196/4751/2285 1233/4738/2284\nf 12/4656/2282 1192/4752/2298 1193/4670/2294\nf 1221/4749/2325 1203/4753/2326 1201/4750/2338\nf 1201/4742/2338 1225/4728/2335 1200/4710/2305\nf 1190/4676/2300 1240/4726/2329 1228/4754/2283\nf 1228/4754/2283 1195/4677/2301 1190/4676/2300\nf 8/13/2336 1204/4666/2290 1194/4729/2299\nf 1201/4755/2338 1200/4681/2305 1220/4680/2304\nf 1191/4720/2333 1186/4652/2278 1187/4654/2280\nf 1220/4680/2304 1197/4662/2286 1218/4756/2332\nf 1221/4749/2325 1243/4733/2337 1215/4717/2323\nf 1211/4683/2307 1197/4660/2286 1196/4659/2285\nf 1234/4699/2322 1204/4722/2290 1205/4757/2289\nf 1215/4702/2323 1226/4758/2334 1236/4703/2324\nf 1232/4688/2312 1210/22/2296 1231/4671/2295\nf 1195/4730/2301 1228/4657/2283 12/4656/2282\nf 1197/4662/2286 1220/4680/2304 1198/4663/2287\nf 1223/4707/2328 1225/4728/2335 1203/4705/2326\nf 1222/4706/2327 1191/4731/2333 1209/4668/2292\nf 1215/4702/2323 1231/4759/2295 1226/4758/2334\nf 1231/4759/2295 1215/4702/2323 1232/4760/2312\nf 1225/4728/2335 1224/4667/2291 1214/4686/2310\nf 1218/4756/2332 1243/4761/2337 1220/4680/2304\nf 1234/4699/2322 1205/4757/2289 1199/4701/2308\nf 1191/4731/2333 1222/4706/2327 1186/4762/2278\nf 1243/4761/2337 1201/4755/2338 1220/4680/2304\nf 1223/4707/2328 1209/4668/2292 1224/4667/2291\nf 1189/4763/2303 1219/4697/2321 1238/4698/2311\nf 1193/4712/2294 1235/4673/2297 1217/4693/2317\nf 1190/4676/2300 1219/4723/2321 1189/4679/2303\nf 1185/4653/2279 1235/4673/2297 1187/4654/2280\nf 1205/4665/2289 1241/4664/2288 1216/4682/2306\nf 1193/4670/2294 1210/22/2296 7/12/2339\nf 1242/4724/2330 1198/4663/2287 1200/4681/2305\nf 1216/4682/2306 1196/4659/2285 1199/4684/2308\nf 1197/4662/2286 1211/4764/2307 1218/4756/2332\nf 1230/4694/2318 1219/4697/2321 1194/4747/2299\nf 10/21/2340 12/4656/2282 7/12/2339\nf 1210/22/2296 1237/4690/2314 8/13/2336\nf 4/9/2220 1/1/2219 6/4501/2162\nf 6/4501/2162 3/3/2217 2/2/2341\nf 1094/11/2171 3/3/2217 1122/4466/2193\nf 10/21/2340 11/20/2342 12/4656/2282\nf 9/14/2343 8/13/2336 12/4656/2282\nf 3024/4765/2344 3042/4766/2345 3016/4767/2346\nf 3021/4768/2347 3022/4769/2348 3052/4770/2349\nf 3062/4771/2350 3045/4772/2351 3029/4773/2352\nf 3027/4774/2353 3055/4775/2354 3026/4776/2355\nf 3040/4777/2356 3018/4778/2357 3022/4769/2348\nf 3061/4779/2358 3024/4765/2344 3023/4780/2359\nf 3028/4781/2360 3025/4782/2361 3019/4783/2362\nf 3044/4784/2363 3019/4783/2362 3025/4782/2361\nf 3030/4785/2364 3029/4786/2352 3063/4787/2365\nf 3020/4788/2366 3046/4789/2367 3047/4790/2368\nf 3037/4791/2369 3041/4792/2370 3064/4793/2371\nf 3033/4794/2372 3047/4795/2368 3032/4796/2373\nf 3047/4795/2368 3059/4797/2374 3020/4798/2366\nf 3053/4799/2375 3056/4800/2376 3043/4801/2377\nf 3060/4802/2378 3068/4803/2379 3048/4804/2380\nf 3054/4805/2381 3053/4799/2375 3043/4801/2377\nf 3063/4806/2365 3066/4807/2382 3031/4808/2383\nf 3059/4809/2374 3066/4810/2382 3057/4811/2384\nf 3058/4812/2385 3041/4792/2370 3037/4791/2369\nf 3018/4778/2357 3040/4777/2356 3020/4813/2366\nf 3065/4814/2386 3015/4815/2387 3061/4779/2358\nf 3031/4808/2383 3066/4807/2382 3033/4794/2372\nf 3048/4804/2380 3045/4772/2351 3060/4802/2378\nf 3068/4816/2379 3060/4817/2378 3034/4818/2388\nf 3050/4819/2389 3068/4816/2379 3067/4820/2390\nf 3037/4791/2369 3038/4821/2391 3058/4812/2385\nf 3046/4822/2367 3035/4823/2392 3051/4824/2393\nf 3025/4825/2361 3028/4826/2360 3026/4776/2355\nf 3053/4827/2375 3020/4798/2366 3059/4797/2374\nf 3057/4828/2384 3066/4829/2382 3027/4774/2353\nf 3019/4783/2362 3044/4784/2363 3052/4770/2349\nf 3062/4830/2350 3031/4808/2383 3033/4794/2372\nf 3050/4819/2389 3067/4820/2390 3049/4831/2394\nf 3041/4832/2370 3065/4814/2386 3064/4833/2371\nf 3039/4834/2395 3067/4820/2390 3035/4823/2392\nf 3060/4817/2378 3045/4835/2351 3036/4836/2396\nf 3035/4823/2392 3046/4822/2367 3039/4834/2395\nf 3059/4797/2374 3033/4794/2372 3066/4807/2382\nf 3045/4835/2351 3032/4837/2373 3051/4824/2393\nf 3039/4834/2395 3049/4831/2394 3067/4820/2390\nf 3047/4795/2368 3051/4838/2393 3032/4796/2373\nf 3039/4834/2395 3046/4822/2367 3040/4839/2356\nf 3057/4811/2384 3053/4840/2375 3059/4809/2374\nf 3041/4792/2370 3058/4812/2385 3068/4803/2379\nf 3023/4841/2359 3025/4842/2361 3064/4793/2371\nf 3045/4835/2351 3062/4843/2350 3032/4837/2373\nf 3055/4775/2354 3063/4787/2365 3038/4844/2391\nf 3019/4783/2362 3043/4801/2377 3028/4781/2360\nf 3052/4845/2349 3024/4765/2344 3016/4767/2346\nf 3052/4845/2349 3016/4767/2346 3021/4846/2347\nf 3027/4774/2353 3028/4826/2360 3043/4847/2377\nf 3050/4848/2389 3049/4849/2394 3041/4792/2370\nf 3065/4814/2386 3041/4832/2370 3049/4850/2394\nf 3045/4772/2351 3048/4804/2380 3029/4773/2352\nf 3046/4822/2367 3020/4851/2366 3040/4839/2356\nf 3033/4794/2372 3059/4797/2374 3047/4795/2368\nf 3017/4852/2397 3022/4769/2348 3054/4805/2381\nf 3064/4793/2371 3025/4842/2361 3037/4791/2369\nf 3044/4853/2363 3024/4765/2344 3052/4845/2349\nf 3024/4854/2344 3044/4855/2363 3025/4825/2361\nf 3060/4817/2378 3036/4836/2396 3034/4818/2388\nf 3039/4856/2395 3065/4857/2386 3049/4858/2394\nf 3015/4859/2387 3040/4839/2356 3021/4860/2347\nf 3016/4767/2346 3042/4766/2345 3015/4815/2387\nf 3018/4778/2357 3054/4805/2381 3022/4769/2348\nf 3043/4847/2377 3056/4861/2376 3027/4774/2353\nf 3052/4770/2349 3017/4852/2397 3019/4783/2362\nf 3020/4813/2366 3053/4799/2375 3018/4778/2357\nf 3029/4773/2352 3030/4862/2364 3062/4771/2350\nf 3031/4863/2383 3062/4771/2350 3030/4862/2364\nf 3054/4805/2381 3019/4783/2362 3017/4852/2397\nf 3024/4765/2344 3061/4779/2358 3042/4766/2345\nf 3025/4825/2361 3023/4864/2359 3024/4854/2344\nf 3066/4829/2382 3055/4775/2354 3027/4774/2353\nf 3051/4824/2393 3035/4823/2392 3034/4818/2388\nf 3068/4865/2379 3058/4866/2385 3048/4867/2380\nf 3026/4776/2355 3037/4868/2369 3025/4825/2361\nf 3017/4852/2397 3052/4770/2349 3022/4769/2348\nf 3068/4803/2379 3050/4848/2389 3041/4792/2370\nf 3051/4824/2393 3047/4869/2368 3046/4822/2367\nf 3021/4860/2347 3016/4870/2346 3015/4859/2387\nf 3057/4871/2384 3056/4872/2376 3053/4827/2375\nf 3029/4786/2352 3038/4844/2391 3063/4787/2365\nf 3051/4824/2393 3036/4836/2396 3045/4835/2351\nf 3061/4779/2358 3015/4815/2387 3042/4766/2345\nf 3022/4873/2348 3021/4860/2347 3040/4839/2356\nf 3015/4859/2387 3039/4834/2395 3040/4839/2356\nf 3066/4829/2382 3063/4787/2365 3055/4775/2354\nf 3062/4830/2350 3033/4794/2372 3032/4796/2373\nf 3055/4775/2354 3038/4844/2391 3037/4868/2369\nf 3056/4861/2376 3057/4828/2384 3027/4774/2353\nf 3019/4783/2362 3054/4805/2381 3043/4801/2377\nf 3038/4821/2391 3029/4773/2352 3048/4804/2380\nf 3038/4874/2391 3048/4867/2380 3058/4866/2385\nf 3054/4805/2381 3018/4778/2357 3053/4799/2375\nf 3037/4868/2369 3026/4776/2355 3055/4775/2354\nf 3068/4875/2379 3034/4876/2388 3067/4877/2390\nf 3027/4774/2353 3026/4776/2355 3028/4826/2360\nf 3064/4833/2371 3065/4814/2386 3061/4779/2358\nf 3065/4814/2386 3039/4878/2395 3015/4815/2387\nf 3035/4823/2392 3067/4820/2390 3034/4818/2388\nf 3030/4785/2364 3063/4787/2365 3031/4879/2383\nf 3051/4824/2393 3034/4818/2388 3036/4836/2396\nf 3064/4793/2371 3061/4880/2358 3023/4841/2359\nf 3071/4881/2398 3070/4882/2399 3069/4883/2400\nf 3108/4884/2401 3073/4885/2402 3072/4886/2403\nf 3103/4887/2404 3075/4888/2405 3073/4889/2402\nf 3076/4890/2406 3077/4891/2407 3069/4883/2400\nf 3074/4892/2408 3072/4886/2403 3076/4893/2406\nf 3076/4893/2406 3072/4886/2403 3077/4894/2407\nf 3084/4895/2409 3085/4896/2410 3119/4897/2411\nf 3097/4898/2412 3105/4899/2413 3098/4900/2414\nf 3093/4901/2415 3092/4902/2416 3100/4903/2417\nf 3080/4904/2418 3116/4905/2419 3074/4892/2408\nf 3116/4905/2419 3080/4904/2418 3082/4906/2420\nf 3123/4907/2421 3102/4908/2422 3099/4909/2423\nf 3107/4910/2424 3071/4881/2398 3120/4911/2425\nf 3120/4912/2425 3091/4913/2426 3107/4914/2424\nf 3102/4908/2422 3098/4900/2414 3099/4909/2423\nf 3089/4915/2427 3090/4916/2428 3104/4917/2429\nf 3118/4918/2430 3071/4881/2398 3107/4910/2424\nf 3113/4919/2431 3121/4920/2432 3122/4921/2433\nf 3116/4922/2419 3122/4921/2433 3121/4920/2432\nf 3121/4920/2432 3108/4923/2401 3116/4922/2419\nf 3122/4921/2433 3114/4924/2434 3113/4919/2431\nf 3123/4925/2421 3110/4926/2435 3109/4927/2436\nf 3089/4928/2427 3113/4919/2431 3086/4929/2437\nf 3117/4930/2438 3089/4928/2427 3086/4929/2437\nf 3121/4920/2432 3103/4931/2404 3073/4932/2402\nf 3091/4933/2426 3110/4934/2435 3111/4935/2439\nf 3092/4936/2416 3122/4921/2433 3116/4922/2419\nf 3100/4937/2417 3094/4938/2440 3093/4939/2415\nf 3120/4912/2425 3069/4940/2400 3077/4941/2407\nf 3073/4889/2402 3077/4941/2407 3072/4942/2403\nf 3113/4919/2431 3103/4931/2404 3121/4920/2432\nf 3118/4918/2430 3112/4943/2441 3079/4944/2442\nf 3124/4945/2443 3085/4896/2410 3084/4895/2409\nf 3092/4902/2416 3115/4946/2444 3101/4947/2445\nf 3119/4897/2411 3085/4896/2410 3117/4948/2438\nf 3108/4923/2401 3121/4920/2432 3073/4932/2402\nf 3075/4888/2405 3120/4912/2425 3073/4889/2402\nf 3080/4949/2418 3115/4946/2444 3082/4950/2420\nf 3087/4951/2446 3117/4930/2438 3086/4929/2437\nf 3090/4916/2428 3089/4915/2427 3085/4952/2410\nf 3126/4953/2447 3107/4954/2424 3091/4933/2426\nf 3119/4897/2411 3083/4955/2448 3084/4895/2409\nf 3115/4946/2444 3080/4949/2418 3079/4956/2442\nf 3106/4957/2449 3078/4958/2450 3080/4959/2418\nf 3069/4883/2400 3070/4882/2399 3076/4890/2406\nf 3105/4960/2413 3123/4907/2421 3099/4909/2423\nf 3101/4947/2445 3115/4946/2444 3079/4956/2442\nf 3096/4961/2451 3087/4962/2446 3086/4963/2437\nf 3095/4964/2452 3102/4908/2422 3096/4961/2451\nf 3103/4931/2404 3113/4919/2431 3104/4965/2429\nf 3114/4924/2434 3122/4921/2433 3093/4966/2415\nf 3116/4905/2419 3108/4884/2401 3074/4892/2408\nf 3104/4967/2429 3113/4919/2431 3089/4928/2427\nf 3093/4966/2415 3122/4921/2433 3092/4936/2416\nf 3116/4922/2419 3081/4968/2453 3092/4936/2416\nf 3095/4964/2452 3100/4903/2417 3098/4900/2414\nf 3102/4908/2422 3095/4964/2452 3098/4900/2414\nf 3090/4916/2428 3075/4888/2405 3103/4887/2404\nf 3092/4902/2416 3081/4969/2453 3115/4946/2444\nf 3105/4970/2413 3099/4971/2423 3098/4972/2414\nf 3109/4927/2436 3110/4926/2435 3091/4973/2426\nf 3090/4916/2428 3120/4912/2425 3075/4888/2405\nf 3112/4974/2441 3101/4947/2445 3079/4956/2442\nf 3111/4975/2439 3118/4918/2430 3107/4910/2424\nf 3103/4887/2404 3104/4917/2429 3090/4916/2428\nf 3107/4910/2424 3126/4976/2447 3111/4975/2439\nf 3102/4908/2422 3083/4977/2448 3087/4962/2446\nf 3083/4977/2448 3102/4908/2422 3084/4978/2409\nf 3070/4882/2399 3078/4958/2450 3106/4957/2449\nf 3100/4903/2417 3092/4902/2416 3101/4947/2445\nf 3090/4916/2428 3085/4952/2410 3088/4979/2454\nf 3102/4908/2422 3123/4907/2421 3084/4978/2409\nf 3076/4893/2406 3106/4980/2449 3074/4892/2408\nf 3077/4941/2407 3073/4889/2402 3120/4912/2425\nf 3087/4962/2446 3119/4981/2411 3117/4982/2438\nf 3069/4883/2400 3120/4983/2425 3071/4881/2398\nf 3072/4886/2403 3074/4892/2408 3108/4884/2401\nf 3085/4952/2410 3124/4984/2443 3088/4979/2454\nf 3086/4963/2437 3114/4985/2434 3096/4961/2451\nf 3095/4986/2452 3096/4987/2451 3114/4924/2434\nf 3078/4988/2450 3079/4956/2442 3080/4949/2418\nf 3091/4913/2426 3120/4912/2425 3090/4916/2428\nf 3109/4989/2436 3124/4945/2443 3123/4990/2421\nf 3105/4991/2413 3112/4992/2441 3110/4926/2435\nf 3084/4895/2409 3123/4990/2421 3124/4945/2443\nf 3112/4993/2441 3111/4935/2439 3110/4934/2435\nf 3070/4994/2399 3106/4980/2449 3076/4893/2406\nf 3114/4924/2434 3086/4929/2437 3113/4919/2431\nf 3100/4995/2417 3095/4996/2452 3094/4997/2440\nf 3110/4926/2435 3123/4925/2421 3105/4991/2413\nf 3098/4900/2414 3101/4947/2445 3097/4898/2412\nf 3089/4998/2427 3117/4948/2438 3085/4896/2410\nf 3081/4969/2453 3082/4950/2420 3115/4946/2444\nf 3082/4999/2420 3081/4968/2453 3116/4922/2419\nf 3070/4882/2399 3071/4881/2398 3125/5000/2455\nf 3114/4924/2434 3093/4966/2415 3095/4986/2452\nf 3101/4947/2445 3098/4900/2414 3100/4903/2417\nf 3124/4945/2443 3109/4989/2436 3088/5001/2454\nf 3125/5000/2455 3079/4944/2442 3078/4958/2450\nf 3078/4958/2450 3070/4882/2399 3125/5000/2455\nf 3101/4947/2445 3112/4974/2441 3097/4898/2412\nf 3080/4904/2418 3074/4892/2408 3106/4980/2449\nf 3087/4962/2446 3096/4961/2451 3102/4908/2422\nf 3118/4918/2430 3125/5000/2455 3071/4881/2398\nf 3125/5000/2455 3118/4918/2430 3079/4944/2442\nf 3119/4981/2411 3087/4962/2446 3083/4977/2448\nf 3111/4975/2439 3112/4943/2441 3118/4918/2430\nf 3105/4991/2413 3097/5002/2412 3112/4992/2441\nf 3088/4979/2454 3091/4913/2426 3090/4916/2428\nf 3094/5003/2440 3095/4964/2452 3093/5004/2415\nf 3109/4927/2436 3091/4973/2426 3088/5005/2454\nf 3111/4935/2439 3126/4953/2447 3091/4933/2426\nf 3179/5006/2456 3128/5007/2457 3154/5008/2458\nf 3133/5009/2459 3166/5010/2460 3134/5011/2461\nf 3176/5012/2462 3140/5013/2463 3156/5014/2464\nf 3140/5015/2463 3141/5016/2465 3147/5017/2466\nf 3138/5018/2467 3137/5019/2468 3169/5020/2469\nf 3152/5021/2470 3134/5011/2461 3130/5022/2471\nf 3139/5023/2472 3131/5024/2473 3136/5025/2474\nf 3150/5026/2475 3156/5014/2464 3140/5013/2463\nf 3132/5027/2476 3158/5028/2477 3157/5029/2478\nf 3148/5030/2479 3177/5031/2480 3153/5032/2481\nf 3154/5008/2458 3135/5033/2482 3179/5006/2456\nf 3150/5026/2475 3159/5034/2483 3149/5035/2484\nf 3147/5017/2466 3169/5020/2469 3159/5036/2483\nf 3158/5037/2477 3132/5038/2476 3173/5039/2485\nf 3167/5040/2486 3155/5041/2487 3170/5042/2488\nf 3174/5043/2489 3180/5044/2490 3164/5045/2491\nf 3168/5046/2492 3155/5041/2487 3167/5040/2486\nf 3173/5047/2485 3171/5048/2493 3162/5049/2494\nf 3172/5050/2495 3148/5030/2479 3153/5032/2481\nf 3130/5022/2471 3132/5051/2476 3152/5021/2470\nf 3178/5052/2496 3175/5053/2497 3127/5054/2498\nf 3141/5055/2465 3143/5056/2499 3162/5057/2494\nf 3180/5044/2490 3174/5043/2489 3156/5014/2464\nf 3164/5058/2491 3144/5059/2500 3174/5060/2489\nf 3163/5061/2501 3160/5062/2502 3164/5058/2491\nf 3148/5063/2479 3172/5064/2495 3149/5065/2484\nf 3157/5066/2478 3165/5067/2503 3145/5068/2504\nf 3136/5025/2474 3137/5019/2468 3139/5023/2472\nf 3167/5069/2486 3173/5039/2485 3132/5038/2476\nf 3171/5048/2493 3138/5018/2467 3162/5049/2494\nf 3131/5070/2473 3166/5010/2460 3179/5071/2456\nf 3176/5072/2462 3143/5056/2499 3141/5055/2465\nf 3163/5061/2501 3161/5073/2505 3160/5062/2502\nf 3153/5074/2481 3177/5075/2480 3178/5052/2496\nf 3151/5076/2506 3145/5068/2504 3160/5062/2502\nf 3174/5060/2489 3146/5077/2507 3156/5078/2464\nf 3143/5056/2499 3176/5072/2462 3156/5079/2464\nf 3145/5068/2504 3151/5076/2506 3157/5066/2478\nf 3173/5039/2485 3162/5057/2494 3143/5056/2499\nf 3156/5080/2464 3165/5081/2503 3142/5082/2508\nf 3142/5083/2508 3143/5084/2499 3156/5078/2464\nf 3151/5076/2506 3160/5062/2502 3161/5073/2505\nf 3158/5037/2477 3142/5082/2508 3165/5081/2503\nf 3151/5076/2506 3152/5085/2470 3157/5066/2478\nf 3171/5086/2493 3173/5087/2485 3167/5088/2486\nf 3173/5039/2485 3143/5056/2499 3142/5082/2508\nf 3135/5089/2482 3177/5031/2480 3136/5090/2474\nf 3179/5091/2456 3136/5025/2474 3131/5024/2473\nf 3169/5020/2469 3149/5092/2484 3159/5036/2483\nf 3131/5070/2473 3139/5093/2472 3155/5094/2487\nf 3166/5095/2460 3128/5007/2457 3179/5006/2456\nf 3166/5095/2460 3133/5096/2459 3128/5007/2457\nf 3138/5018/2467 3155/5041/2487 3139/5023/2472\nf 3163/5097/2501 3153/5032/2481 3161/5098/2505\nf 3178/5052/2496 3161/5099/2505 3153/5074/2481\nf 3156/5014/2464 3150/5026/2475 3180/5044/2490\nf 3157/5100/2478 3152/5021/2470 3132/5051/2476\nf 3142/5082/2508 3158/5037/2477 3173/5039/2485\nf 3129/5101/2509 3168/5102/2492 3134/5011/2461\nf 3177/5031/2480 3148/5030/2479 3136/5090/2474\nf 3174/5060/2489 3144/5059/2500 3146/5077/2507\nf 3151/5103/2506 3161/5104/2505 3178/5105/2496\nf 3127/5106/2498 3133/5107/2459 3152/5085/2470\nf 3128/5108/2457 3127/5054/2498 3154/5008/2458\nf 3130/5022/2471 3134/5011/2461 3168/5102/2492\nf 3155/5041/2487 3138/5018/2467 3170/5042/2488\nf 3166/5010/2460 3131/5070/2473 3129/5101/2509\nf 3132/5051/2476 3130/5022/2471 3167/5109/2486\nf 3141/5110/2465 3140/5013/2463 3176/5012/2462\nf 3168/5102/2492 3129/5101/2509 3131/5070/2473\nf 3135/5033/2482 3154/5008/2458 3175/5053/2497\nf 3163/5097/2501 3164/5045/2491 3172/5050/2495\nf 3162/5049/2494 3138/5018/2467 3169/5020/2469\nf 3165/5067/2503 3144/5059/2500 3145/5068/2504\nf 3164/5111/2491 3180/5112/2490 3172/5064/2495\nf 3137/5019/2468 3136/5025/2474 3148/5113/2479\nf 3129/5101/2509 3134/5011/2461 3166/5010/2460\nf 3172/5050/2495 3153/5032/2481 3163/5097/2501\nf 3165/5067/2503 3157/5066/2478 3158/5114/2477\nf 3133/5107/2459 3127/5106/2498 3128/5115/2457\nf 3171/5116/2493 3167/5069/2486 3170/5117/2488\nf 3165/5067/2503 3156/5078/2464 3146/5077/2507\nf 3175/5053/2497 3154/5008/2458 3127/5054/2498\nf 3134/5118/2461 3152/5085/2470 3133/5107/2459\nf 3136/5119/2474 3179/5006/2456 3135/5033/2482\nf 3127/5106/2498 3152/5085/2470 3151/5076/2506\nf 3162/5049/2494 3169/5020/2469 3147/5017/2466\nf 3169/5020/2469 3148/5120/2479 3149/5092/2484\nf 3170/5042/2488 3138/5018/2467 3171/5048/2493\nf 3131/5070/2473 3155/5094/2487 3168/5102/2492\nf 3149/5035/2484 3180/5044/2490 3150/5026/2475\nf 3149/5065/2484 3172/5064/2495 3180/5112/2490\nf 3168/5102/2492 3167/5109/2486 3130/5022/2471\nf 3148/5120/2479 3169/5020/2469 3137/5019/2468\nf 3164/5058/2491 3160/5062/2502 3144/5059/2500\nf 3138/5018/2467 3139/5023/2472 3137/5019/2468\nf 3177/5075/2480 3175/5053/2497 3178/5052/2496\nf 3150/5026/2475 3140/5013/2463 3159/5034/2483\nf 3178/5052/2496 3127/5054/2498 3151/5121/2506\nf 3145/5068/2504 3144/5059/2500 3160/5062/2502\nf 3147/5017/2466 3141/5016/2465 3162/5049/2494\nf 3165/5067/2503 3146/5077/2507 3144/5059/2500\nf 3177/5031/2480 3135/5089/2482 3175/5122/2497\nf 3159/5036/2483 3140/5015/2463 3147/5017/2466\nf 3183/5123/2510 3181/5124/2511 3182/5125/2512\nf 3220/5126/2513 3184/5127/2514 3185/5128/2515\nf 3215/5129/2516 3185/5128/2515 3226/5130/2517\nf 3187/5131/2518 3181/5124/2511 3188/5132/2519\nf 3186/5133/2520 3187/5134/2518 3184/5135/2514\nf 3187/5134/2518 3188/5136/2519 3184/5135/2514\nf 3195/5137/2521 3196/5138/2522 3197/5139/2523\nf 3208/5140/2524 3209/5141/2525 3217/5142/2526\nf 3204/5143/2527 3211/5144/2528 3203/5145/2529\nf 3191/5146/2530 3186/5133/2520 3213/5147/2531\nf 3213/5147/2531 3193/5148/2532 3191/5146/2530\nf 3234/5149/2533 3210/5150/2534 3214/5151/2535\nf 3219/5152/2536 3231/5153/2537 3183/5123/2510\nf 3231/5154/2537 3219/5155/2536 3202/5156/2538\nf 3214/5151/2535 3210/5150/2534 3209/5141/2525\nf 3201/5157/2539 3216/5158/2540 3228/5159/2541\nf 3230/5160/2542 3219/5152/2536 3183/5123/2510\nf 3224/5161/2543 3233/5162/2544 3232/5163/2545\nf 3213/5164/2531 3232/5163/2545 3233/5162/2544\nf 3232/5163/2545 3213/5164/2531 3220/5165/2513\nf 3233/5162/2544 3224/5161/2543 3225/5166/2546\nf 3201/5167/2539 3198/5168/2547 3224/5161/2543\nf 3229/5169/2548 3198/5168/2547 3201/5167/2539\nf 3232/5163/2545 3185/5170/2515 3215/5171/2516\nf 3203/5172/2529 3213/5164/2531 3233/5162/2544\nf 3211/5144/2528 3204/5143/2527 3205/5173/2549\nf 3231/5154/2537 3188/5174/2519 3181/5175/2511\nf 3185/5128/2515 3184/5127/2514 3188/5174/2519\nf 3224/5161/2543 3232/5163/2545 3215/5171/2516\nf 3230/5160/2542 3190/5176/2550 3223/5177/2551\nf 3235/5178/2552 3195/5137/2521 3197/5139/2523\nf 3203/5145/2529 3212/5179/2553 3227/5180/2554\nf 3196/5138/2522 3229/5181/2548 3197/5139/2523\nf 3220/5165/2513 3185/5170/2515 3232/5163/2545\nf 3226/5130/2517 3185/5128/2515 3231/5154/2537\nf 3191/5182/2530 3193/5183/2532 3227/5180/2554\nf 3199/5184/2555 3198/5168/2547 3229/5169/2548\nf 3228/5159/2541 3197/5185/2523 3201/5157/2539\nf 3222/5186/2556 3238/5187/2557 3237/5188/2558\nf 3238/5189/2557 3202/5190/2538 3219/5191/2536\nf 3196/5138/2522 3195/5137/2521 3194/5192/2559\nf 3227/5180/2554 3190/5193/2550 3191/5182/2530\nf 3218/5194/2560 3191/5195/2530 3189/5196/2561\nf 3181/5124/2511 3187/5131/2518 3182/5125/2512\nf 3217/5197/2526 3210/5150/2534 3234/5149/2533\nf 3234/5198/2533 3221/5199/2562 3222/5200/2556\nf 3212/5179/2553 3190/5193/2550 3227/5180/2554\nf 3207/5201/2563 3198/5202/2547 3199/5203/2555\nf 3206/5204/2564 3207/5201/2563 3214/5151/2535\nf 3215/5171/2516 3216/5205/2540 3224/5161/2543\nf 3225/5166/2546 3204/5206/2527 3233/5162/2544\nf 3213/5147/2531 3186/5133/2520 3220/5207/2513\nf 3216/5158/2540 3201/5157/2539 3224/5208/2543\nf 3204/5206/2527 3203/5172/2529 3233/5162/2544\nf 3213/5164/2531 3203/5172/2529 3192/5209/2565\nf 3206/5204/2564 3209/5141/2525 3211/5144/2528\nf 3214/5151/2535 3209/5141/2525 3206/5204/2564\nf 3228/5159/2541 3215/5129/2516 3226/5130/2517\nf 3203/5145/2529 3227/5180/2554 3192/5210/2565\nf 3217/5211/2526 3209/5212/2525 3210/5213/2534\nf 3221/5199/2562 3202/5214/2538 3222/5200/2556\nf 3228/5159/2541 3226/5130/2517 3231/5154/2537\nf 3223/5215/2551 3190/5193/2550 3212/5179/2553\nf 3237/5188/2558 3219/5152/2536 3230/5160/2542\nf 3215/5129/2516 3228/5159/2541 3216/5158/2540\nf 3219/5152/2536 3237/5188/2558 3238/5187/2557\nf 3214/5151/2535 3199/5203/2555 3194/5216/2559\nf 3194/5216/2559 3195/5217/2521 3214/5151/2535\nf 3182/5125/2512 3218/5194/2560 3189/5196/2561\nf 3211/5144/2528 3212/5179/2553 3203/5145/2529\nf 3228/5159/2541 3200/5218/2566 3197/5185/2523\nf 3214/5151/2535 3195/5217/2521 3234/5149/2533\nf 3187/5134/2518 3186/5133/2520 3218/5219/2560\nf 3188/5174/2519 3231/5154/2537 3185/5128/2515\nf 3199/5203/2555 3229/5220/2548 3196/5221/2522\nf 3181/5124/2511 3183/5123/2510 3231/5153/2537\nf 3184/5135/2514 3220/5207/2513 3186/5133/2520\nf 3197/5139/2523 3200/5222/2566 3235/5178/2552\nf 3198/5168/2547 3207/5223/2563 3225/5166/2546\nf 3206/5224/2564 3225/5166/2546 3207/5223/2563\nf 3189/5225/2561 3191/5182/2530 3190/5193/2550\nf 3202/5156/2538 3228/5159/2541 3231/5154/2537\nf 3221/5226/2562 3234/5227/2533 3235/5178/2552\nf 3217/5228/2526 3222/5200/2556 3223/5229/2551\nf 3195/5137/2521 3235/5178/2552 3234/5227/2533\nf 3223/5230/2551 3222/5231/2556 3237/5232/2558\nf 3182/5233/2512 3187/5134/2518 3218/5219/2560\nf 3225/5166/2546 3224/5161/2543 3198/5168/2547\nf 3211/5234/2528 3205/5235/2549 3206/5236/2564\nf 3222/5200/2556 3217/5228/2526 3234/5198/2533\nf 3209/5141/2525 3208/5140/2524 3212/5179/2553\nf 3201/5237/2539 3197/5139/2523 3229/5181/2548\nf 3192/5210/2565 3227/5180/2554 3193/5183/2532\nf 3193/5238/2532 3213/5164/2531 3192/5209/2565\nf 3182/5125/2512 3236/5239/2567 3183/5123/2510\nf 3225/5166/2546 3206/5224/2564 3204/5206/2527\nf 3212/5179/2553 3211/5144/2528 3209/5141/2525\nf 3235/5178/2552 3200/5222/2566 3221/5226/2562\nf 3236/5239/2567 3189/5196/2561 3190/5176/2550\nf 3189/5196/2561 3236/5239/2567 3182/5125/2512\nf 3212/5179/2553 3208/5140/2524 3223/5215/2551\nf 3191/5146/2530 3218/5219/2560 3186/5133/2520\nf 3199/5203/2555 3214/5151/2535 3207/5201/2563\nf 3230/5160/2542 3183/5123/2510 3236/5239/2567\nf 3236/5239/2567 3190/5176/2550 3230/5160/2542\nf 3196/5221/2522 3194/5216/2559 3199/5203/2555\nf 3237/5188/2558 3230/5160/2542 3223/5177/2551\nf 3217/5228/2526 3223/5229/2551 3208/5240/2524\nf 3200/5218/2566 3228/5159/2541 3202/5156/2538\nf 3205/5173/2549 3204/5241/2527 3206/5204/2564\nf 3221/5199/2562 3200/5242/2566 3202/5214/2538\nf 3222/5231/2556 3202/5190/2538 3238/5189/2557\nf 3241/5243/2568 3240/5244/2569 3239/5245/2570\nf 3279/5246/2571 3244/5247/2402 3243/5248/2572\nf 3275/5249/2573 3246/5250/2574 3244/5251/2402\nf 3247/5252/2575 3248/5253/2576 3239/5245/2570\nf 3245/5254/2577 3243/5248/2572 3273/5255/2578\nf 3247/5256/2575 3243/5248/2572 3248/5257/2576\nf 3253/5258/2579 3245/5254/2577 3250/5259/2580\nf 3255/5260/2581 3256/5261/2582 3289/5262/2583\nf 3264/5263/2584 3265/5264/2585 3266/5265/2586\nf 3263/5266/2587 3264/5267/2584 3266/5268/2586\nf 3265/5269/2585 3267/5270/2588 3266/5271/2586\nf 3269/5272/2589 3277/5273/2590 3270/5274/2591\nf 3286/5275/2592 3245/5254/2577 3253/5258/2579\nf 3273/5255/2578 3250/5259/2580 3245/5254/2577\nf 3293/5276/2593 3274/5277/2594 3271/5278/2595\nf 3278/5279/2596 3241/5243/2568 3290/5280/2597\nf 3290/5281/2597 3262/5282/2598 3278/5283/2596\nf 3274/5277/2594 3270/5274/2591 3271/5278/2595\nf 3260/5284/2599 3261/5285/2600 3276/5286/2601\nf 3251/5287/2602 3240/5244/2569 3242/5288/2603\nf 3288/5289/2604 3241/5243/2568 3278/5279/2596\nf 3284/5290/2605 3291/5291/2606 3292/5292/2607\nf 3286/5293/2592 3292/5292/2607 3291/5291/2606\nf 3291/5291/2606 3279/5294/2571 3286/5293/2592\nf 3292/5292/2607 3266/5295/2586 3284/5290/2605\nf 3260/5296/2599 3284/5290/2605 3257/5297/2608\nf 3287/5298/2609 3260/5296/2599 3257/5297/2608\nf 3291/5291/2606 3275/5299/2573 3244/5300/2402\nf 3262/5301/2598 3281/5302/2610 3282/5303/2611\nf 3263/5304/2587 3292/5292/2607 3286/5293/2592\nf 3290/5281/2597 3239/5305/2570 3248/5306/2576\nf 3244/5251/2402 3248/5306/2576 3243/5307/2572\nf 3284/5290/2605 3275/5299/2573 3291/5291/2606\nf 3288/5289/2604 3283/5308/2441 3249/5309/2612\nf 3294/5310/2613 3256/5261/2582 3255/5260/2581\nf 3263/5311/2587 3285/5312/2614 3272/5313/2615\nf 3289/5262/2583 3256/5261/2582 3287/5314/2609\nf 3279/5294/2571 3291/5291/2606 3244/5300/2402\nf 3246/5250/2574 3290/5281/2597 3244/5251/2402\nf 3250/5315/2580 3285/5312/2614 3253/5316/2579\nf 3258/5317/2616 3287/5298/2609 3257/5297/2608\nf 3261/5285/2600 3260/5284/2599 3256/5318/2582\nf 3296/5319/2617 3278/5320/2596 3262/5301/2598\nf 3289/5262/2583 3254/5321/2618 3255/5260/2581\nf 3285/5312/2614 3250/5315/2580 3249/5322/2612\nf 3239/5245/2570 3240/5244/2569 3247/5252/2575\nf 3277/5323/2590 3293/5276/2593 3271/5278/2595\nf 3273/5255/2578 3247/5256/2575 3240/5324/2569\nf 3293/5325/2593 3281/5326/2610 3280/5327/2619\nf 3272/5313/2615 3285/5312/2614 3249/5322/2612\nf 3268/5328/2620 3258/5329/2616 3257/5330/2608\nf 3267/5270/2588 3274/5277/2594 3268/5328/2620\nf 3275/5299/2573 3284/5290/2605 3276/5331/2601\nf 3286/5275/2592 3279/5246/2571 3245/5254/2577\nf 3276/5332/2601 3284/5290/2605 3260/5296/2599\nf 3266/5295/2586 3292/5292/2607 3263/5304/2587\nf 3257/5297/2608 3284/5290/2605 3266/5295/2586\nf 3286/5293/2592 3252/5333/2621 3263/5304/2587\nf 3267/5270/2588 3264/5334/2584 3270/5274/2591\nf 3274/5277/2594 3267/5270/2588 3270/5274/2591\nf 3261/5285/2600 3246/5250/2574 3275/5249/2573\nf 3263/5311/2587 3252/5335/2621 3285/5312/2614\nf 3277/5336/2590 3271/5337/2595 3270/5338/2591\nf 3280/5327/2619 3281/5326/2610 3262/5339/2598\nf 3261/5285/2600 3290/5281/2597 3246/5250/2574\nf 3283/5340/2441 3272/5313/2615 3249/5322/2612\nf 3268/5328/2620 3266/5271/2586 3267/5270/2588\nf 3282/5341/2611 3288/5289/2604 3278/5279/2596\nf 3275/5249/2573 3276/5286/2601 3261/5285/2600\nf 3278/5279/2596 3296/5342/2617 3282/5341/2611\nf 3274/5277/2594 3254/5343/2618 3258/5329/2616\nf 3254/5343/2618 3274/5277/2594 3255/5344/2581\nf 3264/5334/2584 3263/5311/2587 3272/5313/2615\nf 3261/5285/2600 3256/5318/2582 3259/5345/2622\nf 3274/5277/2594 3293/5276/2593 3255/5344/2581\nf 3248/5306/2576 3244/5251/2402 3290/5281/2597\nf 3258/5329/2616 3289/5346/2583 3287/5347/2609\nf 3239/5245/2570 3290/5348/2597 3241/5243/2568\nf 3250/5315/2580 3273/5349/2578 3251/5350/2602\nf 3243/5248/2572 3245/5254/2577 3279/5246/2571\nf 3256/5318/2582 3294/5351/2613 3259/5345/2622\nf 3262/5282/2598 3290/5281/2597 3261/5285/2600\nf 3280/5352/2619 3294/5310/2613 3293/5353/2593\nf 3277/5354/2590 3283/5355/2441 3281/5326/2610\nf 3255/5260/2581 3293/5353/2593 3294/5310/2613\nf 3257/5297/2608 3266/5295/2586 3268/5356/2620\nf 3283/5357/2441 3282/5303/2611 3281/5302/2610\nf 3240/5324/2569 3251/5358/2602 3273/5255/2578\nf 3264/5359/2584 3267/5360/2588 3265/5361/2585\nf 3281/5326/2610 3293/5325/2593 3277/5354/2590\nf 3242/5288/2603 3249/5309/2612 3250/5362/2580\nf 3270/5274/2591 3272/5313/2615 3269/5272/2589\nf 3260/5363/2599 3287/5314/2609 3256/5261/2582\nf 3242/5288/2603 3250/5362/2580 3251/5287/2602\nf 3252/5335/2621 3253/5316/2579 3285/5312/2614\nf 3253/5364/2579 3252/5333/2621 3286/5293/2592\nf 3240/5244/2569 3241/5243/2568 3295/5365/2623\nf 3272/5313/2615 3270/5274/2591 3264/5334/2584\nf 3294/5310/2613 3280/5352/2619 3259/5366/2622\nf 3295/5365/2623 3249/5309/2612 3242/5288/2603\nf 3272/5313/2615 3283/5340/2441 3269/5272/2589\nf 3258/5329/2616 3268/5328/2620 3274/5277/2594\nf 3288/5289/2604 3295/5365/2623 3241/5243/2568\nf 3295/5365/2623 3288/5289/2604 3249/5309/2612\nf 3289/5346/2583 3258/5329/2616 3254/5343/2618\nf 3295/5365/2623 3242/5288/2603 3240/5244/2569\nf 3273/5255/2578 3243/5248/2572 3247/5256/2575\nf 3282/5341/2611 3283/5308/2441 3288/5289/2604\nf 3277/5354/2590 3269/5367/2589 3283/5355/2441\nf 3259/5345/2622 3262/5282/2598 3261/5285/2600\nf 3280/5327/2619 3262/5339/2598 3259/5368/2622\nf 3282/5303/2611 3296/5319/2617 3262/5301/2598\nusemtl wire_228153184\nf 1244/5369/2624 1245/5370/2625 1246/5371/2626\nf 1248/5372/2627 1246/5373/2626 1245/5374/2625\nf 1251/5375/2628 1250/5376/2629 1248/5372/2627\nf 1250/5376/2629 1251/5375/2628 1253/5377/2630\nf 1251/5375/2628 1254/5378/2631 1607/5379/2632\nf 1251/5375/2628 1255/5380/2633 1253/5377/2630\nf 1256/5381/2634 1257/5382/2635 1244/5369/2624\nf 1258/5383/2636 1249/5384/2637 1245/5374/2625\nf 1245/5385/2625 1257/5382/2635 1258/5386/2636\nf 1252/5387/2638 1249/5384/2637 1259/5388/2639\nf 1259/5388/2639 1254/5378/2631 1252/5387/2638\nf 1244/5369/2624 1247/5389/2640 1261/5390/2641\nf 1263/5391/2642 1265/5392/2643 1261/5390/2641\nf 1266/5393/2644 1268/5394/2645 1265/5392/2643\nf 1268/5394/2645 1266/5393/2644 1269/5395/2646\nf 1269/5395/2646 1270/5396/2647 1268/5394/2645\nf 1272/5397/2648 1271/5398/2649 1273/5399/2650\nf 1273/5399/2650 1274/5400/2651 1272/5397/2648\nf 1276/5401/2652 1275/5402/2653 1274/5400/2651\nf 1276/5401/2652 1274/5400/2651 1273/5399/2650\nf 1276/5401/2652 1277/5403/2654 1275/5402/2653\nf 1277/5403/2654 1276/5401/2652 1279/5404/2655\nf 1256/5381/2634 1244/5369/2624 1284/5405/2656\nf 1261/5390/2641 1285/5406/2657 1298/5407/2658\nf 1261/5390/2641 1286/5408/2659 1285/5406/2657\nf 1270/5396/2647 1287/5409/2660 1268/5394/2645\nf 1272/5397/2648 1274/5400/2651 1288/5410/2661\nf 1275/5402/2653 1288/5410/2661 1274/5400/2651\nf 1278/5411/2662 1290/5412/2663 1583/5413/2664\nf 1278/5411/2662 1282/5414/2665 1290/5412/2663\nf 1293/5415/2666 1258/5383/2636 1294/5416/2667\nf 1293/5415/2666 1291/5417/2668 1259/5388/2639\nf 1296/5418/2669 1257/5382/2635 1256/5381/2634\nf 1256/5381/2634 1297/5419/2670 1296/5418/2669\nf 1256/5381/2634 1298/5407/2658 1297/5419/2670\nf 1295/5420/2671 1294/5421/2667 1258/5386/2636\nf 1295/5420/2671 1258/5386/2636 1257/5382/2635\nf 1285/5406/2657 1286/5408/2659 1299/5422/2672\nf 1299/5422/2672 1366/5423/2673 1285/5406/2657\nf 1270/5396/2647 1300/5424/2674 1287/5409/2660\nf 1270/5396/2647 1272/5397/2648 1301/5425/2675\nf 1270/5396/2647 1301/5425/2675 1302/5426/2676\nf 1288/5410/2661 1303/5427/2677 1304/5428/2678\nf 1289/5429/2679 1303/5427/2677 1288/5410/2661\nf 1300/5424/2674 1270/5396/2647 1307/5430/2680\nf 1302/5426/2676 1301/5425/2675 1304/5428/2678\nf 1304/5428/2678 1316/5431/2681 1302/5426/2676\nf 1306/5432/2682 1304/5428/2678 1303/5427/2677\nf 1304/5428/2678 1309/5433/2683 1310/5434/2684\nf 1306/5432/2682 1305/5435/2685 1311/5436/2686\nf 1309/5433/2683 1311/5436/2686 1312/5437/2687\nf 1313/5438/2688 1309/5433/2683 1312/5437/2687\nf 1310/5434/2684 1309/5433/2683 1313/5438/2688\nf 1315/5439/2689 1313/5438/2688 1314/5440/2690\nf 1316/5431/2681 1317/5441/2691 1307/5430/2680\nf 1264/5442/2692 1318/5443/2693 1267/5444/2694\nf 1319/5445/2695 1264/5446/2692 1263/5391/2642\nf 1340/5447/2696 1247/5389/2640 1246/5371/2626\nf 1246/5371/2626 1320/5448/2697 1340/5447/2696\nf 1321/5449/2698 1322/5450/2699 1320/5448/2697\nf 1321/5451/2698 1246/5452/2626 1248/5453/2627\nf 1321/5451/2698 1248/5453/2627 1250/5454/2629\nf 1323/5455/2700 1321/5451/2698 1250/5454/2629\nf 1250/5454/2629 1324/5456/2701 1323/5455/2700\nf 1325/5457/2702 1324/5458/2701 1332/5459/2703\nf 1332/5459/2703 1324/5458/2701 1326/5460/2704\nf 1332/5459/2703 1328/5461/2705 1325/5457/2702\nf 1325/5457/2702 1329/5462/2706 1330/5463/2707\nf 1325/5457/2702 1330/5463/2707 1331/5464/2708\nf 1322/5465/2699 1331/5464/2708 1336/5466/2709\nf 1335/5467/2710 1334/5468/2711 1336/5466/2709\nf 1336/5469/2709 1334/5470/2711 1320/5448/2697\nf 1337/5471/2712 1339/5472/2713 1340/5447/2696\nf 1337/5471/2712 1340/5447/2696 1320/5448/2697\nf 1262/5473/2714 1341/5474/2715 1342/5475/2716\nf 1262/5473/2714 1342/5475/2716 1319/5445/2695\nf 1262/5473/2714 1340/5447/2696 1344/5476/2717\nf 1340/5447/2696 1343/5477/2718 1344/5476/2717\nf 1345/5478/2719 1342/5475/2716 1341/5474/2715\nf 1319/5445/2695 1342/5475/2716 1264/5446/2692\nf 1342/5475/2716 1345/5478/2719 1346/5479/2720\nf 1346/5479/2720 1264/5446/2692 1342/5475/2716\nf 1346/5479/2720 1318/5480/2693 1264/5446/2692\nf 1318/5481/2693 1346/5482/2720 1347/5483/2721\nf 1267/5444/2694 1347/5484/2721 1349/5485/2722\nf 1348/5486/2723 1349/5485/2722 1347/5484/2721\nf 1267/5444/2694 1349/5485/2722 1350/5487/2724\nf 1351/5488/2725 1349/5485/2722 1348/5486/2723\nf 1352/5489/2726 1353/5490/2727 1351/5488/2725\nf 1350/5487/2724 1351/5488/2725 1354/5491/2728\nf 1269/5492/2646 1354/5491/2728 1355/5493/2729\nf 1269/5492/2646 1350/5487/2724 1354/5491/2728\nf 1354/5491/2728 1357/5494/2730 1356/5495/2731\nf 1353/5496/2727 1359/5497/2732 1360/5498/2733\nf 1353/5490/2727 1360/5499/2733 1358/5500/2734\nf 1356/5495/2731 1357/5494/2730 1361/5501/2735\nf 1355/5493/2729 1361/5501/2735 1273/5502/2650\nf 1362/5503/2736 1273/5502/2650 1361/5501/2735\nf 1308/5504/2737 1307/5430/2680 1363/5505/2738\nf 1300/5424/2674 1308/5504/2737 1299/5422/2672\nf 1299/5422/2672 1364/5506/2739 1366/5423/2673\nf 1366/5507/2673 1365/5508/2740 1367/5509/2741\nf 1368/5510/2742 1297/5419/2670 1298/5407/2658\nf 1366/5423/2673 1298/5407/2658 1285/5406/2657\nf 1296/5418/2669 1367/5511/2741 1369/5512/2743\nf 1370/5513/2744 1296/5418/2669 1369/5512/2743\nf 1371/5514/2745 1372/5515/2746 1373/5516/2747\nf 1373/5517/2747 1294/5421/2667 1371/5518/2745\nf 1373/5516/2747 1291/5519/2668 1293/5520/2666\nf 1373/5516/2747 1293/5520/2666 1294/5521/2667\nf 1375/5522/2748 1376/5523/2749 1374/5524/2750\nf 1374/5524/2750 1292/5525/2751 1291/5519/2668\nf 1374/5524/2750 1372/5515/2746 1375/5522/2748\nf 1377/5526/2752 1378/5527/2753 1379/5528/2754\nf 1379/5528/2754 1380/5529/2755 1377/5526/2752\nf 1381/5530/2756 1379/5528/2754 1378/5527/2753\nf 1382/5531/2757 1383/5532/2758 1379/5528/2754\nf 1384/5533/2759 1385/5534/2760 1382/5531/2757\nf 1384/5533/2759 1386/5535/2761 1387/5536/2762\nf 1387/5536/2762 1484/5537/2763 1384/5533/2759\nf 1387/5536/2762 1386/5535/2761 1388/5538/2764\nf 1388/5538/2764 1389/5539/2765 1387/5536/2762\nf 1390/5540/2766 1391/5541/2767 1389/5539/2765\nf 1389/5539/2765 1392/5542/2768 1390/5540/2766\nf 1400/5543/2769 1401/5544/2770 1402/5545/2771\nf 1402/5545/2771 1403/5546/2772 1400/5543/2769\nf 1406/5547/2773 1397/5548/2774 1407/5549/2775\nf 1407/5549/2775 1404/5550/2776 1406/5547/2773\nf 1408/5551/2777 1404/5552/2776 1401/5544/2770\nf 1401/5544/2770 1400/5543/2769 1408/5551/2777\nf 1410/5553/2778 1400/5543/2769 1403/5546/2772\nf 1411/5554/2779 1412/5555/2780 1413/5556/2781\nf 1411/5557/2779 1409/5558/2782 1408/5551/2777\nf 1410/5553/2778 1408/5551/2777 1400/5543/2769\nf 1414/5559/2783 1416/5560/2784 1417/5561/2785\nf 1415/5562/2786 1419/5563/2787 1420/5564/2788\nf 1423/5565/2789 1412/5555/2780 1418/5566/2790\nf 1418/5566/2790 1421/5567/2791 1423/5565/2789\nf 1423/5565/2789 1424/5568/2792 1422/5569/2793\nf 1413/5556/2781 1422/5569/2793 1425/5570/2794\nf 1413/5571/2781 1425/5572/2794 1426/5573/2795\nf 1406/5547/2773 1426/5573/2795 1398/5574/2796\nf 1409/5575/2782 1406/5547/2773 1404/5550/2776\nf 1422/5569/2793 1427/5576/2797 1428/5577/2798\nf 1422/5578/2793 1428/5579/2798 1429/5580/2799\nf 1430/5581/2800 1398/5574/2796 1426/5573/2795\nf 1432/5582/2801 1396/5583/2802 1398/5574/2796\nf 1429/5580/2799 1434/5584/2803 1433/5585/2804\nf 1435/5586/2805 1395/5587/2806 1432/5582/2801\nf 1435/5586/2805 1440/5588/2807 1445/5589/2808\nf 1395/5587/2806 1445/5589/2808 1393/5590/2809\nf 1434/5591/2803 1436/5592/2810 1437/5593/2811\nf 1437/5593/2811 1433/5594/2804 1434/5591/2803\nf 1438/5595/2812 1432/5582/2801 1431/5596/2813\nf 1438/5595/2812 1431/5596/2813 1433/5585/2804\nf 1439/5597/2814 1440/5598/2807 1435/5599/2805\nf 1442/5600/2815 1436/5592/2810 1443/5601/2816\nf 1442/5602/2815 1444/5603/2817 1441/5604/2818\nf 1441/5604/2818 1440/5588/2807 1442/5602/2815\nf 1442/5602/2815 1439/5605/2814 1438/5595/2812\nf 1446/5606/2819 1391/5541/2767 1445/5589/2808\nf 1446/5606/2819 1447/5607/2820 1391/5541/2767\nf 1447/5607/2820 1446/5606/2819 1440/5588/2807\nf 1440/5588/2807 1456/5608/2821 1447/5607/2820\nf 1441/5604/2818 1444/5603/2817 1456/5608/2821\nf 1444/5609/2817 1448/5610/2822 1455/5611/2823\nf 1449/5612/2824 1450/5613/2825 1451/5614/2826\nf 1452/5615/2827 1453/5616/2828 1454/5617/2829\nf 1455/5611/2823 1454/5617/2829 1453/5616/2828\nf 1457/5618/2830 1449/5612/2824 1451/5614/2826\nf 1451/5619/2826 1458/5620/2831 1457/5621/2830\nf 1459/5622/2832 1449/5612/2824 1457/5618/2830\nf 1449/5612/2824 1459/5622/2832 1453/5616/2828\nf 1459/5623/2832 1460/5624/2833 1456/5608/2821\nf 1461/5625/2834 1459/5623/2832 1457/5621/2830\nf 1460/5624/2833 1461/5625/2834 1463/5626/2835\nf 1460/5624/2833 1463/5626/2835 1447/5607/2820\nf 1464/5627/2836 1462/5628/2837 1465/5629/2838\nf 1391/5541/2767 1463/5626/2835 1464/5627/2836\nf 1464/5627/2836 1389/5539/2765 1391/5541/2767\nf 1465/5629/2838 1466/5630/2839 1387/5536/2762\nf 1465/5629/2838 1387/5536/2762 1389/5539/2765\nf 1465/5629/2838 1467/5631/2840 1475/5632/2841\nf 1465/5629/2838 1475/5632/2841 1466/5630/2839\nf 1462/5628/2837 1451/5619/2826 1468/5633/2842\nf 1468/5634/2842 1450/5613/2825 1469/5635/2843\nf 1473/5636/2844 1469/5635/2843 1470/5637/2845\nf 1474/5638/2846 1468/5633/2842 1473/5639/2844\nf 1474/5638/2846 1475/5632/2841 1467/5631/2840\nf 1475/5632/2841 1474/5638/2846 1476/5640/2847\nf 1476/5640/2847 1474/5638/2846 1477/5641/2848\nf 1477/5641/2848 1473/5639/2844 1472/5642/2849\nf 1471/5643/2850 1478/5644/2851 1472/5642/2849\nf 1471/5643/2850 1479/5645/2852 1482/5646/2853\nf 1384/5533/2759 1484/5537/2763 1385/5534/2760\nf 1383/5532/2758 1385/5534/2760 1483/5647/2854\nf 1476/5640/2847 1484/5537/2763 1466/5630/2839\nf 1485/5648/2855 1472/5642/2849 1478/5644/2851\nf 1484/5537/2763 1485/5648/2855 1481/5649/2856\nf 1481/5649/2856 1485/5648/2855 1486/5650/2857\nf 1487/5651/2858 1478/5644/2851 1480/5652/2859\nf 1478/5644/2851 1487/5651/2858 1488/5653/2860\nf 1385/5534/2760 1486/5650/2857 1489/5654/2861\nf 1488/5653/2860 1490/5655/2862 1489/5654/2861\nf 1487/5651/2858 1491/5656/2863 1492/5657/2864\nf 1491/5658/2863 1482/5659/2853 1496/5660/2865\nf 1491/5656/2863 1480/5652/2859 1482/5646/2853\nf 1498/5661/2866 1496/5660/2865 1482/5659/2853\nf 1498/5661/2866 1499/5662/2867 1500/5663/2868\nf 1498/5661/2866 1314/5664/2690 1499/5662/2867\nf 1498/5661/2866 1482/5659/2853 1479/5665/2852\nf 1315/5666/2689 1498/5661/2866 1501/5667/2869\nf 1470/5637/2845 1315/5666/2689 1501/5667/2869\nf 1502/5668/2870 1470/5637/2845 1469/5635/2843\nf 1502/5668/2870 1315/5666/2689 1470/5637/2845\nf 1502/5668/2870 1469/5635/2843 1450/5613/2825\nf 1502/5668/2870 1450/5613/2825 1503/5669/2871\nf 1503/5670/2871 1316/5431/2681 1502/5671/2870\nf 1452/5615/2827 1317/5672/2691 1503/5669/2871\nf 1317/5441/2691 1452/5673/2827 1454/5674/2829\nf 1363/5505/2738 1317/5441/2691 1504/5675/2872\nf 1455/5676/2823 1504/5677/2872 1454/5678/2829\nf 1504/5679/2872 1448/5680/2822 1363/5681/2738\nf 1448/5680/2822 1308/5682/2737 1363/5681/2738\nf 1505/5683/2873 1365/5684/2740 1364/5685/2739\nf 1505/5686/2873 1367/5509/2741 1365/5508/2740\nf 1434/5591/2803 1506/5687/2874 1436/5592/2810\nf 1506/5687/2874 1434/5591/2803 1427/5576/2797\nf 1427/5688/2797 1369/5689/2743 1506/5690/2874\nf 1507/5691/2875 1424/5568/2792 1508/5692/2876\nf 1371/5514/2745 1508/5693/2876 1372/5515/2746\nf 1508/5692/2876 1421/5567/2791 1509/5694/2877\nf 1509/5695/2877 1510/5696/2878 1372/5515/2746\nf 1510/5696/2878 1419/5697/2787 1850/5698/2879\nf 1357/5699/2730 1514/5700/2880 1361/5701/2735\nf 1512/5702/2881 1384/5533/2759 1382/5531/2757\nf 1512/5702/2881 1382/5531/2757 1381/5530/2756\nf 1511/5703/2882 1514/5700/2880 1384/5533/2759\nf 1514/5700/2880 1358/5704/2734 1360/5498/2733\nf 1516/5705/2883 1518/5706/2884 1517/5707/2885\nf 1402/5545/2771 1401/5544/2770 1518/5706/2884\nf 1518/5706/2884 1401/5544/2770 1405/5708/2886\nf 1519/5709/2887 1520/5710/2888 1517/5707/2885\nf 1517/5707/2885 1520/5710/2888 1516/5705/2883\nf 1521/5711/2889 1519/5709/2887 1517/5707/2885\nf 1521/5712/2889 1517/5713/2885 1405/5714/2886\nf 1596/5715/2890 1523/5716/2891 1402/5545/2771\nf 1402/5545/2771 1524/5717/2892 1596/5715/2890\nf 1525/5718/2893 1522/5719/2894 1521/5712/2889\nf 1521/5712/2889 1526/5720/2895 1525/5718/2893\nf 1407/5549/2775 1526/5720/2895 1405/5714/2886\nf 1397/5548/2774 1399/5721/2896 1526/5720/2895\nf 1395/5587/2806 1394/5722/2897 1399/5721/2896\nf 1532/5723/2898 1394/5722/2897 1531/5724/2899\nf 1534/5725/2900 1497/5726/2901 1500/5663/2868\nf 1534/5725/2900 1500/5663/2868 1535/5727/2902\nf 1535/5727/2902 1500/5663/2868 1499/5728/2867\nf 1313/5438/2688 1536/5729/2903 1535/5730/2902\nf 1535/5730/2902 1537/5731/2904 1538/5732/2905\nf 1534/5725/2900 1539/5733/2906 1540/5734/2907\nf 1534/5725/2900 1540/5734/2907 1497/5726/2901\nf 1497/5726/2901 1541/5735/2908 1493/5736/2909\nf 1541/5737/2908 1540/5738/2907 1539/5739/2906\nf 1494/5740/2910 1493/5741/2909 1542/5742/2911\nf 1541/5737/2908 1543/5743/2912 1544/5744/2913\nf 1544/5744/2913 1542/5745/2911 1541/5737/2908\nf 1541/5737/2908 1546/5746/2914 1543/5743/2912\nf 1547/5747/2915 1534/5748/2900 1538/5732/2905\nf 1548/5749/2916 1549/5750/2917 1550/5751/2918\nf 1548/5749/2916 1538/5732/2905 1551/5752/2919\nf 1550/5753/2918 1552/5754/2920 1553/5755/2921\nf 1555/5756/2922 1556/5757/2923 1554/5758/2924\nf 1557/5759/2925 1556/5757/2923 1555/5756/2922\nf 1494/5740/2910 1558/5760/2926 1557/5761/2925\nf 1557/5761/2925 1495/5762/2927 1494/5740/2910\nf 1558/5760/2926 1542/5742/2911 1544/5763/2913\nf 1553/5755/2921 1556/5757/2923 1559/5764/2928\nf 1560/5765/2929 1539/5739/2906 1547/5766/2915\nf 1560/5765/2929 1547/5766/2915 1548/5767/2916\nf 1560/5768/2929 1550/5753/2918 1553/5755/2921\nf 1560/5765/2929 1546/5746/2914 1539/5739/2906\nf 1561/5769/2930 1492/5657/2864 1495/5762/2927\nf 1561/5769/2930 1495/5762/2927 1562/5770/2931\nf 1490/5655/2862 1492/5657/2864 1561/5769/2930\nf 1562/5770/2931 1495/5762/2927 1557/5761/2925\nf 1537/5731/2904 1563/5771/2932 1551/5752/2919\nf 1551/5752/2919 1563/5771/2932 1549/5750/2917\nf 1537/5731/2904 1551/5752/2919 1538/5732/2905\nf 1549/5772/2917 1563/5773/2932 1564/5774/2933\nf 1554/5758/2924 1552/5754/2920 1565/5775/2934\nf 1566/5776/2935 1568/5777/2936 1569/5778/2937\nf 1569/5778/2937 1567/5779/2938 1566/5776/2935\nf 1489/5654/2861 1490/5655/2862 1569/5780/2937\nf 1571/5781/2939 1569/5778/2937 1568/5777/2936\nf 1383/5532/2758 1572/5782/2940 1379/5528/2754\nf 1489/5654/2861 1570/5783/2941 1574/5784/2942\nf 1575/5785/2943 1379/5786/2754 1572/5787/2940\nf 1577/5788/2944 1381/5530/2756 1576/5789/2945\nf 1564/5774/2933 1578/5790/2946 1579/5791/2947\nf 1582/5792/2948 1580/5793/2949 1305/5435/2685\nf 1582/5792/2948 1305/5435/2685 1583/5413/2664\nf 1563/5771/2932 1537/5731/2904 1536/5729/2903\nf 1573/5794/2950 1581/5795/2951 1582/5796/2948\nf 1581/5795/2951 1573/5794/2950 1574/5797/2942\nf 1581/5798/2951 1574/5799/2942 1570/5800/2941\nf 1583/5413/2664 1290/5412/2663 1584/5801/2952\nf 1584/5802/2952 1380/5803/2755 1583/5804/2664\nf 1377/5805/2752 1280/5806/2953 1585/5807/2954\nf 1585/5808/2954 1280/5809/2953 1586/5810/2955\nf 1576/5789/2945 1587/5811/2956 1577/5788/2944\nf 1587/5811/2956 1576/5789/2945 1586/5812/2955\nf 1362/5813/2736 1513/5814/2957 1577/5788/2944\nf 1577/5788/2944 1587/5815/2956 1362/5813/2736\nf 1513/5814/2957 1362/5816/2736 1512/5702/2881\nf 1359/5817/2732 1392/5818/2768 1388/5819/2764\nf 1589/5820/2958 1392/5818/2768 1359/5817/2732\nf 1392/5821/2768 1589/5822/2958 1588/5823/2959\nf 1353/5490/2727 1589/5824/2958 1359/5825/2732\nf 1588/5826/2959 1348/5486/2723 1532/5827/2898\nf 1348/5486/2723 1533/5828/2960 1532/5827/2898\nf 1347/5483/2721 1530/5829/2961 1533/5830/2960\nf 1590/5831/2962 1529/5832/2963 1530/5833/2961\nf 1591/5834/2964 1528/5835/2965 1529/5836/2963\nf 1591/5837/2964 1529/5838/2963 1345/5839/2719\nf 1592/5840/2966 1341/5841/2715 1344/5842/2717\nf 1592/5840/2966 1344/5842/2717 1343/5843/2718\nf 1527/5844/2967 1528/5845/2965 1592/5840/2966\nf 1335/5467/2710 1336/5466/2709 1516/5846/2883\nf 1329/5462/2706 1594/5847/2968 1330/5463/2707\nf 1515/5848/2969 1518/5706/2884 1329/5849/2706\nf 1527/5844/2967 1592/5840/2966 1343/5843/2718\nf 1522/5850/2894 1527/5844/2967 1343/5843/2718\nf 1595/5851/2970 1343/5852/2718 1339/5853/2713\nf 1595/5851/2970 1519/5854/2887 1522/5855/2894\nf 1524/5856/2892 1515/5857/2969 1328/5461/2705\nf 1255/5858/2633 1326/5859/2704 1253/5860/2630\nf 1253/5860/2630 1326/5859/2704 1324/5456/2701\nf 1332/5459/2703 1326/5460/2704 1598/5861/2971\nf 1598/5861/2971 1599/5862/2972 1332/5459/2703\nf 1600/5863/2973 1601/5864/2974 1602/5865/2975\nf 1602/5865/2975 1601/5864/2974 1603/5866/2976\nf 1607/5379/2632 1605/5867/2977 1608/5868/2978\nf 1604/5869/2979 1609/5870/2980 1606/5871/2981\nf 1607/5379/2632 1254/5378/2631 1609/5870/2980\nf 1600/5872/2973 1610/5873/2982 1601/5874/2974\nf 1609/5870/2980 1611/5875/2983 1606/5871/2981\nf 1609/5870/2980 1254/5378/2631 1260/5876/2984\nf 1260/5876/2984 1612/5877/2985 1609/5870/2980\nf 1603/5878/2976 1601/5874/2974 1613/5879/2986\nf 1616/5880/2987 1617/5881/2988 1615/5882/2989\nf 1618/5883/2990 1620/5884/2991 1616/5885/2987\nf 1618/5886/2990 1619/5887/2992 1621/5888/2993\nf 1623/5889/2994 1624/5890/2995 1625/5891/2996\nf 1627/5892/2997 1629/5893/2998 1626/5894/2999\nf 1626/5894/2999 1629/5893/2998 1625/5891/2996\nf 1628/5895/3000 1629/5893/2998 1627/5892/2997\nf 1627/5892/2997 1630/5896/3001 1628/5895/3000\nf 1633/5897/3002 1631/5898/3003 1628/5895/3000\nf 1601/5874/2974 1610/5873/2982 1636/5899/3004\nf 1638/5900/3005 1613/5879/2986 1637/5901/3006\nf 1638/5900/3005 1619/5887/2992 1616/5880/2987\nf 1639/5902/3007 1622/5903/3008 1619/5887/2992\nf 1622/5903/3008 1624/5890/2995 1623/5889/2994\nf 1640/5904/3009 1627/5892/2997 1626/5894/2999\nf 1630/5896/3001 1627/5892/2997 1641/5905/3010\nf 1630/5896/3001 1635/5906/3011 1634/5907/3012\nf 1292/5908/2751 1612/5877/2985 1260/5876/2984\nf 1612/5877/2985 1611/5875/2983 1609/5870/2980\nf 1611/5875/2983 1643/5909/3013 1644/5910/3014\nf 1647/5911/3015 1610/5873/2982 1646/5912/3016\nf 1646/5912/3016 1600/5872/2973 1645/5913/3017\nf 1648/5914/3018 1610/5915/2982 1647/5916/3015\nf 1644/5917/3014 1645/5913/3017 1611/5918/2983\nf 1611/5875/2983 1645/5919/3017 1600/5863/2973\nf 1638/5900/3005 1637/5901/3006 1649/5920/3019\nf 1649/5920/3019 1639/5902/3007 1638/5900/3005\nf 1650/5921/3020 1622/5903/3008 1639/5902/3007\nf 1640/5904/3009 1652/5922/3021 1654/5923/3022\nf 1653/5924/3023 1641/5905/3010 1640/5904/3009\nf 1655/5925/3024 1653/5924/3023 1656/5926/3025\nf 1650/5921/3020 1658/5927/3026 1657/5928/3027\nf 1651/5929/3028 1657/5928/3027 1666/5930/3029\nf 1666/5930/3029 1654/5923/3022 1651/5929/3028\nf 1654/5923/3022 1660/5931/3030 1656/5926/3025\nf 1654/5923/3022 1656/5926/3025 1653/5924/3023\nf 1661/5932/3031 1660/5931/3030 1662/5933/3032\nf 1660/5931/3030 1663/5934/3033 1662/5933/3032\nf 1663/5934/3033 1665/5935/3034 1664/5936/3035\nf 1668/5937/3036 1617/5938/2988 1620/5884/2991\nf 1614/5939/3037 1615/5882/2989 1670/5940/3038\nf 1603/5878/2976 1691/5941/3039 1602/5942/2975\nf 1604/5943/2979 1672/5944/3040 1605/5945/2977\nf 1672/5944/3040 1674/5946/3041 1605/5945/2977\nf 1605/5945/2977 1675/5947/3042 1608/5948/2978\nf 1674/5946/3041 1676/5949/3043 1675/5947/3042\nf 1675/5950/3042 1676/5951/3043 1677/5952/3044\nf 1677/5952/3044 1678/5953/3045 1679/5954/3046\nf 1675/5950/3042 1677/5952/3044 1680/5955/3047\nf 1676/5951/3043 1681/5956/3048 1678/5953/3045\nf 1682/5957/3049 1676/5951/3043 1683/5958/3050\nf 1673/5959/3051 1683/5958/3050 1676/5951/3043\nf 1683/5958/3050 1673/5959/3051 1687/5960/3052\nf 1677/5952/3044 1679/5954/3046 1684/5961/3053\nf 1685/5962/3054 1686/5963/3055 1687/5960/3052\nf 1691/5941/3039 1688/5964/3056 1671/5965/3057\nf 1688/5964/3056 1690/5966/3058 1689/5967/3059\nf 1614/5939/3037 1692/5968/3060 1694/5969/3061\nf 1692/5968/3060 1614/5939/3037 1670/5940/3038\nf 1691/5970/3039 1693/5971/3062 1690/5972/3058\nf 1693/5973/3062 1691/5941/3039 1694/5969/3061\nf 1692/5968/3060 1670/5940/3038 1695/5974/3063\nf 1695/5974/3063 1670/5940/3038 1617/5881/2988\nf 1617/5881/2988 1696/5975/3064 1695/5974/3063\nf 1669/5976/3065 1696/5975/3064 1617/5881/2988\nf 1668/5937/3036 1697/5977/3066 1669/5978/3065\nf 1697/5977/3066 1668/5937/3036 1699/5979/3067\nf 1699/5979/3067 1701/5980/3068 1698/5981/3069\nf 1701/5980/3068 1700/5982/3070 1704/5983/3071\nf 1704/5983/3071 1703/5984/3072 1701/5980/3068\nf 1705/5985/3073 1706/5986/3074 1704/5983/3071\nf 1707/5987/3075 1708/5988/3076 1703/5984/3072\nf 1707/5987/3075 1704/5983/3071 1706/5986/3074\nf 1710/5989/3077 1703/5990/3072 1708/5991/3076\nf 1707/5992/3075 1706/5993/3074 1711/5994/3078\nf 1705/5985/3073 1623/5995/2994 1625/5996/2996\nf 1705/5985/3073 1711/5997/3078 1706/5986/3074\nf 1625/5996/2996 1712/5998/3079 1711/5997/3078\nf 1657/5928/3027 1658/5927/3026 1713/5999/3080\nf 1658/5927/3026 1650/5921/3020 1649/5920/3019\nf 1714/6000/3081 1649/5920/3019 1716/6001/3082\nf 1716/6001/3082 1715/6002/3083 1714/6000/3081\nf 1715/6003/3083 1716/6004/3082 1717/6005/3084\nf 1718/6006/3085 1717/6005/3084 1716/6004/3082\nf 1648/6007/3018 1716/6001/3082 1637/5901/3006\nf 1646/5912/3016 1717/6008/3084 1718/6009/3085\nf 1646/5912/3016 1720/6010/3086 1719/6011/3087\nf 1721/6012/3088 1645/6013/3017 1722/6014/3089\nf 1722/6015/3089 1645/5913/3017 1644/5917/3014\nf 1723/6016/3090 1722/6014/3089 1724/6017/3091\nf 1643/6018/3013 1722/6014/3089 1644/6019/3014\nf 1376/5523/2749 1723/6016/3090 1724/6017/3091\nf 1724/6017/3091 1292/5525/2751 1376/5523/2749\nf 1725/6020/3092 1635/6021/3011 1727/6022/3093\nf 1727/6023/3093 1728/6024/3094 1725/6025/3092\nf 1728/6024/3094 1729/6026/3095 1726/6027/3096\nf 1730/6028/3097 1731/6029/3098 1728/6024/3094\nf 1728/6024/3094 1731/6029/3098 1729/6026/3095\nf 1734/6030/3099 1732/6031/3100 1735/6032/3101\nf 1736/6033/3102 1737/6034/3103 1735/6032/3101\nf 1738/6035/3104 1739/6036/3105 1736/6037/3102\nf 1739/6036/3105 1738/6035/3104 1740/6038/3106\nf 1745/6039/3107 1746/6040/3108 1743/6041/3109\nf 1745/6039/3107 1743/6041/3109 1744/6042/3110\nf 1747/6043/3111 1403/5546/2772 1523/5716/2891\nf 1523/5716/2891 1748/6044/3112 1747/6043/3111\nf 1747/6043/3111 1749/6045/3113 1750/6046/3114\nf 1745/6039/3107 1751/6047/3115 1752/6048/3116\nf 1403/5546/2772 1747/6043/3111 1753/6049/3117\nf 1753/6049/3117 1747/6043/3111 1755/6050/3118\nf 1755/6050/3118 1750/6046/3114 1754/6051/3119\nf 1416/6052/2784 1410/5553/2778 1756/6053/3120\nf 1755/6050/3118 1756/6053/3120 1753/6049/3117\nf 1756/6054/3120 1754/6055/3119 1757/6056/3121\nf 1417/5561/2785 1759/6057/3122 1415/5562/2786\nf 1417/5561/2785 1416/5560/2784 1758/6058/3123\nf 1417/5561/2785 1758/6058/3123 1760/6059/3124\nf 1419/5563/2787 1759/6057/3122 1761/6060/3125\nf 1759/6057/3122 1419/5563/2787 1415/5562/2786\nf 1760/6059/3124 1761/6060/3125 1759/6057/3122\nf 1762/6061/3126 1764/6062/3127 1761/6060/3125\nf 1761/6060/3125 1760/6059/3124 1762/6061/3126\nf 1757/6056/3121 1763/6063/3128 1762/6061/3126\nf 1751/6047/3115 1754/6064/3119 1750/6065/3114\nf 1751/6047/3115 1766/6066/3129 1754/6067/3119\nf 1763/6063/3128 1767/6068/3130 1764/6062/3127\nf 1768/6069/3131 1763/6063/3128 1769/6070/3132\nf 1765/6071/3133 1769/6072/3132 1763/6073/3128\nf 1744/6042/3110 1771/6074/3134 1770/6075/3135\nf 1744/6042/3110 1770/6075/3135 1766/6066/3129\nf 1772/6076/3136 1743/6041/3109 1742/6077/3137\nf 1771/6074/3134 1773/6078/3138 1770/6075/3135\nf 1774/6079/3139 1769/6072/3132 1773/6078/3138\nf 1768/6069/3131 1774/6080/3139 1767/6068/3130\nf 1785/6081/3140 1742/6077/3137 1740/6038/3106\nf 1773/6082/3138 1777/6083/3141 1774/6080/3139\nf 1771/6074/3134 1779/6084/3142 1773/6078/3138\nf 1779/6085/3142 1772/6086/3136 1780/6087/3143\nf 1773/6078/3138 1779/6084/3142 1777/6088/3141\nf 1780/6087/3143 1772/6086/3136 1775/6089/3144\nf 1782/6090/3145 1778/6091/3146 1777/6083/3141\nf 1782/6092/3145 1780/6093/3143 1776/6094/3147\nf 1776/6094/3147 1781/6095/3148 1782/6092/3145\nf 1786/6096/3149 1787/6097/3150 1776/6094/3147\nf 1776/6094/3147 1796/6098/3151 1781/6095/3148\nf 1789/6099/3152 1790/6100/3153 1791/6101/3154\nf 1790/6100/3153 1792/6102/3155 1793/6103/3156\nf 1793/6103/3156 1792/6102/3155 1794/6104/3157\nf 1795/6105/3158 1796/6106/3151 1799/6107/3159\nf 1795/6108/3158 1783/6109/3160 1796/6098/3151\nf 1798/6110/3161 1791/6101/3154 1797/6111/3162\nf 1799/6107/3159 1790/6100/3153 1793/6103/3156\nf 1800/6112/3163 1799/6113/3159 1796/6098/3151\nf 1801/6114/3164 1802/6115/3165 1798/6116/3161\nf 1800/6112/3163 1801/6114/3164 1799/6113/3159\nf 1803/6117/3166 1800/6112/3163 1787/6097/3150\nf 1787/6097/3150 1800/6112/3163 1796/6098/3151\nf 1804/6118/3167 1802/6115/3165 1801/6114/3164\nf 1803/6117/3166 1738/6035/3104 1804/6118/3167\nf 1804/6118/3167 1736/6037/3102 1805/6119/3168\nf 1735/6120/3101 1805/6121/3168 1736/6122/3102\nf 1805/6119/3168 1807/6123/3169 1802/6115/3165\nf 1815/6124/3170 1805/6119/3168 1806/6125/3171\nf 1802/6115/3165 1791/6126/3154 1798/6116/3161\nf 1808/6127/3172 1789/6099/3152 1791/6101/3154\nf 1810/6128/3173 1812/6129/3174 1813/6130/3175\nf 1812/6131/3174 1809/6132/3176 1808/6133/3172\nf 1809/6134/3176 1812/6135/3174 1811/6136/3177\nf 1814/6137/3178 1808/6138/3172 1807/6123/3169\nf 1815/6124/3170 1806/6125/3171 1816/6139/3179\nf 1815/6124/3170 1814/6137/3178 1807/6123/3169\nf 1814/6137/3178 1815/6124/3170 1816/6139/3179\nf 1810/6128/3173 1818/6140/3180 1819/6141/3181\nf 1824/6142/3182 1732/6031/3100 1733/6143/3183\nf 1733/6143/3183 1821/6144/3184 1824/6142/3182\nf 1733/6143/3183 1730/6028/3097 1823/6145/3185\nf 1825/6146/3186 1817/6147/3187 1824/6142/3182\nf 1813/6130/3175 1825/6146/3186 1818/6140/3180\nf 1826/6148/3188 1818/6140/3180 1825/6146/3186\nf 1818/6140/3180 1828/6149/3189 1819/6141/3181\nf 1733/6143/3183 1826/6148/3188 1821/6144/3184\nf 1829/6150/3190 1827/6151/3191 1826/6148/3188\nf 1826/6148/3188 1733/6143/3183 1829/6150/3190\nf 1828/6149/3189 1831/6152/3192 1819/6141/3181\nf 1831/6152/3192 1828/6149/3189 1832/6153/3193\nf 1831/6152/3192 1833/6154/3194 1834/6155/3195\nf 1822/6156/3196 1831/6157/3192 1836/6158/3197\nf 1837/6159/3198 1836/6158/3197 1835/6160/3199\nf 1836/6158/3197 1837/6159/3198 1839/6161/3200\nf 1841/6162/3201 1820/6163/3202 1838/6164/3203\nf 1665/6165/3034 1838/6164/3203 1664/6166/3035\nf 1841/6162/3201 1811/6136/3177 1820/6163/3202\nf 1843/6167/3204 1666/5930/3029 1667/6168/3205\nf 1843/6169/3204 1792/6102/3155 1789/6099/3152\nf 1844/6170/3206 1794/6171/3157 1667/6168/3205\nf 1844/6172/3206 1788/6173/3207 1795/6174/3158\nf 1714/6175/3081 1784/6176/3208 1788/6177/3207\nf 1845/6178/3209 1784/6176/3208 1714/6175/3081\nf 1845/6179/3209 1717/6005/3084 1778/6180/3146\nf 1778/6091/3146 1717/6181/3084 1846/6182/3210\nf 1767/6068/3130 1719/6183/3087 1847/6184/3211\nf 1847/6184/3211 1764/6062/3127 1767/6068/3130\nf 1847/6185/3211 1720/6186/3086 1848/6187/3212\nf 1721/6012/3088 1848/6187/3212 1720/6186/3086\nf 1848/6188/3212 1761/6060/3125 1764/6062/3127\nf 1848/6187/3212 1721/6012/3088 1849/6189/3213\nf 1849/6189/3213 1721/6012/3088 1723/6016/3090\nf 1850/6190/2879 1761/6060/3125 1849/6191/3213\nf 1375/5522/2748 1850/5698/2879 1723/6016/3090\nf 1711/5994/3078 1851/6192/3214 1854/6193/3215\nf 1854/6193/3215 1707/5992/3075 1711/5994/3078\nf 1732/6031/3100 1852/6194/3216 1731/6029/3098\nf 1854/6193/3215 1851/6192/3214 1732/6031/3100\nf 1854/6193/3215 1734/6030/3099 1710/5989/3077\nf 1737/6034/3103 1710/5989/3077 1734/6030/3099\nf 1710/5989/3077 1737/6034/3103 1709/6195/3217\nf 1858/6196/3218 1856/6197/3219 1857/6198/3220\nf 1747/6043/3111 1748/6044/3112 1858/6196/3218\nf 1747/6043/3111 1858/6196/3218 1749/6045/3113\nf 1859/6199/3221 1860/6200/3222 1857/6198/3220\nf 1859/6199/3221 1857/6198/3220 1856/6197/3219\nf 1861/6201/3223 1860/6202/3222 1862/6203/3224\nf 1857/6198/3220 1861/6204/3223 1749/6045/3113\nf 1523/5716/2891 1863/6205/3225 1748/6044/3112\nf 1864/6206/3226 1866/6207/3227 1865/6208/3228\nf 1861/6201/3223 1865/6209/3228 1749/6210/3113\nf 1865/6209/3228 1752/6048/3116 1749/6210/3113\nf 1746/6040/3108 1745/6039/3107 1865/6209/3228\nf 1865/6209/3228 1868/6211/3229 1746/6040/3108\nf 1741/6212/3230 1742/6077/3137 1746/6040/3108\nf 1746/6040/3108 1869/6213/3231 1741/6212/3230\nf 1741/6212/3230 1871/6214/3232 1870/6215/3233\nf 1872/6216/3234 1741/6217/3230 1869/6218/3231\nf 1839/6161/3200 1873/6219/3235 1874/6220/3236\nf 1839/6221/3200 1874/6222/3236 1840/6223/3237\nf 1663/5934/3033 1840/6223/3237 1874/6222/3236\nf 1874/6222/3236 1876/6224/3238 1875/6225/3239\nf 1878/6226/3240 1873/6219/3235 1837/6159/3198\nf 1878/6227/3240 1880/6228/3241 1879/6229/3242\nf 1880/6230/3241 1837/6159/3198 1835/6160/3199\nf 1882/6231/3243 1880/6228/3241 1883/6232/3244\nf 1883/6232/3244 1884/6233/3245 1882/6231/3243\nf 1885/6234/3246 1880/6228/3241 1882/6231/3243\nf 1886/6235/3247 1873/6236/3235 1879/6237/3242\nf 1887/6238/3248 1888/6239/3249 1889/6240/3250\nf 1887/6238/3248 1877/6241/3251 1886/6235/3247\nf 1890/6242/3252 1891/6243/3253 1888/6244/3249\nf 1891/6243/3253 1890/6242/3252 1892/6245/3254\nf 1894/6246/3255 1904/6247/3256 1893/6248/3257\nf 1895/6249/3258 1896/6250/3259 1894/6251/3255\nf 1894/6251/3255 1896/6250/3259 1901/6252/3260\nf 1897/6253/3261 1834/6155/3195 1896/6250/3259\nf 1895/6254/3258 1892/6245/3254 1898/6255/3262\nf 1898/6255/3262 1884/6256/3245 1895/6254/3258\nf 1899/6257/3263 1890/6258/3252 1887/6259/3248\nf 1890/6242/3252 1899/6260/3263 1892/6245/3254\nf 1892/6261/3254 1899/6257/3263 1898/6262/3262\nf 1885/6234/3246 1899/6257/3263 1879/6229/3242\nf 1833/6154/3194 1900/6263/3264 1901/6252/3260\nf 1830/6264/3265 1832/6153/3193 1828/6149/3189\nf 1833/6154/3194 1901/6252/3260 1896/6250/3259\nf 1902/6265/3266 1876/6224/3238 1889/6240/3250\nf 1889/6240/3250 1876/6224/3238 1877/6241/3251\nf 1891/6243/3253 1893/6248/3257 1904/6247/3256\nf 1901/6266/3260 1904/6247/3256 1894/6246/3255\nf 1906/6267/3267 1901/6268/3260 1900/6269/3264\nf 1907/6270/3268 1905/6271/3269 1908/6272/3270\nf 1906/6267/3267 1908/6272/3270 1905/6271/3269\nf 1829/6150/3190 1913/6273/3271 1908/6274/3270\nf 1907/6270/3268 1903/6275/3272 1904/6247/3256\nf 1910/6276/3273 1823/6145/3185 1730/6028/3097\nf 1910/6276/3273 1730/6028/3097 1728/6024/3094\nf 1910/6277/3273 1911/6278/3274 1823/6279/3185\nf 1913/6273/3271 1829/6150/3190 1912/6280/3275\nf 1912/6281/3275 1829/6282/3190 1823/6279/3185\nf 1914/6283/3276 1728/6284/3094 1727/6022/3093\nf 1729/6026/3095 1916/6285/3277 1915/6286/3278\nf 1903/6275/3272 1918/6287/3279 1902/6288/3266\nf 1917/6289/3280 1909/6290/3281 1913/6291/3271\nf 1917/6292/3280 1920/6293/3282 1919/6294/3283\nf 1655/5925/3024 1921/6295/3284 1922/6296/3285\nf 1922/6296/3285 1641/5905/3010 1655/5925/3024\nf 1662/5933/3032 1919/6294/3283 1661/5932/3031\nf 1919/6294/3283 1662/5933/3032 1918/6297/3279\nf 1661/5932/3031 1919/6294/3283 1655/5925/3024\nf 1920/6298/3282 1917/6289/3280 1913/6291/3271\nf 1912/6299/3275 1920/6298/3282 1913/6291/3271\nf 1920/6300/3282 1911/6278/3274 1921/6301/3284\nf 1922/6296/3285 1914/6302/3276 1727/6303/3093\nf 1914/6283/3276 1921/6301/3284 1911/6278/3274\nf 1642/6304/3286 1922/6296/3285 1923/6305/3287\nf 1642/6304/3286 1923/6305/3287 1635/5906/3011\nf 1725/6306/3092 1628/6307/3000 1634/6308/3012\nf 1725/6020/3092 1634/6309/3012 1635/6021/3011\nf 1725/6310/3092 1726/6311/3096 1924/6312/3288\nf 1725/6313/3092 1632/6314/3289 1628/6315/3000\nf 1924/6312/3288 1726/6311/3096 1915/6316/3278\nf 1924/6317/3288 1915/6318/3278 1925/6319/3290\nf 1926/6320/3291 1631/6321/3003 1633/6322/3002\nf 1926/6323/3291 1915/6286/3278 1916/6285/3277\nf 1926/6324/3291 1629/6325/2998 1631/6326/3003\nf 1712/5998/3079 1629/6327/2998 1926/6328/3291\nf 1926/6329/3291 1916/6285/3277 1712/6330/3079\nf 1852/6194/3216 1711/5994/3078 1712/6331/3079\nf 1870/6215/3233 1927/6332/3292 1928/6333/3293\nf 1870/6215/3233 1928/6333/3293 1739/6036/3105\nf 1929/6334/3294 1702/6335/3295 1703/6336/3072\nf 1929/6337/3294 1703/5990/3072 1709/6195/3217\nf 1929/6338/3294 1928/6339/3293 1927/6340/3292\nf 1927/6341/3292 1701/5980/3068 1702/6335/3295\nf 1927/6340/3292 1702/6342/3295 1929/6338/3294\nf 1927/6341/3292 1698/5981/3069 1701/5980/3068\nf 1698/5981/3069 1927/6341/3292 1871/6343/3232\nf 1930/6344/3296 1669/6345/3065 1697/6346/3066\nf 1930/6344/3296 1697/6346/3066 1869/6218/3231\nf 1930/6347/3296 1868/6348/3229 1696/6349/3064\nf 1695/6350/3063 1696/6349/3064 1868/6348/3229\nf 1932/6351/3297 1692/6352/3060 1931/6353/3298\nf 1932/6351/3297 1931/6353/3298 1867/6354/3299\nf 1859/6355/3221 1856/6356/3219 1686/5963/3055\nf 1686/5963/3055 1933/6357/3300 1859/6355/3221\nf 1683/5958/3050 1687/5960/3052 1856/6356/3219\nf 1683/5958/3050 1856/6356/3219 1934/6358/3301\nf 1683/6359/3050 1934/6360/3301 1682/6361/3049\nf 1934/6362/3301 1858/6363/3218 1681/6364/3048\nf 1935/6365/3302 1693/5971/3062 1862/6366/3224\nf 1935/6365/3302 1689/6367/3059 1690/5972/3058\nf 1860/6368/3222 1688/6369/3056 1689/6367/3059\nf 1933/6357/3300 1686/5963/3055 1685/5962/3054\nf 1933/6370/3300 1685/6371/3054 1688/6372/3056\nf 1678/5953/3045 1681/5956/3048 1855/6373/3303\nf 1679/6374/3046 1678/6375/3045 1863/6205/3225\nf 1684/6376/3053 1523/5716/2891 1599/6377/2972\nf 1684/6376/3053 1679/6374/3046 1523/5716/2891\nf 1680/6378/3047 1255/5858/2633 1608/5948/2978\nf 1680/6378/3047 1608/5948/2978 1675/5947/3042\nf 1677/5952/3044 1684/5961/3053 1599/5862/2972\nf 1680/5955/3047 1677/5952/3044 1598/5861/2971\nf 1598/5861/2971 1597/6379/3304 1680/5955/3047\nf 1246/5371/2626 1247/5389/2640 1244/5369/2624\nf 1248/5372/2627 1245/5374/2625 1249/5384/2637\nf 1249/5384/2637 1251/5375/2628 1248/5372/2627\nf 1251/5375/2628 1249/5384/2637 1252/5387/2638\nf 1251/5375/2628 1252/5387/2638 1254/5378/2631\nf 1251/5375/2628 1607/5379/2632 1255/5380/2633\nf 1244/5369/2624 1257/5382/2635 1245/5370/2625\nf 1259/5388/2639 1260/5876/2984 1254/5378/2631\nf 1262/5473/2714 1261/5390/2641 1247/5389/2640\nf 1262/5473/2714 1263/5391/2642 1261/5390/2641\nf 1264/5446/2692 1267/6380/2694 1265/5392/2643\nf 1265/5392/2643 1263/5391/2642 1264/5446/2692\nf 1266/5393/2644 1265/5392/2643 1267/6380/2694\nf 1267/6380/2694 1269/5395/2646 1266/5393/2644\nf 1271/5398/2649 1270/5396/2647 1269/5395/2646\nf 1275/5402/2653 1277/5403/2654 1278/5411/2662\nf 1281/6381/3305 1277/5403/2654 1279/5404/2655\nf 1277/5403/2654 1281/6381/3305 1280/6382/2953\nf 1244/5369/2624 1261/5390/2641 1284/5405/2656\nf 1284/5405/2656 1261/5390/2641 1298/5407/2658\nf 1286/5408/2659 1261/5390/2641 1265/5392/2643\nf 1268/5394/2645 1287/5409/2660 1286/5408/2659\nf 1286/5408/2659 1265/5392/2643 1268/5394/2645\nf 1270/5396/2647 1271/5398/2649 1272/5397/2648\nf 1275/5402/2653 1289/5429/2679 1288/5410/2661\nf 1289/5429/2679 1278/5411/2662 1583/5413/2664\nf 1278/5411/2662 1289/5429/2679 1275/5402/2653\nf 1278/5411/2662 1277/5403/2654 1283/6383/3306\nf 1278/5411/2662 1283/6383/3306 1282/5414/2665\nf 1292/5908/2751 1259/5388/2639 1291/5417/2668\nf 1292/5908/2751 1260/5876/2984 1259/5388/2639\nf 1293/5415/2666 1249/5384/2637 1258/5383/2636\nf 1249/5384/2637 1293/5415/2666 1259/5388/2639\nf 1296/5418/2669 1295/5420/2671 1257/5382/2635\nf 1256/5381/2634 1284/5405/2656 1298/5407/2658\nf 1299/5422/2672 1286/5408/2659 1287/5409/2660\nf 1287/5409/2660 1300/5424/2674 1299/5422/2672\nf 1288/5410/2661 1304/5428/2678 1301/5425/2675\nf 1301/5425/2675 1272/5397/2648 1288/5410/2661\nf 1305/5435/2685 1306/5432/2682 1303/5427/2677\nf 1289/5429/2679 1305/5435/2685 1303/5427/2677\nf 1300/5424/2674 1307/5430/2680 1308/5504/2737\nf 1307/5430/2680 1270/5396/2647 1302/5426/2676\nf 1304/5428/2678 1310/5434/2684 1316/5431/2681\nf 1302/5426/2676 1316/5431/2681 1307/5430/2680\nf 1304/5428/2678 1306/5432/2682 1309/5433/2683\nf 1309/5433/2683 1306/5432/2682 1311/5436/2686\nf 1313/5438/2688 1499/6384/2867 1314/5440/2690\nf 1315/5439/2689 1310/5434/2684 1313/5438/2688\nf 1310/5434/2684 1315/5439/2689 1316/5431/2681\nf 1262/5473/2714 1319/5445/2695 1263/5391/2642\nf 1246/5371/2626 1321/5449/2698 1320/5448/2697\nf 1323/5455/2700 1322/6385/2699 1321/5451/2698\nf 1250/5454/2629 1253/5860/2630 1324/5456/2701\nf 1323/5455/2700 1324/5456/2701 1325/6386/2702\nf 1332/5459/2703 1327/6387/3307 1328/5461/2705\nf 1325/5457/2702 1328/5461/2705 1329/5462/2706\nf 1322/5465/2699 1325/5457/2702 1331/5464/2708\nf 1325/5457/2702 1322/5465/2699 1323/6388/2700\nf 1332/5459/2703 1333/6389/3308 1327/6387/3307\nf 1320/5448/2697 1322/6390/2699 1336/5469/2709\nf 1320/5448/2697 1334/5470/2711 1337/5471/2712\nf 1337/5471/2712 1338/6391/3309 1339/5472/2713\nf 1262/5473/2714 1344/5476/2717 1341/5474/2715\nf 1262/5473/2714 1247/5389/2640 1340/5447/2696\nf 1340/6392/2696 1339/5853/2713 1343/5852/2718\nf 1267/5444/2694 1318/5443/2693 1347/5484/2721\nf 1269/5492/2646 1267/5444/2694 1350/5487/2724\nf 1349/5485/2722 1351/5488/2725 1350/5487/2724\nf 1354/5491/2728 1351/5488/2725 1353/5490/2727\nf 1355/5493/2729 1354/5491/2728 1356/5495/2731\nf 1271/5398/2649 1269/5395/2646 1355/6393/2729\nf 1357/5494/2730 1353/5490/2727 1358/5500/2734\nf 1353/5490/2727 1357/5494/2730 1354/5491/2728\nf 1355/6393/2729 1273/5399/2650 1271/5398/2649\nf 1355/5493/2729 1356/5495/2731 1361/5501/2735\nf 1276/6394/2652 1273/5502/2650 1362/5503/2736\nf 1307/5430/2680 1317/5441/2691 1363/5505/2738\nf 1299/5422/2672 1308/5504/2737 1364/5506/2739\nf 1366/5423/2673 1364/5506/2739 1365/6395/2740\nf 1368/6396/2742 1366/5507/2673 1367/5509/2741\nf 1366/5423/2673 1368/5510/2742 1298/5407/2658\nf 1296/5418/2669 1368/5510/2742 1367/5511/2741\nf 1368/5510/2742 1296/5418/2669 1297/5419/2670\nf 1370/5513/2744 1295/5420/2671 1296/5418/2669\nf 1295/5420/2671 1370/5513/2744 1371/5518/2745\nf 1371/5518/2745 1294/5421/2667 1295/5420/2671\nf 1374/5524/2750 1373/5516/2747 1372/5515/2746\nf 1373/5516/2747 1374/5524/2750 1291/5519/2668\nf 1374/5524/2750 1376/5523/2749 1292/5525/2751\nf 1377/5526/2752 1380/5529/2755 1282/6397/2665\nf 1382/5531/2757 1385/5534/2760 1383/5532/2758\nf 1379/5528/2754 1381/5530/2756 1382/5531/2757\nf 1387/5536/2762 1466/5630/2839 1484/5537/2763\nf 1389/5539/2765 1388/5538/2764 1392/5542/2768\nf 1390/5540/2766 1393/5590/2809 1391/5541/2767\nf 1393/5590/2809 1390/5540/2766 1394/5722/2897\nf 1395/5587/2806 1393/5590/2809 1394/5722/2897\nf 1395/5587/2806 1399/5721/2896 1396/5583/2802\nf 1397/5548/2774 1398/5574/2796 1396/5583/2802\nf 1397/5548/2774 1396/5583/2802 1399/5721/2896\nf 1402/5545/2771 1523/5716/2891 1403/5546/2772\nf 1401/5544/2770 1404/5552/2776 1405/5708/2886\nf 1406/5547/2773 1398/5574/2796 1397/5548/2774\nf 1407/5549/2775 1405/5714/2886 1404/5550/2776\nf 1408/5551/2777 1409/5558/2782 1404/5552/2776\nf 1410/5553/2778 1416/6052/2784 1411/6398/2779\nf 1411/5554/2779 1413/5556/2781 1409/6399/2782\nf 1410/5553/2778 1411/5557/2779 1408/5551/2777\nf 1414/5559/2783 1411/5554/2779 1416/5560/2784\nf 1415/5562/2786 1414/5559/2783 1417/5561/2785\nf 1414/5559/2783 1415/5562/2786 1418/5566/2790\nf 1414/5559/2783 1418/5566/2790 1412/5555/2780\nf 1414/5559/2783 1412/5555/2780 1411/5554/2779\nf 1418/5566/2790 1415/5562/2786 1420/5564/2788\nf 1418/5566/2790 1420/5564/2788 1421/5567/2791\nf 1423/5565/2789 1421/5567/2791 1424/5568/2792\nf 1413/5556/2781 1423/5565/2789 1422/5569/2793\nf 1423/5565/2789 1413/5556/2781 1412/5555/2780\nf 1409/5575/2782 1413/5571/2781 1426/5573/2795\nf 1406/5547/2773 1409/5575/2782 1426/5573/2795\nf 1422/5569/2793 1424/5568/2792 1427/5576/2797\nf 1429/5580/2799 1430/5581/2800 1425/5572/2794\nf 1425/5572/2794 1422/5578/2793 1429/5580/2799\nf 1425/5572/2794 1430/5581/2800 1426/5573/2795\nf 1398/5574/2796 1430/5581/2800 1431/5596/2813\nf 1432/5582/2801 1395/5587/2806 1396/5583/2802\nf 1431/5596/2813 1432/5582/2801 1398/5574/2796\nf 1431/5596/2813 1430/5581/2800 1433/5585/2804\nf 1430/5581/2800 1429/5580/2799 1433/5585/2804\nf 1428/5577/2798 1427/5576/2797 1434/5591/2803\nf 1429/5580/2799 1428/5579/2798 1434/5584/2803\nf 1395/5587/2806 1435/5586/2805 1445/5589/2808\nf 1438/6400/2812 1439/5597/2814 1432/6401/2801\nf 1433/5585/2804 1437/6402/2811 1438/5595/2812\nf 1439/5597/2814 1435/5599/2805 1432/6401/2801\nf 1442/5600/2815 1437/5593/2811 1436/5592/2810\nf 1444/5609/2817 1442/5600/2815 1443/5601/2816\nf 1438/5595/2812 1437/6402/2811 1442/5602/2815\nf 1442/5602/2815 1440/5588/2807 1439/5605/2814\nf 1445/5589/2808 1391/5541/2767 1393/5590/2809\nf 1445/5589/2808 1440/5588/2807 1446/5606/2819\nf 1440/5588/2807 1441/5604/2818 1456/5608/2821\nf 1444/5609/2817 1443/5601/2816 1448/5610/2822\nf 1449/5612/2824 1452/5615/2827 1450/5613/2825\nf 1449/5612/2824 1453/5616/2828 1452/5615/2827\nf 1455/5611/2823 1459/6403/2832 1456/6404/2821\nf 1459/6403/2832 1455/5611/2823 1453/5616/2828\nf 1455/6405/2823 1456/5608/2821 1444/5603/2817\nf 1461/5625/2834 1458/5620/2831 1462/5628/2837\nf 1458/5620/2831 1461/5625/2834 1457/5621/2830\nf 1460/5624/2833 1459/5623/2832 1461/5625/2834\nf 1447/5607/2820 1456/5608/2821 1460/5624/2833\nf 1461/5625/2834 1464/5627/2836 1463/5626/2835\nf 1464/5627/2836 1461/5625/2834 1462/5628/2837\nf 1391/5541/2767 1447/5607/2820 1463/5626/2835\nf 1464/5627/2836 1465/5629/2838 1389/5539/2765\nf 1465/5629/2838 1462/5628/2837 1467/5631/2840\nf 1462/5628/2837 1458/5620/2831 1451/5619/2826\nf 1467/5631/2840 1462/5628/2837 1468/5633/2842\nf 1468/5634/2842 1451/5614/2826 1450/5613/2825\nf 1470/5637/2845 1479/5665/2852 1471/6406/2850\nf 1471/5643/2850 1472/5642/2849 1473/5639/2844\nf 1470/5637/2845 1471/6406/2850 1473/5636/2844\nf 1473/5636/2844 1468/6407/2842 1469/5635/2843\nf 1474/5638/2846 1467/5631/2840 1468/5633/2842\nf 1475/5632/2841 1476/5640/2847 1466/5630/2839\nf 1477/5641/2848 1474/5638/2846 1473/5639/2844\nf 1471/5643/2850 1480/5652/2859 1478/5644/2851\nf 1480/5652/2859 1471/5643/2850 1482/5646/2853\nf 1385/5534/2760 1484/5537/2763 1481/5649/2856\nf 1476/5640/2847 1477/5641/2848 1484/5537/2763\nf 1485/5648/2855 1484/5537/2763 1477/5641/2848\nf 1485/5648/2855 1477/5641/2848 1472/5642/2849\nf 1486/5650/2857 1485/5648/2855 1478/5644/2851\nf 1486/5650/2857 1478/5644/2851 1488/5653/2860\nf 1385/5534/2760 1481/5649/2856 1486/5650/2857\nf 1385/5534/2760 1489/5654/2861 1483/5647/2854\nf 1489/5654/2861 1486/5650/2857 1488/5653/2860\nf 1488/5653/2860 1487/5651/2858 1490/5655/2862\nf 1487/5651/2858 1480/5652/2859 1491/5656/2863\nf 1494/5740/2910 1491/5656/2863 1493/5741/2909\nf 1491/5656/2863 1494/5740/2910 1495/5762/2927\nf 1492/5657/2864 1491/5656/2863 1495/5762/2927\nf 1491/5658/2863 1496/5660/2865 1493/5736/2909\nf 1497/5726/2901 1493/5736/2909 1496/5660/2865\nf 1496/5660/2865 1500/5663/2868 1497/5726/2901\nf 1496/5660/2865 1498/5661/2866 1500/5663/2868\nf 1501/5667/2869 1498/5661/2866 1479/5665/2852\nf 1315/5666/2689 1314/5664/2690 1498/5661/2866\nf 1501/5667/2869 1479/5665/2852 1470/5637/2845\nf 1316/6408/2681 1315/5666/2689 1502/5668/2870\nf 1503/5670/2871 1317/5441/2691 1316/5431/2681\nf 1503/5669/2871 1450/5613/2825 1452/5615/2827\nf 1504/5675/2872 1317/5441/2691 1454/5674/2829\nf 1504/5679/2872 1455/6409/2823 1448/5680/2822\nf 1364/6410/2739 1308/5682/2737 1448/5680/2822\nf 1364/6411/2739 1448/6412/2822 1443/5601/2816\nf 1443/5601/2816 1436/5592/2810 1505/6413/2873\nf 1505/6413/2873 1364/6411/2739 1443/5601/2816\nf 1505/5686/2873 1436/6414/2810 1367/5509/2741\nf 1436/5592/2810 1506/5687/2874 1367/6415/2741\nf 1369/6416/2743 1367/6415/2741 1506/5687/2874\nf 1427/5576/2797 1507/5691/2875 1369/6416/2743\nf 1370/6417/2744 1369/6418/2743 1507/6419/2875\nf 1507/6420/2875 1508/5693/2876 1370/6421/2744\nf 1507/5691/2875 1427/5576/2797 1424/5568/2792\nf 1371/5514/2745 1370/6421/2744 1508/5693/2876\nf 1508/5693/2876 1509/5695/2877 1372/5515/2746\nf 1508/5692/2876 1424/5568/2792 1421/5567/2791\nf 1509/5694/2877 1421/5567/2791 1420/5564/2788\nf 1420/5564/2788 1419/5563/2787 1510/6422/2878\nf 1510/6422/2878 1509/5694/2877 1420/5564/2788\nf 1510/5696/2878 1850/5698/2879 1375/5522/2748\nf 1375/5522/2748 1372/5515/2746 1510/5696/2878\nf 1511/5703/2882 1512/5702/2881 1361/5701/2735\nf 1357/5699/2730 1358/5704/2734 1514/5700/2880\nf 1361/5701/2735 1514/5700/2880 1511/5703/2882\nf 1512/5702/2881 1511/5703/2882 1384/5533/2759\nf 1381/5530/2756 1513/5814/2957 1512/5702/2881\nf 1386/5535/2761 1384/5533/2759 1514/5700/2880\nf 1514/5700/2880 1360/5498/2733 1386/5535/2761\nf 1360/5498/2733 1359/5497/2732 1388/5538/2764\nf 1388/5538/2764 1386/5535/2761 1360/5498/2733\nf 1402/5545/2771 1518/5706/2884 1515/5848/2969\nf 1515/5848/2969 1524/5717/2892 1402/5545/2771\nf 1516/5705/2883 1594/6423/2968 1518/5706/2884\nf 1518/5706/2884 1405/5708/2886 1517/5707/2885\nf 1519/5709/2887 1593/6424/3310 1520/5710/2888\nf 1521/5712/2889 1522/5719/2894 1519/6425/2887\nf 1596/5715/2890 1599/6377/2972 1523/5716/2891\nf 1525/6426/2893 1526/6427/2895 1527/5844/2967\nf 1527/5844/2967 1522/5850/2894 1525/6426/2893\nf 1521/5712/2889 1405/5714/2886 1526/5720/2895\nf 1407/5549/2775 1397/5548/2774 1526/5720/2895\nf 1528/5845/2965 1527/5844/2967 1526/6427/2895\nf 1526/5720/2895 1399/5721/2896 1529/6428/2963\nf 1529/6428/2963 1528/6429/2965 1526/5720/2895\nf 1399/5721/2896 1394/5722/2897 1530/6430/2961\nf 1530/6430/2961 1529/6428/2963 1399/5721/2896\nf 1394/5722/2897 1390/5540/2766 1531/5724/2899\nf 1532/5723/2898 1533/6431/2960 1394/5722/2897\nf 1533/6432/2960 1530/6430/2961 1394/5722/2897\nf 1313/5438/2688 1312/5437/2687 1536/5729/2903\nf 1313/5438/2688 1535/5730/2902 1499/6384/2867\nf 1535/5730/2902 1536/5729/2903 1537/5731/2904\nf 1534/5725/2900 1535/5727/2902 1538/6433/2905\nf 1497/5726/2901 1540/5734/2907 1541/5735/2908\nf 1493/5736/2909 1541/5735/2908 1542/6434/2911\nf 1544/5744/2913 1543/5743/2912 1545/6435/3311\nf 1541/5737/2908 1539/5739/2906 1546/5746/2914\nf 1547/5766/2915 1539/5739/2906 1534/6436/2900\nf 1548/5749/2916 1551/5752/2919 1549/5750/2917\nf 1548/5749/2916 1547/5747/2915 1538/5732/2905\nf 1550/5753/2918 1549/5772/2917 1552/5754/2920\nf 1553/5755/2921 1552/5754/2920 1554/5758/2924\nf 1555/5756/2922 1554/5758/2924 1565/5775/2934\nf 1557/5761/2925 1558/5760/2926 1556/6437/2923\nf 1555/5756/2922 1562/6438/2931 1557/6439/2925\nf 1494/5740/2910 1542/5742/2911 1558/5760/2926\nf 1544/5744/2913 1545/6435/3311 1558/6440/2926\nf 1558/6441/2926 1545/6442/3311 1556/5757/2923\nf 1553/5755/2921 1554/5758/2924 1556/5757/2923\nf 1559/5764/2928 1556/5757/2923 1545/6443/3311\nf 1545/6435/3311 1543/5743/2912 1559/6444/2928\nf 1560/5765/2929 1548/5767/2916 1550/6445/2918\nf 1553/6446/2921 1559/6444/2928 1560/5765/2929\nf 1559/6444/2928 1543/5743/2912 1546/5746/2914\nf 1560/5765/2929 1559/6444/2928 1546/5746/2914\nf 1490/5655/2862 1487/5651/2858 1492/5657/2864\nf 1567/6447/2938 1490/5655/2862 1561/5769/2930\nf 1552/5754/2920 1549/5772/2917 1564/5774/2933\nf 1552/5754/2920 1564/5774/2933 1565/5775/2934\nf 1565/5775/2934 1566/5776/2935 1562/6438/2931\nf 1562/6438/2931 1555/5756/2922 1565/5775/2934\nf 1566/5776/2935 1567/5779/2938 1562/6438/2931\nf 1567/5779/2938 1561/6448/2930 1562/6449/2931\nf 1566/5776/2935 1565/5775/2934 1568/5777/2936\nf 1569/5778/2937 1490/6450/2862 1567/5779/2938\nf 1489/6451/2861 1569/5778/2937 1570/5800/2941\nf 1571/5781/2939 1570/5800/2941 1569/5778/2937\nf 1568/5777/2936 1565/5775/2934 1564/5774/2933\nf 1564/5774/2933 1571/5781/2939 1568/5777/2936\nf 1572/5782/2940 1383/5532/2758 1483/5647/2854\nf 1572/5787/2940 1483/6452/2854 1573/5794/2950\nf 1574/5797/2942 1573/5794/2950 1483/6452/2854\nf 1574/5784/2942 1483/5647/2854 1489/5654/2861\nf 1572/5787/2940 1573/5794/2950 1575/5785/2943\nf 1575/6453/2943 1380/5529/2755 1379/5528/2754\nf 1381/5530/2756 1378/5527/2753 1576/5789/2945\nf 1577/5788/2944 1513/5814/2957 1381/5530/2756\nf 1564/5774/2933 1563/5773/2932 1578/5790/2946\nf 1579/5791/2947 1571/5781/2939 1564/5774/2933\nf 1579/5791/2947 1570/5800/2941 1571/5781/2939\nf 1578/6454/2946 1580/5793/2949 1579/6455/2947\nf 1579/6455/2947 1580/5793/2949 1581/6456/2951\nf 1580/5793/2949 1582/5792/2948 1581/6456/2951\nf 1583/5413/2664 1305/5435/2685 1289/5429/2679\nf 1536/5729/2903 1578/6454/2946 1563/5771/2932\nf 1536/5729/2903 1312/5437/2687 1578/6454/2946\nf 1580/5793/2949 1578/6454/2946 1312/5437/2687\nf 1312/5437/2687 1311/5436/2686 1580/5793/2949\nf 1311/5436/2686 1305/5435/2685 1580/5793/2949\nf 1581/5798/2951 1570/5800/2941 1579/5791/2947\nf 1575/6457/2943 1582/5792/2948 1583/5413/2664\nf 1583/5413/2664 1380/6458/2755 1575/6457/2943\nf 1575/5785/2943 1573/5794/2950 1582/5796/2948\nf 1282/6459/2665 1380/5803/2755 1584/5802/2952\nf 1290/5412/2663 1282/5414/2665 1584/5801/2952\nf 1377/6460/2752 1283/6461/3306 1277/6462/2654\nf 1377/6463/2752 1282/6459/2665 1283/6464/3306\nf 1377/5805/2752 1277/6465/2654 1280/5806/2953\nf 1377/6466/2752 1585/6467/2954 1378/6468/2753\nf 1585/6469/2954 1576/5789/2945 1378/5527/2753\nf 1585/6470/2954 1586/6471/2955 1576/6472/2945\nf 1586/5810/2955 1280/5809/2953 1281/6473/3305\nf 1587/6474/2956 1281/6475/3305 1279/6476/2655\nf 1281/6473/3305 1587/6477/2956 1586/5810/2955\nf 1587/6478/2956 1279/6479/2655 1276/6480/2652\nf 1362/5503/2736 1587/6481/2956 1276/6394/2652\nf 1512/5702/2881 1362/5816/2736 1361/5701/2735\nf 1588/6482/2959 1532/5723/2898 1531/5724/2899\nf 1531/5724/2899 1392/5542/2768 1588/6482/2959\nf 1531/5724/2899 1390/5540/2766 1392/5542/2768\nf 1589/5824/2958 1353/5490/2727 1352/5489/2726\nf 1588/5826/2959 1352/5489/2726 1351/5488/2725\nf 1588/5823/2959 1589/5822/2958 1352/6483/2726\nf 1588/5826/2959 1351/5488/2725 1348/5486/2723\nf 1348/5486/2723 1347/5484/2721 1533/5828/2960\nf 1590/6484/2962 1347/5483/2721 1346/5482/2720\nf 1590/6484/2962 1530/5829/2961 1347/5483/2721\nf 1590/5831/2962 1346/6485/2720 1345/6486/2719\nf 1590/5831/2962 1345/6486/2719 1529/5832/2963\nf 1345/6487/2719 1341/6488/2715 1591/6489/2964\nf 1592/5840/2966 1591/6490/2964 1341/5841/2715\nf 1592/5840/2966 1528/5845/2965 1591/6490/2964\nf 1335/5467/2710 1520/6491/2888 1593/6492/3310\nf 1520/6491/2888 1335/5467/2710 1516/5846/2883\nf 1331/5464/2708 1516/5846/2883 1336/5466/2709\nf 1331/5464/2708 1594/6493/2968 1516/5846/2883\nf 1331/6494/2708 1330/6495/2707 1594/6496/2968\nf 1594/6497/2968 1329/6498/2706 1518/6499/2884\nf 1595/5851/2970 1522/5855/2894 1343/5852/2718\nf 1595/5851/2970 1339/5853/2713 1338/6500/3309\nf 1595/5851/2970 1338/6500/3309 1519/5854/2887\nf 1519/5854/2887 1338/6500/3309 1337/6501/2712\nf 1519/5709/2887 1337/6502/2712 1593/6424/3310\nf 1593/6492/3310 1334/5468/2711 1335/5467/2710\nf 1593/6424/3310 1337/6502/2712 1334/6503/2711\nf 1328/5461/2705 1515/5857/2969 1329/5462/2706\nf 1524/5717/2892 1327/6504/3307 1596/5715/2890\nf 1327/6504/3307 1524/5717/2892 1328/6505/2705\nf 1596/5715/2890 1327/6504/3307 1333/6506/3308\nf 1333/6506/3308 1599/6377/2972 1596/5715/2890\nf 1255/5858/2633 1597/6507/3304 1326/5859/2704\nf 1332/5459/2703 1599/5862/2972 1333/6389/3308\nf 1598/5861/2971 1326/5460/2704 1597/6379/3304\nf 1604/5869/2979 1600/5863/2973 1602/5865/2975\nf 1600/5863/2973 1604/5869/2979 1606/5871/2981\nf 1607/5379/2632 1604/5869/2979 1605/5867/2977\nf 1604/5869/2979 1607/5379/2632 1609/5870/2980\nf 1607/5379/2632 1608/5868/2978 1255/5380/2633\nf 1606/5871/2981 1611/5875/2983 1600/5863/2973\nf 1613/5879/2986 1615/5882/2989 1614/5939/3037\nf 1603/6508/2976 1613/6509/2986 1614/6510/3037\nf 1615/5882/2989 1613/5879/2986 1616/5880/2987\nf 1616/5885/2987 1620/5884/2991 1617/5938/2988\nf 1618/5886/2990 1616/5880/2987 1619/5887/2992\nf 1618/5886/2990 1621/5888/2993 1620/6511/2991\nf 1621/5888/2993 1619/5887/2992 1622/5903/3008\nf 1621/5888/2993 1622/5903/3008 1623/5889/2994\nf 1625/5891/2996 1624/5890/2995 1626/5894/2999\nf 1628/5895/3000 1631/5898/3003 1629/5893/2998\nf 1632/6512/3289 1633/5897/3002 1628/5895/3000\nf 1636/5899/3004 1613/5879/2986 1601/5874/2974\nf 1613/5879/2986 1648/6007/3018 1637/5901/3006\nf 1648/6007/3018 1613/5879/2986 1636/5899/3004\nf 1616/5880/2987 1613/5879/2986 1638/5900/3005\nf 1638/5900/3005 1639/5902/3007 1619/5887/2992\nf 1624/5890/2995 1640/5904/3009 1626/5894/2999\nf 1640/5904/3009 1641/5905/3010 1627/5892/2997\nf 1630/5896/3001 1922/6296/3285 1642/6304/3286\nf 1922/6296/3285 1630/5896/3001 1641/5905/3010\nf 1634/5907/3012 1628/5895/3000 1630/5896/3001\nf 1630/5896/3001 1642/6304/3286 1635/5906/3011\nf 1292/5908/2751 1643/5909/3013 1612/5877/2985\nf 1611/5875/2983 1612/5877/2985 1643/5909/3013\nf 1646/5912/3016 1610/5873/2982 1600/5872/2973\nf 1648/6007/3018 1636/5899/3004 1610/5873/2982\nf 1649/5920/3019 1637/5901/3006 1716/6001/3082\nf 1649/5920/3019 1650/5921/3020 1639/5902/3007\nf 1622/5903/3008 1651/5929/3028 1652/5922/3021\nf 1622/5903/3008 1652/5922/3021 1624/5890/2995\nf 1640/5904/3009 1654/5923/3022 1653/5924/3023\nf 1640/5904/3009 1624/5890/2995 1652/5922/3021\nf 1653/5924/3023 1655/5925/3024 1641/5905/3010\nf 1650/5921/3020 1657/5928/3027 1622/5903/3008\nf 1651/5929/3028 1622/5903/3008 1657/5928/3027\nf 1666/5930/3029 1659/6513/3312 1654/5923/3022\nf 1651/5929/3028 1654/5923/3022 1652/5922/3021\nf 1654/5923/3022 1659/6513/3312 1660/5931/3030\nf 1661/5932/3031 1656/5926/3025 1660/5931/3030\nf 1656/5926/3025 1661/5932/3031 1655/5925/3024\nf 1664/5936/3035 1840/6223/3237 1663/5934/3033\nf 1659/6513/3312 1663/5934/3033 1660/5931/3030\nf 1663/5934/3033 1659/6513/3312 1665/5935/3034\nf 1666/5930/3029 1665/5935/3034 1659/6513/3312\nf 1666/5930/3029 1657/5928/3027 1667/6168/3205\nf 1617/5938/2988 1668/5937/3036 1669/5978/3065\nf 1670/5940/3038 1615/5882/2989 1617/5881/2988\nf 1602/5942/2975 1691/5941/3039 1671/5965/3057\nf 1672/6514/3040 1671/6515/3057 1673/6516/3051\nf 1672/5944/3040 1604/5943/2979 1602/6517/2975\nf 1671/6518/3057 1672/6519/3040 1602/6520/2975\nf 1672/5944/3040 1673/6521/3051 1674/5946/3041\nf 1605/5945/2977 1674/5946/3041 1675/5947/3042\nf 1677/5952/3044 1676/5951/3043 1678/5953/3045\nf 1676/5951/3043 1682/5957/3049 1681/5956/3048\nf 1674/6522/3041 1673/5959/3051 1676/5951/3043\nf 1687/6523/3052 1673/6521/3051 1671/6524/3057\nf 1687/6525/3052 1671/5965/3057 1685/6526/3054\nf 1688/6527/3056 1685/5962/3054 1671/6528/3057\nf 1688/5964/3056 1691/5941/3039 1690/5966/3058\nf 1614/5939/3037 1694/5969/3061 1691/5941/3039\nf 1691/5941/3039 1603/5878/2976 1614/5939/3037\nf 1698/5981/3069 1697/5977/3066 1699/5979/3067\nf 1668/5937/3036 1620/5884/2991 1621/6529/2993\nf 1700/5982/3070 1668/5937/3036 1621/6529/2993\nf 1668/5937/3036 1700/5982/3070 1699/5979/3067\nf 1700/5982/3070 1701/5980/3068 1699/5979/3067\nf 1702/6335/3295 1701/5980/3068 1703/5984/3072\nf 1621/6529/2993 1705/5985/3073 1704/5983/3071\nf 1621/6529/2993 1704/5983/3071 1700/5982/3070\nf 1705/6530/3073 1621/5888/2993 1623/5889/2994\nf 1704/5983/3071 1707/5987/3075 1703/5984/3072\nf 1703/5990/3072 1710/5989/3077 1709/6195/3217\nf 1705/5985/3073 1625/5996/2996 1711/5997/3078\nf 1712/5998/3079 1625/5996/2996 1629/6327/2998\nf 1713/5999/3080 1667/6168/3205 1657/5928/3027\nf 1714/6000/3081 1658/5927/3026 1649/5920/3019\nf 1648/6007/3018 1718/6531/3085 1716/6001/3082\nf 1718/6532/3085 1648/6533/3018 1647/6534/3015\nf 1646/5912/3016 1719/6011/3087 1717/6008/3084\nf 1647/5911/3015 1646/5912/3016 1718/6009/3085\nf 1646/5912/3016 1645/5913/3017 1720/6010/3086\nf 1721/6012/3088 1720/6186/3086 1645/6013/3017\nf 1723/6016/3090 1721/6012/3088 1722/6014/3089\nf 1643/6018/3013 1724/6017/3091 1722/6014/3089\nf 1376/5523/2749 1375/5522/2748 1723/6016/3090\nf 1724/6017/3091 1643/6018/3013 1292/5525/2751\nf 1725/6025/3092 1728/6024/3094 1726/6027/3096\nf 1730/6028/3097 1733/6143/3183 1731/6029/3098\nf 1732/6031/3100 1731/6029/3098 1733/6143/3183\nf 1735/6032/3101 1732/6031/3100 1824/6142/3182\nf 1824/6142/3182 1806/6125/3171 1735/6032/3101\nf 1735/6032/3101 1737/6034/3103 1734/6030/3099\nf 1736/6037/3102 1739/6036/3105 1928/6333/3293\nf 1928/6535/3293 1737/6536/3103 1736/6537/3102\nf 1741/6212/3230 1739/6036/3105 1740/6038/3106\nf 1741/6212/3230 1740/6038/3106 1742/6077/3137\nf 1743/6041/3109 1746/6040/3108 1742/6077/3137\nf 1745/6039/3107 1744/6042/3110 1751/6047/3115\nf 1752/6048/3116 1751/6047/3115 1750/6065/3114\nf 1750/6065/3114 1749/6210/3113 1752/6048/3116\nf 1755/6050/3118 1747/6043/3111 1750/6046/3114\nf 1403/5546/2772 1756/6053/3120 1410/5553/2778\nf 1756/6053/3120 1403/5546/2772 1753/6049/3117\nf 1756/6054/3120 1758/6058/3123 1416/5560/2784\nf 1756/6053/3120 1755/6050/3118 1754/6051/3119\nf 1756/6054/3120 1757/6056/3121 1758/6058/3123\nf 1760/6059/3124 1759/6057/3122 1417/5561/2785\nf 1762/6061/3126 1763/6063/3128 1764/6062/3127\nf 1762/6061/3126 1760/6059/3124 1758/6058/3123\nf 1757/6056/3121 1765/6538/3133 1763/6063/3128\nf 1758/6058/3123 1757/6056/3121 1762/6061/3126\nf 1766/6539/3129 1757/6056/3121 1754/6055/3119\nf 1757/6056/3121 1766/6539/3129 1765/6538/3133\nf 1751/6047/3115 1744/6042/3110 1766/6066/3129\nf 1763/6063/3128 1768/6069/3131 1767/6068/3130\nf 1765/6071/3133 1770/6075/3135 1769/6072/3132\nf 1766/6066/3129 1770/6075/3135 1765/6071/3133\nf 1744/6042/3110 1772/6076/3136 1771/6074/3134\nf 1772/6076/3136 1744/6042/3110 1743/6041/3109\nf 1773/6078/3138 1769/6072/3132 1770/6075/3135\nf 1774/6079/3139 1768/6540/3131 1769/6072/3132\nf 1775/6541/3144 1772/6076/3136 1742/6077/3137\nf 1785/6081/3140 1775/6541/3144 1742/6077/3137\nf 1775/6089/3144 1785/6542/3140 1776/6543/3147\nf 1774/6080/3139 1777/6083/3141 1778/6091/3146\nf 1779/6084/3142 1771/6074/3134 1772/6076/3136\nf 1780/6087/3143 1775/6089/3144 1776/6543/3147\nf 1782/6090/3145 1784/6176/3208 1778/6091/3146\nf 1784/6176/3208 1782/6090/3145 1783/6544/3160\nf 1782/6090/3145 1777/6083/3141 1779/6545/3142\nf 1782/6092/3145 1779/6084/3142 1780/6093/3143\nf 1782/6092/3145 1781/6095/3148 1783/6109/3160\nf 1740/6038/3106 1738/6035/3104 1785/6081/3140\nf 1786/6096/3149 1738/6035/3104 1787/6097/3150\nf 1786/6096/3149 1776/6094/3147 1785/6081/3140\nf 1786/6096/3149 1785/6081/3140 1738/6035/3104\nf 1776/6094/3147 1787/6097/3150 1796/6098/3151\nf 1781/6095/3148 1796/6098/3151 1783/6109/3160\nf 1788/6546/3207 1784/6176/3208 1783/6544/3160\nf 1783/6544/3160 1795/6105/3158 1788/6546/3207\nf 1789/6099/3152 1792/6102/3155 1790/6100/3153\nf 1793/6103/3156 1795/6105/3158 1799/6107/3159\nf 1795/6105/3158 1793/6103/3156 1794/6104/3157\nf 1797/6111/3162 1791/6101/3154 1790/6100/3153\nf 1799/6107/3159 1797/6111/3162 1790/6100/3153\nf 1797/6547/3162 1801/6114/3164 1798/6116/3161\nf 1801/6548/3164 1797/6111/3162 1799/6107/3159\nf 1800/6112/3163 1803/6117/3166 1801/6114/3164\nf 1804/6118/3167 1805/6119/3168 1802/6115/3165\nf 1803/6117/3166 1804/6118/3167 1801/6114/3164\nf 1803/6117/3166 1787/6097/3150 1738/6035/3104\nf 1804/6118/3167 1738/6035/3104 1736/6037/3102\nf 1805/6119/3168 1735/6032/3101 1806/6125/3171\nf 1805/6119/3168 1815/6124/3170 1807/6123/3169\nf 1802/6115/3165 1808/6138/3172 1791/6126/3154\nf 1808/6138/3172 1802/6115/3165 1807/6123/3169\nf 1808/6127/3172 1809/6134/3176 1789/6099/3152\nf 1810/6549/3173 1820/6163/3202 1811/6136/3177\nf 1812/6135/3174 1810/6549/3173 1811/6136/3177\nf 1814/6137/3178 1812/6129/3174 1808/6138/3172\nf 1816/6139/3179 1817/6147/3187 1814/6137/3178\nf 1812/6129/3174 1814/6137/3178 1817/6147/3187\nf 1817/6147/3187 1813/6130/3175 1812/6129/3174\nf 1810/6128/3173 1813/6130/3175 1818/6140/3180\nf 1822/6550/3196 1810/6128/3173 1819/6141/3181\nf 1810/6128/3173 1822/6550/3196 1820/6551/3202\nf 1816/6139/3179 1806/6125/3171 1824/6142/3182\nf 1824/6142/3182 1817/6147/3187 1816/6139/3179\nf 1813/6130/3175 1817/6147/3187 1825/6146/3186\nf 1824/6142/3182 1821/6144/3184 1825/6146/3186\nf 1821/6144/3184 1826/6148/3188 1825/6146/3186\nf 1827/6151/3191 1818/6140/3180 1826/6148/3188\nf 1818/6140/3180 1827/6151/3191 1828/6149/3189\nf 1823/6145/3185 1829/6150/3190 1733/6143/3183\nf 1827/6151/3191 1829/6150/3190 1830/6264/3265\nf 1830/6264/3265 1828/6149/3189 1827/6151/3191\nf 1833/6154/3194 1831/6152/3192 1832/6153/3193\nf 1835/6552/3199 1831/6152/3192 1834/6155/3195\nf 1835/6160/3199 1836/6158/3197 1831/6157/3192\nf 1831/6152/3192 1822/6550/3196 1819/6141/3181\nf 1838/6164/3203 1822/6156/3196 1836/6158/3197\nf 1839/6161/3200 1838/6164/3203 1836/6158/3197\nf 1838/6164/3203 1839/6161/3200 1840/6553/3237\nf 1838/6164/3203 1820/6163/3202 1822/6156/3196\nf 1838/6164/3203 1840/6553/3237 1664/6166/3035\nf 1665/6554/3034 1841/6555/3201 1838/6556/3203\nf 1811/6136/3177 1841/6162/3201 1665/6165/3034\nf 1842/6557/3313 1809/6134/3176 1811/6136/3177\nf 1842/6557/3313 1811/6136/3177 1665/6165/3034\nf 1842/6557/3313 1789/6099/3152 1809/6134/3176\nf 1842/6557/3313 1665/6165/3034 1666/6558/3029\nf 1843/6167/3204 1842/6559/3313 1666/5930/3029\nf 1842/6557/3313 1843/6169/3204 1789/6099/3152\nf 1792/6102/3155 1843/6169/3204 1667/6560/3205\nf 1667/6168/3205 1794/6171/3157 1792/6561/3155\nf 1713/5999/3080 1844/6170/3206 1667/6168/3205\nf 1844/6172/3206 1713/6562/3080 1788/6173/3207\nf 1795/6563/3158 1794/6564/3157 1844/6565/3206\nf 1788/6173/3207 1713/6562/3080 1658/6566/3026\nf 1788/6173/3207 1658/6566/3026 1714/6567/3081\nf 1845/6178/3209 1778/6091/3146 1784/6176/3208\nf 1845/6568/3209 1714/6569/3081 1715/6570/3083\nf 1845/6179/3209 1715/6003/3083 1717/6005/3084\nf 1774/6080/3139 1778/6091/3146 1846/6182/3210\nf 1846/6182/3210 1717/6181/3084 1719/6183/3087\nf 1767/6571/3130 1846/6572/3210 1719/6573/3087\nf 1846/6182/3210 1767/6068/3130 1774/6080/3139\nf 1847/6574/3211 1719/6575/3087 1720/6576/3086\nf 1847/6184/3211 1848/6188/3212 1764/6062/3127\nf 1848/6188/3212 1849/6191/3213 1761/6060/3125\nf 1850/6190/2879 1419/5563/2787 1761/6060/3125\nf 1849/6189/3213 1723/6016/3090 1850/5698/2879\nf 1711/5994/3078 1852/6194/3216 1851/6192/3214\nf 1854/6193/3215 1708/5991/3076 1707/5992/3075\nf 1732/6031/3100 1851/6192/3214 1852/6194/3216\nf 1852/6194/3216 1853/6577/3314 1729/6026/3095\nf 1852/6194/3216 1729/6026/3095 1731/6029/3098\nf 1854/6193/3215 1710/5989/3077 1708/5991/3076\nf 1854/6193/3215 1732/6031/3100 1734/6030/3099\nf 1855/6578/3303 1858/6196/3218 1748/6044/3112\nf 1748/6044/3112 1863/6205/3225 1855/6578/3303\nf 1858/6196/3218 1934/6579/3301 1856/6197/3219\nf 1857/6198/3220 1749/6045/3113 1858/6196/3218\nf 1859/6199/3221 1933/6370/3300 1860/6200/3222\nf 1861/6204/3223 1857/6198/3220 1860/6200/3222\nf 1864/6580/3226 1861/6201/3223 1862/6203/3224\nf 1864/6206/3226 1862/6581/3224 1866/6207/3227\nf 1861/6201/3223 1864/6580/3226 1865/6209/3228\nf 1865/6209/3228 1745/6039/3107 1752/6048/3116\nf 1865/6208/3228 1866/6207/3227 1867/6354/3299\nf 1865/6209/3228 1867/6582/3299 1868/6211/3229\nf 1746/6040/3108 1868/6211/3229 1869/6213/3231\nf 1870/6215/3233 1739/6036/3105 1741/6212/3230\nf 1741/6212/3230 1872/6583/3234 1871/6214/3232\nf 1873/6219/3235 1839/6161/3200 1837/6159/3198\nf 1875/6225/3239 1662/5933/3032 1663/5934/3033\nf 1663/5934/3033 1874/6222/3236 1875/6225/3239\nf 1874/6222/3236 1877/6241/3251 1876/6224/3238\nf 1877/6241/3251 1874/6222/3236 1873/6236/3235\nf 1873/6219/3235 1878/6226/3240 1879/6584/3242\nf 1880/6230/3241 1878/6226/3240 1837/6159/3198\nf 1881/6585/3315 1880/6230/3241 1835/6160/3199\nf 1834/6586/3195 1881/6585/3315 1835/6160/3199\nf 1883/6232/3244 1880/6228/3241 1881/6587/3315\nf 1885/6234/3246 1879/6229/3242 1880/6228/3241\nf 1886/6235/3247 1877/6241/3251 1873/6236/3235\nf 1887/6588/3248 1890/6242/3252 1888/6244/3249\nf 1887/6238/3248 1889/6240/3250 1877/6241/3251\nf 1893/6248/3257 1891/6243/3253 1892/6245/3254\nf 1894/6246/3255 1893/6248/3257 1895/6254/3258\nf 1895/6249/3258 1897/6253/3261 1896/6250/3259\nf 1897/6253/3261 1881/6589/3315 1834/6155/3195\nf 1896/6250/3259 1834/6155/3195 1833/6154/3194\nf 1897/6590/3261 1884/6233/3245 1883/6232/3244\nf 1897/6590/3261 1883/6232/3244 1881/6587/3315\nf 1895/6591/3258 1884/6233/3245 1897/6590/3261\nf 1895/6254/3258 1893/6248/3257 1892/6245/3254\nf 1898/6262/3262 1882/6231/3243 1884/6233/3245\nf 1899/6257/3263 1886/6592/3247 1879/6229/3242\nf 1899/6257/3263 1887/6259/3248 1886/6592/3247\nf 1885/6234/3246 1882/6231/3243 1898/6262/3262\nf 1885/6234/3246 1898/6262/3262 1899/6257/3263\nf 1900/6263/3264 1833/6154/3194 1832/6153/3193\nf 1830/6264/3265 1900/6263/3264 1832/6153/3193\nf 1900/6263/3264 1830/6264/3265 1906/6593/3267\nf 1889/6240/3250 1888/6239/3249 1902/6265/3266\nf 1903/6275/3272 1888/6244/3249 1891/6243/3253\nf 1888/6244/3249 1903/6275/3272 1902/6288/3266\nf 1904/6247/3256 1903/6275/3272 1891/6243/3253\nf 1901/6266/3260 1905/6271/3269 1904/6247/3256\nf 1901/6266/3260 1906/6267/3267 1905/6271/3269\nf 1907/6270/3268 1904/6247/3256 1905/6271/3269\nf 1906/6593/3267 1830/6264/3265 1908/6594/3270\nf 1829/6150/3190 1908/6594/3270 1830/6264/3265\nf 1908/6272/3270 1913/6291/3271 1909/6290/3281\nf 1909/6290/3281 1907/6270/3268 1908/6272/3270\nf 1907/6270/3268 1909/6290/3281 1903/6275/3272\nf 1823/6279/3185 1911/6278/3274 1912/6281/3275\nf 1914/6283/3276 1911/6278/3274 1910/6277/3273\nf 1914/6283/3276 1910/6277/3273 1728/6284/3094\nf 1915/6286/3278 1726/6027/3096 1729/6026/3095\nf 1729/6026/3095 1853/6577/3314 1916/6285/3277\nf 1903/6275/3272 1909/6290/3281 1917/6289/3280\nf 1903/6275/3272 1917/6289/3280 1918/6287/3279\nf 1917/6289/3280 1919/6595/3283 1918/6287/3279\nf 1921/6295/3284 1655/5925/3024 1919/6294/3283\nf 1920/6293/3282 1921/6295/3284 1919/6294/3283\nf 1902/6265/3266 1875/6225/3239 1876/6224/3238\nf 1918/6297/3279 1662/5933/3032 1875/6225/3239\nf 1902/6265/3266 1918/6297/3279 1875/6225/3239\nf 1920/6300/3282 1912/6281/3275 1911/6278/3274\nf 1922/6296/3285 1921/6295/3284 1914/6302/3276\nf 1923/6596/3287 1922/6597/3285 1727/6022/3093\nf 1923/6596/3287 1727/6022/3093 1635/6021/3011\nf 1725/6313/3092 1924/6598/3288 1632/6314/3289\nf 1924/6599/3288 1925/6600/3290 1632/6601/3289\nf 1633/6602/3002 1632/6601/3289 1925/6600/3290\nf 1925/6600/3290 1926/6603/3291 1633/6602/3002\nf 1926/6323/3291 1925/6604/3290 1915/6286/3278\nf 1712/6330/3079 1916/6285/3277 1853/6577/3314\nf 1853/6577/3314 1852/6194/3216 1712/6331/3079\nf 1870/6215/3233 1871/6214/3232 1927/6605/3292\nf 1709/6606/3217 1737/6536/3103 1928/6535/3293\nf 1929/6607/3294 1709/6606/3217 1928/6535/3293\nf 1872/6608/3234 1697/5977/3066 1698/5981/3069\nf 1698/6609/3069 1871/6610/3232 1872/6611/3234\nf 1697/6346/3066 1872/6216/3234 1869/6218/3231\nf 1930/6612/3296 1696/6613/3064 1669/6614/3065\nf 1930/6347/3296 1869/6615/3231 1868/6348/3229\nf 1931/6616/3298 1692/6617/3060 1695/6350/3063\nf 1931/6618/3298 1695/6619/3063 1868/6620/3229\nf 1931/6621/3298 1868/6622/3229 1867/6623/3299\nf 1932/6351/3297 1694/6624/3061 1692/6352/3060\nf 1932/6351/3297 1693/6625/3062 1694/6624/3061\nf 1866/6207/3227 1932/6351/3297 1867/6354/3299\nf 1686/5963/3055 1856/6356/3219 1687/5960/3052\nf 1681/6364/3048 1682/6626/3049 1934/6362/3301\nf 1855/6578/3303 1681/6627/3048 1858/6196/3218\nf 1866/6207/3227 1693/6625/3062 1932/6351/3297\nf 1862/6581/3224 1693/6625/3062 1866/6207/3227\nf 1935/6365/3302 1690/5972/3058 1693/5971/3062\nf 1860/6368/3222 1689/6367/3059 1935/6365/3302\nf 1935/6628/3302 1862/6629/3224 1860/6630/3222\nf 1933/6370/3300 1688/6372/3056 1860/6200/3222\nf 1863/6631/3225 1678/5953/3045 1855/6373/3303\nf 1523/5716/2891 1679/6374/3046 1863/6205/3225\nf 1680/6378/3047 1597/6507/3304 1255/5858/2633\nf 1598/5861/2971 1677/5952/3044 1599/5862/2972\nusemtl wire_028089177\nf 3299/6632/3316 3298/6633/3317 3300/6634/3318\nf 3302/6635/3319 3303/6636/3320 3304/6637/3321\nf 3302/6638/3319 3304/6639/3321 3305/6640/3322\nf 3305/6640/3322 3306/6641/3323 3302/6638/3319\nf 3302/6638/3319 3345/6642/3324 3303/6643/3320\nf 3304/6637/3321 3303/6636/3320 3308/6644/3325\nf 3307/6645/3326 3313/6646/3327 3311/6647/3328\nf 3314/6648/3329 3315/6649/3330 3313/6646/3327\nf 3314/6648/3329 3312/6650/3331 3316/6651/3332\nf 3317/6652/3333 3315/6653/3330 3314/6654/3329\nf 3321/6655/3334 3322/6656/3335 3347/6657/3336\nf 3347/6657/3336 3323/6658/3337 3321/6655/3334\nf 3321/6655/3334 3324/6659/3338 3325/6660/3339\nf 3328/6661/3340 3327/6662/3341 3320/6663/3342\nf 3330/6664/3343 3331/6665/3344 3329/6666/3345\nf 3329/6666/3345 3328/6667/3340 3330/6664/3343\nf 3331/6665/3344 3330/6664/3343 3332/6668/3346\nf 3336/6669/3347 3335/6670/3348 3305/6640/3322\nf 3305/6640/3322 3304/6639/3321 3336/6669/3347\nf 3336/6669/3347 3307/6671/3326 3337/6672/3349\nf 3337/6672/3349 3307/6671/3326 3311/6673/3328\nf 3339/6674/3350 3334/6675/3351 3333/6676/3352\nf 3333/6677/3352 3340/6678/3353 3339/6679/3350\nf 3339/6680/3350 3332/6681/3346 3341/6682/3354\nf 3299/6632/3316 3300/6634/3318 3306/6641/3323\nf 3342/6683/3355 3343/6684/3356 3344/6685/3357\nf 3345/6642/3324 3346/6686/3358 3347/6657/3336\nf 3347/6657/3336 3348/6687/3359 3345/6642/3324\nf 3349/6688/3360 3347/6657/3336 3346/6686/3358\nf 3325/6660/3339 3351/6689/3361 3352/6690/3362\nf 3352/6690/3362 3350/6691/3363 3325/6660/3339\nf 3354/6692/3364 3353/6693/3365 3357/6694/3366\nf 3355/6695/3367 3356/6696/3368 3353/6693/3365\nf 3357/6697/3366 3356/6698/3368 3358/6699/3369\nf 3358/6699/3369 3356/6698/3368 3359/6700/3370\nf 3358/6699/3369 3360/6701/3371 3357/6697/3366\nf 3333/6702/3352 3362/6703/3372 3361/6704/3373\nf 3349/6688/3360 3363/6705/3374 3364/6706/3375\nf 3349/6688/3360 3364/6706/3375 3323/6658/3337\nf 3364/6707/3375 3368/6708/3376 3324/6659/3338\nf 3368/6708/3376 3364/6707/3375 3367/6709/3377\nf 3367/6709/3377 3365/6710/3378 3366/6711/3379\nf 3370/6712/3380 3363/6705/3374 3369/6713/3381\nf 3366/6711/3379 3370/6712/3380 3372/6714/3382\nf 3337/6672/3349 3311/6673/3328 3551/6715/3383\nf 3315/6653/3330 3550/6716/3384 3313/6717/3327\nf 3374/6718/3385 3318/6719/3386 3319/6720/3387\nf 3375/6721/3388 3327/6662/3341 3376/6722/3389\nf 3376/6722/3389 3329/6723/3345 3377/6724/3390\nf 3377/6725/3390 3329/6726/3345 3378/6727/3391\nf 3379/6728/3392 3378/6727/3391 3331/6665/3344\nf 3380/6729/3393 3331/6665/3344 3340/6730/3353\nf 3381/6731/3394 3316/6651/3332 3312/6650/3331\nf 3312/6650/3331 3310/6732/3395 3381/6731/3394\nf 3383/6733/3396 3303/6636/3320 3345/6734/3324\nf 3308/6644/3325 3303/6636/3320 3384/6735/3397\nf 3414/6736/3398 3320/6737/3342 3413/6738/3399\nf 3387/6739/3400 3330/6740/3343 3328/6661/3340\nf 3332/6681/3346 3388/6741/3401 3389/6742/3402\nf 3388/6741/3401 3332/6681/3346 3330/6743/3343\nf 3332/6681/3346 3390/6744/3403 3341/6682/3354\nf 3341/6682/3354 3391/6745/3404 3334/6746/3351\nf 3362/6703/3372 3334/6747/3351 3392/6748/3405\nf 3393/6749/3406 3360/6750/3371 3407/6751/3407\nf 3407/6751/3407 3394/6752/3408 3393/6749/3406\nf 3395/6753/3409 3360/6750/3371 3393/6749/3406\nf 3357/6694/3366 3395/6753/3409 3396/6754/3410\nf 3396/6755/3410 3397/6756/3411 3354/6757/3364\nf 3350/6691/3363 3399/6758/3412 3321/6655/3334\nf 3400/6759/3413 3321/6655/3334 3399/6758/3412\nf 3348/6760/3359 3322/6761/3335 3400/6762/3413\nf 3383/6733/3396 3345/6763/3324 3348/6764/3359\nf 3401/6765/3414 3402/6766/3415 3348/6760/3359\nf 3400/6762/3413 3404/6767/3416 3401/6765/3414\nf 3404/6767/3416 3399/6768/3412 3405/6769/3417\nf 3406/6770/3418 3395/6753/3409 3394/6752/3408\nf 3362/6703/3372 3409/6771/3419 3408/6772/3420\nf 3385/6773/3421 3317/6774/3333 3410/6775/3422\nf 3385/6773/3421 3411/6776/3423 3386/6777/3424\nf 3387/6778/3400 3416/6779/3425 3388/6741/3401\nf 3416/6779/3425 3387/6778/3400 3414/6736/3398\nf 3417/6780/3426 3309/6781/3427 3384/6782/3397\nf 3382/6783/3428 3316/6651/3332 3381/6731/3394\nf 3421/6784/3429 3316/6785/3332 3420/6786/3430\nf 3410/6775/3422 3421/6787/3429 3411/6776/3423\nf 3411/6776/3423 3423/6788/3431 3412/6789/3432\nf 3414/6736/3398 3424/6790/3433 3415/6791/3434\nf 3424/6790/3433 3425/6792/3435 3415/6791/3434\nf 3415/6791/3434 3425/6792/3435 3427/6793/3436\nf 3426/6794/3437 3388/6741/3401 3416/6779/3425\nf 3426/6795/3437 3430/6796/3438 3389/6797/3402\nf 3409/6798/3419 3392/6799/3405 3391/6800/3404\nf 3391/6800/3404 3390/6801/3403 3446/6802/3439\nf 3435/6803/3440 3434/6804/3441 3419/6805/3442\nf 3405/6769/3417 3447/6806/3443 3436/6807/3444\nf 3437/6808/3445 3420/6809/3430 3432/6810/3446\nf 3432/6810/3446 3438/6811/3447 3437/6808/3445\nf 3439/6812/3448 3421/6813/3429 3437/6814/3445\nf 3440/6815/3449 3422/6816/3450 3439/6817/3448\nf 3422/6816/3450 3440/6815/3449 3441/6818/3451\nf 3423/6788/3431 3441/6818/3451 3424/6790/3433\nf 3440/6815/3449 3442/6819/3452 3441/6818/3451\nf 3443/6820/3453 3425/6792/3435 3442/6819/3452\nf 3445/6821/3454 3444/6822/3455 3429/6823/3456\nf 3446/6824/3439 3466/6825/3457 3409/6771/3419\nf 3409/6771/3419 3466/6825/3457 3408/6772/3420\nf 3397/6826/3411 3406/6770/3418 3448/6827/3458\nf 3405/6769/3417 3398/6828/3459 3447/6806/3443\nf 3447/6806/3443 3397/6756/3411 3448/6829/3458\nf 3418/6830/3460 3449/6831/3461 3433/6832/3462\nf 3417/6833/3426 3433/6832/3462 3450/6834/3463\nf 3434/6835/3441 3451/6836/3464 3449/6837/3461\nf 3417/6780/3426 3452/6838/3465 3432/6810/3446\nf 3417/6780/3426 3450/6839/3463 3452/6838/3465\nf 3438/6811/3447 3432/6810/3446 3452/6838/3465\nf 3438/6811/3447 3452/6838/3465 3453/6840/3466\nf 3453/6841/3466 3437/6842/3445 3438/6843/3447\nf 3454/6844/3467 3440/6815/3449 3439/6817/3448\nf 3455/6845/3468 3443/6820/3453 3442/6819/3452\nf 3455/6845/3468 3454/6844/3467 3456/6846/3469\nf 3457/6847/3470 3443/6820/3453 3455/6845/3468\nf 3428/6848/3471 3457/6847/3470 3429/6823/3456\nf 3457/6847/3470 3458/6849/3472 3445/6821/3454\nf 3445/6821/3454 3429/6823/3456 3457/6847/3470\nf 3483/6850/3473 3460/6851/3474 3461/6852/3475\nf 3461/6852/3475 3435/6853/3440 3402/6854/3415\nf 3404/6767/3416 3436/6807/3444 3483/6855/3473\nf 3404/6767/3416 3405/6769/3417 3436/6807/3444\nf 3434/6804/3441 3435/6803/3440 3461/6856/3475\nf 3461/6856/3475 3460/6857/3474 3451/6858/3464\nf 3447/6806/3443 3462/6859/3476 3436/6807/3444\nf 3463/6860/3477 3448/6829/3458 3406/6861/3418\nf 3463/6862/3477 3407/6751/3407 3464/6863/3478\nf 3466/6864/3457 3431/6865/3479 3467/6866/3480\nf 3467/6867/3480 3459/6868/3481 3468/6869/3482\nf 3469/6870/3483 3468/6871/3482 3458/6872/3472\nf 3458/6849/3472 3457/6847/3470 3469/6873/3483\nf 3456/6846/3469 3471/6874/3484 3469/6873/3483\nf 3471/6874/3484 3456/6846/3469 3454/6844/3467\nf 3472/6875/3485 3454/6876/3467 3439/6877/3448\nf 3473/6878/3486 3430/6796/3438 3444/6879/3455\nf 3473/6878/3486 3431/6880/3479 3430/6796/3438\nf 3473/6878/3486 3444/6879/3455 3445/6881/3454\nf 3459/6882/3481 3431/6880/3479 3473/6878/3486\nf 3472/6875/3485 3439/6877/3448 3453/6841/3466\nf 3453/6840/3466 3475/6883/3487 3474/6884/3488\nf 3452/6838/3465 3450/6839/3463 3475/6883/3487\nf 3476/6885/3489 3449/6831/3461 3477/6886/3490\nf 3477/6887/3490 3451/6836/3464 3478/6888/3491\nf 3480/6889/3492 3451/6890/3464 3460/6851/3474\nf 3480/6889/3492 3460/6851/3474 3481/6891/3493\nf 3481/6891/3493 3436/6892/3444 3484/6893/3494\nf 3484/6893/3494 3485/6894/3495 3481/6891/3493\nf 3484/6895/3494 3462/6859/3476 3486/6896/3496\nf 3462/6897/3476 3484/6893/3494 3436/6892/3444\nf 3462/6898/3476 3464/6863/3478 3486/6899/3496\nf 3464/6900/3478 3465/6901/3497 3488/6902/3498\nf 3464/6863/3478 3408/6772/3420 3465/6903/3497\nf 3489/6904/3499 3465/6901/3497 3466/6905/3457\nf 3490/6906/3500 3470/6907/3501 3469/6873/3483\nf 3471/6908/3484 3492/6909/3502 3490/6910/3500\nf 3471/6908/3484 3472/6875/3485 3493/6911/3503\nf 3501/6912/3504 3474/6884/3488 3494/6913/3505\nf 3479/6914/3506 3494/6913/3505 3476/6915/3489\nf 3478/6888/3491 3480/6889/3492 3495/6916/3507\nf 3497/6917/3508 3487/6918/3509 3486/6899/3496\nf 3506/6919/3510 3497/6920/3508 3488/6902/3498\nf 3499/6921/3511 3467/6867/3480 3468/6869/3482\nf 3492/6922/3502 3493/6923/3503 3500/6924/3512\nf 3479/6914/3506 3502/6925/3513 3494/6913/3505\nf 3502/6926/3513 3479/6927/3506 3503/6928/3514\nf 3478/6888/3491 3503/6929/3514 3479/6930/3506\nf 3503/6929/3514 3504/6931/3515 3507/6932/3516\nf 3503/6929/3514 3495/6916/3507 3504/6931/3515\nf 3496/6933/3517 3505/6934/3518 3504/6931/3515\nf 3504/6931/3515 3495/6916/3507 3496/6933/3517\nf 3505/6934/3518 3496/6933/3517 3506/6935/3510\nf 3489/6904/3499 3498/6936/3519 3506/6919/3510\nf 3498/6937/3519 3505/6934/3518 3506/6935/3510\nf 3507/6932/3516 3502/6938/3513 3503/6929/3514\nf 3502/6926/3513 3507/6939/3516 3500/6940/3512\nf 3500/6940/3512 3501/6941/3504 3502/6926/3513\nf 3500/6942/3512 3507/6932/3516 3492/6943/3502\nf 3498/6936/3519 3499/6921/3511 3507/6944/3516\nf 3508/6945/3520 3509/6946/3521 3510/6947/3522\nf 3372/6714/3382 3510/6947/3522 3366/6711/3379\nf 3509/6946/3521 3508/6945/3520 3511/6948/3523\nf 3511/6948/3523 3508/6945/3520 3512/6949/3524\nf 3513/6950/3525 3511/6948/3523 3514/6951/3526\nf 3513/6950/3525 3516/6952/3527 3642/6953/3528\nf 3517/6954/3529 3516/6952/3527 3513/6950/3525\nf 3518/6955/3530 3517/6954/3529 3519/6956/3531\nf 3521/6957/3532 3517/6954/3529 3518/6955/3530\nf 3522/6958/3533 3543/6959/3534 3521/6957/3532\nf 3521/6957/3532 4984/6960/3535 3522/6958/3533\nf 3523/6961/3536 3522/6958/3533 4984/6960/3535\nf 3522/6958/3533 3523/6961/3536 3524/6962/3537\nf 3526/6963/3538 3522/6958/3533 3525/6964/3539\nf 3527/6965/3540 3529/6966/3541 3526/6963/3538\nf 3527/6967/3540 3526/6968/3538 3525/6969/3539\nf 3530/6970/3542 3528/6971/3543 3531/6972/3544\nf 3529/6966/3541 3528/6973/3543 3532/6974/3545\nf 3532/6975/3545 3528/6976/3543 3530/6970/3542\nf 3537/6977/3546 3534/6978/3547 3536/6979/3548\nf 3536/6979/3548 3534/6978/3547 3535/6980/3549\nf 3536/6981/3548 3538/6982/3550 3539/6983/3551\nf 3539/6984/3551 3540/6985/3552 3541/6986/3553\nf 3543/6959/3534 3522/6958/3533 3526/6963/3538\nf 3529/6966/3541 3516/6952/3527 3543/6959/3534\nf 3533/6987/3554 3537/6977/3546 3693/6988/3555\nf 3378/6727/3391 3547/6989/3556 3377/6725/3390\nf 3548/6990/3557 3549/6991/3558 3315/6653/3330\nf 3552/6992/3559 3548/6990/3557 3553/6993/3560\nf 3552/6992/3559 3554/6994/3561 3550/6716/3384\nf 3550/6716/3384 3554/6994/3561 3555/6995/3562\nf 3550/6716/3384 3555/6995/3562 3551/6715/3383\nf 3551/6715/3383 3555/6995/3562 3373/6996/3563\nf 3376/6722/3389 3568/6997/3564 3375/6721/3388\nf 3374/6718/3385 3553/6993/3560 3548/6990/3557\nf 3560/6998/3565 3546/6999/3566 3379/6728/3392\nf 3379/6728/3392 3561/7000/3567 3560/6998/3565\nf 3562/7001/3568 3560/6998/3565 3561/7000/3567\nf 3560/6998/3565 3563/7002/3569 3559/7003/3570\nf 3559/7003/3570 3546/6999/3566 3560/6998/3565\nf 3380/6729/3393 3564/7004/3571 3565/7005/3572\nf 3566/7006/3573 3562/7001/3568 3565/7005/3572\nf 3552/6992/3559 3567/7007/3574 3554/6994/3561\nf 3742/7008/3575 3571/7009/3576 3563/7002/3569\nf 3571/7009/3576 3573/7010/3577 3574/7011/3578\nf 3574/7011/3578 3572/7012/3579 3571/7009/3576\nf 3576/7013/3580 3575/7014/3581 3577/7015/3582\nf 3577/7015/3582 3578/7016/3583 3576/7013/3580\nf 3577/7015/3582 3581/7017/3584 3578/7016/3583\nf 3579/7018/3585 3577/7015/3582 3580/7019/3586\nf 3579/7018/3585 3583/7020/3587 3581/7017/3584\nf 3579/7018/3585 3580/7019/3586 3582/7021/3588\nf 3583/7020/3587 3584/7022/3589 3585/7023/3590\nf 3583/7020/3587 3579/7018/3585 3584/7022/3589\nf 3586/7024/3591 3585/7023/3590 3584/7022/3589\nf 3588/7025/3592 3589/7026/3593 3586/7024/3591\nf 3586/7024/3591 3590/7027/3594 3588/7025/3592\nf 3592/7028/3595 3554/6994/3561 3567/7007/3574\nf 3567/7007/3574 3553/6993/3560 3593/7029/3596\nf 3594/7030/3597 3553/6993/3560 3568/6997/3564\nf 3553/6993/3560 3594/7030/3597 3593/7029/3596\nf 3568/6997/3564 3595/7031/3598 3594/7030/3597\nf 3595/7031/3598 3556/7032/3599 3596/7033/3600\nf 3596/7034/3600 3557/7035/3601 3597/7036/3602\nf 3597/7036/3602 3558/7037/3603 3569/7038/3604\nf 3598/7039/3605 3558/7037/3603 3570/7040/3606\nf 3570/7040/3606 3600/7041/3607 3599/7042/3608\nf 3601/7043/3609 3602/7044/3610 3603/7045/3611\nf 3576/7013/3580 3603/7045/3611 3599/7042/3608\nf 3578/7016/3583 3604/7046/3612 3601/7043/3609\nf 3607/7047/3613 3589/7026/3593 3608/7048/3614\nf 3608/7048/3614 3609/7049/3615 3610/7050/3616\nf 3615/7051/3617 3612/7052/3618 3614/7053/3619\nf 3616/7054/3620 3617/7055/3621 3618/7056/3622\nf 3617/7057/3621 3616/7058/3620 3619/7059/3623\nf 3619/7060/3623 3620/7061/3624 3617/7055/3621\nf 3622/7062/3625 3624/7063/3626 3625/7064/3627\nf 3450/6839/3463 3433/7065/3462 3476/6915/3489\nf 3611/7066/3628 3628/7067/3629 3609/7049/3615\nf 3609/7049/3615 3588/7025/3592 3611/7066/3628\nf 3628/7067/3629 3611/7066/3628 3613/7068/3630\nf 3615/7051/3617 3618/7069/3622 3613/7068/3630\nf 3613/7068/3630 3885/7070/3631 3629/7071/3632\nf 3618/7056/3622 3630/7072/3633 3886/7073/3634\nf 3621/7074/3635 3631/7075/3636 3630/7072/3633\nf 3623/7076/3637 3632/7077/3638 3631/7075/3636\nf 3631/7075/3636 3621/7074/3635 3623/7076/3637\nf 3632/7077/3638 3623/7076/3637 3622/7062/3625\nf 3622/7062/3625 3626/7078/3639 3632/7077/3638\nf 3627/7079/3640 3633/7080/3641 3626/7078/3639\nf 4984/6960/3535 3518/6955/3530 3634/7081/3642\nf 3635/7082/3643 3636/7083/3644 3520/7084/3645\nf 3520/7084/3645 3636/7083/3644 3518/6955/3530\nf 3635/7082/3643 3520/7084/3645 3519/6956/3531\nf 3510/6947/3522 3637/7085/3646 3366/6711/3379\nf 3367/7086/3377 3638/7087/3647 3368/7088/3376\nf 3638/7087/3647 3366/7089/3379 3637/7090/3646\nf 3639/7091/3648 3368/7088/3376 3638/7087/3647\nf 3368/7088/3376 3639/7091/3648 3326/7092/3649\nf 3639/7091/3648 3640/7093/3650 3351/7094/3361\nf 3509/6946/3521 3643/7095/3651 3641/7096/3652\nf 3641/7096/3652 3510/6947/3522 3509/6946/3521\nf 3642/6953/3528 3643/7095/3651 3509/6946/3521\nf 3644/7097/3653 3355/6695/3367 3353/6693/3365\nf 3353/6693/3365 3351/7098/3361 3644/7097/3653\nf 3645/7099/3654 3646/7100/3655 3647/7101/3656\nf 3645/7102/3654 3356/6698/3368 3355/7103/3367\nf 3641/7104/3652 3648/7105/3657 3649/7106/3658\nf 3649/7107/3658 3637/7090/3646 3510/7108/3522\nf 3650/7109/3659 3638/7087/3647 3637/7090/3646\nf 3650/7109/3659 3651/7110/3660 3640/7093/3650\nf 3640/7093/3650 3639/7091/3648 3650/7109/3659\nf 3640/7111/3650 3651/7112/3660 3652/7113/3661\nf 3646/7100/3655 3652/7113/3661 3653/7114/3662\nf 3359/6700/3370 3647/7115/3656 3655/7116/3663\nf 3359/6700/3370 3656/7117/3664 3358/7118/3369\nf 3360/6750/3371 3656/7119/3664 3361/6704/3373\nf 3657/7120/3665 3361/6704/3373 3656/7119/3664\nf 3649/7107/3658 3658/7121/3666 3650/7109/3659\nf 3650/7109/3659 3659/7122/3667 3651/7110/3660\nf 3660/7123/3668 3652/7124/3661 3651/7110/3660\nf 3660/7123/3668 3659/7122/3667 3661/7125/3669\nf 3653/7114/3662 3660/7126/3668 3662/7127/3670\nf 3654/7128/3671 3653/7129/3662 3662/7130/3670\nf 3655/7116/3663 3647/7115/3656 3654/7131/3671\nf 3664/7132/3672 3656/7117/3664 3359/6700/3370\nf 3359/6700/3370 3674/7133/3673 3664/7132/3672\nf 3666/7134/3674 3659/7135/3667 3658/7136/3666\nf 3666/7137/3674 3661/7125/3669 3659/7122/3667\nf 3661/7125/3669 3666/7137/3674 3668/7138/3675\nf 3667/7139/3676 3660/7123/3668 3661/7125/3669\nf 3655/7116/3663 3672/7140/3677 3665/7141/3678\nf 3674/7133/3673 3665/7141/3678 3675/7142/3679\nf 3675/7142/3679 3676/7143/3680 3674/7133/3673\nf 3677/7144/3681 3678/7145/3682 3676/7143/3680\nf 3678/7145/3682 3677/7144/3681 3679/7146/3683\nf 3681/7147/3684 3665/7141/3678 3673/7148/3685\nf 3672/7140/3677 3682/7149/3686 3673/7148/3685\nf 3672/7140/3677 3669/7150/3687 3670/7151/3688\nf 3670/7152/3688 3671/7153/3689 3683/7154/3690\nf 3685/7155/3691 3686/7156/3692 3683/7154/3690\nf 3683/7154/3690 3663/7157/3693 3685/7155/3691\nf 3668/7138/3675 3687/7158/3694 3685/7155/3691\nf 3685/7155/3691 3667/7139/3676 3668/7138/3675\nf 3666/7137/3674 3689/7159/3695 3688/7160/3696\nf 3689/7161/3695 3658/7136/3666 3690/7162/3697\nf 3690/7162/3697 3649/7163/3658 3648/7164/3657\nf 3643/7165/3651 3691/7166/3698 3648/7105/3657\nf 3691/7166/3698 3643/7165/3651 3692/7167/3699\nf 3643/7095/3651 3693/6988/3555 3692/7168/3699\nf 3516/6952/3527 3521/6957/3532 3543/6959/3534\nf 3642/6953/3528 3545/7169/3700 3693/6988/3555\nf 3642/6953/3528 3516/6952/3527 3545/7169/3700\nf 3692/7168/3699 3693/6988/3555 3537/6977/3546\nf 3691/7166/3698 3692/7167/3699 3544/7170/3701\nf 3691/7166/3698 3709/7171/3702 3648/7105/3657\nf 3648/7105/3657 3694/7172/3703 3690/7173/3697\nf 3688/7160/3696 3695/7174/3704 3696/7175/3705\nf 3697/7176/3706 3698/7177/3707 3699/7178/3708\nf 3698/7177/3707 3697/7176/3706 3701/7179/3709\nf 3702/7180/3710 3701/7179/3709 3697/7176/3706\nf 3702/7180/3710 3704/7181/3711 3701/7179/3709\nf 3705/7182/3712 3706/7183/3713 3704/7181/3711\nf 3705/7184/3712 3703/7185/3714 3707/7186/3715\nf 3705/7182/3712 3708/7187/3716 3706/7183/3713\nf 3542/7188/3717 3707/7186/3715 3541/7189/3553\nf 3710/7190/3718 3703/7185/3714 3697/7191/3706\nf 3710/7190/3718 3697/7191/3706 3711/7192/3719\nf 3700/7193/3720 3711/7192/3719 3697/7191/3706\nf 3711/7192/3719 3700/7193/3720 3712/7194/3721\nf 3696/7195/3705 3710/7190/3718 3711/7192/3719\nf 3695/7196/3704 3694/7172/3703 3703/7185/3714\nf 3694/7172/3703 3709/7171/3702 3707/7186/3715\nf 3340/6730/3353 3657/7197/3665 3713/7198/3722\nf 3657/7197/3665 3656/7117/3664 3664/7132/3672\nf 3715/7199/3723 3676/7143/3680 3678/7145/3682\nf 3678/7145/3682 3716/7200/3724 3717/7201/3725\nf 3678/7145/3682 3717/7201/3725 3715/7199/3723\nf 3678/7202/3682 3791/7203/3726 3716/7204/3724\nf 3677/7144/3681 3719/7205/3727 3679/7146/3683\nf 3718/7206/3728 3677/7144/3681 3680/7207/3729\nf 3718/7206/3728 3720/7208/3730 3722/7209/3731\nf 3724/7210/3732 3723/7211/3733 3722/7209/3731\nf 3722/7209/3731 3723/7211/3733 3721/7212/3734\nf 3724/7210/3732 3725/7213/3735 3723/7211/3733\nf 3725/7214/3735 3724/7215/3732 3726/7216/3736\nf 3726/7217/3736 3728/7218/3737 3725/7219/3735\nf 3725/7213/3735 3728/7220/3737 3729/7221/3738\nf 3727/7222/3739 3730/7223/3740 3732/7224/3741\nf 3727/7222/3739 3733/7225/3742 3728/7218/3737\nf 3728/7226/3737 3734/7227/3743 3729/7221/3738\nf 3735/7228/3744 3732/7224/3741 3730/7223/3740\nf 3735/7228/3744 3736/7229/3745 3732/7224/3741\nf 3732/7224/3741 3736/7229/3745 3737/7230/3746\nf 3729/7221/3738 3740/7231/3747 3741/7232/3748\nf 3741/7232/3748 3725/7213/3735 3729/7221/3738\nf 3742/7008/3575 3563/7002/3569 3566/7006/3573\nf 3744/7233/3749 3577/7015/3582 3575/7014/3581\nf 3577/7015/3582 3745/7234/3750 3746/7235/3751\nf 3747/7236/3752 3748/7237/3753 3749/7238/3754\nf 3747/7236/3752 3580/7019/3586 3577/7015/3582\nf 3380/6729/3393 3762/7239/3755 3564/7004/3571\nf 3713/7198/3722 3657/7197/3665 3714/7240/3756\nf 3752/7241/3757 3751/7242/3758 3714/7240/3756\nf 3714/7240/3756 3664/7132/3672 3752/7241/3757\nf 3674/7133/3673 3752/7241/3757 3664/7132/3672\nf 3756/7243/3759 3717/7244/3725 3716/7204/3724\nf 3753/7245/3760 3715/7246/3723 3757/7247/3761\nf 3757/7247/3761 3717/7244/3725 3756/7243/3759\nf 3757/7248/3761 3758/7249/3762 3753/7250/3760\nf 3753/7251/3760 3758/7252/3762 3759/7253/3763\nf 3753/7250/3760 3759/7254/3763 3760/7255/3764\nf 3761/7256/3765 3752/7241/3757 3760/7255/3764\nf 3751/7257/3758 3763/7258/3766 3762/7259/3755\nf 3749/7238/3754 3764/7260/3767 3740/7231/3747\nf 3765/7261/3768 3565/7005/3572 3763/7262/3766\nf 3566/7006/3573 3766/7263/3769 3573/7010/3577\nf 3573/7010/3577 3775/7264/3770 3743/7265/3771\nf 3744/7233/3749 3767/7266/3772 3768/7267/3773\nf 3764/7260/3767 3770/7268/3774 3741/7232/3748\nf 3764/7269/3767 3748/7270/3753 3769/7271/3775\nf 3771/7272/3776 3769/7271/3775 3772/7273/3777\nf 3773/7274/3778 3769/7275/3775 3746/7235/3751\nf 3745/7234/3750 3768/7267/3773 3774/7276/3779\nf 3765/7261/3768 3776/7277/3780 3766/7263/3769\nf 3765/7261/3768 3763/7262/3766 3777/7278/3781\nf 3765/7261/3768 3777/7278/3781 3776/7277/3780\nf 3498/6936/3519 3507/6944/3516 3504/7279/3515\nf 3498/7280/3519 3504/6931/3515 3505/6934/3518\nf 3763/7258/3766 3564/7281/3571 3762/7259/3755\nf 3778/7282/3782 3763/7258/3766 3751/7257/3758\nf 3778/7283/3782 3751/7284/3758 3761/7285/3765\nf 3780/7286/3783 3761/7287/3765 3760/7288/3764\nf 3782/7289/3784 3783/7290/3785 3775/7291/3770\nf 3775/7291/3770 3784/7292/3786 3767/7293/3772\nf 3782/7289/3784 3775/7291/3770 3776/7294/3780\nf 3785/7295/3787 3767/7293/3772 3784/7292/3786\nf 3772/7273/3777 3787/7296/3788 3771/7272/3776\nf 3721/7297/3734 3788/7298/3789 3719/7299/3727\nf 3789/7300/3790 3721/7212/3734 3770/7268/3774\nf 3790/7301/3791 3719/7299/3727 3788/7298/3789\nf 3792/7302/3792 3776/7303/3780 3777/7304/3781\nf 3793/7305/3793 3794/7306/3794 3792/7302/3792\nf 3792/7302/3792 3779/7307/3795 3793/7305/3793\nf 3783/7290/3785 3782/7289/3784 3794/7308/3794\nf 3794/7308/3794 3795/7309/3796 3783/7290/3785\nf 3795/7310/3796 3796/7311/3797 3784/7312/3786\nf 3796/7311/3797 3797/7313/3798 3798/7314/3799\nf 3796/7315/3797 3798/7316/3799 4213/7317/3800\nf 4213/7318/3800 3799/7319/3801 3796/7311/3797\nf 3799/7319/3801 3801/7320/3802 3802/7321/3803\nf 3799/7319/3801 3784/7312/3786 3796/7311/3797\nf 3803/7322/3804 3804/7323/3805 3784/7312/3786\nf 3806/7324/3806 3774/7325/3779 3785/7295/3787\nf 3773/7274/3778 3807/7326/3807 3772/7327/3777\nf 3808/7328/3808 3772/7327/3777 3807/7326/3807\nf 3790/7301/3791 3788/7298/3789 3809/7329/3809\nf 3813/7330/3810 3791/7203/3726 3790/7301/3791\nf 3754/7331/3811 3791/7203/3726 3813/7330/3810\nf 3814/7332/3812 3810/7333/3813 3789/7334/3790\nf 3814/7332/3812 3770/7335/3774 3786/7336/3814\nf 3814/7332/3812 3786/7336/3814 3815/7337/3815\nf 3816/7338/3816 3799/7319/3801 3800/7339/3817\nf 3816/7338/3816 3803/7322/3804 3799/7319/3801\nf 3817/7340/3818 3803/7322/3804 3816/7338/3816\nf 3817/7341/3818 3804/7342/3805 3803/7343/3804\nf 3805/7344/3819 3818/7345/3820 3806/7346/3806\nf 3806/7346/3806 3819/7347/3821 3823/7348/3822\nf 3818/7345/3820 3804/7342/3805 3817/7341/3818\nf 3817/7341/3818 3820/7349/3823 3818/7345/3820\nf 3821/7350/3824 3817/7351/3818 3816/7338/3816\nf 3820/7349/3823 3817/7341/3818 3821/7352/3824\nf 3807/7353/3807 3806/7346/3806 3823/7348/3822\nf 3824/7354/3825 3823/7348/3822 3819/7347/3821\nf 3814/7332/3812 3826/7355/3826 3810/7333/3813\nf 3810/7333/3813 3827/7356/3827 3825/7357/3828\nf 3828/7358/3829 3815/7337/3815 3787/7296/3788\nf 3828/7358/3829 3787/7296/3788 3808/7359/3808\nf 3828/7358/3829 3829/7360/3830 3826/7355/3826\nf 3830/7361/3831 3811/7362/3832 3809/7363/3809\nf 3812/7364/3833 3811/7365/3832 3831/7366/3834\nf 3825/7357/3828 3827/7356/3827 3832/7367/3835\nf 3832/7367/3835 3827/7356/3827 4156/7368/3836\nf 3825/7357/3828 3830/7361/3831 3809/7363/3809\nf 3827/7356/3827 3833/7369/3837 4156/7368/3836\nf 3833/7369/3837 3827/7356/3827 3826/7355/3826\nf 3828/7358/3829 3835/7370/3838 3829/7360/3830\nf 3835/7371/3838 3808/7372/3808 3807/7353/3807\nf 3592/7028/3595 3840/7373/3839 3838/7374/3840\nf 3838/7374/3840 3839/7375/3841 3837/7376/3842\nf 3840/7373/3839 3567/7007/3574 3593/7029/3596\nf 3593/7029/3596 3842/7377/3843 3843/7378/3844\nf 3593/7029/3596 3843/7378/3844 3840/7373/3839\nf 3595/7031/3598 3846/7379/3845 3844/7380/3846\nf 3837/7376/3842 3847/7381/3847 3856/7382/3848\nf 3841/7383/3849 3847/7381/3847 3839/7375/3841\nf 3839/7375/3841 3840/7373/3839 3841/7383/3849\nf 3843/7378/3844 3847/7381/3847 3841/7383/3849\nf 3848/7384/3850 3843/7378/3844 3842/7377/3843\nf 3848/7384/3850 3849/7385/3851 3843/7378/3844\nf 3848/7384/3850 3842/7377/3843 3851/7386/3852\nf 3850/7387/3853 3851/7386/3852 3852/7388/3854\nf 3851/7386/3852 3842/7377/3843 3845/7389/3855\nf 3845/7389/3855 3853/7390/3856 3851/7386/3852\nf 3856/7382/3848 3855/7391/3857 3857/7392/3858\nf 3849/7385/3851 3858/7393/3859 3847/7381/3847\nf 3859/7394/3860 3849/7385/3851 3850/7387/3853\nf 3852/7388/3854 3860/7395/3861 3850/7387/3853\nf 3854/7396/3862 3860/7395/3861 3852/7388/3854\nf 3862/7397/3863 3857/7392/3858 3855/7391/3857\nf 3858/7393/3859 3863/7398/3864 3855/7391/3857\nf 3860/7395/3861 3865/7399/3865 3859/7394/3860\nf 3596/7034/3600 3868/7400/3866 3846/7401/3845\nf 3870/7402/3867 3569/7038/3604 3598/7039/3605\nf 3569/7038/3604 3870/7402/3867 3868/7400/3866\nf 3874/7403/3868 3598/7039/3605 3599/7042/3608\nf 3875/7404/3869 3871/7405/3870 3872/7406/3871\nf 3599/7042/3608 3875/7404/3869 3874/7403/3868\nf 3875/7404/3869 3872/7406/3871 3873/7407/3872\nf 3874/7403/3868 3873/7407/3872 3870/7402/3867\nf 3602/7044/3610 3876/7408/3873 3871/7405/3870\nf 3877/7409/3874 3602/7044/3610 3605/7410/3875\nf 3605/7410/3875 3879/7411/3876 3878/7412/3877\nf 3608/7048/3614 3880/7413/3878 3606/7414/3879\nf 3606/7414/3879 3607/7047/3613 3608/7048/3614\nf 3608/7048/3614 3882/7415/3880 3881/7416/3881\nf 3884/7417/3882 3610/7050/3616 3883/7418/3883\nf 3883/7418/3883 3629/7071/3632 3885/7070/3631\nf 3888/7419/3884 3631/7075/3636 3632/7077/3638\nf 3853/7420/3856 3845/7421/3855 3869/7422/3885\nf 3869/7422/3885 3892/7423/3886 3894/7424/3887\nf 3869/7422/3885 3868/7400/3866 3870/7402/3867\nf 3853/7425/3856 3894/7424/3887 3854/7426/3862\nf 3897/7427/3888 3896/7428/3889 3872/7406/3871\nf 3897/7427/3888 3872/7406/3871 3871/7405/3870\nf 3898/7429/3890 3897/7427/3888 3871/7405/3870\nf 3898/7429/3890 3871/7405/3870 3876/7408/3873\nf 3877/7409/3874 3898/7429/3890 3876/7408/3873\nf 3900/7430/3891 3899/7431/3892 3878/7412/3877\nf 3879/7411/3876 3900/7430/3891 3878/7412/3877\nf 3900/7430/3891 3902/7432/3893 3901/7433/3894\nf 3902/7432/3893 3879/7411/3876 3880/7413/3878\nf 3903/7434/3895 3880/7413/3878 3881/7416/3881\nf 3882/7415/3880 3905/7435/3896 3904/7436/3897\nf 3906/7437/3898 3882/7415/3880 3884/7417/3882\nf 3907/7438/3899 3884/7417/3882 3885/7070/3631\nf 3908/7439/3900 3885/7070/3631 3886/7440/3634\nf 3886/7073/3634 3887/7441/3901 3908/7442/3900\nf 3887/7441/3901 3909/7443/3902 3908/7442/3900\nf 3888/7419/3884 3911/7444/3903 3910/7445/3904\nf 3912/7446/3905 3890/7447/3906 3913/7448/3907\nf 3913/7448/3907 3891/7449/3908 3914/7450/3909\nf 3894/7424/3887 3861/7451/3910 3854/7426/3862\nf 3916/7452/3911 3915/7453/3912 3894/7424/3887\nf 3916/7452/3911 3894/7424/3887 3892/7423/3886\nf 3916/7452/3911 3893/7454/3913 3918/7455/3914\nf 3918/7455/3914 3893/7454/3913 3895/7456/3915\nf 3918/7455/3914 3920/7457/3916 3917/7458/3917\nf 3918/7455/3914 3895/7456/3915 3919/7459/3918\nf 3919/7459/3918 3920/7457/3916 3918/7455/3914\nf 3922/7460/3919 3921/7461/3920 3919/7459/3918\nf 3919/7459/3918 3898/7429/3890 3922/7460/3919\nf 3922/7460/3919 3898/7429/3890 3899/7431/3892\nf 3901/7433/3894 3924/7462/3921 3925/7463/3922\nf 3924/7462/3921 3901/7433/3894 3926/7464/3923\nf 3902/7432/3893 3927/7465/3924 3926/7464/3923\nf 3929/7466/3925 3928/7467/3926 3904/7436/3897\nf 3904/7436/3897 3928/7467/3926 3903/7434/3895\nf 3905/7435/3896 3882/7415/3880 3930/7468/3927\nf 3931/7469/3928 3907/7438/3899 3908/7439/3900\nf 3908/7470/3900 3933/7471/3929 3931/7472/3928\nf 3932/7473/3930 3908/7442/3900 3909/7443/3902\nf 3934/7474/3931 3909/7443/3902 3910/7445/3904\nf 3911/7444/3903 3936/7475/3932 3937/7476/3933\nf 3938/7477/3934 3913/7478/3907 3914/7479/3909\nf 3939/7480/3935 3940/7481/3936 3941/7482/3937\nf 3915/7483/3912 3941/7482/3937 3867/7484/3938\nf 3939/7485/3935 3915/7453/3912 3917/7458/3917\nf 3940/7486/3936 3939/7485/3935 3942/7487/3939\nf 3942/7487/3939 3917/7458/3917 3920/7457/3916\nf 3921/7461/3920 3943/7488/3940 3942/7487/3939\nf 3942/7487/3939 3920/7457/3916 3921/7461/3920\nf 3921/7461/3920 3922/7460/3919 3945/7489/3941\nf 3944/7490/3942 3945/7489/3941 3980/7491/3943\nf 3945/7489/3941 3923/7492/3944 3925/7463/3922\nf 3923/7492/3944 3945/7489/3941 3922/7460/3919\nf 3924/7462/3921 3946/7493/3945 3925/7463/3922\nf 3947/7494/3946 3926/7464/3923 3927/7465/3924\nf 3947/7494/3946 3927/7465/3924 3928/7467/3926\nf 3947/7495/3946 3950/7496/3947 3948/7497/3948\nf 3947/7494/3946 3905/7435/3896 3950/7498/3947\nf 3950/7498/3947 3930/7468/3927 3949/7499/3949\nf 3930/7468/3927 3951/7500/3950 3949/7499/3949\nf 3907/7501/3899 3952/7502/3951 3951/7503/3950\nf 3951/7500/3950 3906/7437/3898 3907/7438/3899\nf 3952/7502/3951 3907/7501/3899 3931/7472/3928\nf 3953/7504/3952 3933/7471/3929 3954/7505/3953\nf 3953/7504/3952 3931/7472/3928 3933/7471/3929\nf 3954/7505/3953 3935/7506/3954 3955/7507/3955\nf 3954/7505/3953 3933/7471/3929 3932/7508/3930\nf 3937/7509/3933 3955/7507/3955 3934/7510/3931\nf 3956/7511/3956 3957/7512/3957 3937/7509/3933\nf 3956/7511/3956 3937/7513/3933 3936/7514/3932\nf 3936/7514/3932 3958/7515/3958 3956/7511/3956\nf 3959/7516/3959 3936/7517/3932 3938/7518/3934\nf 3958/7515/3958 3938/7519/3934 3960/7520/3960\nf 3960/7520/3960 3962/7521/3961 3961/7522/3962\nf 3961/7522/3962 3963/7523/3963 3958/7515/3958\nf 3965/7524/3964 3964/7525/3965 3966/7526/3966\nf 3965/7524/3964 3957/7512/3957 3964/7525/3965\nf 3965/7524/3964 3954/7505/3953 3955/7507/3955\nf 3965/7524/3964 3953/7504/3952 3954/7505/3953\nf 3967/7527/3967 3966/7526/3966 3968/7528/3968\nf 3952/7502/3951 3967/7527/3967 3969/7529/3969\nf 3969/7529/3969 3951/7503/3950 3952/7502/3951\nf 3971/7530/3970 3970/7531/3971 3972/7532/3972\nf 3971/7530/3970 3972/7532/3972 3973/7533/3973\nf 3971/7530/3970 3951/7503/3950 3969/7529/3969\nf 3973/7533/3973 3974/7534/3974 3971/7530/3970\nf 3971/7530/3970 3948/7497/3948 3950/7496/3947\nf 3975/7535/3975 3948/7497/3948 3974/7534/3974\nf 3976/7536/3976 3974/7534/3974 3973/7533/3973\nf 3975/7537/3975 3946/7493/3945 3948/7538/3948\nf 3975/7539/3975 3977/7540/3977 3946/7493/3945\nf 3978/7541/3978 3979/7542/3979 3977/7540/3977\nf 3978/7543/3978 3977/7544/3977 3976/7536/3976\nf 3978/7545/3978 3980/7491/3943 3979/7542/3979\nf 3982/7546/3980 3981/7547/3981 3983/7548/3982\nf 3984/7549/3983 3942/7487/3939 3943/7488/3940\nf 3940/7550/3936 3984/7551/3983 3986/7552/3984\nf 3867/7484/3938 3990/7553/3985 3866/7554/3986\nf 3866/7554/3986 3991/7555/3987 3865/7399/3865\nf 3865/7399/3865 3991/7555/3987 3992/7556/3988\nf 3992/7556/3988 3993/7557/3989 3994/7558/3990\nf 3994/7558/3990 3864/7559/3991 3992/7556/3988\nf 3994/7558/3990 3995/7560/3992 3863/7398/3864\nf 3963/7523/3963 3962/7521/3961 3998/7561/3993\nf 3999/7562/3994 3962/7521/3961 5382/7563/3995\nf 4001/7564/3996 3963/7523/3963 4000/7565/3997\nf 4001/7564/3996 3966/7526/3966 3964/7525/3965\nf 4000/7565/3997 4002/7566/3998 4001/7564/3996\nf 4002/7566/3998 3968/7528/3968 3966/7526/3966\nf 4004/7567/3999 4003/7568/4000 4005/7569/4001\nf 4002/7566/3998 3970/7531/3971 3968/7528/3968\nf 4006/7570/4002 4007/7571/4003 4008/7572/4004\nf 4008/7572/4004 3970/7531/3971 4006/7570/4002\nf 4008/7572/4004 4007/7571/4003 4009/7573/4005\nf 4008/7572/4004 3972/7532/3972 3970/7531/3971\nf 3973/7533/3973 3972/7532/3972 4010/7574/4006\nf 4012/7575/4007 3972/7532/3972 4009/7573/4005\nf 4011/7576/4008 4013/7577/4009 4014/7578/4010\nf 4014/7578/4010 3976/7536/3976 4011/7576/4008\nf 4015/7579/4011 4014/7578/4010 4013/7577/4009\nf 4016/7580/4012 3978/7543/3978 4014/7578/4010\nf 3981/7581/3981 4016/7580/4012 4017/7582/4013\nf 4017/7582/4013 3983/7583/3982 3981/7581/3981\nf 4020/7584/4014 3985/7585/4015 3983/7548/3982\nf 4020/7586/4014 3986/7587/3984 3985/7588/4015\nf 4020/7586/4014 4019/7589/4016 4021/7590/4017\nf 4020/7586/4014 4021/7590/4017 3986/7587/3984\nf 3986/7587/3984 3987/7591/4018 3940/7592/3936\nf 3988/7593/4019 4021/7594/4017 4022/7595/4020\nf 3988/7593/4019 3987/7591/4018 3986/7587/3984\nf 3986/7587/3984 4021/7590/4017 3988/7593/4019\nf 3995/7560/3992 4023/7596/4021 3996/7597/4022\nf 3996/7597/4022 3863/7398/3864 3995/7560/3992\nf 3995/7560/3992 3994/7558/3990 4024/7598/4023\nf 4025/7599/4024 4024/7598/4023 4026/7600/4025\nf 4024/7598/4023 4028/7601/4026 4026/7600/4025\nf 4029/7602/4027 4028/7601/4026 4024/7598/4023\nf 4024/7598/4023 3991/7555/3987 4029/7602/4027\nf 4029/7602/4027 3991/7555/3987 3866/7554/3986\nf 4030/7603/4028 4022/7604/4020 4021/7605/4017\nf 4022/7606/4020 4030/7607/4028 4029/7608/4027\nf 4022/7609/4020 3866/7554/3986 3990/7553/3985\nf 4032/7610/4029 4033/7611/4030 4031/7612/4031\nf 4034/7613/4032 4033/7611/4030 4032/7610/4029\nf 4034/7613/4032 4003/7568/4000 4000/7565/3997\nf 4003/7568/4000 4034/7613/4032 4035/7614/4033\nf 4034/7613/4032 4032/7610/4029 4035/7614/4033\nf 4005/7569/4001 4007/7571/4003 4006/7570/4002\nf 4005/7569/4001 4035/7614/4033 4036/7615/4034\nf 4036/7615/4034 4009/7573/4005 4007/7571/4003\nf 4012/7575/4007 4009/7573/4005 4036/7615/4034\nf 4037/7616/4035 4036/7615/4034 4038/7617/4036\nf 4038/7617/4036 4013/7577/4009 4037/7616/4035\nf 4039/7618/4037 4038/7617/4036 4040/7619/4038\nf 4039/7618/4037 4015/7579/4011 4013/7577/4009\nf 4015/7579/4011 4039/7618/4037 4018/7620/4039\nf 4018/7620/4039 4039/7618/4037 4041/7621/4040\nf 4041/7621/4040 4040/7619/4038 4042/7622/4041\nf 4018/7620/4039 4041/7621/4040 4019/7623/4016\nf 4043/7624/4042 4021/7605/4017 4019/7623/4016\nf 4044/7625/4043 4021/7605/4017 4043/7624/4042\nf 4043/7624/4042 4042/7622/4041 4045/7626/4044\nf 4043/7624/4042 4045/7626/4044 4044/7625/4043\nf 4030/7603/4028 4044/7625/4043 4046/7627/4045\nf 4046/7627/4045 4028/7628/4026 4030/7603/4028\nf 4027/7629/4046 4026/7630/4025 4045/7626/4044\nf 4027/7631/4046 4045/7632/4044 4047/7633/4047\nf 4027/7631/4046 4025/7599/4024 4026/7600/4025\nf 4048/7634/4048 4038/7617/4036 4036/7615/4034\nf 4049/7635/4049 4050/7636/4050 4038/7617/4036\nf 4052/7637/4051 4040/7619/4038 4050/7636/4050\nf 4052/7637/4051 4045/7626/4044 4042/7622/4041\nf 4054/7638/4052 4045/7626/4044 4052/7637/4051\nf 4055/7639/4053 4048/7634/4048 4035/7614/4033\nf 4056/7640/4054 4048/7634/4048 4055/7639/4053\nf 4048/7634/4048 4056/7640/4054 4049/7635/4049\nf 4049/7635/4049 4057/7641/4055 4051/7642/4056\nf 4058/7643/4057 4053/7644/4058 4052/7637/4051\nf 4058/7643/4057 4052/7637/4051 4051/7642/4056\nf 3734/7227/3743 3728/7226/3737 3733/7645/3742\nf 4059/7646/4059 3733/7645/3742 4060/7647/4060\nf 4061/7648/4061 4062/7649/4062 3587/7650/4063\nf 4064/7651/4064 3612/7052/3618 3591/7652/4065\nf 4064/7653/4064 4065/7654/4066 3612/7655/3618\nf 3612/7655/3618 4065/7654/4066 3614/7656/3619\nf 4066/7657/4067 3620/7061/3624 3619/7060/3623\nf 4067/7658/4068 3620/7061/3624 4068/7659/4069\nf 4068/7659/4069 3620/7061/3624 4066/7657/4067\nf 3624/7063/3626 4069/7660/4070 4070/7661/4071\nf 4061/7648/4061 3750/7662/4072 4059/7646/4059\nf 4061/7648/4061 4071/7663/4073 4062/7649/4062\nf 3590/7027/3594 4072/7664/4074 4063/7665/4075\nf 3591/7652/4065 4073/7666/4076 4064/7651/4064\nf 4065/7667/4066 4064/7651/4064 4073/7666/4076\nf 3614/7656/3619 4074/7668/4077 3619/7060/3623\nf 4075/7669/4078 4067/7658/4068 4068/7659/4069\nf 4067/7658/4068 4075/7669/4078 4076/7670/4079\nf 4072/7664/4074 4062/7649/4062 4071/7663/4073\nf 4061/7648/4061 3587/7650/4063 3586/7024/3591\nf 4077/7671/4080 4060/7647/4060 3739/7672/4081\nf 4077/7671/4080 4089/7673/4082 4071/7663/4073\nf 4071/7663/4073 4093/7674/4083 4078/7675/4084\nf 4078/7675/4084 4079/7676/4085 4080/7677/4086\nf 4080/7677/4086 4079/7676/4085 4063/7665/4075\nf 4063/7665/4075 4072/7664/4074 4080/7677/4086\nf 4063/7665/4075 4079/7676/4085 4081/7678/4087\nf 4082/7679/4088 4073/7666/4076 4081/7678/4087\nf 4082/7679/4088 4083/7680/4089 4065/7667/4066\nf 4084/7681/4090 4065/7654/4066 4083/7682/4089\nf 4086/7683/4091 4075/7669/4078 4068/7659/4069\nf 4075/7669/4078 4086/7683/4091 4087/7684/4092\nf 4076/7670/4079 4088/7685/4093 4070/7661/4071\nf 4076/7670/4079 4087/7684/4092 4088/7685/4093\nf 4077/7686/4080 3739/7687/4081 3738/7688/4094\nf 3738/7689/4094 4090/7690/4095 4091/7691/4096\nf 4092/7692/4097 4089/7673/4082 4077/7671/4080\nf 4077/7693/4080 3738/7688/4094 4092/7694/4097\nf 4079/7676/4085 4078/7675/4084 4095/7695/4098\nf 4091/7691/4096 4098/7696/4099 4101/7697/4100\nf 4095/7695/4098 4093/7674/4083 4099/7698/4101\nf 4100/7699/4102 4094/7700/4103 4092/7692/4097\nf 4101/7701/4100 4092/7692/4097 4091/7702/4096\nf 4094/7700/4103 4100/7699/4102 4102/7703/4104\nf 4103/7704/4105 4101/7697/4100 4098/7696/4099\nf 4105/7705/4106 4099/7698/4101 4102/7703/4104\nf 4095/7695/4098 4106/7706/4107 4096/7707/4108\nf 4106/7706/4107 4095/7695/4098 4105/7705/4106\nf 4103/7704/4105 4112/7708/4109 4107/7709/4110\nf 4097/7710/4111 4090/7690/4095 4098/7711/4099\nf 3736/7229/3745 4108/7712/4112 4090/7713/4095\nf 4109/7714/4113 4090/7690/4095 4108/7715/4112\nf 4111/7716/4114 4090/7690/4095 4109/7714/4113\nf 4112/7708/4109 4113/7717/4115 4107/7709/4110\nf 4112/7718/4109 4111/7719/4114 4114/7720/4116\nf 4115/7721/4117 4114/7722/4116 4309/7723/4118\nf 4116/7724/4119 4117/7725/4120 4110/7726/4121\nf 4110/7727/4121 4117/7728/4120 4109/7729/4113\nf 4118/7730/4122 4116/7731/4119 3735/7228/3744\nf 3735/7228/3744 3730/7223/3740 4118/7730/4122\nf 4118/7730/4122 3730/7223/3740 3731/7732/4123\nf 4119/7733/4124 4120/7734/4125 4121/7735/4126\nf 4121/7735/4126 4118/7736/4122 4119/7733/4124\nf 4122/7737/4127 3726/7216/3736 4123/7738/4128\nf 3724/7215/3732 4123/7738/4128 3726/7216/3736\nf 3724/7215/3732 4125/7739/4129 4124/7740/4130\nf 4125/7741/4129 3722/7209/3731 4126/7742/4131\nf 4127/7743/4132 3720/7208/3730 3718/7206/3728\nf 4127/7743/4132 3718/7206/3728 3680/7207/3729\nf 4128/7744/4133 4127/7745/4132 3680/7746/3729\nf 3680/7207/3729 3681/7147/3684 4129/7747/4134\nf 4130/7748/4135 4129/7747/4134 3682/7149/3686\nf 3682/7749/3686 3684/7750/4136 4130/7751/4135\nf 4131/7752/4137 3683/7154/3690 4132/7753/4138\nf 3687/7158/3694 4136/7754/4139 4134/7755/4140\nf 4137/7756/4141 3696/7195/3705 4180/7757/4142\nf 4140/7758/4143 4129/7759/4134 4130/7760/4135\nf 4142/7761/4144 4140/7758/4143 4143/7762/4145\nf 4144/7763/4146 4145/7764/4147 4143/7762/4145\nf 4143/7765/4145 4131/7752/4137 4144/7766/4146\nf 4144/7767/4146 4131/7768/4137 4133/7769/4148\nf 4144/7763/4146 4132/7770/4138 4134/7771/4140\nf 4147/7772/4149 4134/7771/4140 4148/7773/4150\nf 4132/7774/4138 4144/7767/4146 4133/7769/4148\nf 4139/7775/4151 4149/7776/4152 4128/7744/4133\nf 4139/7775/4151 4128/7744/4133 4129/7759/4134\nf 4139/7775/4151 4138/7777/4153 4149/7776/4152\nf 4150/7778/4154 4128/7744/4133 4149/7776/4152\nf 4128/7779/4133 4151/7780/4155 4127/7781/4132\nf 4152/7782/4156 4153/7783/4157 4151/7780/4155\nf 4155/7784/4158 4154/7785/4159 4153/7783/4157\nf 4154/7785/4159 4126/7786/4131 3720/7787/3730\nf 4155/7784/4158 4499/7788/4160 4154/7785/4159\nf 3834/7789/4161 4156/7368/3836 3833/7369/3837\nf 4157/7790/4162 4155/7791/4158 4158/7792/4163\nf 4161/7793/4164 4159/7794/4165 4165/7795/4166\nf 4159/7794/4165 4161/7793/4164 4162/7796/4167\nf 4160/7797/4168 4162/7796/4167 4163/7798/4169\nf 4164/7799/4170 4165/7795/4166 4159/7794/4165\nf 4173/7800/4171 4159/7794/4165 4160/7797/4168\nf 4166/7801/4172 4165/7795/4166 4164/7799/4170\nf 4166/7801/4172 4164/7799/4170 4173/7802/4171\nf 4165/7795/4166 4167/7803/4173 4168/7804/4174\nf 4237/7805/4175 4170/7806/4176 4163/7798/4169\nf 4170/7807/4176 4172/7808/4177 4160/7809/4168\nf 4173/7810/4171 4160/7809/4168 4172/7808/4177\nf 4173/7810/4171 4174/7811/4178 4166/7812/4172\nf 3711/7192/3719 4177/7813/4179 3696/7195/3705\nf 4134/7771/4140 4178/7814/4180 4148/7773/4150\nf 4136/7815/4139 4179/7816/4181 4178/7817/4180\nf 4179/7818/4181 4136/7754/4139 4137/7819/4141\nf 4177/7813/4179 4181/7820/4182 4182/7821/4183\nf 4182/7821/4183 4180/7757/4142 4177/7813/4179\nf 4184/7822/4184 3699/7178/3708 3698/7177/3707\nf 4184/7823/4184 4185/7824/4185 3699/7825/3708\nf 4180/7757/4142 4186/7826/4186 4187/7827/4187\nf 4188/7828/4188 4148/7773/4150 4178/7814/4180\nf 4191/7829/4189 4142/7761/4144 4145/7764/4147\nf 4142/7761/4144 4191/7829/4189 4193/7830/4190\nf 4187/7827/4187 4195/7831/4191 4196/7832/4192\nf 4204/7833/4193 4197/7834/4194 4196/7835/4192\nf 4196/7832/4192 4188/7836/4188 4179/7816/4181\nf 4179/7816/4181 4187/7827/4187 4196/7832/4192\nf 4198/7837/4195 4189/7838/4196 4188/7828/4188\nf 4188/7836/4188 4197/7839/4194 4198/7840/4195\nf 4189/7841/4196 4199/7842/4197 4200/7843/4198\nf 4189/7838/4196 4200/7844/4198 4190/7845/4199\nf 4193/7830/4190 4201/7846/4200 4202/7847/4201\nf 4192/7848/4202 4193/7830/4190 4191/7829/4189\nf 4196/7832/4192 4195/7831/4191 4204/7849/4193\nf 4198/7840/4195 4206/7850/4203 4207/7851/4204\nf 4207/7852/4204 4199/7853/4197 4198/7837/4195\nf 4190/7845/4199 4200/7844/4198 4208/7854/4205\nf 4201/7846/4200 4192/7848/4202 4190/7845/4199\nf 4209/7855/4206 4206/7850/4203 4204/7849/4193\nf 4211/7856/4207 3802/7321/3803 3801/7320/3802\nf 4208/7857/4205 4211/7856/4207 3801/7320/3802\nf 4142/7761/4144 4194/7858/4208 4214/7859/4209\nf 4214/7859/4209 4194/7858/4208 4215/7860/4210\nf 4214/7861/4209 4141/7862/4211 4142/7863/4144\nf 4202/7847/4201 4215/7860/4210 4194/7858/4208\nf 4217/7864/4212 4216/7865/4213 3798/7866/3799\nf 4216/7865/4213 4212/7867/4214 4218/7868/4215\nf 4212/7867/4214 4216/7865/4213 4203/7869/4216\nf 4213/7870/3800 4218/7868/4215 4212/7867/4214\nf 4217/7864/4212 3798/7866/3799 3797/7871/3798\nf 3780/7872/3783 4215/7860/4210 4217/7864/4212\nf 3793/7305/3793 4217/7864/4212 3797/7871/3798\nf 4215/7860/4210 3780/7872/3783 3781/7873/4217\nf 4221/7874/4218 4220/7875/4219 4222/7876/4220\nf 4222/7876/4220 4223/7877/4221 4221/7874/4218\nf 3832/7878/3835 4156/7879/3836 4158/7880/4163\nf 4158/7792/4163 4153/7881/4157 3811/7365/3832\nf 4152/7882/4156 4151/7883/4155 3831/7366/3834\nf 3811/7365/3832 4152/7882/4156 3831/7366/3834\nf 4150/7884/4154 3831/7366/3834 4151/7883/4155\nf 3755/7885/4222 4223/7877/4221 4224/7886/4223\nf 3755/7887/4222 3754/7331/3811 4223/7888/4221\nf 3754/7889/3811 3813/7890/3810 4221/7874/4218\nf 4221/7874/4218 3813/7890/3810 3812/7364/3833\nf 4221/7874/4218 3812/7364/3833 3831/7366/3834\nf 4141/7891/4211 4138/7892/4153 4140/7893/4143\nf 4225/7894/4224 4222/7876/4220 4141/7891/4211\nf 4225/7894/4224 4141/7891/4211 4219/7895/4225\nf 4225/7896/4224 4224/7897/4223 4222/7898/4220\nf 4224/7897/4223 4225/7896/4224 3781/7899/4217\nf 3781/7899/4217 3759/7900/3763 4224/7897/4223\nf 4228/7901/4226 4227/7902/4227 4229/7903/4228\nf 4230/7904/4229 4165/7795/4166 4228/7901/4226\nf 4228/7901/4226 4229/7903/4228 4230/7904/4229\nf 4231/7905/4230 4175/7906/4231 4176/7907/4232\nf 4168/7804/4174 4167/7803/4173 4232/7908/4233\nf 4226/7909/4234 4234/7910/4235 4227/7911/4227\nf 4236/7912/4236 4235/7913/4237 4237/7914/4175\nf 4238/7915/4238 4240/7916/4239 4169/7917/4240\nf 4238/7915/4238 4241/7918/4241 4239/7919/4242\nf 4243/7920/4243 4169/7921/4240 4242/7922/4244\nf 4242/7923/4244 4169/7917/4240 4240/7916/4239\nf 4244/7924/4245 4170/7806/4176 4243/7920/4243\nf 4246/7925/4246 4175/7926/4231 4174/7811/4178\nf 4104/7927/4247 4247/7928/4248 4248/7929/4249\nf 4102/7703/4104 4100/7699/4102 4249/7930/4250\nf 4248/7931/4249 4100/7699/4102 4101/7701/4100\nf 4112/7708/4109 4303/7932/4251 4113/7717/4115\nf 4113/7717/4115 4303/7932/4251 4297/7933/4252\nf 4250/7934/4253 4102/7703/4104 4249/7930/4250\nf 4105/7935/4106 4251/7936/4254 4253/7937/4255\nf 4081/7678/4087 4079/7676/4085 4096/7707/4108\nf 4106/7706/4107 4252/7938/4256 4081/7678/4087\nf 4255/7939/4257 4081/7940/4087 4252/7941/4256\nf 4253/7937/4255 4257/7942/4258 4256/7943/4259\nf 4256/7943/4259 4255/7939/4257 4253/7937/4255\nf 4253/7937/4255 4254/7944/4260 4257/7942/4258\nf 4260/7945/4261 4087/7684/4092 4086/7683/4091\nf 4087/7684/4092 4261/7946/4262 4262/7947/4263\nf 4263/7948/4264 4264/7949/4265 4088/7685/4093\nf 4264/7949/4265 4263/7948/4264 4265/7950/4266\nf 4267/7951/4267 4266/7952/4268 4262/7947/4263\nf 4267/7951/4267 4262/7947/4263 4261/7946/4262\nf 4268/7953/4269 4261/7946/4262 4260/7945/4261\nf 4259/7954/4270 4258/7955/4271 4269/7956/4272\nf 4270/7957/4273 4083/7682/4089 4272/7958/4274\nf 4272/7958/4274 4255/7939/4257 4270/7957/4273\nf 4271/7959/4275 4270/7957/4273 4273/7960/4276\nf 4266/7952/4268 4267/7951/4267 4274/7961/4277\nf 4266/7962/4268 4275/7963/4278 4276/7964/4279\nf 4277/7965/4280 4256/7943/4259 4257/7942/4258\nf 4256/7943/4259 4278/7966/4281 4273/7960/4276\nf 4273/7960/4276 4279/7967/4282 4271/7959/4275\nf 4280/7968/4283 4269/7956/4272 4279/7967/4282\nf 4279/7967/4282 4281/7969/4284 4280/7968/4283\nf 4282/7970/4285 4275/7971/4278 4280/7968/4283\nf 4283/7972/4286 4275/7963/4278 4282/7973/4285\nf 4275/7963/4278 4283/7972/4286 4276/7964/4279\nf 4257/7942/4258 4284/7974/4287 4277/7965/4280\nf 4285/7975/4288 4278/7966/4281 4277/7965/4280\nf 4277/7976/4280 4284/7977/4287 4285/7978/4288\nf 4281/7979/4284 4279/7980/4282 4285/7978/4288\nf 4288/7981/4289 4280/7982/4283 4287/7983/4290\nf 4283/7984/4286 4282/7985/4285 4288/7986/4289\nf 4289/7987/4291 4251/7936/4254 4290/7988/4292\nf 4251/7936/4254 4291/7989/4293 4292/7990/4294\nf 4251/7936/4254 4293/7991/4295 4291/7989/4293\nf 4293/7992/4295 4302/7993/4296 4291/7994/4293\nf 4294/7995/4297 4302/7996/4296 4293/7997/4295\nf 4295/7998/4298 4247/7928/4248 4296/7999/4299\nf 4247/7928/4248 4297/7933/4252 4296/7999/4299\nf 4298/8000/4300 4254/7944/4260 4289/7987/4291\nf 4299/8001/4301 3802/7321/3803 4210/8002/4302\nf 4301/8003/4303 4302/7993/4296 4294/8004/4297\nf 4294/8005/4297 4295/8006/4298 4301/8007/4303\nf 4292/7990/4294 4304/8008/4304 4290/7988/4292\nf 4298/8009/4300 4290/8010/4292 4304/8011/4304\nf 4304/8012/4304 4311/8013/4305 4298/8014/4300\nf 4292/7990/4294 4332/8015/4306 4304/8008/4304\nf 4292/8016/4294 4305/8017/4307 4332/8018/4306\nf 4292/8016/4294 4291/7994/4293 4306/8019/4308\nf 4306/8019/4308 4305/8017/4307 4292/8016/4294\nf 4302/7993/4296 4306/8019/4308 4291/7994/4293\nf 4301/8003/4303 4306/8019/4308 4302/7993/4296\nf 4301/8003/4303 4296/8020/4299 4307/8021/4309\nf 4307/8021/4309 4296/8020/4299 4308/8022/4310\nf 4115/7721/4117 4309/7723/4118 4310/8023/4311\nf 4325/8024/4312 4312/8025/4313 4311/8026/4305\nf 4312/8027/4313 4284/8028/4287 4298/8029/4300\nf 4313/8030/4314 4240/7916/4239 4239/7919/4242\nf 4240/8031/4239 4315/8032/4315 4314/8033/4316\nf 4172/8034/4177 4244/7924/4245 4317/8035/4317\nf 4173/7810/4171 4172/7808/4177 4319/8036/4318\nf 4319/8036/4318 4174/7811/4178 4173/7810/4171\nf 4287/7983/4290 4321/8037/4319 4322/8038/4320\nf 4324/8039/4321 4321/8037/4319 4287/7983/4290\nf 4324/8039/4321 4286/8040/4322 4323/8041/4323\nf 4323/8042/4323 4285/8043/4288 4325/8044/4312\nf 4323/8041/4323 4326/8045/4324 4327/8046/4325\nf 4325/8047/4312 4285/8048/4288 4284/8049/4287\nf 4328/8050/4326 4310/8023/4311 4309/7723/4118\nf 4329/8051/4327 4297/7933/4252 4303/7932/4251\nf 4331/8052/4328 4306/8019/4308 4307/8021/4309\nf 4332/8053/4306 4305/8054/4307 4331/8055/4328\nf 4311/8056/4305 4304/8008/4304 4333/8057/4329\nf 4310/8058/4311 4334/8059/4330 4329/8060/4327\nf 4336/8061/4331 4328/8050/4326 4337/8062/4332\nf 4338/8063/4333 4329/8060/4327 4334/8059/4330\nf 4330/8064/4334 4339/8065/4335 4340/8066/4336\nf 4330/8064/4334 4340/8066/4336 4331/8055/4328\nf 4330/8064/4334 4308/8067/4310 4338/8063/4333\nf 4333/8068/4329 4340/8066/4336 4341/8069/4337\nf 4333/8068/4329 4342/8070/4338 4311/8071/4305\nf 4344/8072/4339 4345/8073/4340 4343/8074/4341\nf 4343/8074/4341 4337/8062/4332 4328/8050/4326\nf 4343/8074/4341 4328/8050/4326 4344/8072/4339\nf 4347/8075/4342 4114/8076/4116 4111/8077/4114\nf 4347/8075/4342 4346/8078/4343 4114/8076/4116\nf 4348/8079/4344 4350/8080/4345 4349/8081/4346\nf 4350/8080/4345 4355/8082/4347 4349/8081/4346\nf 4327/8046/4325 4351/8083/4348 4355/8082/4347\nf 4351/8083/4348 4327/8046/4325 4326/8045/4324\nf 4326/8045/4324 4353/8084/4349 4352/8085/4350\nf 4354/8086/4351 4355/8082/4347 4351/8083/4348\nf 4357/8087/4352 4311/8026/4305 4342/8088/4338\nf 4357/8087/4352 4342/8088/4338 4341/8089/4337\nf 4357/8090/4352 4341/8091/4337 4339/8092/4335\nf 4361/8093/4353 3534/8094/3547 3532/6975/3545\nf 3532/6975/3545 3530/6970/3542 4361/8093/4353\nf 4362/8095/4354 3708/7187/3716 3542/8096/3717\nf 3343/8097/3356 4365/8098/4355 4366/8099/4356\nf 3344/8100/3357 4367/8101/4357 3369/8102/3381\nf 4368/8103/4358 4369/8104/4359 4367/8101/4357\nf 3369/8105/3381 4369/8104/4359 3371/8106/4360\nf 4369/8107/4359 4370/8108/4361 4371/8109/4362\nf 4372/8110/4363 4371/8109/4362 4373/8111/4364\nf 4372/8112/4363 3372/8113/3382 3371/8114/4360\nf 4374/8115/4365 3515/8116/4366 3514/6951/3526\nf 4374/8117/4365 3512/8118/3524 4375/8119/4367\nf 4376/8120/4368 4375/8121/4367 3512/8118/3524\nf 4376/8122/4368 3512/6949/3524 3508/6945/3520\nf 3508/6945/3520 4372/8123/4363 4376/8122/4368\nf 4377/8124/4369 4372/8110/4363 4373/8111/4364\nf 4379/8125/4370 3635/7082/3643 3519/6956/3531\nf 4379/8126/4370 4378/8127/4371 4380/8128/4372\nf 4379/8126/4370 4380/8128/4372 4381/8129/4373\nf 4374/8130/4365 4375/8131/4367 4381/8129/4373\nf 4382/8132/4374 4367/8101/4357 4366/8099/4356\nf 4379/8126/4370 4383/8133/4375 3635/8134/3643\nf 4386/8135/4376 4385/8136/4377 4384/8137/4378\nf 4389/8138/4379 4387/8139/4380 4388/8140/4381\nf 4389/8138/4379 4390/8141/4382 5775/8142/4383\nf 4391/8143/4384 4381/8129/4373 4392/8144/4385\nf 4394/8145/4386 4393/8146/4387 4375/8121/4367\nf 4375/8121/4367 4373/8111/4364 4394/8145/4386\nf 4398/8147/4388 4373/8111/4364 4371/8109/4362\nf 4399/8148/4389 4397/8149/4390 4398/8147/4388\nf 4508/8150/4391 4399/8148/4389 4401/8151/4392\nf 4401/8151/4392 4370/8108/4361 4368/8152/4358\nf 4382/8132/4374 4368/8103/4358 4367/8101/4357\nf 4401/8151/4392 4402/8153/4393 4403/8154/4394\nf 4404/8155/4395 4405/8156/4396 4406/8157/4397\nf 4404/8155/4395 4406/8157/4397 4402/8158/4393\nf 4407/8159/4398 4389/8138/4379 4742/8160/4399\nf 4407/8159/4398 4408/8161/4400 4446/8162/4401\nf 4411/8163/4402 4390/8141/4382 4407/8159/4398\nf 4407/8159/4398 4410/8164/4403 4411/8163/4402\nf 4406/8165/4397 4410/8164/4403 4412/8166/4404\nf 4412/8166/4404 4410/8164/4403 4409/8167/4405\nf 4412/8168/4404 4402/8158/4393 4406/8157/4397\nf 4413/8169/4406 4425/8170/4407 4416/8171/4408\nf 4416/8171/4408 4425/8170/4407 4426/8172/4409\nf 4426/8172/4409 4417/8173/4410 4416/8171/4408\nf 4418/8174/4411 4419/8175/4412 4420/8176/4413\nf 4421/8177/4414 4429/8178/4415 4422/8179/4416\nf 4421/8177/4414 4423/8180/4417 4348/8079/4344\nf 4322/8038/4320 4321/8037/4319 4423/8180/4417\nf 4424/8181/4418 4423/8180/4417 4422/8179/4416\nf 4418/8174/4411 4428/8182/4419 4419/8175/4412\nf 4429/8178/4415 4419/8175/4412 4428/8182/4419\nf 4430/8183/4420 4431/8184/4421 4414/8185/4422\nf 4433/8186/4423 4432/8187/4424 4414/8185/4422\nf 4324/8039/4321 4350/8080/4345 4321/8037/4319\nf 4434/8188/4425 4433/8186/4423 4431/8184/4421\nf 4431/8184/4421 4435/8189/4426 4434/8188/4425\nf 4436/8190/4427 4437/8191/4428 4434/8188/4425\nf 4438/8192/4429 4437/8191/4428 4436/8190/4427\nf 4439/8193/4430 4441/8194/4431 4440/8195/4432\nf 4444/8196/4433 4442/8197/4434 4443/8198/4435\nf 4445/8199/4436 4446/8200/4401 4443/8198/4435\nf 4444/8201/4433 4446/8202/4401 4447/8203/4437\nf 4446/8162/4401 4408/8161/4400 4447/8204/4437\nf 4446/8200/4401 4445/8199/4436 4409/8205/4405\nf 4429/8178/4415 5816/8206/4438 4422/8179/4416\nf 4427/8207/4439 4448/8208/4440 4449/8209/4441\nf 4449/8210/4441 4428/8182/4419 4427/8211/4439\nf 4415/8212/4442 4448/8213/4440 4425/8170/4407\nf 4448/8213/4440 4415/8212/4442 4451/8214/4443\nf 4432/8187/4424 4451/8214/4443 4415/8212/4442\nf 4433/8186/4423 4451/8214/4443 4432/8187/4424\nf 4452/8215/4444 4453/8216/4445 4454/8217/4446\nf 4452/8218/4444 4455/8219/4447 4456/8220/4448\nf 4457/8221/4449 4458/8222/4450 4454/8223/4446\nf 4454/8224/4446 4459/8225/4451 4457/8226/4449\nf 4460/8227/4452 4465/8228/4453 4467/8229/4454\nf 4457/8221/4449 4467/8230/4454 4458/8222/4450\nf 4465/8231/4453 4460/8232/4452 4337/8233/4332\nf 4458/8222/4450 4466/8234/4455 4455/8219/4447\nf 4469/8235/4456 4470/8236/4457 4471/8237/4458\nf 4468/8238/4459 4471/8239/4458 4478/8240/4460\nf 4478/8241/4460 4471/8237/4458 4472/8242/4461\nf 4345/8243/4340 4472/8242/4461 4471/8237/4458\nf 4466/8244/4455 4467/8245/4454 4465/8228/4453\nf 4470/8236/4457 4465/8228/4453 4345/8243/4340\nf 4469/8246/4456 4468/8247/4459 4452/8248/4444\nf 4452/8248/4444 4456/8249/4448 4469/8246/4456\nf 4468/8247/4459 4453/8216/4445 4452/8248/4444\nf 4475/8250/4462 4453/8251/4445 4476/8252/4463\nf 4475/8250/4462 4454/8224/4446 4453/8251/4445\nf 4453/8253/4445 4477/8254/4464 4476/8255/4463\nf 4477/8254/4464 4453/8253/4445 4468/8238/4459\nf 4478/8240/4460 4476/8255/4463 4477/8254/4464\nf 4478/8240/4460 4472/8256/4461 4479/8257/4465\nf 4473/8258/4466 4480/8259/4467 4464/8260/4468\nf 4479/8257/4465 4472/8256/4461 4344/8261/4339\nf 4479/8257/4465 4344/8261/4339 4481/8262/4469\nf 4482/8263/4470 4483/8264/4471 4481/8262/4469\nf 4484/8265/4472 4481/8262/4469 4483/8264/4471\nf 4486/8266/4473 4109/7729/4113 4117/7728/4120\nf 4487/8267/4474 4485/8268/4475 4484/8265/4472\nf 4488/8269/4476 4479/8270/4465 4485/8271/4475\nf 4488/8272/4476 4485/8268/4475 4487/8267/4474\nf 4488/8273/4476 4489/8274/4477 4480/8275/4467\nf 4490/8276/4478 4119/7733/4124 4491/8277/4479\nf 4493/8278/4480 4492/8279/4481 4495/8280/4482\nf 4492/8281/4481 4496/8282/4483 4497/8283/4484\nf 4497/8284/4484 4124/7740/4130 4492/8279/4481\nf 4123/8285/4128 4497/8286/4484 4122/8287/4127\nf 4499/8288/4160 4494/8289/4485 4124/7740/4130\nf 4499/7788/4160 4155/7784/4158 4500/8290/4486\nf 4500/8290/4486 4494/8291/4485 4499/7788/4160\nf 4494/8289/4485 4501/8292/4487 4492/8279/4481\nf 4501/8292/4487 4500/8293/4486 4502/8294/4488\nf 4490/8295/4478 4491/8296/4479 4498/8297/4489\nf 4490/8295/4478 4498/8297/4489 4503/8298/4490\nf 4490/8295/4478 4503/8298/4490 4504/8299/4491\nf 4120/8300/4125 4504/8301/4491 4505/8302/4492\nf 3834/8303/4161 4502/8304/4488 4156/8305/3836\nf 4502/8304/4488 3834/8303/4161 4506/8306/4493\nf 3826/7355/3826 3836/8307/4494 3834/8308/4161\nf 4507/8309/4495 4508/8310/4391 4403/8311/4394\nf 4403/8311/4394 4412/8168/4404 4507/8309/4495\nf 4509/8312/4496 4510/8313/4497 4511/8314/4498\nf 4510/8315/4497 4509/8316/4496 4508/8317/4391\nf 4512/8318/4499 4513/8319/4500 4514/8320/4501\nf 4512/8318/4499 4514/8320/4501 4515/8321/4502\nf 4517/8322/4503 4515/8321/4502 4516/8323/4504\nf 4517/8322/4503 4445/8199/4436 4443/8198/4435\nf 4518/8324/4505 4516/8323/4504 4510/8313/4497\nf 4519/8325/4506 4436/8326/4427 4434/8327/4425\nf 4519/8325/4506 4520/8328/4507 4521/8329/4508\nf 4522/8330/4509 4513/8319/4500 4512/8318/4499\nf 4438/8192/4429 4512/8318/4499 4439/8193/4430\nf 4519/8325/4506 4434/8327/4425 4435/8331/4426\nf 4435/8189/4426 4430/8183/4420 4523/8332/4510\nf 4524/8333/4511 4355/8082/4347 4354/8086/4351\nf 4420/8176/4413 4524/8333/4511 4417/8173/4410\nf 4525/8334/4512 4526/8335/4513 4527/8336/4514\nf 4417/8173/4410 4527/8336/4514 4416/8171/4408\nf 4525/8334/4512 4417/8173/4410 4524/8333/4511\nf 4528/8337/4515 4527/8336/4514 4526/8335/4513\nf 4527/8336/4514 4530/8338/4516 4413/8169/4406\nf 4430/8183/4420 4530/8338/4516 4531/8339/4517\nf 4531/8339/4517 4523/8332/4510 4430/8183/4420\nf 4520/8340/4507 4532/8341/4518 4533/8342/4519\nf 4534/8343/4520 4535/8344/4521 4536/8345/4522\nf 4537/8346/4523 4533/8342/4519 4532/8341/4518\nf 4531/8339/4517 4539/8347/4524 4537/8346/4523\nf 4538/8348/4525 4540/8349/4526 4539/8350/4524\nf 4528/8337/4515 4541/8351/4527 4540/8352/4526\nf 4541/8351/4527 4542/8353/4528 4543/8354/4529\nf 4541/8351/4527 4526/8335/4513 4542/8353/4528\nf 4542/8353/4528 4354/8086/4351 4356/8355/4530\nf 4542/8353/4528 4356/8355/4530 4543/8354/4529\nf 4545/8356/4531 4356/8355/4530 4357/8087/4352\nf 4547/8357/4532 4548/8358/4533 4546/8359/4534\nf 4544/8360/4535 4548/8358/4533 4543/8354/4529\nf 4547/8357/4532 4546/8359/4534 4549/8361/4536\nf 4550/8362/4537 4462/8363/4538 4461/8364/4539\nf 4550/8365/4537 4551/8366/4540 4547/8367/4532\nf 4335/8368/4541 4549/8361/4536 4546/8359/4534\nf 4336/8369/4331 4547/8370/4532 4552/8371/4542\nf 4336/8369/4331 4337/8233/4332 4462/8363/4538\nf 4335/8368/4541 4546/8359/4534 4545/8356/4531\nf 4553/8372/4543 4505/8373/4492 4554/8374/4544\nf 4482/8375/4470 4486/8266/4473 4554/8374/4544\nf 4554/8374/4544 4486/8266/4473 4117/7728/4120\nf 4555/8376/4545 4554/8377/4544 4505/8378/4492\nf 4555/8379/4545 4483/8264/4471 4482/8380/4470\nf 4503/8298/4490 4556/8381/4546 4504/8299/4491\nf 4555/8379/4545 4557/8382/4547 4483/8264/4471\nf 4556/8381/4546 4557/8383/4547 4555/8384/4545\nf 4559/8385/4548 4560/8386/4549 4561/8387/4550\nf 4562/8388/4551 4484/8265/4472 4563/8389/4552\nf 4564/8390/4553 4558/8391/4554 4556/8381/4546\nf 4565/8392/4555 4503/8298/4490 4498/8297/4489\nf 4564/8393/4553 4565/8394/4555 4566/8395/4556\nf 4566/8395/4556 4565/8394/4555 4567/8396/4557\nf 4565/8392/4555 4496/8397/4483 4567/8398/4557\nf 4568/8399/4558 4569/8400/4559 4570/8401/4560\nf 4569/8400/4559 4568/8399/4558 4495/8280/4482\nf 4567/8402/4557 4496/8403/4483 4568/8399/4558\nf 4493/8278/4480 4495/8280/4482 4568/8399/4558\nf 4572/8404/4561 4495/8280/4482 4571/8405/4562\nf 4502/8406/4488 4506/8407/4493 4571/8408/4562\nf 4506/8306/4493 3834/8303/4161 3836/8409/4494\nf 4506/8407/4493 4573/8410/4563 4571/8408/4562\nf 4574/8411/4564 4572/8412/4561 4571/8413/4562\nf 4569/8414/4559 4574/8415/4564 4575/8416/4565\nf 4575/8416/4565 4574/8415/4564 4576/8417/4566\nf 4577/8418/4567 4578/8419/4568 4579/8420/4569\nf 4579/8420/4569 4569/8400/4559 4577/8418/4567\nf 4570/8401/4560 4580/8421/4570 4581/8422/4571\nf 4566/8395/4556 4581/8423/4571 4564/8393/4553\nf 3835/8424/3838 4582/8425/4572 3836/8426/4494\nf 3824/7354/3825 4583/8427/4573 3835/8424/3838\nf 4584/8428/4574 3824/7354/3825 3819/7347/3821\nf 4585/8429/4575 3835/8424/3838 4583/8427/4573\nf 4587/8430/4576 3819/7347/3821 3820/7349/3823\nf 4583/8427/4573 4588/8431/4577 4586/8432/4578\nf 4588/8431/4577 4584/8428/4574 4587/8430/4576\nf 4587/8430/4576 3822/8433/4579 4589/8434/4580\nf 4587/8430/4576 3820/7349/3823 3822/8433/4579\nf 4591/8435/4581 3822/8433/4579 4590/8436/4582\nf 4592/8437/4583 4587/8430/4576 4589/8434/4580\nf 4586/8432/4578 4594/8438/4584 4595/8439/4585\nf 4596/8440/4586 4582/8425/4572 4585/8429/4575\nf 4585/8429/4575 4586/8432/4578 4596/8440/4586\nf 4582/8425/4572 4576/8417/4566 4574/8415/4564\nf 4576/8417/4566 4582/8425/4572 4596/8440/4586\nf 4597/8441/4587 4598/8442/4588 4578/8419/4568\nf 4597/8443/4587 4596/8440/4586 4599/8444/4589\nf 4578/8419/4568 4600/8445/4590 4601/8446/4591\nf 4579/8420/4569 4601/8446/4591 4580/8421/4570\nf 4602/8447/4592 4598/8448/4588 4603/8449/4593\nf 4602/8450/4592 4604/8451/4594 4600/8452/4590\nf 4598/8448/4588 4605/8453/4595 4603/8449/4593\nf 4599/8444/4589 4596/8440/4586 4595/8439/4585\nf 4599/8444/4589 4606/8454/4596 4605/8453/4595\nf 4594/8438/4584 4607/8455/4597 4606/8454/4596\nf 4609/8456/4598 4605/8457/4595 4610/8458/4599\nf 4609/8459/4598 4603/8449/4593 4605/8453/4595\nf 4612/8460/4600 4614/8461/4601 4613/8462/4602\nf 4615/8463/4603 4606/8454/4596 4607/8455/4597\nf 4604/8464/4594 4602/8447/4592 4603/8449/4593\nf 4603/8449/4593 4611/8465/4604 4616/8466/4605\nf 4604/8464/4594 4616/8466/4605 4617/8467/4606\nf 4564/8390/4553 4618/8468/4607 4558/8391/4554\nf 4600/8469/4590 4619/8470/4608 4620/8471/4609\nf 4620/8472/4609 4557/8383/4547 4621/8473/4610\nf 4618/8468/4607 4601/8474/4591 4621/8473/4610\nf 4621/8473/4610 4558/8391/4554 4618/8468/4607\nf 4604/8475/4594 4617/8476/4606 4622/8477/4611\nf 4557/8383/4547 4624/8478/4612 4563/8479/4552\nf 4557/8383/4547 4625/8480/4613 4624/8478/4612\nf 4557/8382/4547 4563/8389/4552 4484/8265/4472\nf 4622/8481/4611 4619/8482/4608 4604/8464/4594\nf 4626/8483/4614 4627/8484/4615 4628/8485/4616\nf 4628/8485/4616 4536/8345/4522 4626/8483/4614\nf 4629/8486/4617 4617/8467/4606 4616/8466/4605\nf 4629/8487/4617 4616/8488/4605 4611/8489/4604\nf 4631/8490/4618 4632/8491/4619 4563/8479/4552\nf 4617/8476/4606 4563/8492/4552 4623/8493/4620\nf 4631/8494/4618 4617/8476/4606 4630/8495/4621\nf 4631/8490/4618 4630/8496/4621 4633/8497/4622\nf 4633/8498/4622 4632/8499/4619 4631/8500/4618\nf 4535/8344/4521 4626/8483/4614 4536/8345/4522\nf 4535/8344/4521 4634/8501/4623 4626/8483/4614\nf 4627/8484/4615 4626/8483/4614 4635/8502/4624\nf 4635/8502/4624 4636/8503/4625 4633/8497/4622\nf 4633/8497/4622 4637/8504/4626 4638/8505/4627\nf 4635/8502/4624 4633/8497/4622 4627/8484/4615\nf 4563/8479/4552 4632/8491/4619 4639/8506/4628\nf 4562/8507/4551 4639/8506/4628 4560/8508/4549\nf 4563/8492/4552 4624/8509/4612 4623/8493/4620\nf 4639/8506/4628 4638/8505/4627 4640/8510/4629\nf 4550/8511/4537 4641/8512/4630 4551/8513/4540\nf 4641/8512/4630 4489/8514/4477 4551/8513/4540\nf 4489/8514/4477 4561/8515/4550 4560/8516/4549\nf 4561/8515/4550 4489/8514/4477 4488/8517/4476\nf 4642/8518/4631 4560/8508/4549 4640/8510/4629\nf 4643/8519/4632 4535/8344/4521 4537/8346/4523\nf 4643/8519/4632 4636/8503/4625 4634/8501/4623\nf 4643/8519/4632 4540/8352/4526 4636/8503/4625\nf 4540/8352/4526 4541/8351/4527 4636/8503/4625\nf 4548/8358/4533 4551/8520/4540 4642/8518/4631\nf 4642/8518/4631 4637/8504/4626 4548/8358/4533\nf 4593/8521/4633 4644/8522/4634 4608/8523/4635\nf 4589/8524/4580 4644/8522/4634 4593/8521/4633\nf 4644/8522/4634 4589/8525/4580 4591/8526/4581\nf 4647/8527/4636 4645/8528/4637 4608/8523/4635\nf 4649/8529/4638 4648/8530/4639 4650/8531/4640\nf 4647/8527/4636 4608/8523/4635 4644/8522/4634\nf 4651/8532/4641 4644/8522/4634 4591/8526/4581\nf 4651/8532/4641 4652/8533/4642 4647/8527/4636\nf 4653/8534/4643 4591/8435/4581 4646/8535/4644\nf 4646/8535/4644 4590/8436/4582 4654/8536/4645\nf 4300/8537/4646 3800/8538/3817 4655/8539/4647\nf 4654/8536/4645 3821/7352/3824 4300/8537/4646\nf 4657/8540/4648 4656/8541/4649 4210/8542/4302\nf 4656/8543/4649 4654/8536/4645 4655/8539/4647\nf 4658/8544/4650 4646/8535/4644 4654/8536/4645\nf 4658/8545/4650 4659/8546/4651 4660/8547/4652\nf 4658/8545/4650 4654/8548/4645 4659/8546/4651\nf 4659/8549/4651 4654/8550/4645 4657/8551/4648\nf 4209/7855/4206 4661/8552/4653 4659/8546/4651\nf 4661/8552/4653 4660/8547/4652 4659/8546/4651\nf 4660/8547/4652 4653/8553/4643 4658/8545/4650\nf 4195/7831/4191 4663/8554/4654 4661/8552/4653\nf 4663/8554/4654 4195/7831/4191 4187/7827/4187\nf 4664/8555/4655 4187/7827/4187 4186/7826/4186\nf 4665/8556/4656 4661/8552/4653 4663/8554/4654\nf 4665/8556/4656 4666/8557/4657 4667/8558/4658\nf 4182/7821/4183 4181/7820/4182 4186/7826/4186\nf 4669/8559/4659 4668/8560/4660 4670/8561/4661\nf 4670/8562/4661 4183/8563/4662 4671/8564/4663\nf 4185/8565/4185 4671/8564/4663 4183/8563/4662\nf 4185/8566/4185 4184/7822/4184 4672/8567/4664\nf 4521/8568/4508 4534/8343/4520 4673/8569/4665\nf 4521/8570/4508 4674/8571/4666 4513/8572/4500\nf 4513/8572/4500 4674/8571/4666 4675/8573/4667\nf 4677/8574/4668 4678/8575/4669 4675/8573/4667\nf 4679/8576/4670 4674/8577/4666 4673/8569/4665\nf 4609/8459/4598 4536/8345/4522 4628/8485/4616\nf 4609/8578/4598 4610/8579/4599 4680/8580/4671\nf 4680/8581/4671 4610/8582/4599 4612/8460/4600\nf 4681/8583/4672 4676/8584/4673 4679/8585/4670\nf 4679/8576/4670 4680/8581/4671 4681/8586/4672\nf 4681/8586/4672 4612/8460/4600 4613/8462/4602\nf 4681/8587/4672 4682/8588/4674 4676/8589/4673\nf 4682/8590/4674 4613/8462/4602 4614/8461/4601\nf 4677/8574/4668 4683/8591/4675 4684/8592/4676\nf 4683/8593/4675 4676/8589/4673 4682/8588/4674\nf 4615/8594/4603 4608/8595/4635 4684/8592/4676\nf 4608/8595/4635 4615/8594/4603 4607/8596/4597\nf 4686/8597/4677 4685/8598/4678 4687/8599/4679\nf 4688/8600/4680 4687/8599/4679 4685/8598/4678\nf 4678/8575/4669 4685/8598/4678 4675/8573/4667\nf 4678/8575/4669 4650/8601/4640 4688/8600/4680\nf 4691/8602/4681 4690/8603/4682 4692/8604/4683\nf 4689/8605/4684 4690/8603/4682 4694/8606/4685\nf 4511/8314/4498 4695/8607/4686 4696/8608/4687\nf 4691/8602/4681 4695/8609/4686 4693/8610/4688\nf 4695/8609/4686 4516/8611/4504 4697/8612/4689\nf 4695/8609/4686 4697/8612/4689 4693/8610/4688\nf 4697/8613/4689 4515/8321/4502 4698/8614/4690\nf 4686/8615/4677 4515/8321/4502 4514/8320/4501\nf 4686/8616/4677 4699/8617/4691 4698/8618/4690\nf 4698/8618/4690 4699/8617/4691 4693/8610/4688\nf 4518/8324/4505 4409/8205/4405 4445/8199/4436\nf 4507/8309/4495 4510/8313/4497 4508/8310/4391\nf 4700/8619/4692 4237/7914/4175 4694/8606/4685\nf 4700/8620/4692 4702/8621/4693 4236/8622/4236\nf 4703/8623/4694 4238/7915/4238 4236/7912/4236\nf 4704/8624/4695 4701/8625/4696 4705/8626/4697\nf 4705/8626/4697 4694/8606/4685 4690/8603/4682\nf 4705/8626/4697 4706/8627/4698 4704/8624/4695\nf 4707/8628/4699 4702/8629/4693 4704/8624/4695\nf 4707/8628/4699 4704/8624/4695 4706/8627/4698\nf 4707/8628/4699 4703/8623/4694 4702/8629/4693\nf 4708/8630/4700 4693/8610/4688 4699/8617/4691\nf 4710/8631/4701 4648/8530/4639 4647/8527/4636\nf 4647/8527/4636 4709/8632/4702 4710/8631/4701\nf 4710/8631/4701 4650/8531/4640 4648/8530/4639\nf 4709/8632/4702 4647/8527/4636 4652/8533/4642\nf 4709/8632/4702 4652/8533/4642 4653/8553/4643\nf 4660/8547/4652 4712/8633/4703 4709/8632/4702\nf 4660/8547/4652 4709/8632/4702 4653/8553/4643\nf 4713/8634/4704 4662/8635/4705 4714/8636/4706\nf 4713/8634/4704 4714/8636/4706 4715/8637/4707\nf 4713/8634/4704 4710/8631/4701 4712/8633/4703\nf 4716/8638/4708 4717/8639/4709 4711/8640/4710\nf 4711/8641/4710 4710/8631/4701 4716/8642/4708\nf 4688/8600/4680 4718/8643/4711 4687/8599/4679\nf 4717/8639/4709 4650/8601/4640 4711/8640/4710\nf 4714/8636/4706 4662/8635/4705 4665/8556/4656\nf 4665/8556/4656 4667/8558/4658 4714/8636/4706\nf 4167/8644/4173 4719/8645/4712 4720/8646/4713\nf 4721/8647/4714 4167/8644/4173 4720/8646/4713\nf 4722/8648/4715 4719/8645/4712 4167/8644/4173\nf 4233/8649/4716 4723/8650/4717 4234/7910/4235\nf 4724/8651/4718 4232/8652/4233 4725/8653/4719\nf 4232/8652/4233 4724/8651/4718 4233/8654/4716\nf 4724/8655/4718 4726/8656/4720 4723/8657/4717\nf 4723/8658/4717 4726/8659/4720 4234/8660/4235\nf 4234/8660/4235 4726/8659/4720 4727/8661/4721\nf 4234/8662/4235 4727/8663/4721 4227/8664/4227\nf 4391/8143/4384 4387/8665/4380 4386/8666/4376\nf 4165/7795/4166 4230/7904/4229 4728/8667/4722\nf 4728/8667/4722 4161/7793/4164 4165/7795/4166\nf 4161/8668/4164 4728/8669/4722 4729/8670/4723\nf 4696/8671/4687 4397/8149/4390 4400/8672/4724\nf 4730/8673/4725 4692/8604/4683 4690/8603/4682\nf 4171/8674/4726 4163/7798/4169 4162/7796/4167\nf 4162/7796/4167 4733/8675/4727 4731/8676/4728\nf 4732/8677/4729 4161/7793/4164 4729/8678/4723\nf 4734/8679/4730 4395/8680/4731 4396/8681/4732\nf 4734/8679/4730 4396/8681/4732 4689/8605/4684\nf 4731/8682/4728 4694/8606/4685 4237/7914/4175\nf 4735/8683/4733 4731/8676/4728 4733/8675/4727\nf 4735/8684/4733 4393/8685/4387 4394/8686/4386\nf 4736/8687/4734 4733/8675/4727 4732/8677/4729\nf 4736/8687/4734 4732/8677/4729 4729/8678/4723\nf 4736/8688/4734 4393/8685/4387 4733/8689/4727\nf 4391/8690/4384 4737/8691/4735 4738/8692/4736\nf 4739/8693/4737 4737/8691/4735 4729/8694/4723\nf 4738/8692/4736 4387/8695/4380 4391/8690/4384\nf 4392/8696/4385 4736/8697/4734 4737/8698/4735\nf 4740/8699/4738 4741/8700/4739 4742/8701/4399\nf 4742/8160/4399 4388/8140/4381 4740/8702/4738\nf 4740/8703/4738 4388/8140/4381 4387/8139/4380\nf 4742/8701/4399 4741/8700/4739 4743/8704/4740\nf 4742/8160/4399 4743/8705/4740 4408/8161/4400\nf 4744/8706/4741 4739/8693/4737 4729/8694/4723\nf 4739/8693/4737 4741/8700/4739 4740/8699/4738\nf 4743/8705/4740 4447/8204/4437 4408/8161/4400\nf 3346/6686/3358 3342/6683/3355 3363/6705/3374\nf 3540/8707/3552 3708/7187/3716 4362/8095/4354\nf 4722/8708/4715 4745/8709/4742 4746/8710/4743\nf 4745/8711/4742 3538/8712/3550 3535/8713/3549\nf 4745/8714/4742 4747/8715/4744 3538/8716/3550\nf 4747/8717/4744 4748/8718/4745 4749/8719/4746\nf 4748/8720/4745 4246/8721/4246 4749/8722/4746\nf 3708/7187/3716 4749/8719/4746 4246/8723/4246\nf 4245/8724/4747 3708/7187/3716 4246/8723/4246\nf 4319/8725/4318 3706/7183/3713 3708/7187/3716\nf 4319/8725/4318 3708/7187/3716 4245/8724/4747\nf 4320/8726/4748 4319/8727/4318 4317/8728/4317\nf 4320/8729/4748 4316/8730/4749 3704/7181/3711\nf 4361/8093/4353 4750/8731/4750 4719/8645/4712\nf 4750/8731/4750 4720/8646/4713 4719/8645/4712\nf 4751/8732/4751 4752/8733/4752 4359/8734/4753\nf 4725/8653/4719 3531/6972/3544 4360/8735/4754\nf 4753/8736/4755 3531/6972/3544 4721/8647/4714\nf 4750/8731/4750 4753/8736/4755 4720/8737/4713\nf 3701/7179/3709 3704/7181/3711 4318/8738/4756\nf 4315/8032/4315 4240/8031/4239 4672/8567/4664\nf 4754/8739/4757 4313/8740/4314 4241/8741/4241\nf 4754/8742/4757 4672/8743/4664 4313/8744/4314\nf 4754/8742/4757 4241/8745/4241 4755/8746/4758\nf 4671/8564/4663 4755/8746/4758 4667/8558/4658\nf 4756/8747/4759 4667/8748/4658 4755/8749/4758\nf 4755/8749/4758 4241/8750/4241 4756/8747/4759\nf 4756/8747/4759 4715/8751/4707 4667/8748/4658\nf 4757/8752/4760 4715/8751/4707 4703/8753/4694\nf 4757/8752/4760 4703/8753/4694 4707/8754/4699\nf 4757/8752/4760 4717/8639/4709 4716/8638/4708\nf 4757/8752/4760 4718/8643/4711 4717/8639/4709\nf 4718/8643/4711 4706/8755/4698 4708/8756/4700\nf 3582/7021/3588 3749/7238/3754 3734/7227/3743\nf 4758/8757/4761 4663/8554/4654 4664/8555/4655\nf 4758/8757/4761 4669/8758/4659 4670/8562/4661\nf 4758/8757/4761 4667/8558/4658 4666/8557/4657\nf 4299/8759/4301 4210/8760/4302 4656/8761/4649\nf 4299/8759/4301 4656/8761/4649 3800/8762/3817\nf 4465/8228/4453 4337/8763/4332 4345/8243/4340\nf 4454/8224/4446 4475/8250/4462 4459/8225/4451\nf 4475/8764/4462 4476/8255/4463 4473/8765/4466\nf 4759/8766/4762 4406/8165/4397 4405/8767/4396\nf 4751/8732/4751 4760/8768/4763 4724/8651/4718\nf 4760/8768/4763 3524/8769/3537 4358/8770/4764\nf 3636/7083/3644 3635/7082/3643 4384/8771/4378\nf 3301/8772/4765 4363/8773/4766 4364/8774/4767\nf 4411/8163/4402 4410/8164/4403 4759/8766/4762\nf 4762/8775/4768 4764/8776/4769 4765/8777/4770\nf 4765/8778/4770 4766/8779/4771 4762/8780/4768\nf 4767/8781/4772 4768/8782/4773 4769/8783/4774\nf 4768/8782/4773 4771/8784/4775 4769/8783/4774\nf 4773/8785/4776 4771/8784/4775 4768/8782/4773\nf 4774/8786/4777 4768/8782/4773 4772/8787/4778\nf 4773/8785/4776 4775/8788/4779 4777/8789/4780\nf 4776/8790/4781 4778/8791/4782 4775/8788/4779\nf 4775/8788/4779 4778/8791/4782 4777/8789/4780\nf 4779/8792/4783 4780/8793/4784 4778/8794/4782\nf 4779/8792/4783 4782/8795/4785 4780/8793/4784\nf 4781/8796/4786 4784/8797/4787 4782/8795/4785\nf 4785/8798/4788 4786/8799/4789 4810/8800/4790\nf 4810/8800/4790 4787/8801/4791 4788/8802/4792\nf 4786/8799/4789 4789/8803/4793 4787/8801/4791\nf 4791/8804/4794 4792/8805/4795 4789/8803/4793\nf 4789/8803/4793 4786/8799/4789 4791/8804/4794\nf 4791/8804/4794 4786/8799/4789 4790/8806/4796\nf 4781/8796/4786 4783/8807/4797 4784/8797/4787\nf 4793/8808/4798 4783/8807/4797 4794/8809/4799\nf 4793/8810/4798 4796/8811/4800 4795/8812/4801\nf 3299/8813/3316 3335/8814/3348 4765/8815/4770\nf 4802/8816/4802 4768/8817/4773 4767/8818/4772\nf 4767/8818/4772 4766/8819/4771 4802/8816/4802\nf 4802/8816/4802 3335/6670/3348 3336/6669/3347\nf 4768/8817/4773 4802/8816/4802 4772/8820/4778\nf 4804/8821/4803 4799/8822/4804 4803/8823/4805\nf 4798/8824/4806 4804/8825/4803 4803/8826/4805\nf 4801/8827/4807 3299/8828/3316 4765/8777/4770\nf 4807/8829/4808 4806/8830/4809 4808/8831/4810\nf 4806/8830/4809 4807/8829/4808 4801/8832/4807\nf 4809/8833/4811 4764/8834/4769 4810/8800/4790\nf 4810/8800/4790 4788/8802/4792 4809/8833/4811\nf 4790/8806/4796 4813/8835/4812 4791/8804/4794\nf 4817/8836/4813 4814/8837/4814 4818/8838/4815\nf 4817/8836/4813 4812/8839/4816 4813/8835/4812\nf 4816/8840/4817 4815/8841/4818 4817/8842/4813\nf 4816/8840/4817 4819/8843/4819 4821/8844/4820\nf 4819/8845/4819 4822/8846/4821 4823/8847/4822\nf 4823/8847/4822 4821/8848/4820 4819/8845/4819\nf 4824/8849/4823 4799/8850/4804 4822/8846/4821\nf 4825/8851/4824 4809/8833/4811 4788/8802/4792\nf 4826/8852/4825 4788/8802/4792 4787/8801/4791\nf 4829/8853/4826 4827/8854/4827 4826/8852/4825\nf 4826/8852/4825 4828/8855/4828 4829/8853/4826\nf 4808/8856/4810 4806/8857/4809 4825/8851/4824\nf 4832/8858/4829 4825/8851/4824 4827/8854/4827\nf 4832/8859/4829 4833/8860/4830 4831/8861/4831\nf 4832/8862/4829 4830/8863/4832 4834/8864/4833\nf 4834/8865/4833 4833/8860/4830 4832/8859/4829\nf 4802/8816/4802 3338/8866/4834 3373/6996/3563\nf 4772/8820/4778 5016/8867/4835 4774/8868/4777\nf 5016/8867/4835 4776/8869/4781 4774/8868/4777\nf 4776/8869/4781 5011/8870/4836 4835/8871/4837\nf 4835/8871/4837 4779/8792/4783 4776/8869/4781\nf 4837/8872/4838 4783/8807/4797 4781/8796/4786\nf 4797/8873/4839 4796/8811/4800 4839/8874/4840\nf 4839/8874/4840 4840/8875/4841 4797/8873/4839\nf 4797/8873/4839 4841/8876/4842 4804/8825/4803\nf 4777/8789/4780 4842/8877/4843 4771/8784/4775\nf 4771/8784/4775 4773/8785/4776 4777/8789/4780\nf 4771/8784/4775 4842/8877/4843 4843/8878/4844\nf 4763/8879/4845 4844/8880/4846 4764/8881/4769\nf 4770/8882/4847 4769/8783/4774 4845/8883/4848\nf 4784/8884/4787 4873/8885/4849 4846/8886/4850\nf 4795/8812/4801 4847/8887/4851 4793/8810/4798\nf 4798/8824/4806 4848/8888/4852 4795/8812/4801\nf 4848/8889/4852 4798/8890/4806 4849/8891/4853\nf 4798/8890/4806 4850/8892/4854 4849/8891/4853\nf 4805/8893/4855 4851/8894/4856 4850/8892/4854\nf 4800/8895/4857 4824/8849/4823 4852/8896/4858\nf 4819/8845/4819 4853/8897/4859 4867/8898/4860\nf 4867/8898/4860 4824/8849/4823 4819/8845/4819\nf 4855/8899/4861 4819/8845/4819 4818/8838/4815\nf 4855/8899/4861 4818/8838/4815 4856/8900/4862\nf 4856/8900/4862 4818/8838/4815 4814/8837/4814\nf 4857/8901/4863 4814/8837/4814 4790/8806/4796\nf 4857/8901/4863 4790/8806/4796 4786/8799/4789\nf 4858/8902/4864 4786/8799/4789 4785/8798/4788\nf 4764/8881/4769 4844/8880/4846 4811/8903/4865\nf 4860/8904/4866 4859/8905/4867 4811/8906/4865\nf 4811/8906/4865 4861/8907/4868 4860/8904/4866\nf 4855/8908/4861 4856/8909/4862 4865/8910/4869\nf 4855/8899/4861 4866/8911/4870 4854/8912/4871\nf 4824/8849/4823 4868/8913/4872 4852/8896/4858\nf 4777/8789/4780 4870/8914/4873 4842/8877/4843\nf 4778/8791/4782 4780/8915/4784 4870/8914/4873\nf 4782/8916/4785 4846/8886/4850 4872/8917/4874\nf 4875/8918/4875 4847/8919/4851 4848/8889/4852\nf 4876/8920/4876 4769/8783/4774 4843/8878/4844\nf 4878/8921/4877 4763/8879/4845 4845/8922/4848\nf 4861/8923/4868 4811/8903/4865 4844/8880/4846\nf 4842/8924/4843 4880/8925/4878 4879/8926/4879\nf 4871/8927/4880 4882/8928/4881 4881/8929/4882\nf 4846/8886/4850 4883/8930/4883 4882/8928/4881\nf 4883/8930/4883 4873/8885/4849 4874/8931/4884\nf 4884/8932/4885 4883/8930/4883 4874/8931/4884\nf 4886/8933/4886 4887/8934/4887 4888/8935/4888\nf 4889/8936/4889 4885/8937/4890 4849/8938/4853\nf 4850/8939/4854 4890/8940/4891 4889/8941/4889\nf 4852/8942/4858 4868/8943/4872 4851/8944/4856\nf 4851/8945/4856 4868/8946/4872 4891/8947/4892\nf 4892/8948/4893 4876/8920/4876 4843/8878/4844\nf 4877/8949/4894 4876/8950/4876 4893/8951/4895\nf 4892/8948/4893 4843/8878/4844 4879/8952/4879\nf 4860/8904/4866 4949/8953/4896 4862/8954/4897\nf 4896/8955/4898 4863/8956/4899 4922/8957/4900\nf 4879/8952/4879 4897/8958/4901 4892/8948/4893\nf 4897/8958/4901 4879/8952/4879 4880/8959/4878\nf 4898/8960/4902 4880/8961/4878 4881/8929/4882\nf 4899/8962/4903 4882/8928/4881 4883/8930/4883\nf 4881/8929/4882 4900/8963/4904 4898/8960/4902\nf 4899/8962/4903 4883/8930/4883 4884/8932/4885\nf 4901/8964/4905 4900/8963/4904 4899/8962/4903\nf 4902/8965/4906 4884/8932/4885 4888/8966/4888\nf 4903/8967/4907 4904/8968/4908 4887/8969/4887\nf 4903/8970/4907 4886/8933/4886 4889/8936/4889\nf 4905/8971/4909 4867/8898/4860 4854/8912/4871\nf 4854/8972/4871 4866/8973/4870 4905/8974/4909\nf 4866/8911/4870 4865/8975/4869 4906/8976/4910\nf 4864/8977/4911 4863/8956/4899 4896/8955/4898\nf 4907/8978/4912 4877/8949/4894 4893/8951/4895\nf 4893/8951/4895 4876/8950/4876 4908/8979/4913\nf 4908/8980/4913 4876/8920/4876 4910/8981/4914\nf 4910/8981/4914 4876/8920/4876 4892/8948/4893\nf 4892/8948/4893 4912/8982/4915 4910/8981/4914\nf 4898/8983/4902 4912/8984/4915 4897/8985/4901\nf 4913/8986/4916 4898/8960/4902 4900/8963/4904\nf 4901/8964/4905 4914/8987/4917 4900/8963/4904\nf 4917/8988/4918 4902/8965/4906 4888/8966/4888\nf 4917/8988/4918 4888/8966/4888 4887/8969/4887\nf 4917/8988/4918 4916/8989/4919 4915/8990/4920\nf 4918/8991/4921 4917/8988/4918 4904/8968/4908\nf 4904/8992/4908 4919/8993/4922 4918/8994/4921\nf 4920/8995/4923 4949/8996/4896 4921/8997/4924\nf 4922/8957/4900 4862/8954/4897 4949/8953/4896\nf 4863/8956/4899 4862/8954/4897 4922/8957/4900\nf 4895/8998/4925 4894/8999/4926 4921/9000/4924\nf 4923/9001/4927 4896/8955/4898 4922/8957/4900\nf 4923/9001/4927 4906/9002/4910 4896/8955/4898\nf 4923/9003/4927 4924/9004/4928 4905/8971/4909\nf 4906/9005/4910 4905/9006/4909 4866/9007/4870\nf 4925/9008/4929 4926/9009/4930 4869/9010/4931\nf 4925/9011/4929 4869/9012/4931 4867/8898/4860\nf 4867/8898/4860 4905/8971/4909 4925/9011/4929\nf 4869/9012/4931 4927/9013/4932 4929/9014/4933\nf 4869/9012/4931 4926/9015/4930 4928/9016/4934\nf 4930/9017/4935 4890/9018/4891 4891/9019/4892\nf 4932/9020/4936 4933/9021/4937 4918/9022/4921\nf 4933/9023/4937 4916/8989/4919 4917/8988/4918\nf 4916/9024/4919 4938/9025/4938 4936/9026/4939\nf 4916/9024/4919 4936/9026/4939 4914/9027/4917\nf 4937/9028/4940 4914/9029/4917 4938/9030/4938\nf 4938/9031/4938 4914/8987/4917 4936/9032/4939\nf 4939/9033/4941 4914/9034/4917 4937/9028/4940\nf 4919/9035/4922 4903/8970/4907 4889/8936/4889\nf 4939/9033/4941 4941/9036/4942 4942/9037/4943\nf 4913/9038/4916 4941/9036/4942 4912/8984/4915\nf 4942/9039/4943 4913/9040/4916 4940/9041/4944\nf 4911/9042/4945 4912/8982/4915 4941/9043/4942\nf 4907/8978/4912 4943/9044/4946 4944/9045/4947\nf 4944/9046/4947 4909/9047/4948 4907/9048/4912\nf 4946/9049/4949 4909/9050/4948 4945/9051/4950\nf 4909/9050/4948 4946/9049/4949 4920/9052/4923\nf 4948/9053/4951 4922/9054/4900 4949/8996/4896\nf 4950/9055/4952 4923/9056/4927 4922/9054/4900\nf 4950/9055/4952 4948/9053/4951 4951/9057/4953\nf 4924/9004/4928 4923/9003/4927 4952/9058/4954\nf 4952/9058/4954 4953/9059/4955 4924/9004/4928\nf 4925/9011/4929 4924/9004/4928 4953/9059/4955\nf 4925/9011/4929 4928/9016/4934 4926/9015/4930\nf 4927/9013/4932 4930/9017/4935 4929/9014/4933\nf 4938/9060/4938 4934/9061/4956 4955/9062/4957\nf 4939/9033/4941 4937/9028/4940 4956/9063/4958\nf 4956/9063/4958 4938/9030/4938 4955/9064/4957\nf 4957/9065/4959 4939/9033/4941 4956/9063/4958\nf 4941/9036/4942 4967/9066/4960 4958/9067/4961\nf 4958/9067/4961 4911/9068/4945 4941/9036/4942\nf 4945/9069/4950 4960/9070/4962 4961/9071/4963\nf 4948/9053/4951 4947/9072/4964 4962/9073/4965\nf 4951/9057/4953 4963/9074/4966 4952/9058/4954\nf 4951/9057/4953 4962/9073/4965 4963/9074/4966\nf 4953/9075/4955 4952/9058/4954 4963/9074/4966\nf 4953/9076/4955 4963/9077/4966 4964/9078/4967\nf 4953/9076/4955 4964/9078/4967 4927/9079/4932\nf 4931/9080/4968 4965/9081/4969 4932/9082/4936\nf 4966/9083/4970 4956/9084/4958 4955/9085/4957\nf 4959/9086/4971 4958/9067/4961 4968/9087/4972\nf 4960/9070/4962 4959/9088/4971 4969/9089/4973\nf 4964/9090/4967 4963/9074/4966 4971/9091/4974\nf 4965/9092/4969 4964/9090/4967 4970/9093/4975\nf 4970/9093/4975 4964/9090/4967 4971/9091/4974\nf 4965/9081/4969 4970/9094/4975 4969/9095/4973\nf 4969/9089/4973 4959/9088/4971 4968/9096/4972\nf 4965/9097/4969 4969/9089/4973 4954/9098/4976\nf 4972/9099/4977 4834/8864/4833 4830/8863/4832\nf 4972/9099/4977 4973/9100/4978 4974/9101/4979\nf 4974/9101/4979 4976/9102/4980 4977/9103/4981\nf 4976/9102/4980 4978/9104/4982 4977/9103/4981\nf 4979/9105/4983 4980/9106/4984 4981/9107/4985\nf 4981/9108/4985 4982/9109/4986 4979/9110/4983\nf 4983/9111/4987 4984/9112/3535 3634/9113/3642\nf 3523/6961/3536 4985/9114/4988 4986/9115/4989\nf 4985/9114/4988 4988/9116/4990 4987/9117/4991\nf 4988/9118/4990 4990/9119/4992 4987/9120/4991\nf 4990/9121/4992 4991/9122/4993 4989/9123/4994\nf 4989/9124/4994 4992/9125/4995 4993/9126/4996\nf 4989/9123/4994 4994/9127/4997 4992/9128/4995\nf 4989/9123/4994 4991/9122/4993 4994/9127/4997\nf 4996/9129/4998 4999/9130/4999 4997/9131/5000\nf 5002/9132/5001 5001/9133/5002 5003/9134/5003\nf 5003/9135/5003 5004/9136/5004 5002/9137/5001\nf 4985/9114/4988 5005/9138/5005 4988/9116/4990\nf 4991/9122/4993 4988/9116/4990 5005/9138/5005\nf 4999/9130/4999 4995/9139/5006 5142/9140/5007\nf 4794/9141/4799 5008/9142/5008 4839/8874/4840\nf 4839/8874/4840 5008/9142/5008 5009/9143/5009\nf 5010/9144/5010 4836/9145/5011 4835/8871/4837\nf 4835/8871/4837 4836/9145/5011 4779/8792/4783\nf 5010/9144/5010 4835/8871/4837 5011/8870/4836\nf 5010/9144/5010 5013/9146/5012 5014/9147/5013\nf 5015/9148/5014 5013/9146/5012 5016/8867/4835\nf 5017/9149/5015 5016/8867/4835 5012/9150/5016\nf 3373/6996/3563 5017/9149/5015 5012/9150/5016\nf 5018/9151/5017 4838/9152/5018 4837/8872/4838\nf 4838/9153/5018 5018/9154/5017 5008/9142/5008\nf 5008/9142/5008 5018/9154/5017 5019/9155/5019\nf 5019/9155/5019 5020/9156/5020 5008/9142/5008\nf 5014/9147/5013 4836/9145/5011 5010/9144/5010\nf 5021/9157/5021 5009/9143/5009 5020/9156/5020\nf 5009/9143/5009 5022/9158/5022 4840/8875/4841\nf 4840/8875/4841 4839/8874/4840 5009/9143/5009\nf 5009/9143/5009 5021/9157/5021 5022/9158/5022\nf 5022/9158/5022 5024/9159/5023 5025/9160/5024\nf 5022/9158/5022 5025/9160/5024 5023/9161/5025\nf 4841/8876/4842 4840/8875/4841 5023/9161/5025\nf 5027/9162/5026 5023/9161/5025 5025/9160/5024\nf 5025/9160/5024 5028/9163/5027 5027/9162/5026\nf 5029/9164/5028 5013/9146/5012 5015/9148/5014\nf 5024/9159/5023 5021/9157/5021 5031/9165/5029\nf 5031/9165/5029 5034/9166/5030 5193/9167/5031\nf 5031/9165/5029 5193/9167/5031 5024/9159/5023\nf 5035/9168/5032 5038/9169/5033 5037/9170/5034\nf 5039/9171/5035 5037/9170/5034 5038/9169/5033\nf 5037/9170/5034 5040/9172/5036 5041/9173/5037\nf 5045/9174/5038 5043/9175/5039 5041/9173/5037\nf 5041/9173/5037 5044/9176/5040 5045/9174/5038\nf 5045/9174/5038 5044/9176/5040 5046/9177/5041\nf 5049/9178/5042 5050/9179/5043 5047/9180/5044\nf 5047/9180/5044 5051/9181/5045 5048/9182/5046\nf 5047/9180/5044 5046/9177/5041 5049/9178/5042\nf 5017/9149/5015 3554/6994/3561 5015/9148/5014\nf 5015/9148/5014 3592/7028/3595 5029/9164/5028\nf 5029/9164/5028 5014/9147/5013 5013/9146/5012\nf 5014/9147/5013 5055/9183/5047 5030/9184/5048\nf 5056/9185/5049 5030/9184/5048 5055/9183/5047\nf 5056/9185/5049 5018/9151/5017 5030/9184/5048\nf 5057/9186/5050 5019/9155/5019 5018/9154/5017\nf 5058/9187/5051 5020/9156/5020 5019/9155/5019\nf 5060/9188/5052 5020/9156/5020 5059/9189/5053\nf 5062/9190/5054 5032/9191/5055 5061/9192/5056\nf 5062/9190/5054 5061/9192/5056 5038/9169/5033\nf 5038/9169/5033 5063/9193/5057 5039/9171/5035\nf 5038/9169/5033 5064/9194/5058 5063/9193/5057\nf 5066/9195/5059 5063/9193/5057 5065/9196/5060\nf 5066/9195/5059 5039/9171/5035 5063/9193/5057\nf 5072/9197/5061 5052/9198/5062 5050/9179/5043\nf 5073/9199/5063 5052/9198/5062 5072/9197/5061\nf 5075/9200/5064 5074/9201/5065 5073/9199/5063\nf 5077/9202/5066 5078/9203/5067 5079/9204/5068\nf 5077/9202/5066 5076/9205/5069 5075/9206/5064\nf 5081/9207/5070 5079/9204/5068 5078/9203/5067\nf 5078/9203/5067 5082/9208/5071 5081/9207/5070\nf 5081/9207/5070 5083/9209/5072 5084/9210/5073\nf 5086/9211/5074 3627/7079/3640 3625/7064/3627\nf 4893/8951/4895 4908/8979/4913 4943/9044/4946\nf 4943/9044/4946 4907/8978/4912 4893/8951/4895\nf 5087/9212/5075 5072/9197/5061 5071/9213/5076\nf 5080/9214/5077 5075/9200/5064 5089/9215/5078\nf 5089/9215/5078 5090/9216/5079 5080/9214/5077\nf 5080/9217/5077 5322/9218/5080 5082/9208/5071\nf 5082/9208/5071 5091/9219/5081 5083/9209/5072\nf 5085/9220/5082 5084/9210/5073 5092/9221/5083\nf 3633/7080/3641 3627/7079/3640 5085/9220/5082\nf 4908/8980/4913 4911/9042/4945 4958/9222/4961\nf 4943/9223/4946 4958/9222/4961 4959/9224/4971\nf 3636/7083/3644 4982/9109/4986 4981/9108/4985\nf 5094/9225/5084 4972/9226/4977 5093/9227/5085\nf 5093/9228/5085 4972/9099/4977 4830/8863/4832\nf 5095/9229/5086 4830/9230/4832 4829/9231/4826\nf 5095/9229/5086 4829/9231/4826 4828/9232/4828\nf 5095/9229/5086 5096/9233/5087 5104/9234/5088\nf 5096/9235/5087 4792/8805/4795 4812/8839/4816\nf 5097/9236/5089 4974/9101/4979 4973/9100/4978\nf 4974/9101/4979 5097/9236/5089 5098/9237/5090\nf 5099/9238/5091 4815/9239/4818 5100/9240/5092\nf 5101/9241/5093 5102/9242/5094 5100/9240/5092\nf 4816/8840/4817 5101/9243/5093 4815/8841/4818\nf 4820/9244/5095 5114/9245/5096 5101/9243/5093\nf 5094/9225/5084 5138/9246/5097 5140/9247/5098\nf 5140/9247/5098 5097/9248/5089 5094/9225/5084\nf 5103/9249/5099 5093/9227/5085 5104/9250/5088\nf 5093/9227/5085 5103/9249/5099 5094/9225/5084\nf 5105/9251/5100 5104/9234/5088 5096/9233/5087\nf 5099/9252/5091 5105/9251/5100 5096/9233/5087\nf 5100/9240/5092 5102/9242/5094 5107/9253/5101\nf 5102/9254/5094 5108/9255/5102 5107/9256/5101\nf 5111/9257/5103 5104/9234/5088 5105/9251/5100\nf 5106/9258/5104 5112/9259/5105 5105/9251/5100\nf 5107/9260/5101 5112/9259/5105 5106/9261/5104\nf 5102/9254/5094 5113/9262/5106 5108/9255/5102\nf 5112/9259/5105 5117/9263/5107 5111/9257/5103\nf 5135/9264/5108 5112/9259/5105 5119/9265/5109\nf 5119/9265/5109 5107/9260/5101 5118/9266/5110\nf 5107/9260/5101 5119/9265/5109 5112/9259/5105\nf 5120/9267/5111 5115/9268/5112 5124/9269/5113\nf 5126/9270/5114 5125/9271/5115 5127/9272/5116\nf 5126/9270/5114 5122/9273/5117 5125/9271/5115\nf 5127/9272/5116 5128/9274/5118 5126/9270/5114\nf 5126/9270/5114 5116/9275/5119 5120/9267/5111\nf 5128/9274/5118 5129/9276/5120 5130/9277/5121\nf 5131/9278/5122 5118/9279/5110 5130/9277/5121\nf 5133/9280/5123 5134/9281/5124 5132/9282/5125\nf 5103/9249/5099 5137/9283/5126 5138/9246/5097\nf 5097/9248/5089 5140/9247/5098 5141/9284/5127\nf 5139/9285/5128 5140/9247/5098 5138/9246/5097\nf 5097/9236/5089 5142/9140/5007 5098/9237/5090\nf 5142/9286/5007 5097/9248/5089 5141/9284/5127\nf 4983/9287/4987 5143/9288/5129 5005/9138/5005\nf 5143/9288/5129 5098/9237/5090 5007/9289/5130\nf 5007/9289/5130 5098/9237/5090 5142/9140/5007\nf 5007/9289/5130 5142/9140/5007 4995/9139/5006\nf 5141/9284/5127 4997/9290/5000 4999/9291/4999\nf 5141/9284/5127 5006/9292/5131 4997/9290/5000\nf 5144/9293/5132 5006/9292/5131 5140/9247/5098\nf 5144/9293/5132 5003/9135/5003 5006/9292/5131\nf 5144/9293/5132 5140/9247/5098 5139/9285/5128\nf 5163/9294/5133 5139/9285/5128 5138/9246/5097\nf 5145/9295/5134 5163/9294/5133 5138/9246/5097\nf 5117/9263/5107 5145/9296/5134 5137/9297/5126\nf 5117/9263/5107 5136/9298/5135 5145/9296/5134\nf 5147/9299/5136 5148/9300/5137 5149/9301/5138\nf 5152/9302/5139 5153/9303/5140 5147/9299/5136\nf 5152/9302/5139 5154/9304/5141 5155/9305/5142\nf 5154/9304/5141 5152/9302/5139 5149/9301/5138\nf 5156/9306/5143 5155/9305/5142 5154/9304/5141\nf 5155/9305/5142 5158/9307/5144 5004/9308/5004\nf 5158/9307/5144 5155/9305/5142 5156/9306/5143\nf 5161/9309/5145 5150/9310/5146 5147/9311/5136\nf 5160/9312/5147 5146/9313/5148 5161/9309/5145\nf 5146/9313/5148 5160/9312/5147 5145/9295/5134\nf 5159/9314/5149 5003/9135/5003 5144/9293/5132\nf 5163/9294/5133 5153/9315/5140 5157/9316/5150\nf 5165/9317/5151 4823/9318/4822 4799/9319/4804\nf 4823/9318/4822 5166/9320/5152 5110/9321/5153\nf 5167/9322/5154 5124/9269/5113 5115/9268/5112\nf 5123/9323/5155 5121/9324/5156 5124/9269/5113\nf 5169/9325/5157 5124/9326/5113 5168/9327/5158\nf 5170/9328/5159 5173/9329/5160 5174/9330/5161\nf 5174/9330/5161 5173/9329/5160 5175/9331/5162\nf 5175/9331/5162 5514/9332/5163 5174/9330/5161\nf 5175/9333/5162 5176/9334/5164 5177/9335/5165\nf 5177/9336/5165 5178/9337/5166 5179/9338/5167\nf 5178/9339/5166 5176/9340/5164 5180/9341/5168\nf 5179/9338/5167 5181/9342/5169 5182/9343/5170\nf 5183/9344/5171 5181/9342/5169 5185/9345/5172\nf 5187/9346/5173 5185/9345/5172 5181/9342/5169\nf 5188/9347/5174 5186/9348/5175 5185/9345/5172\nf 5190/9349/5176 5180/9341/5168 5191/9350/5177\nf 5191/9350/5177 5176/9340/5164 5175/9331/5162\nf 5194/9351/5178 5034/9166/5030 5035/9168/5032\nf 5196/9352/5179 5037/9170/5034 5197/9353/5180\nf 5037/9170/5034 5195/9354/5181 5035/9168/5032\nf 5197/9353/5180 5037/9170/5034 5198/9355/5182\nf 5042/9356/5183 5199/9357/5184 5198/9355/5182\nf 5042/9356/5183 5198/9355/5182 5037/9170/5034\nf 5043/9175/5039 5199/9357/5184 5042/9356/5183\nf 5164/9358/5185 5202/9359/5186 5166/9320/5152\nf 5164/9358/5185 4823/9318/4822 5165/9317/5151\nf 5110/9321/5153 5166/9320/5152 5203/9360/5187\nf 5203/9360/5187 5114/9245/5096 5110/9321/5153\nf 5167/9322/5154 5204/9361/5188 5205/9362/5189\nf 5205/9363/5189 5208/9364/5190 5168/9327/5158\nf 5168/9327/5158 5167/9365/5154 5205/9363/5189\nf 5168/9327/5158 5206/9366/5191 5169/9325/5157\nf 5205/9363/5189 5204/9367/5188 5209/9368/5192\nf 5204/9361/5188 5203/9360/5187 5211/9369/5193\nf 5203/9360/5187 5202/9359/5186 5211/9369/5193\nf 5211/9370/5193 5202/9371/5186 5213/9372/5194\nf 5213/9373/5194 5202/9374/5186 5164/9375/5185\nf 5180/9341/5168 5199/9357/5184 5184/9376/5195\nf 5216/9377/5196 5199/9357/5184 5190/9349/5176\nf 5027/9378/5026 5214/9379/5197 5026/9380/5198\nf 5217/9381/5199 5028/9163/5027 5193/9167/5031\nf 5027/9162/5026 5217/9381/5199 5214/9382/5197\nf 5219/9383/5200 5034/9166/5030 5194/9351/5178\nf 5220/9384/5201 5195/9354/5181 5221/9385/5202\nf 5196/9352/5179 5221/9385/5202 5195/9354/5181\nf 5197/9353/5180 5200/9386/5203 5222/9387/5204\nf 5216/9377/5196 5190/9349/5176 5191/9350/5177\nf 5222/9388/5204 5216/9389/5196 5192/9390/5205\nf 5223/9391/5206 5222/9388/5204 5192/9390/5205\nf 5196/9352/5179 5197/9353/5180 5225/9392/5207\nf 5225/9392/5207 5222/9387/5204 5224/9393/5208\nf 5221/9385/5202 5196/9352/5179 5238/9394/5209\nf 5221/9385/5202 5238/9394/5209 5226/9395/5210\nf 5173/9329/5160 5192/9396/5205 5191/9350/5177\nf 5227/9397/5211 5218/9398/5212 5219/9383/5200\nf 5217/9381/5199 5215/9399/5213 5214/9382/5197\nf 5214/9379/5197 5164/9375/5185 5026/9380/5198\nf 5215/9400/5213 5230/9401/5214 5231/9402/5215\nf 5231/9403/5215 5232/9404/5216 5211/9405/5193\nf 5229/9406/5217 5230/9407/5214 5215/9408/5213\nf 5235/9409/5218 5236/9410/5219 5227/9411/5211\nf 5227/9411/5211 5236/9410/5219 5228/9412/5220\nf 5227/9411/5211 5237/9413/5221 5235/9409/5218\nf 5220/9414/5201 5226/9415/5210 5237/9413/5221\nf 5225/9392/5207 5224/9393/5208 5239/9416/5222\nf 5196/9352/5179 5239/9416/5222 5238/9394/5209\nf 5223/9391/5206 5240/9417/5223 5224/9418/5208\nf 5241/9419/5224 5242/9420/5225 5243/9421/5226\nf 5173/9329/5160 5243/9421/5226 5192/9396/5205\nf 5173/9329/5160 5170/9328/5159 5241/9419/5224\nf 5244/9422/5227 5171/9423/5228 5122/9273/5117\nf 5171/9424/5228 5244/9425/5227 5242/9426/5225\nf 5264/9427/5229 5169/9325/5157 5206/9366/5191\nf 5169/9325/5157 5122/9428/5117 5123/9429/5155\nf 5245/9430/5230 5228/9431/5220 5236/9432/5219\nf 5246/9433/5231 5247/9434/5232 5245/9435/5230\nf 5245/9435/5230 5236/9436/5219 5246/9433/5231\nf 5235/9409/5218 5237/9413/5221 5248/9437/5233\nf 5248/9437/5233 5246/9438/5231 5235/9409/5218\nf 5250/9439/5234 5248/9440/5233 5249/9441/5235\nf 5251/9442/5236 5599/9443/5237 5249/9441/5235\nf 5251/9442/5236 5252/9444/5238 5253/9445/5239\nf 5237/9446/5221 5256/9447/5240 5248/9440/5233\nf 5226/9415/5210 5257/9448/5241 5237/9413/5221\nf 5261/9449/5242 5242/9426/5225 5244/9425/5227\nf 5261/9449/5242 5262/9450/5243 5263/9451/5244\nf 5242/9426/5225 5263/9451/5244 5260/9452/5245\nf 5244/9425/5227 5264/9427/5229 5261/9449/5242\nf 5266/9453/5246 5192/9390/5205 5243/9454/5226\nf 5259/9455/5247 5240/9417/5223 5267/9456/5248\nf 5275/9457/5249 5258/9458/5250 5239/9459/5222\nf 5252/9444/5238 5256/9447/5240 5270/9460/5251\nf 5269/9461/5252 5274/9462/5253 5273/9463/5254\nf 5276/9464/5255 5239/9459/5222 5259/9465/5247\nf 5269/9461/5252 5268/9466/5256 5274/9462/5253\nf 5278/9467/5257 5279/9468/5258 5280/9469/5259\nf 5280/9469/5259 5266/9453/5246 5278/9467/5257\nf 5281/9470/5260 5267/9456/5248 5280/9469/5259\nf 5282/9471/5261 5280/9469/5259 5279/9468/5258\nf 5263/9472/5244 5284/9473/5262 5260/9474/5245\nf 5278/9467/5257 5284/9475/5262 5547/9476/5263\nf 5279/9468/5258 5547/9476/5263 5545/9477/5264\nf 5285/9478/5265 5279/9468/5258 5545/9477/5264\nf 5276/9479/5255 5259/9480/5247 5281/9481/5260\nf 5276/9482/5255 5281/9470/5260 5283/9483/5266\nf 5283/9484/5266 5286/9485/5267 5276/9464/5255\nf 5287/9486/5268 5053/9487/5269 3838/7374/3840\nf 5053/9487/5269 5287/9486/5268 5289/9488/5270\nf 5054/9489/5271 5288/9490/5272 5055/9183/5047\nf 5055/9183/5047 5290/9491/5273 5291/9492/5274\nf 5291/9492/5274 5056/9185/5049 5055/9183/5047\nf 3837/7376/3842 5293/9493/5275 5287/9486/5268\nf 5289/9488/5270 5287/9486/5268 5294/9494/5276\nf 5289/9488/5270 5294/9494/5276 5288/9490/5272\nf 5288/9490/5272 5294/9494/5276 5295/9495/5277\nf 5296/9496/5278 5295/9495/5277 5297/9497/5279\nf 5296/9496/5278 5290/9491/5273 5288/9490/5272\nf 5290/9491/5273 5296/9496/5278 5292/9498/5280\nf 5302/9499/5281 5296/9496/5278 5297/9497/5279\nf 5296/9500/5278 5298/9501/5282 5292/9502/5280\nf 5294/9494/5276 5293/9493/5275 5300/9503/5283\nf 5300/9503/5283 5295/9495/5277 5294/9494/5276\nf 5300/9503/5283 5304/9504/5284 5295/9495/5277\nf 5295/9495/5277 5304/9504/5284 5301/9505/5285\nf 5303/9506/5286 3857/7392/3858 3862/7397/3863\nf 5304/9504/5284 5300/9503/5283 5303/9506/5286\nf 5305/9507/5287 5301/9505/5285 5304/9504/5284\nf 5302/9508/5281 5306/9509/5288 5307/9510/5289\nf 5302/9508/5281 5307/9510/5289 5298/9501/5282\nf 5308/9511/5290 5057/9186/5050 5291/9512/5274\nf 5291/9512/5274 5292/9502/5280 5308/9511/5290\nf 5308/9511/5290 5292/9502/5280 5309/9513/5291\nf 5059/9189/5053 5310/9514/5292 5060/9188/5052\nf 5060/9188/5052 5312/9515/5293 5061/9192/5056\nf 5065/9196/5060 5064/9194/5058 5313/9516/5294\nf 5313/9516/5294 5061/9192/5056 5312/9515/5293\nf 5311/9517/5295 5313/9516/5294 5312/9515/5293\nf 5314/9518/5296 5065/9196/5060 5311/9517/5295\nf 5065/9196/5060 5314/9518/5296 5067/9519/5297\nf 5067/9519/5297 5066/9195/5059 5065/9196/5060\nf 5315/9520/5298 5067/9519/5297 5314/9518/5296\nf 5317/9521/5299 5070/9522/5300 5069/9523/5301\nf 5069/9523/5301 5068/9524/5302 5317/9521/5299\nf 5317/9521/5299 5315/9520/5298 5316/9525/5303\nf 5070/9522/5300 5317/9521/5299 5071/9213/5076\nf 5318/9526/5304 5071/9213/5076 5317/9521/5299\nf 5071/9213/5076 5318/9526/5304 5087/9212/5075\nf 5320/9527/5305 5087/9212/5075 5318/9526/5304\nf 5322/9218/5080 5323/9528/5306 5091/9219/5081\nf 5092/9221/5083 5091/9219/5081 5324/9529/5307\nf 5325/9530/5308 5085/9220/5082 5092/9221/5083\nf 5326/9531/5309 3633/7080/3641 5325/9530/5308\nf 5328/9532/5310 5310/9514/5292 5327/9533/5311\nf 5329/9534/5312 5327/9533/5311 5309/9513/5291\nf 5309/9513/5291 5327/9533/5311 5310/9514/5292\nf 5309/9513/5291 5330/9535/5313 5329/9534/5312\nf 5292/9502/5280 5330/9535/5313 5309/9513/5291\nf 5332/9536/5314 5311/9517/5295 5331/9537/5315\nf 5331/9537/5315 5333/9538/5316 5332/9536/5314\nf 5334/9539/5317 5335/9540/5318 5332/9536/5314\nf 5332/9536/5314 5333/9538/5316 5334/9539/5317\nf 5335/9540/5318 5315/9520/5298 5314/9518/5296\nf 5316/9525/5303 5315/9520/5298 5335/9540/5318\nf 5319/9541/5319 5317/9521/5299 5337/9542/5320\nf 5338/9543/5321 5318/9526/5304 5319/9541/5319\nf 5339/9544/5322 5320/9527/5305 5340/9545/5323\nf 5340/9545/5323 5320/9527/5305 5338/9543/5321\nf 5339/9546/5322 5341/9547/5324 5322/9218/5080\nf 5322/9218/5080 5321/9548/5325 5339/9546/5322\nf 5343/9549/5326 5091/9219/5081 5323/9528/5306\nf 5344/9550/5327 5324/9529/5307 5343/9549/5326\nf 5326/9531/5309 5345/9551/5328 3914/7479/3909\nf 3914/7450/3909 3891/7449/3908 5326/9552/5309\nf 5346/9553/5329 5329/9534/5312 5330/9535/5313\nf 5330/9535/5313 5298/9501/5282 5346/9553/5329\nf 5348/9554/5330 5333/9538/5316 5331/9537/5315\nf 5333/9538/5316 5348/9554/5330 5349/9555/5331\nf 5349/9555/5331 5334/9539/5317 5333/9538/5316\nf 5353/9556/5332 5352/9557/5333 5354/9558/5334\nf 5338/9543/5321 5319/9541/5319 5353/9556/5332\nf 5353/9556/5332 5354/9558/5334 5338/9543/5321\nf 5338/9559/5321 5355/9560/5335 5340/9561/5323\nf 5358/9562/5336 5344/9550/5327 5359/9563/5337\nf 5359/9563/5337 5343/9549/5326 5356/9564/5338\nf 5345/9551/5328 3938/7477/3934 3914/7479/3909\nf 5346/9553/5329 5298/9501/5282 5307/9510/5289\nf 5361/9565/5339 5346/9553/5329 5362/9566/5340\nf 5361/9565/5339 5347/9567/5341 5346/9553/5329\nf 5361/9565/5339 5362/9566/5340 5363/9568/5342\nf 5363/9568/5342 5348/9554/5330 5347/9567/5341\nf 5363/9568/5342 5350/9569/5343 5348/9554/5330\nf 5366/9570/5344 5351/9571/5345 5364/9572/5346\nf 5367/9573/5347 5351/9571/5345 5366/9570/5344\nf 5354/9558/5334 5367/9573/5347 5370/9574/5348\nf 5370/9575/5348 5368/9576/5349 5369/9577/5350\nf 5370/9575/5348 5369/9577/5350 5355/9560/5335\nf 5355/9560/5335 5354/9578/5334 5370/9575/5348\nf 5355/9560/5335 5372/9579/5351 5371/9580/5352\nf 5339/9581/5322 5371/9580/5352 5341/9582/5324\nf 5373/9583/5353 5341/9582/5324 5371/9580/5352\nf 5371/9580/5352 5374/9584/5354 5373/9583/5353\nf 5373/9585/5353 5357/9586/5355 5342/9587/5356\nf 5375/9588/5357 5377/9589/5358 5378/9590/5359\nf 5359/9591/5337 5378/9590/5359 5358/9592/5336\nf 5379/9593/5360 3960/7520/3960 3938/7519/3934\nf 5380/9594/5361 5381/9595/5362 3960/7520/3960\nf 5376/9596/5363 5383/9597/5364 5377/9589/5358\nf 5383/9597/5364 5384/9598/5365 5385/9599/5366\nf 5386/9600/5367 5385/9599/5366 5384/9598/5365\nf 5357/9601/5355 5384/9598/5365 5375/9588/5357\nf 5385/9599/5366 5386/9600/5367 5387/9602/5368\nf 5374/9584/5354 5386/9600/5367 5373/9583/5353\nf 5386/9600/5367 5372/9579/5351 5388/9603/5369\nf 5388/9603/5369 5387/9602/5368 5386/9600/5367\nf 5389/9604/5370 5369/9577/5350 5390/9605/5371\nf 5389/9604/5370 5387/9602/5368 5388/9603/5369\nf 5390/9605/5371 5369/9577/5350 5392/9606/5372\nf 5368/9576/5349 5393/9607/5373 5392/9606/5372\nf 5393/9607/5373 5395/9608/5374 5394/9609/5375\nf 5366/9610/5344 5365/9611/5376 5393/9607/5373\nf 5365/9611/5376 5396/9612/5377 5395/9608/5374\nf 5397/9613/5378 5398/9614/5379 5396/9615/5377\nf 5397/9616/5378 5364/9572/5346 5350/9569/5343\nf 5397/9616/5378 5350/9569/5343 5399/9617/5380\nf 5399/9617/5380 5363/9568/5342 5400/9618/5381\nf 5400/9618/5381 5363/9568/5342 5402/9619/5382\nf 5305/9507/5287 5304/9504/5284 5303/9506/5286\nf 5407/9620/5383 3999/7562/3994 5408/9621/5384\nf 5408/9621/5384 5382/7563/3995 5381/9595/5362\nf 5409/9622/5385 5410/9623/5386 5408/9621/5384\nf 5408/9621/5384 5385/9599/5366 5409/9622/5385\nf 5411/9624/5387 5410/9623/5386 5409/9622/5385\nf 5410/9623/5386 5411/9624/5387 5413/9625/5388\nf 5389/9604/5370 5411/9624/5387 5387/9602/5368\nf 5389/9604/5370 5412/9626/5389 5411/9624/5387\nf 5391/9627/5390 5412/9626/5389 5390/9605/5371\nf 5412/9626/5389 5415/9628/5391 5413/9625/5388\nf 5412/9626/5389 5391/9627/5390 5414/9629/5392\nf 5415/9628/5391 5414/9629/5392 5416/9630/5393\nf 5416/9630/5393 5418/9631/5394 5415/9628/5391\nf 5417/9632/5395 5395/9608/5374 5396/9612/5377\nf 5417/9632/5395 5401/9633/5396 5419/9634/5397\nf 5419/9634/5397 5420/9635/5398 5417/9632/5395\nf 5421/9636/5399 5420/9635/5398 5419/9634/5397\nf 5419/9634/5397 5401/9633/5396 5421/9636/5399\nf 5422/9637/5400 5421/9636/5399 5423/9638/5401\nf 5303/9506/5286 3996/7597/4022 5425/9639/5402\nf 5305/9507/5287 5425/9639/5402 5426/9640/5403\nf 5426/9640/5403 5405/9641/5404 5406/9642/5405\nf 5423/9638/5401 5427/9643/5406 5424/9644/5407\nf 5407/9620/5383 5410/9623/5386 5428/9645/5408\nf 4031/7612/4031 5428/9645/5408 4032/7610/4029\nf 5428/9645/5408 5413/9625/5388 5429/9646/5409\nf 5430/9647/5410 5415/9628/5391 5431/9648/5411\nf 5415/9628/5391 5430/9647/5410 5413/9625/5388\nf 5431/9648/5411 5415/9628/5391 5418/9631/5394\nf 5418/9631/5394 5432/9649/5412 5431/9648/5411\nf 5431/9648/5411 5432/9649/5412 5433/9650/5413\nf 5432/9649/5412 5420/9635/5398 5434/9651/5414\nf 5432/9649/5412 5434/9651/5414 5433/9650/5413\nf 5434/9651/5414 5420/9635/5398 5435/9652/5415\nf 5435/9652/5415 5420/9635/5398 5422/9637/5400\nf 5424/9644/5407 5437/9653/5416 5435/9652/5415\nf 5424/9644/5407 5435/9652/5415 5422/9637/5400\nf 5437/9653/5416 5427/9643/5406 5438/9654/5417\nf 5438/9654/5417 5436/9655/5418 5437/9653/5416\nf 5440/9656/5419 5439/9657/5420 5438/9654/5417\nf 5426/9658/5403 5438/9654/5417 5427/9643/5406\nf 4023/7596/4021 5439/9659/5420 5440/9660/5419\nf 5425/9639/5402 5440/9660/5419 5426/9640/5403\nf 5430/9647/5410 5431/9648/5411 5441/9661/5421\nf 5433/9650/5413 5442/9662/5422 5431/9648/5411\nf 5436/9655/5418 5433/9650/5413 5434/9651/5414\nf 5439/9657/5420 5444/9663/5423 5436/9655/5418\nf 4054/7638/4052 5444/9663/5423 4047/9664/4047\nf 5430/9647/5410 4055/7639/4053 5429/9646/5409\nf 5442/9662/5422 4057/7641/4055 5441/9661/5421\nf 5443/9665/5424 4058/7643/4057 4057/7641/4055\nf 5184/9376/5195 5181/9666/5169 5178/9339/5166\nf 5445/9667/5425 5184/9376/5195 5201/9668/5426\nf 5188/9669/5174 5446/9670/5427 5189/9671/5428\nf 5447/9672/5429 5048/9182/5046 5448/9673/5430\nf 5074/9201/5065 5449/9674/5431 5052/9198/5062\nf 5451/9675/5432 5074/9676/5065 5076/9205/5069\nf 5079/9204/5068 5076/9205/5069 5077/9202/5066\nf 5081/9207/5070 5454/9677/5433 5455/9678/5434\nf 5454/9677/5433 5081/9207/5070 5084/9210/5073\nf 5456/9679/5435 5454/9677/5433 5084/9210/5073\nf 5456/9679/5435 3624/7063/3626 4070/7661/4071\nf 5048/9182/5046 5051/9181/5045 5457/9680/5436\nf 5449/9681/5431 5451/9675/5432 5459/9682/5437\nf 5076/9205/5069 5460/9683/5438 5451/9675/5432\nf 5452/9684/5439 5453/9685/5440 5461/9686/5441\nf 5079/9204/5068 5461/9686/5441 5460/9683/5438\nf 5454/9677/5433 5462/9687/5442 5455/9678/5434\nf 5462/9687/5442 5456/9679/5435 5463/9688/5443\nf 5464/9689/5444 5463/9688/5443 5456/9679/5435\nf 5045/9174/5038 5447/9672/5429 5201/9668/5426\nf 5447/9672/5429 5045/9174/5038 5047/9180/5044\nf 5189/9671/5428 5446/9670/5427 5445/9667/5425\nf 5466/9690/5445 5445/9667/5425 5448/9673/5430\nf 5465/9691/5446 5467/9692/5447 5480/9693/5448\nf 5480/9693/5448 5466/9690/5445 5465/9691/5446\nf 5468/9694/5449 5457/9680/5436 5469/9695/5450\nf 5469/9695/5450 5457/9680/5436 5450/9696/5451\nf 5468/9694/5449 5458/9697/5452 5470/9698/5453\nf 5451/9675/5432 5460/9683/5438 5471/9699/5454\nf 5472/9700/5455 5453/9685/5440 5473/9701/5456\nf 5453/9685/5440 5472/9700/5455 5461/9686/5441\nf 5473/9701/5456 5462/9687/5442 5474/9702/5457\nf 5462/9687/5442 5473/9701/5456 5453/9685/5440\nf 5463/9688/5443 5474/9702/5457 5462/9687/5442\nf 5189/9703/5428 5475/9704/5458 5476/9705/5459\nf 5188/9347/5174 5477/9706/5460 5186/9348/5175\nf 5479/9707/5461 5478/9708/5462 5188/9709/5174\nf 5479/9710/5461 5188/9347/5174 5476/9711/5459\nf 5482/9712/5463 5483/9713/5464 5475/9714/5458\nf 5480/9693/5448 5484/9715/5465 5482/9712/5463\nf 5484/9715/5465 5486/9716/5466 5485/9717/5467\nf 5484/9715/5465 5481/9718/5468 5467/9692/5447\nf 5486/9716/5466 5467/9692/5447 5468/9694/5449\nf 5478/9708/5462 5487/9719/5469 5477/9720/5460\nf 5488/9721/5470 5483/9713/5464 5482/9712/5463\nf 5485/9717/5467 5486/9716/5466 5489/9722/5471\nf 5479/9707/5461 5491/9723/5472 5478/9708/5462\nf 5493/9724/5473 5491/9723/5472 5492/9725/5474\nf 5490/9726/5475 5492/9725/5474 5491/9723/5472\nf 5497/9727/5476 5477/9728/5460 5487/9729/5469\nf 5183/9344/5171 5186/9348/5175 5499/9730/5477\nf 5498/9731/5478 5186/9348/5175 5477/9706/5460\nf 5477/9728/5460 5500/9732/5479 5501/9733/5480\nf 5503/9734/5481 5497/9735/5476 5502/9736/5482\nf 5503/9737/5481 5504/9738/5483 5505/9739/5484\nf 5501/9733/5480 5500/9732/5479 5506/9740/5485\nf 5507/9741/5486 5508/9742/5487 5506/9743/5485\nf 5506/9744/5485 5498/9731/5478 5501/9745/5480\nf 5182/9343/5170 5509/9746/5488 5179/9338/5167\nf 5182/9343/5170 5499/9730/5477 5509/9746/5488\nf 5509/9746/5488 5498/9731/5478 5508/9747/5487\nf 5510/9748/5489 5179/9749/5167 5509/9750/5488\nf 5509/9750/5488 5508/9751/5487 5510/9748/5489\nf 5177/9335/5165 5512/9752/5490 5513/9753/5491\nf 5513/9753/5491 5514/9754/5163 5177/9335/5165\nf 5516/9755/5492 5517/9756/5493 5515/9757/5494\nf 5170/9328/5159 5519/9758/5495 5125/9271/5115\nf 5519/9759/5495 5520/9760/5496 5521/9761/5497\nf 5521/9762/5497 5125/9271/5115 5519/9758/5495\nf 5522/9763/5498 5521/9761/5497 5520/9760/5496\nf 5521/9761/5497 5522/9763/5498 5127/9764/5116\nf 5127/9765/5116 5523/9766/5499 5129/9767/5120\nf 5129/9768/5120 5524/9769/5500 5131/9770/5122\nf 5524/9769/5500 5132/9282/5125 5131/9770/5122\nf 5133/9280/5123 5525/9771/5501 5537/9772/5502\nf 5133/9280/5123 5528/9773/5503 5136/9298/5135\nf 5528/9774/5503 5146/9313/5148 5136/9775/5135\nf 5532/9776/5504 5522/9763/5498 5530/9777/5505\nf 5530/9777/5505 5531/9778/5506 5532/9776/5504\nf 5532/9779/5504 5531/9780/5506 5533/9781/5507\nf 5532/9779/5504 5534/9782/5508 5535/9783/5509\nf 5535/9784/5509 5523/9785/5499 5532/9776/5504\nf 5536/9786/5510 5535/9784/5509 5534/9787/5508\nf 5537/9772/5502 5525/9771/5501 5524/9769/5500\nf 5524/9769/5500 5535/9788/5509 5537/9772/5502\nf 5537/9789/5502 5538/9790/5511 5539/9791/5512\nf 5520/9760/5496 5541/9792/5513 5540/9793/5514\nf 5542/9794/5515 5541/9795/5513 5519/9796/5495\nf 5519/9796/5495 5518/9797/5516 5542/9794/5515\nf 5543/9798/5517 5544/9799/5518 5518/9797/5516\nf 5518/9797/5516 5172/9800/5519 5543/9798/5517\nf 5517/9756/5493 5543/9798/5517 5172/9800/5519\nf 5516/9755/5492 5546/9801/5520 5543/9798/5517\nf 5546/9801/5520 5545/9802/5264 5547/9803/5263\nf 5544/9804/5518 5546/9805/5520 5547/9806/5263\nf 5548/9807/5521 5551/9808/5522 5552/9809/5523\nf 5557/9810/5524 5553/9811/5525 5555/9812/5526\nf 5553/9811/5525 5554/9813/5527 5564/9814/5528\nf 5558/9815/5529 5559/9816/5530 5560/9817/5531\nf 5561/9818/5532 5560/9819/5531 5549/9820/5533\nf 5558/9821/5529 5561/9822/5532 5630/9823/5534\nf 5549/9824/5533 5548/9825/5521 5563/9826/5535\nf 5548/9825/5521 5564/9827/5528 5563/9826/5535\nf 5565/9828/5536 5564/9827/5528 5554/9829/5527\nf 5554/9829/5527 5566/9830/5537 5565/9828/5536\nf 5557/9831/5524 5567/9832/5538 5566/9830/5537\nf 5566/9830/5537 5554/9829/5527 5557/9831/5524\nf 5568/9833/5539 5161/9309/5145 5146/9313/5148\nf 5146/9313/5148 5529/9834/5540 5568/9833/5539\nf 5526/9835/5541 5569/9836/5542 5528/9773/5503\nf 5570/9837/5543 5529/9834/5540 5528/9774/5503\nf 5570/9837/5543 5528/9774/5503 5569/9838/5542\nf 5571/9839/5544 5568/9833/5539 5529/9834/5540\nf 5568/9833/5539 5572/9840/5545 5162/9841/5546\nf 5151/9842/5547 5162/9841/5546 5573/9843/5548\nf 5573/9844/5548 5148/9845/5137 5151/9846/5547\nf 5574/9847/5549 5571/9839/5544 5575/9848/5550\nf 5569/9849/5542 5576/9850/5551 5570/9851/5543\nf 5577/9852/5552 5578/9853/5553 5539/9854/5512\nf 5539/9791/5512 5578/9855/5553 5569/9849/5542\nf 5579/9856/5554 5578/9855/5553 5577/9857/5552\nf 5580/9858/5555 5536/9786/5510 5582/9859/5556\nf 5580/9858/5555 5582/9859/5556 5583/9860/5557\nf 5536/9786/5510 5580/9858/5555 5538/9790/5511\nf 5583/9860/5557 5534/9787/5508 5584/9861/5558\nf 5575/9848/5550 5586/9862/5559 5572/9840/5545\nf 5576/9863/5551 5587/9864/5560 5585/9865/5561\nf 5585/9865/5561 5570/9837/5543 5576/9863/5551\nf 5578/9855/5553 5587/9866/5560 5576/9850/5551\nf 5579/9856/5554 5588/9867/5562 5578/9855/5553\nf 5581/9868/5563 5580/9858/5555 5589/9869/5564\nf 5594/9870/5565 5584/9861/5558 5590/9871/5566\nf 5591/9872/5567 5585/9865/5561 5587/9864/5560\nf 5588/9867/5562 5592/9873/5568 5587/9866/5560\nf 5589/9869/5564 5597/9874/5569 5581/9868/5563\nf 5592/9875/5568 5254/9876/5570 5595/9877/5571\nf 5253/9445/5239 5596/9878/5572 5255/9879/5573\nf 5593/9880/5574 5596/9878/5572 5592/9875/5568\nf 5594/9870/5565 5590/9871/5566 5598/9881/5575\nf 5589/9869/5564 5594/9870/5565 5597/9874/5569\nf 5255/9882/5573 5598/9881/5575 5599/9883/5237\nf 5597/9884/5569 5255/9879/5573 5596/9878/5572\nf 5600/9885/5576 5584/9886/5558 5534/9782/5508\nf 5601/9887/5577 5602/9888/5578 5603/9889/5579\nf 5601/9887/5577 5603/9889/5579 5604/9890/5580\nf 5601/9887/5577 5590/9871/5566 5584/9861/5558\nf 5601/9887/5577 5604/9890/5580 5598/9881/5575\nf 5599/9883/5237 5604/9890/5580 5249/9891/5235\nf 5250/9892/5234 5249/9891/5235 5604/9890/5580\nf 5604/9890/5580 5603/9889/5579 5250/9892/5234\nf 5232/9404/5216 5231/9403/5215 5603/9889/5579\nf 5605/9893/5581 5602/9888/5578 5600/9894/5576\nf 5605/9895/5581 5600/9896/5576 5533/9897/5507\nf 5605/9898/5581 5233/9899/5582 5234/9900/5583\nf 5606/9901/5584 5607/9902/5585 5608/9903/5586\nf 5609/9904/5587 5530/9905/5505 5606/9901/5584\nf 5610/9906/5588 5611/9907/5589 5608/9903/5586\nf 5611/9907/5589 5610/9906/5588 5208/9908/5190\nf 5611/9907/5589 5208/9908/5190 5209/9909/5192\nf 5547/9806/5263 5284/9473/5262 5544/9804/5518\nf 5612/9910/5590 5262/9911/5243 5541/9912/5513\nf 5612/9910/5590 5541/9912/5513 5542/9913/5515\nf 5263/9472/5244 5544/9804/5518 5284/9473/5262\nf 5613/9914/5591 5540/9915/5514 5541/9912/5513\nf 5540/9916/5514 5613/9914/5591 5607/9902/5585\nf 5614/9917/5592 5608/9903/5586 5607/9902/5585\nf 5614/9917/5592 5264/9918/5229 5206/9919/5191\nf 5615/9920/5593 5613/9914/5591 5262/9911/5243\nf 5615/9920/5593 5607/9902/5585 5613/9914/5591\nf 5616/9921/5594 5533/9781/5507 5531/9780/5506\nf 5616/9921/5594 5611/9907/5589 5617/9922/5595\nf 5617/9923/5595 5212/9924/5596 5233/9925/5582\nf 5617/9923/5595 5209/9368/5192 5212/9924/5596\nf 4227/9926/4227 5555/9927/5526 4229/9928/4228\nf 4230/7904/4229 4229/7903/4228 5555/9812/5526\nf 5555/9812/5526 5553/9811/5525 4230/7904/4229\nf 4230/7904/4229 5553/9811/5525 5552/9809/5523\nf 5557/9810/5524 5620/9929/5597 5567/9930/5538\nf 5619/9931/5598 5556/9932/5599 5621/9933/5600\nf 5556/9934/5599 5622/9935/5601 5621/9936/5600\nf 4727/8663/4721 5556/9932/5599 5618/9937/5602\nf 4727/9938/4721 5618/9939/5602 4227/9926/4227\nf 5559/9816/5530 5562/9940/5603 5623/9941/5604\nf 5623/9941/5604 5562/9940/5603 5624/9942/5605\nf 5559/9816/5530 5623/9941/5604 5625/9943/5606\nf 5628/9944/5607 5626/9945/5608 5629/9946/5609\nf 5628/9944/5607 5624/9942/5605 5626/9945/5608\nf 5627/9947/5610 5624/9942/5605 5562/9940/5603\nf 5563/9948/5535 5632/9949/5611 5561/9950/5532\nf 5561/9950/5532 5632/9949/5611 5631/9951/5612\nf 5567/9952/5538 5635/9953/5613 5634/9954/5614\nf 5493/9955/5473 5636/9956/5615 5502/9957/5482\nf 5493/9724/5473 5492/9725/5474 5636/9958/5615\nf 5496/9959/5616 5638/9960/5617 5637/9961/5618\nf 5639/9962/5619 5468/9694/5449 5470/9698/5453\nf 5639/9963/5619 5640/9964/5620 5486/9965/5466\nf 5641/9966/5621 5486/9965/5466 5640/9964/5620\nf 5641/9967/5621 5489/9722/5471 5486/9716/5466\nf 5642/9968/5622 5647/9969/5623 5638/9960/5617\nf 5642/9970/5622 5496/9971/5616 5641/9967/5621\nf 5643/9972/5624 5640/9964/5620 5470/9973/5453\nf 5640/9964/5620 5645/9974/5625 5642/9968/5622\nf 5642/9968/5622 5641/9966/5621 5640/9964/5620\nf 5646/9975/5626 5642/9968/5622 5645/9974/5625\nf 5471/9699/5454 5648/9976/5627 5643/9972/5624\nf 5649/9977/5628 5471/9699/5454 5460/9683/5438\nf 5471/9699/5454 5650/9978/5629 5648/9976/5627\nf 5650/9978/5629 5472/9700/5455 5651/9979/5630\nf 5472/9700/5455 5649/9977/5628 5460/9683/5438\nf 5651/9979/5630 5473/9701/5456 5652/9980/5631\nf 5652/9980/5631 5474/9702/5457 5653/9981/5632\nf 5652/9980/5631 5473/9701/5456 5474/9702/5457\nf 5653/9981/5632 5474/9702/5457 5463/9688/5443\nf 4265/7950/4266 5655/9982/5633 5654/9983/5634\nf 5653/9981/5632 5654/9983/5634 5655/9982/5633\nf 5656/9984/5635 5657/9985/5636 5651/9979/5630\nf 5651/9979/5630 5652/9980/5631 5656/9984/5635\nf 5657/9985/5636 5650/9978/5629 5651/9979/5630\nf 5658/9986/5637 5648/9976/5627 5650/9978/5629\nf 5648/9976/5627 5658/9986/5637 5644/9987/5638\nf 5643/9972/5624 5648/9976/5627 5660/9988/5639\nf 5644/9987/5638 5662/9989/5640 5661/9990/5641\nf 5663/9991/5642 5644/9987/5638 5658/9986/5637\nf 5663/9991/5642 5658/9986/5637 5659/9992/5643\nf 5664/9993/5644 5659/9992/5643 5657/9985/5636\nf 5664/9993/5644 5655/9982/5633 5665/9994/5645\nf 4265/7950/4266 4276/9995/4279 5655/9982/5633\nf 5661/9990/5641 5667/9996/5646 5645/9974/5625\nf 5668/9997/5647 5662/9989/5640 5663/9991/5642\nf 5662/9989/5640 5669/9998/5648 5670/9999/5649\nf 5661/10000/5641 5670/10001/5649 5667/10002/5646\nf 5664/9993/5644 5665/9994/5645 5671/10003/5650\nf 5672/10004/5651 5668/10005/5647 5671/10006/5650\nf 5671/10003/5650 5663/9991/5642 5664/9993/5644\nf 5655/9982/5633 5666/10007/5652 5665/10008/5645\nf 5646/9975/5626 5673/10009/5653 5647/9969/5623\nf 5673/10010/5653 5667/10011/5646 5674/10012/5654\nf 5674/10012/5654 5667/10002/5646 5670/10001/5649\nf 5670/10001/5649 5675/10013/5655 5674/10012/5654\nf 5676/10014/5656 5672/10004/5651 5665/10015/5645\nf 5665/10015/5645 4288/7981/4289 5676/10014/5656\nf 5677/10016/5657 5638/9960/5617 5647/9969/5623\nf 5638/9960/5617 5679/10017/5658 5637/9961/5618\nf 5679/10018/5658 5494/10019/5659 5495/10020/5660\nf 5681/10021/5661 5636/9958/5615 5492/9725/5474\nf 5681/10021/5661 5492/9725/5474 5680/10022/5662\nf 5681/10023/5661 5682/10024/5663 5636/10025/5615\nf 5647/9969/5623 5684/10026/5664 5683/10027/5665\nf 5683/10027/5665 5677/10016/5657 5647/9969/5623\nf 5271/10028/5666 5254/9876/5570 5253/9445/5239\nf 5271/10028/5666 5253/9445/5239 5252/9444/5238\nf 5685/10029/5667 5270/9460/5251 5272/10030/5668\nf 5504/10031/5483 5503/10032/5481 5687/10033/5669\nf 5689/10034/5670 5678/10035/5671 5677/10016/5657\nf 5683/10027/5665 5691/10036/5672 5690/10037/5673\nf 5690/10037/5673 5677/10016/5657 5683/10027/5665\nf 5678/10038/5671 5689/10039/5670 5694/10040/5674\nf 5694/10040/5674 5686/10041/5675 5678/10038/5671\nf 5694/10040/5674 5681/10023/5661 5686/10041/5675\nf 5698/10042/5676 5687/10033/5669 5699/10043/5677\nf 5687/10033/5669 5682/10044/5663 5695/10045/5678\nf 5691/10046/5672 5683/10047/5665 5684/10048/5664\nf 5631/10049/5612 5702/10050/5679 5703/10051/5680\nf 5632/9949/5611 5563/9948/5535 5702/10052/5679\nf 5702/10053/5679 5564/9827/5528 5704/10054/5681\nf 5705/10055/5682 5676/10014/5656 4322/8038/4320\nf 4322/8038/4320 5676/10014/5656 4288/7981/4289\nf 5706/10056/5683 5675/10013/5655 5676/10014/5656\nf 5708/10057/5684 5707/10058/5685 5709/10059/5686\nf 5707/10058/5685 5708/10057/5684 5710/10060/5687\nf 5707/10058/5685 5674/10012/5654 5675/10013/5655\nf 5697/10061/5688 5504/9738/5483 5698/10062/5676\nf 5697/10061/5688 5698/10062/5676 5711/10063/5689\nf 5698/10064/5676 5712/10065/5690 5711/10066/5689\nf 5694/10040/5674 5713/10067/5691 5695/10068/5678\nf 5693/10069/5692 5692/10070/5693 5713/10071/5691\nf 5714/10072/5694 5692/10070/5693 5690/10073/5673\nf 5715/10074/5695 5716/10075/5696 5717/10076/5697\nf 5715/10074/5695 5717/10076/5697 5718/10077/5698\nf 5721/10078/5699 5712/10065/5690 5713/10071/5691\nf 5721/10078/5699 5722/10079/5700 5720/10080/5701\nf 5721/10078/5699 5713/10071/5691 5692/10070/5693\nf 5721/10078/5699 5714/10072/5694 5722/10079/5700\nf 5724/10081/5702 5718/10077/5698 5725/10082/5703\nf 5725/10082/5703 5726/10083/5704 5724/10081/5702\nf 5726/10083/5704 5696/10084/5705 5697/10061/5688\nf 5697/10061/5688 5724/10081/5702 5726/10083/5704\nf 5696/10084/5705 5727/10085/5706 5505/9739/5484\nf 5727/10086/5706 5728/10087/5707 5505/10088/5484\nf 5505/10089/5484 5728/10090/5707 5497/10091/5476\nf 5731/10092/5708 5729/10093/5709 5730/10094/5710\nf 5731/10092/5708 5736/10095/5711 5709/10059/5686\nf 5732/10096/5712 5709/10059/5686 5736/10095/5711\nf 5708/10057/5684 5734/10097/5713 5684/10048/5664\nf 5734/10097/5713 5691/10046/5672 5684/10048/5664\nf 5732/10096/5712 5735/10098/5714 5733/10099/5715\nf 5738/10100/5716 5714/10101/5694 5734/10097/5713\nf 5738/10100/5716 5734/10097/5713 5733/10099/5715\nf 5738/10102/5716 5719/10103/5717 5720/10080/5701\nf 3523/10104/3536 4986/10105/4989 4358/8770/4764\nf 4987/9117/4991 6124/10106/5718 5739/10107/5719\nf 5740/10108/5720 4987/9120/4991 4990/9119/4992\nf 5740/10108/5720 4990/9119/4992 4993/10109/4996\nf 5740/10108/5720 6124/10110/5718 4987/9120/4991\nf 4996/10111/4998 5741/10112/5721 4994/10113/4997\nf 4994/10114/4997 4995/10115/5006 4996/10116/4998\nf 5158/9307/5144 5742/10117/5722 5004/9308/5004\nf 4807/10118/4808 5746/10119/5723 5743/10120/5724\nf 5747/10121/5725 5745/10122/5726 4807/10118/4808\nf 5749/10123/5727 5750/10124/5728 5747/10121/5725\nf 5747/10121/5725 5750/10124/5728 5748/10125/5729\nf 5749/10123/5727 4831/10126/4831 4833/10127/4830\nf 5749/10128/5727 4833/10129/4830 5752/10130/5730\nf 4834/10131/4833 5752/10130/5730 4833/10129/4830\nf 5753/10132/5731 5752/10133/5730 5754/10134/5732\nf 5756/10135/5733 4978/9104/4982 5755/10136/5734\nf 4975/10137/5735 5756/10138/5733 5757/10139/5736\nf 5756/10135/5733 4975/10140/5735 4977/9103/4981\nf 5758/10141/5737 5759/10142/5738 4975/10137/5735\nf 4975/10140/5735 5759/10143/5738 4972/9099/4977\nf 5758/10141/5737 4975/10137/5735 5757/10139/5736\nf 5752/10144/5730 4972/9099/4977 5759/10143/5738\nf 5752/10133/5730 5758/10141/5737 5754/10134/5732\nf 4978/10145/4982 4982/10146/4986 5755/10147/5734\nf 5763/10148/5739 5757/10149/5736 5756/10150/5733\nf 5755/10147/5734 5760/10151/5740 5764/10152/5741\nf 5764/10153/5741 5760/10151/5740 5762/10154/5742\nf 5764/10155/5741 5763/10156/5739 5755/10157/5734\nf 5764/10153/5741 5757/10149/5736 5763/10148/5739\nf 5745/10158/5726 5765/10159/5743 5766/10160/5744\nf 5765/10161/5743 5748/10125/5729 5766/10162/5744\nf 5748/10125/5729 5765/10161/5743 5745/10122/5726\nf 5767/10163/5745 5762/10154/5742 5760/10151/5740\nf 4384/10164/4378 5767/10165/5745 5761/10166/5746\nf 5769/10167/5747 5770/10168/5748 5768/10169/5749\nf 5773/10170/5750 5772/10171/5751 5769/10167/5747\nf 5773/10170/5750 5769/10167/5747 5768/10169/5749\nf 5773/10170/5750 5774/10172/5752 5772/10171/5751\nf 5773/10170/5750 5775/10173/4383 5774/10172/5752\nf 5767/10163/5745 5770/10174/5748 5776/10175/5753\nf 5776/10175/5753 5777/10176/5754 5767/10163/5745\nf 5757/10149/5736 5777/10176/5754 5778/10177/5755\nf 5779/10178/5756 5757/10139/5736 5778/10179/5755\nf 5779/10178/5756 5778/10179/5755 5781/10180/5757\nf 5779/10178/5756 5754/10134/5732 5758/10141/5737\nf 5779/10178/5756 5782/10181/5758 5754/10134/5732\nf 5784/10182/5759 5754/10134/5732 5782/10181/5758\nf 5784/10182/5759 5782/10181/5758 5783/10183/5760\nf 5784/10182/5759 5751/10184/5761 5753/10132/5731\nf 5785/10185/5762 5783/10183/5760 5786/10186/5763\nf 5788/10187/5764 5785/10188/5762 5786/10189/5763\nf 5750/10124/5728 5766/10162/5744 5748/10125/5729\nf 5789/10190/5765 5787/10191/5766 5791/10192/5767\nf 5792/10193/5768 5766/10160/5744 5790/10194/5769\nf 5792/10193/5768 5790/10194/5769 5789/10190/5765\nf 5792/10193/5768 5746/10195/5723 5745/10158/5726\nf 5792/10196/5768 4405/8156/4396 5746/10119/5723\nf 5794/10197/5770 5795/10198/5771 6114/10199/5772\nf 5794/10197/5770 5774/10172/5752 5775/10173/4383\nf 5794/10197/5770 5796/10200/5773 5827/10201/5774\nf 5794/10197/5770 5798/10202/5775 5796/10200/5773\nf 5798/10202/5775 5793/10203/5776 5799/10204/5777\nf 5802/10205/5778 5801/10206/5779 5803/10207/5780\nf 5804/10208/5781 5812/10209/5782 5802/10205/5778\nf 5804/10208/5781 5805/10210/5783 5812/10209/5782\nf 5805/10210/5783 5804/10208/5781 5807/10211/5784\nf 5808/10212/5785 5809/10213/5786 5816/8206/4438\nf 5705/10055/5682 4322/8038/4320 5809/10213/5786\nf 5809/10213/5786 5729/10093/5709 5705/10055/5682\nf 5809/10213/5786 4424/8181/4418 5816/8206/4438\nf 5801/10206/5779 5810/10214/5787 5811/10215/5788\nf 5812/10209/5782 5805/10210/5783 5813/10216/5789\nf 5806/10217/5790 5815/10218/5791 5814/10219/5792\nf 5818/10220/5793 5817/10221/5794 5800/10222/5795\nf 5819/10223/5796 5818/10220/5793 5800/10222/5795\nf 5800/10222/5795 5801/10206/5779 5819/10223/5796\nf 5818/10220/5793 5819/10223/5796 4433/8186/4423\nf 5731/10092/5708 5709/10059/5686 5706/10056/5683\nf 5735/10098/5714 5737/10224/5797 5733/10099/5715\nf 5821/10225/5798 5818/10220/5793 5820/10226/5799\nf 5823/10227/5800 4437/8191/4428 4440/8195/4432\nf 5824/10228/5801 4444/8196/4433 5825/10229/5802\nf 5826/10230/5803 4444/8201/4433 4447/8203/4437\nf 5795/10198/5771 5826/10231/5803 4447/8204/4437\nf 4448/8213/4440 5813/10216/5789 4449/8210/4441\nf 5813/10216/5789 4448/8213/4440 5810/10214/5787\nf 5813/10216/5789 5805/10210/5783 5828/10232/5804\nf 5828/10232/5804 4449/8210/4441 5813/10216/5789\nf 5814/10219/5792 5828/10232/5804 5805/10210/5783\nf 5811/10215/5788 4448/8213/4440 4451/8214/4443\nf 4451/8214/4443 5819/10223/5796 5811/10215/5788\nf 5830/10233/5805 5829/10234/5806 5832/10235/5807\nf 5833/10236/5808 5834/10237/5809 5832/10238/5807\nf 5832/10238/5807 5831/10239/5810 5833/10236/5808\nf 5838/10240/5811 5839/10241/5812 5835/10242/5813\nf 5834/10243/5809 5836/10244/5814 5838/10240/5811\nf 5834/10243/5809 5838/10240/5811 5835/10242/5813\nf 5834/10237/5809 5833/10236/5808 5836/10245/5814\nf 5837/10246/5815 5840/10247/5816 5718/10248/5698\nf 5833/10236/5808 5841/10249/5817 5842/10250/5818\nf 5846/10251/5819 5844/10252/5820 5853/10253/5821\nf 5846/10251/5819 5853/10253/5821 5847/10254/5822\nf 5840/10255/5816 5845/10256/5823 5725/10257/5703\nf 5843/10258/5824 5845/10259/5823 5831/10260/5810\nf 5845/10256/5823 5841/10261/5817 5831/10262/5810\nf 5844/10263/5820 5843/10264/5824 5829/10234/5806\nf 5830/10265/5805 5850/10266/5825 5851/10267/5826\nf 5852/10268/5827 5853/10269/5821 5844/10270/5820\nf 5851/10271/5826 5853/10269/5821 5852/10268/5827\nf 5853/10269/5821 5848/10272/5828 5854/10273/5829\nf 5855/10274/5830 5849/10275/5831 5839/10276/5812\nf 5856/10277/5832 5727/10085/5706 5726/10083/5704\nf 5726/10278/5704 5854/10273/5829 5856/10279/5832\nf 5856/10279/5832 5859/10280/5833 5858/10281/5834\nf 5500/10282/5479 5728/10090/5707 5861/10283/5835\nf 5500/10282/5479 5861/10283/5835 5507/10284/5486\nf 5860/10285/5836 5856/10286/5832 5854/10287/5829\nf 5860/10288/5836 5862/10289/5837 5859/10280/5833\nf 5863/10290/5838 5854/10291/5829 5848/10292/5828\nf 5860/10288/5836 5863/10293/5838 5862/10289/5837\nf 5510/9748/5489 5865/10294/5839 5866/10295/5840\nf 5866/10295/5840 5512/9752/5490 5510/9748/5489\nf 5869/10296/5841 5868/10297/5842 5944/10298/5843\nf 5514/9754/5163 5871/10299/5844 5867/10300/5845\nf 5871/10301/5844 5513/10302/5491 5512/10303/5490\nf 5871/10301/5844 5866/10304/5840 5872/10305/5846\nf 5516/9755/5492 5515/9757/5494 5873/10306/5847\nf 5869/10296/5841 5944/10298/5843 5874/10307/5848\nf 5873/10308/5847 5874/10307/5848 5875/10309/5849\nf 5877/10310/5850 5511/10311/5851 5878/10312/5852\nf 5875/10313/5849 5285/10314/5265 5545/9802/5264\nf 5545/9802/5264 5873/10306/5847 5875/10313/5849\nf 5286/10315/5267 5283/9483/5266 5282/9471/5261\nf 5880/10316/5853 5796/10200/5773 5799/10204/5777\nf 5791/10317/5767 5799/10318/5777 5789/10319/5765\nf 5791/10192/5767 5787/10191/5766 5788/10320/5764\nf 5788/10321/5764 5882/10322/5854 5791/10317/5767\nf 5883/10323/5855 5823/10227/5800 5824/10228/5801\nf 5883/10323/5855 5824/10228/5801 5885/10324/5856\nf 5888/10325/5857 5890/10326/5858 5885/10324/5856\nf 5885/10324/5856 5825/10229/5802 5888/10325/5857\nf 5888/10325/5857 5826/10327/5803 5889/10328/5859\nf 5890/10326/5858 5889/10328/5859 5882/10322/5854\nf 5826/10327/5803 5888/10325/5857 5825/10229/5802\nf 5891/10329/5860 5822/10330/5861 5892/10331/5862\nf 5822/10330/5861 5891/10329/5860 5820/10332/5799\nf 5892/10333/5862 5884/10334/5863 5893/10335/5864\nf 5891/10329/5860 5895/10336/5865 5821/10337/5798\nf 5896/10338/5866 5736/10095/5711 5807/10211/5784\nf 5896/10338/5866 5807/10211/5784 5804/10208/5781\nf 5899/10339/5867 5804/10208/5781 5802/10205/5778\nf 5899/10339/5867 5900/10340/5868 5901/10341/5869\nf 5899/10339/5867 5901/10341/5869 5898/10342/5870\nf 5803/10207/5780 5817/10221/5794 5902/10343/5871\nf 5895/10344/5865 5903/10345/5872 5817/10221/5794\nf 5894/10346/5873 5904/10347/5874 5895/10344/5865\nf 5906/10348/5875 5907/10349/5876 5908/10350/5877\nf 5906/10348/5875 5908/10350/5877 5904/10347/5874\nf 5907/10349/5876 5905/10351/5878 5909/10352/5879\nf 5903/10345/5872 5904/10347/5874 5908/10350/5877\nf 5903/10353/5872 5911/10354/5880 5910/10355/5881\nf 5910/10356/5881 5912/10357/5882 5900/10340/5868\nf 5910/10358/5881 5900/10359/5868 5902/10360/5871\nf 5901/10341/5869 5913/10361/5883 5898/10342/5870\nf 5914/10362/5884 5896/10338/5866 5897/10363/5885\nf 5898/10342/5870 5913/10361/5883 5914/10362/5884\nf 5914/10362/5884 5913/10361/5883 5915/10364/5886\nf 5735/10098/5714 5914/10362/5884 5737/10224/5797\nf 5737/10224/5797 5914/10362/5884 5915/10364/5886\nf 5916/10365/5887 5917/10366/5888 5918/10367/5889\nf 5738/10100/5716 5918/10367/5889 5719/10368/5717\nf 5918/10367/5889 5737/10224/5797 5916/10365/5887\nf 5919/10369/5890 5920/10370/5891 5917/10366/5888\nf 5917/10366/5888 5920/10370/5891 5921/10371/5892\nf 5919/10369/5890 5916/10365/5887 5915/10364/5886\nf 5922/10372/5893 5837/10246/5815 5920/10373/5891\nf 5716/10374/5696 5921/10371/5892 5924/10375/5894\nf 5924/10376/5894 5921/10377/5892 5920/10373/5891\nf 5920/10373/5891 5717/10378/5697 5924/10376/5894\nf 5716/10374/5696 5719/10368/5717 5918/10367/5889\nf 5925/10379/5895 5511/10380/5851 5508/9751/5487\nf 5925/10379/5895 5878/10381/5852 5511/10380/5851\nf 5925/10382/5895 5507/10284/5486 5926/10383/5896\nf 5861/10283/5835 5857/10384/5897 5926/10383/5896\nf 5861/10283/5835 5926/10383/5896 5507/10284/5486\nf 5858/10281/5834 5927/10385/5898 5857/10386/5897\nf 5926/10387/5896 5927/10388/5898 5878/10389/5852\nf 5928/10390/5899 5876/10391/5900 5877/10392/5850\nf 5877/10393/5850 5927/10385/5898 5928/10394/5899\nf 5859/10280/5833 5929/10395/5901 5858/10281/5834\nf 5929/10395/5901 5927/10385/5898 5858/10281/5834\nf 5928/10390/5899 5930/10396/5902 5931/10397/5903\nf 5932/10398/5904 5933/10399/5905 5934/10400/5906\nf 5859/10280/5833 5934/10401/5906 5935/10402/5907\nf 5932/10403/5904 5859/10280/5833 5862/10289/5837\nf 5937/10404/5908 5939/10405/5909 5876/10391/5900\nf 5876/10391/5900 5939/10405/5909 5872/10305/5846\nf 5939/10406/5909 5940/10407/5910 5941/10408/5911\nf 5939/10406/5909 5938/10409/5912 5940/10407/5910\nf 5942/10410/5913 5943/10411/5914 5944/10298/5843\nf 5942/10412/5913 5941/10408/5911 5940/10407/5910\nf 5870/10413/5915 5941/10414/5911 5942/10410/5913\nf 5942/10410/5913 5868/10297/5842 5870/10413/5915\nf 5943/10415/5914 5947/10416/5916 5944/10417/5843\nf 5879/10418/5917 5875/10419/5849 5946/10420/5918\nf 5949/10421/5919 5285/10314/5265 5879/10422/5917\nf 5948/10423/5920 5949/10424/5919 5946/10420/5918\nf 5948/10425/5920 5950/10426/5921 5286/9485/5267\nf 5950/10426/5921 5948/10425/5920 5946/10427/5918\nf 5943/10428/5914 5950/10426/5921 5947/10429/5916\nf 5951/10430/5922 5943/10411/5914 5952/10431/5923\nf 5951/10432/5922 5952/10433/5923 5953/10434/5924\nf 5954/10435/5925 5952/10431/5923 5955/10436/5926\nf 5945/10437/5927 5956/10438/5928 5955/10436/5926\nf 5276/9464/5255 5957/10439/5929 5277/10440/5930\nf 5958/10441/5931 5276/9464/5255 5286/9485/5267\nf 5277/10440/5930 5960/10442/5932 5268/9466/5256\nf 5959/10443/5933 5277/10440/5930 5957/10439/5929\nf 5957/10439/5929 5961/10444/5934 5959/10443/5933\nf 5961/10444/5934 5960/10442/5932 5959/10443/5933\nf 5963/10445/5935 5962/10446/5936 5966/10447/5937\nf 5273/9463/5254 5964/10448/5938 5272/10449/5668\nf 5963/10450/5935 5965/10451/5939 5964/10452/5938\nf 5966/10447/5937 5967/10453/5940 5968/10454/5941\nf 5968/10454/5941 5963/10445/5935 5966/10447/5937\nf 5969/10455/5942 5961/10444/5934 5971/10456/5943\nf 5971/10456/5943 5961/10444/5934 5972/10457/5944\nf 5973/10458/5945 5972/10457/5944 5961/10444/5934\nf 5961/10444/5934 5957/10439/5929 5973/10458/5945\nf 5953/10434/5924 5952/10433/5923 5974/10459/5946\nf 5953/10434/5924 5958/10441/5931 5950/10426/5921\nf 5974/10459/5946 5975/10460/5947 5976/10461/5948\nf 5977/10462/5949 5955/10436/5926 5956/10438/5928\nf 5954/10435/5925 5978/10463/5950 5975/10464/5947\nf 5979/10465/5951 5980/10466/5952 5981/10467/5953\nf 5976/10461/5948 5975/10460/5947 5979/10468/5951\nf 5982/10469/5954 5979/10468/5951 5981/10470/5953\nf 5976/10461/5948 5983/10471/5955 5972/10457/5944\nf 5969/10455/5942 5971/10456/5943 5972/10457/5944\nf 5972/10457/5944 5983/10471/5955 5969/10455/5942\nf 5967/10472/5940 5970/10473/5956 5984/10474/5957\nf 5984/10475/5957 5985/10476/5958 6058/10477/5959\nf 5986/10478/5960 5981/10470/5953 5993/10479/5961\nf 5988/10480/5962 5983/10481/5955 5982/10482/5954\nf 5989/10483/5963 5990/10484/5964 5985/10476/5958\nf 5989/10485/5963 5983/10471/5955 5988/10486/5962\nf 5981/10470/5953 5992/10487/5965 5993/10479/5961\nf 5994/10488/5966 5938/10489/5912 5937/10404/5908\nf 5994/10488/5966 5937/10404/5908 5931/10397/5903\nf 5930/10490/5902 5978/10491/5950 5995/10492/5967\nf 5977/10493/5949 5994/10488/5966 5996/10494/5968\nf 5977/10493/5949 5996/10494/5968 5995/10495/5967\nf 5980/10496/5952 5998/10497/5969 5997/10498/5970\nf 5935/10499/5907 5998/10500/5969 5999/10501/5971\nf 5930/10502/5902 5999/10501/5971 5980/10503/5952\nf 5992/10487/5965 6005/10504/5972 6004/10505/5973\nf 6005/10506/5972 5997/10507/5970 5998/10508/5969\nf 6005/10509/5972 6006/10510/5974 6004/10511/5973\nf 6001/10512/5975 5907/10349/5876 5909/10352/5879\nf 6001/10512/5975 6008/10513/5976 5907/10349/5876\nf 6001/10512/5975 6003/10514/5977 6007/10515/5978\nf 6008/10513/5976 6007/10515/5978 6009/10516/5979\nf 6006/10517/5974 6007/10515/5978 6003/10514/5977\nf 6009/10516/5979 6010/10518/5980 6008/10513/5976\nf 5935/10499/5907 6005/10504/5972 5998/10500/5969\nf 6011/10519/5981 5934/10520/5906 5933/10521/5905\nf 6011/10522/5981 5933/10523/5905 6012/10524/5982\nf 6011/10519/5981 6006/10517/5974 6005/10504/5972\nf 6012/10525/5982 6010/10518/5980 6009/10526/5979\nf 5839/10241/5812 5838/10240/5811 5922/10527/5893\nf 5936/10528/5983 5862/10289/5837 5863/10293/5838\nf 5864/10529/5984 5923/10530/5985 5933/10531/5905\nf 6013/10532/5986 5933/10521/5905 5923/10533/5985\nf 6013/10532/5986 6010/10518/5980 6012/10525/5982\nf 6014/10534/5987 5907/10349/5876 6008/10513/5976\nf 6014/10534/5987 5912/10357/5882 5911/10535/5880\nf 5912/10357/5882 6010/10518/5980 5913/10361/5883\nf 6013/10532/5986 5915/10364/5886 6010/10518/5980\nf 6015/10536/5988 5984/10537/5957 6016/10538/5989\nf 6016/10538/5989 5984/10537/5957 6017/10539/5990\nf 6015/10540/5988 5968/10454/5941 5967/10453/5940\nf 5968/10541/5941 6018/10542/5991 5964/10543/5938\nf 5968/10544/5941 5964/10545/5938 5965/10546/5939\nf 6016/10538/5989 6017/10539/5990 6020/10547/5992\nf 6021/10548/5993 6020/10547/5992 6022/10549/5994\nf 6016/10538/5989 6021/10548/5993 6023/10550/5995\nf 6015/10536/5988 6024/10551/5996 6018/10552/5991\nf 6018/10553/5991 6026/10554/5997 6019/10555/5998\nf 6025/10556/5999 6018/10552/5991 6024/10551/5996\nf 6025/10557/5999 6024/10551/5996 6023/10550/5995\nf 6027/10558/6000 5964/10448/5938 6019/10555/5998\nf 5272/10449/5668 6029/10559/6001 5685/10560/5667\nf 6031/10561/6002 6030/10562/6003 6032/10563/6004\nf 6033/10564/6005 6019/10555/5998 6026/10554/5997\nf 6033/10565/6005 6034/10566/6006 6027/10567/6000\nf 6029/10568/6001 6027/10567/6000 6036/10569/6007\nf 5254/10570/5570 6037/10571/6008 5595/9877/5571\nf 5595/9877/5571 6038/10572/6009 6039/10573/6010\nf 6040/10574/6011 6037/10571/6008 6034/10566/6006\nf 6034/10566/6006 6036/10569/6007 6027/10567/6000\nf 6040/10575/6011 6041/10576/6012 6042/10577/6013\nf 6033/10565/6005 6041/10578/6012 6034/10566/6006\nf 6042/10579/6013 5586/9862/5559 6038/10572/6009\nf 6038/10572/6009 6040/10574/6011 6042/10579/6013\nf 6045/10580/6014 6044/10581/6015 6092/10582/6016\nf 6045/10580/6014 5586/9862/5559 6044/10581/6015\nf 5162/9841/5546 5572/9840/5545 6045/10580/6014\nf 5905/10351/5878 5893/10583/5864 6048/10584/6017\nf 6048/10584/6017 5893/10583/5864 6047/10585/6018\nf 6047/10586/6018 5893/10335/5864 5884/10334/5863\nf 6049/10587/6019 6051/10588/6020 6052/10589/6021\nf 6049/10587/6019 6053/10590/6022 6054/10591/6023\nf 6055/10592/6024 6047/10585/6018 6050/10593/6025\nf 6055/10592/6024 5909/10352/5879 5905/10351/5878\nf 5986/10594/5960 6056/10595/6026 5987/10596/6027\nf 6056/10597/6026 5993/10479/5961 6000/10598/6028\nf 6057/10599/6029 5988/10486/5962 6056/10597/6026\nf 6056/10597/6026 6055/10592/6024 6057/10599/6029\nf 5990/10600/5964 5988/10486/5962 6057/10599/6029\nf 6058/10601/5959 6050/10602/6025 6054/10603/6023\nf 6059/10604/6030 6058/10477/5959 6053/10590/6022\nf 6059/10604/6030 6017/10605/5990 5984/10475/5957\nf 6020/10547/5992 6017/10539/5990 6059/10606/6030\nf 6059/10604/6030 6022/10607/5994 6020/10608/5992\nf 6051/10609/6020 5886/10610/6031 6060/10611/6032\nf 6061/10612/6033 6060/10613/6032 6062/10614/6034\nf 6063/10615/6035 6053/10590/6022 6052/10589/6021\nf 6061/10612/6033 6052/10589/6021 6051/10588/6020\nf 6064/10616/6036 6065/10617/6037 6066/10618/6038\nf 6067/10619/6039 6068/10620/6040 6066/10621/6038\nf 6069/10622/6041 5881/10623/6042 6070/10624/6043\nf 6070/10625/6043 6064/10616/6036 6068/10626/6040\nf 6069/10622/6041 6068/10627/6040 6071/10628/6044\nf 6069/10629/6041 5890/10630/5858 5882/10631/5854\nf 6073/10632/6045 6072/10633/6046 6071/10634/6044\nf 6072/10635/6046 5887/10636/6047 5890/10326/5858\nf 6074/10637/6048 6073/10632/6045 6071/10634/6044\nf 6074/10637/6048 6060/10638/6032 6073/10632/6045\nf 5887/10636/6047 6060/10611/6032 5886/10610/6031\nf 5889/10328/5859 5796/10639/5773 5880/10640/5853\nf 5882/10322/5854 5880/10640/5853 5791/10317/5767\nf 5827/10641/5774 5889/10328/5859 5826/10327/5803\nf 6075/10642/6049 5625/9943/5606 5623/9941/5604\nf 6076/10643/6050 5623/10644/5604 5624/10645/5605\nf 5625/9943/5606 6075/10642/6049 6065/10617/6037\nf 6076/10646/6050 5624/9942/5605 5628/9944/5607\nf 6075/10642/6049 6078/10647/6051 6079/10648/6052\nf 6079/10648/6052 6065/10617/6037 6075/10642/6049\nf 6078/10647/6051 6077/10649/6053 6081/10650/6054\nf 6074/10637/6048 6071/10634/6044 6079/10648/6052\nf 6083/10651/6055 6023/10550/5995 6082/10652/6056\nf 6082/10652/6056 6022/10549/5994 6084/10653/6057\nf 6025/10557/5999 6083/10651/6055 6026/10654/5997\nf 6083/10651/6055 6033/10565/6005 6026/10654/5997\nf 6085/10655/6058 6043/10656/6059 6035/10657/6060\nf 6085/10655/6058 6083/10651/6055 6086/10658/6061\nf 6085/10655/6058 6086/10658/6061 6087/10659/6062\nf 6082/10652/6056 6086/10658/6061 6083/10651/6055\nf 6087/10659/6062 6086/10658/6061 6088/10660/6063\nf 6082/10652/6056 6084/10653/6057 6089/10661/6064\nf 6090/10662/6065 6022/10607/5994 6063/10615/6035\nf 6091/10663/6066 6063/10615/6035 6062/10614/6034\nf 6092/10582/6016 6044/10581/6015 6087/10659/6062\nf 6093/10664/6067 5619/10665/5598 6094/10666/6068\nf 5619/10665/5598 6095/10667/6069 6094/10666/6068\nf 6097/10668/6070 5620/9929/5597 5619/9931/5598\nf 6097/10669/6070 6093/10670/6067 6116/10671/6071\nf 4726/8656/4720 6098/10672/6072 5622/10673/5601\nf 4728/8667/4722 4230/7904/4229 5552/9809/5523\nf 5551/9808/5522 4728/8667/4722 5552/9809/5523\nf 6070/10625/6043 5783/10183/5760 6099/10674/6073\nf 6070/10625/6043 6099/10674/6073 6064/10616/6036\nf 6100/10675/6074 6064/10616/6036 6099/10674/6073\nf 6100/10675/6074 6101/10676/6075 6064/10616/6036\nf 5560/10677/5531 6102/10678/6076 5550/10679/6077\nf 5551/9808/5522 6104/10680/6078 4729/8678/4723\nf 6104/10680/6078 5551/9808/5522 5550/10679/6077\nf 6105/10681/6079 5550/10679/6077 6102/10678/6076\nf 6101/10676/6075 5780/10682/6080 6106/10683/6081\nf 6101/10676/6075 5783/10183/5760 5782/10181/5758\nf 6107/10684/6082 6065/10617/6037 6106/10683/6081\nf 6107/10684/6082 6106/10683/6081 5780/10682/6080\nf 6107/10684/6082 6103/10685/6083 5625/9943/5606\nf 6108/10686/6084 6107/10687/6082 5780/10688/6080\nf 6107/10687/6082 6102/10678/6076 6103/10689/6083\nf 5781/10180/5757 6108/10690/6084 5780/10682/6080\nf 6108/10691/6084 5778/10692/5755 6105/10693/6079\nf 6110/10694/6085 5776/10695/5753 6111/10696/6086\nf 6111/10696/6086 5771/10697/6087 6112/10698/6088\nf 6112/10698/6088 6110/10694/6085 6111/10696/6086\nf 5777/10699/5754 6109/10700/6089 5778/10701/5755\nf 6114/10199/5772 5772/10171/5751 5774/10172/5752\nf 6112/10698/6088 5771/10697/6087 6113/10702/6090\nf 6112/10698/6088 4741/8700/4739 4744/8706/4741\nf 5158/9307/5144 5002/10703/5001 5742/10117/5722\nf 5002/10703/5001 5004/9308/5004 5742/10117/5722\nf 6097/10704/6070 6117/10705/6091 5620/10706/5597\nf 6117/10707/6091 5741/10112/5721 4998/10708/6092\nf 6118/10709/6093 5567/9930/5538 5620/9929/5597\nf 6118/10709/6093 5620/9929/5597 6117/10710/6091\nf 6119/10711/6094 6118/10712/6093 5000/10713/6095\nf 6118/10712/6093 6120/10714/6096 5567/9952/5538\nf 6119/10711/6094 5000/10713/6095 5002/10703/5001\nf 6121/10715/6097 5704/10716/5681 5156/9306/5143\nf 5154/9304/5141 6121/10715/6097 5156/9306/5143\nf 6116/10717/6071 6093/10664/6067 5741/10112/5721\nf 6122/10718/6098 4992/9125/4995 5741/10112/5721\nf 6123/10719/6099 4986/10105/4989 5739/10720/5719\nf 6096/10721/6100 6123/10719/6099 6124/10722/5718\nf 6123/10719/6099 6096/10721/6100 6098/10723/6072\nf 6095/10667/6069 6096/10721/6100 4993/9126/4996\nf 6125/10724/6101 4993/9126/4996 4992/9125/4995\nf 6094/10725/6068 6095/10667/6069 6125/10724/6101\nf 6122/10718/6098 6125/10724/6101 4992/9125/4995\nf 5703/10726/5680 5702/10727/5679 5154/9304/5141\nf 6126/10728/6102 5149/9301/5138 5148/9300/5137\nf 6046/10729/6103 5627/10730/5610 5701/10731/6104\nf 6127/10732/6105 6046/10729/6103 5573/10733/5548\nf 6045/10580/6014 6128/10734/6106 6127/10735/6105\nf 6128/10736/6106 5628/10737/5607 5629/10738/5609\nf 6129/10739/6107 6088/10740/6063 6077/10741/6053\nf 6091/10663/6066 6080/10742/6108 6130/10743/6109\nf 5043/9175/5039 5201/9668/5426 5184/9376/5195\nf 5846/10251/5819 5725/10257/5703 5845/10256/5823\nf 5850/10266/5825 5835/10242/5813 5849/10744/5831\nf 5744/10745/6110 5746/10119/5723 4405/8156/4396\nf 5793/10203/5776 5798/10202/5775 6131/10746/6111\nf 4760/8768/4763 4986/10105/4989 6123/10719/6099\nf 4384/10164/4378 4385/10747/4377 5768/10169/5749\nf 3301/8772/4765 5743/10120/5724 5744/10745/6110\nf 5743/10748/5724 3301/10749/4765 4761/10750/6112\nf 5797/10751/6113 6131/10746/6111 5798/10202/5775\nf 5775/10752/4383 4390/10753/4382 5797/10754/6113\nf 5744/10745/6110 4405/8156/4396 3301/8772/4765\nf 3319/6720/3387 3320/6663/3342 3327/6662/3341\nf 3602/7044/3610 3601/7043/3609 3604/7046/3612\nf 3583/7020/3587 3606/7414/3879 3605/7410/3875\nf 3888/7419/3884 3630/7072/3633 3631/7075/3636\nf 3632/7077/3638 3889/10755/6114 3888/7419/3884\nf 3890/7447/3906 3633/10756/3641 3891/7449/3908\nf 4779/8792/4783 4836/9145/5011 4781/8796/4786\nf 3555/6995/3562 3554/6994/3561 5017/9149/5015\nf 3633/10756/3641 5326/9552/5309 3891/7449/3908\nf 3297/10757/6115 3301/10758/4765 3298/6633/3317\nf 3299/6632/3316 3297/10757/6115 3298/6633/3317\nf 3302/6638/3319 3306/6641/3323 3345/6642/3324\nf 3304/10759/3321 3309/6781/3427 3307/6645/3326\nf 3309/6781/3427 3304/10759/3321 3308/10760/3325\nf 3307/6645/3326 3309/6781/3427 3310/6732/3395\nf 3307/6645/3326 3312/6650/3331 3313/6646/3327\nf 3312/6650/3331 3307/6645/3326 3310/6732/3395\nf 3312/6650/3331 3314/6648/3329 3313/6646/3327\nf 3314/6648/3329 3316/6651/3332 3317/6774/3333\nf 3315/6653/3330 3317/6652/3333 3318/6719/3386\nf 3318/6719/3386 3317/10761/3333 3385/10762/3421\nf 3318/6719/3386 3385/10762/3421 3386/10763/3424\nf 3319/6720/3387 3386/10763/3424 3320/6663/3342\nf 3347/6657/3336 3349/6688/3360 3323/6658/3337\nf 3321/6655/3334 3323/6658/3337 3324/6659/3338\nf 3325/6660/3339 3350/6691/3363 3321/6655/3334\nf 3325/6660/3339 3324/6659/3338 3326/10764/3649\nf 3328/6661/3340 3329/6723/3345 3327/6662/3341\nf 3299/10765/3316 3306/10766/3323 3335/10767/3348\nf 3306/6641/3323 3305/6640/3322 3335/6670/3348\nf 3337/6672/3349 3338/8866/4834 3336/6669/3347\nf 3336/6669/3347 3304/6639/3321 3307/6671/3326\nf 3339/6680/3350 3341/6682/3354 3334/6746/3351\nf 3332/6681/3346 3339/6680/3350 3340/10768/3353\nf 3340/6730/3353 3331/6665/3344 3332/6668/3346\nf 3300/6634/3318 3345/6642/3324 3306/6641/3323\nf 3298/6633/3317 3343/6684/3356 3300/6634/3318\nf 3342/6683/3355 3300/6634/3318 3343/6684/3356\nf 3345/6642/3324 3300/6634/3318 3342/6683/3355\nf 3345/6642/3324 3342/6683/3355 3346/6686/3358\nf 3347/6657/3336 3322/6656/3335 3348/6687/3359\nf 3325/6660/3339 3326/10764/3649 3351/6689/3361\nf 3352/6690/3362 3354/6692/3364 3350/6691/3363\nf 3352/6690/3362 3351/6689/3361 3353/6693/3365\nf 3354/6692/3364 3352/6690/3362 3353/6693/3365\nf 3353/6693/3365 3356/6696/3368 3357/6694/3366\nf 3361/6704/3373 3362/6703/3372 3360/6750/3371\nf 3333/6702/3352 3334/6747/3351 3362/6703/3372\nf 3363/6705/3374 3349/6688/3360 3346/6686/3358\nf 3364/6707/3375 3324/6659/3338 3323/6658/3337\nf 3364/10769/3375 3363/10770/3374 3365/10771/3378\nf 3367/6709/3377 3364/6707/3375 3365/6710/3378\nf 3368/6708/3376 3326/10764/3649 3324/6659/3338\nf 3344/6685/3357 3363/6705/3374 3342/6683/3355\nf 3363/6705/3374 3344/6685/3357 3369/6713/3381\nf 3370/6712/3380 3369/6713/3381 3371/10772/4360\nf 3370/6712/3380 3365/6710/3378 3363/6705/3374\nf 3366/6711/3379 3365/6710/3378 3370/6712/3380\nf 3372/10773/3382 3370/10774/3380 3371/10775/4360\nf 3337/6672/3349 3373/6996/3563 3338/8866/4834\nf 3373/6996/3563 3337/6672/3349 3551/6715/3383\nf 3311/6673/3328 3313/6717/3327 3550/6716/3384\nf 3315/6653/3330 3549/6991/3558 3550/6716/3384\nf 3548/6990/3557 3315/6653/3330 3318/6719/3386\nf 3375/6721/3388 3319/6720/3387 3327/6662/3341\nf 3329/6666/3345 3331/6665/3344 3378/6727/3391\nf 3380/6729/3393 3379/6728/3392 3331/6665/3344\nf 3310/6732/3395 3382/6783/3428 3381/6731/3394\nf 3382/6783/3428 3310/6732/3395 3309/6781/3427\nf 3308/10760/3325 3384/6782/3397 3309/6781/3427\nf 3413/10776/3399 3320/6663/3342 3386/10763/3424\nf 3414/6736/3398 3387/6778/3400 3320/6737/3342\nf 3320/6663/3342 3387/6739/3400 3328/6661/3340\nf 3387/6739/3400 3388/10777/3401 3330/6740/3343\nf 3332/6681/3346 3389/6742/3402 3390/6744/3403\nf 3341/6682/3354 3390/6744/3403 3391/6745/3404\nf 3334/6746/3351 3391/6745/3404 3392/10778/3405\nf 3407/6751/3407 3360/6750/3371 3362/6703/3372\nf 3395/6753/3409 3357/6694/3366 3360/6750/3371\nf 3394/6752/3408 3395/6753/3409 3393/6749/3406\nf 3396/6754/3410 3354/6692/3364 3357/6694/3366\nf 3399/6758/3412 3350/6691/3363 3354/6692/3364\nf 3398/6828/3459 3399/6768/3412 3354/6757/3364\nf 3400/6759/3413 3322/6656/3335 3321/6655/3334\nf 3401/6765/3414 3348/6760/3359 3400/6762/3413\nf 3401/6765/3414 3404/6767/3416 3402/6766/3415\nf 3348/6760/3359 3402/6766/3415 3403/10779/6116\nf 3404/6767/3416 3400/6762/3413 3399/6768/3412\nf 3399/6768/3412 3398/6828/3459 3405/6769/3417\nf 3354/6757/3364 3397/6756/3411 3398/6828/3459\nf 3395/10780/3409 3397/6756/3411 3396/6755/3410\nf 3362/6703/3372 3408/6772/3420 3407/6751/3407\nf 3362/6703/3372 3392/6748/3405 3409/6771/3419\nf 3410/6775/3422 3317/6774/3333 3316/6651/3332\nf 3385/6773/3421 3410/6775/3422 3411/6776/3423\nf 3386/6777/3424 3411/6776/3423 3412/6789/3432\nf 3386/6777/3424 3412/6789/3432 3413/6738/3399\nf 3415/10781/3434 3416/10782/3425 3414/10783/3398\nf 3417/6780/3426 3382/6783/3428 3309/6781/3427\nf 3384/6735/3397 3418/6830/3460 3417/10784/3426\nf 3419/6805/3442 3384/6735/3397 3303/6636/3320\nf 3419/6805/3442 3418/6830/3460 3384/6735/3397\nf 3419/6805/3442 3303/6636/3320 3383/6733/3396\nf 3403/10785/6116 3383/6733/3396 3348/6764/3359\nf 3383/6733/3396 3403/10785/6116 3419/6805/3442\nf 3382/6783/3428 3420/6809/3430 3316/6651/3332\nf 3421/6784/3429 3410/10786/3422 3316/6785/3332\nf 3411/6776/3423 3421/6787/3429 3422/6816/3450\nf 3411/6776/3423 3422/6816/3450 3423/6788/3431\nf 3413/6738/3399 3423/6788/3431 3424/6790/3433\nf 3414/6736/3398 3413/6738/3399 3424/6790/3433\nf 3423/6788/3431 3413/6738/3399 3412/6789/3432\nf 3427/10787/3436 3416/10782/3425 3415/10781/3434\nf 3427/10787/3436 3426/6795/3437 3416/10782/3425\nf 3427/6793/3436 3425/6792/3435 3428/6848/3471\nf 3427/10787/3436 3428/10788/3471 3429/10789/3456\nf 3388/6741/3401 3426/10790/3437 3389/6742/3402\nf 3426/6795/3437 3427/10787/3436 3430/6796/3438\nf 3389/6797/3402 3430/6796/3438 3390/6801/3403\nf 3390/6801/3403 3430/6796/3438 3431/6880/3479\nf 3390/6801/3403 3431/6880/3479 3446/6802/3439\nf 3432/6810/3446 3382/6783/3428 3417/6780/3426\nf 3418/6830/3460 3433/6832/3462 3417/10791/3426\nf 3418/6830/3460 3419/6805/3442 3434/6804/3441\nf 3432/6810/3446 3420/6809/3430 3382/6783/3428\nf 3403/10785/6116 3435/6803/3440 3419/6805/3442\nf 3402/6766/3415 3404/6767/3416 3483/6855/3473\nf 3435/10792/3440 3403/10779/6116 3402/6766/3415\nf 3437/6808/3445 3421/10793/3429 3420/6809/3430\nf 3439/6817/3448 3422/6816/3450 3421/6787/3429\nf 3423/6788/3431 3422/6816/3450 3441/6818/3451\nf 3441/6818/3451 3425/6792/3435 3424/6790/3433\nf 3425/6792/3435 3441/6818/3451 3442/6819/3452\nf 3443/6820/3453 3428/6848/3471 3425/6792/3435\nf 3444/6879/3455 3427/10787/3436 3429/10789/3456\nf 3444/6879/3455 3430/6796/3438 3427/10787/3436\nf 3446/10794/3439 3409/6798/3419 3391/6800/3404\nf 3394/10795/3408 3463/6860/3477 3406/6861/3418\nf 3397/6826/3411 3395/6753/3409 3406/6770/3418\nf 3447/6806/3443 3398/6828/3459 3397/6756/3411\nf 3418/6830/3460 3434/6804/3441 3449/6831/3461\nf 3453/6841/3466 3439/6877/3448 3437/6842/3445\nf 3440/6815/3449 3455/6845/3468 3442/6819/3452\nf 3455/6845/3468 3440/6815/3449 3454/6844/3467\nf 3457/6847/3470 3428/6848/3471 3443/6820/3453\nf 3457/6847/3470 3455/6845/3468 3456/6846/3469\nf 3445/6881/3454 3458/10796/3472 3459/6882/3481\nf 3483/6850/3473 3461/6852/3475 3402/6854/3415\nf 3434/6804/3441 3461/6856/3475 3451/6858/3464\nf 3462/6859/3476 3447/6806/3443 3448/6829/3458\nf 3463/6860/3477 3462/6859/3476 3448/6829/3458\nf 3463/6862/3477 3394/6752/3408 3407/6751/3407\nf 3464/6863/3478 3407/6751/3407 3408/6772/3420\nf 3408/10797/3420 3466/6905/3457 3465/6901/3497\nf 3466/6825/3457 3446/6824/3439 3431/10798/3479\nf 3467/10799/3480 3431/10800/3479 3459/10801/3481\nf 3469/10802/3483 3470/10803/3501 3468/6869/3482\nf 3468/10804/3482 3459/10805/3481 3458/10806/3472\nf 3469/6873/3483 3457/6847/3470 3456/6846/3469\nf 3454/6876/3467 3472/6875/3485 3471/6908/3484\nf 3473/6878/3486 3445/6881/3454 3459/6882/3481\nf 3474/10807/3488 3472/6875/3485 3453/6841/3466\nf 3453/6840/3466 3452/6838/3465 3475/6883/3487\nf 3477/6887/3490 3449/6837/3461 3451/6836/3464\nf 3480/6889/3492 3478/6888/3491 3451/6836/3464\nf 3482/10808/6117 3480/6889/3492 3481/6891/3493\nf 3481/6891/3493 3460/6851/3474 3483/6850/3473\nf 3481/6891/3493 3483/6850/3473 3436/6892/3444\nf 3484/6893/3494 3487/6918/3509 3485/6894/3495\nf 3481/6891/3493 3485/6894/3495 3482/10808/6117\nf 3487/6918/3509 3484/6893/3494 3486/6899/3496\nf 3462/6898/3476 3463/6862/3477 3464/6863/3478\nf 3486/6899/3496 3464/6863/3478 3488/10809/3498\nf 3467/6867/3480 3489/6904/3499 3466/6905/3457\nf 3470/10803/3501 3491/10810/6118 3468/6869/3482\nf 3470/10803/3501 3490/10811/3500 3491/10810/6118\nf 3490/6906/3500 3469/6873/3483 3471/6874/3484\nf 3471/10812/3484 3493/6923/3503 3492/6922/3502\nf 3490/10813/3500 3492/10814/3502 3491/10815/6118\nf 3474/10807/3488 3493/6911/3503 3472/6875/3485\nf 3494/6913/3505 3474/6884/3488 3475/6883/3487\nf 3477/10816/3490 3479/6914/3506 3476/6915/3489\nf 3479/6930/3506 3477/6887/3490 3478/6888/3491\nf 3495/6916/3507 3480/6889/3492 3482/10808/6117\nf 3482/10808/6117 3485/10817/3495 3496/6933/3517\nf 3482/10808/6117 3496/6933/3517 3495/6916/3507\nf 3485/10817/3495 3487/6918/3509 3496/6933/3517\nf 3487/6918/3509 3497/6917/3508 3496/6933/3517\nf 3488/10818/3498 3497/6917/3508 3486/6899/3496\nf 3465/6901/3497 3489/6904/3499 3488/6902/3498\nf 3489/6904/3499 3467/6867/3480 3498/6936/3519\nf 3499/6921/3511 3498/6936/3519 3467/6867/3480\nf 3468/6869/3482 3491/10810/6118 3499/6921/3511\nf 3474/10807/3488 3501/6941/3504 3500/6940/3512\nf 3500/6940/3512 3493/6911/3503 3474/10807/3488\nf 3494/10819/3505 3502/6926/3513 3501/6941/3504\nf 3503/6929/3514 3478/6888/3491 3495/6916/3507\nf 3506/6935/3510 3496/6933/3517 3497/6917/3508\nf 3489/6904/3499 3506/6919/3510 3488/6902/3498\nf 3491/10820/6118 3492/6943/3502 3507/6932/3516\nf 3499/10821/3511 3491/10820/6118 3507/6932/3516\nf 3372/6714/3382 3508/6945/3520 3510/6947/3522\nf 3513/6950/3525 3642/6953/3528 3511/6948/3523\nf 3511/6948/3523 3512/6949/3524 3514/6951/3526\nf 3513/6950/3525 3514/6951/3526 3515/8116/4366\nf 3513/6950/3525 3515/8116/4366 3517/6954/3529\nf 3518/6955/3530 3519/6956/3531 3520/7084/3645\nf 3521/10822/3532 3518/10823/3530 4984/10824/3535\nf 3522/6958/3533 3524/6962/3537 3525/6964/3539\nf 3527/10825/3540 3531/6972/3544 3528/6971/3543\nf 3527/6965/3540 3528/6973/3543 3529/6966/3541\nf 3535/10826/3549 3538/10827/3550 3536/10828/3548\nf 3537/6977/3546 3533/6987/3554 3534/6978/3547\nf 3539/6983/3551 3538/6982/3550 3540/10829/3552\nf 3541/7189/3553 3540/10829/3552 3542/7188/3717\nf 3529/6966/3541 3543/6959/3534 3526/6963/3538\nf 3544/10830/3701 3539/6984/3551 3541/6986/3553\nf 3536/6981/3548 3539/6983/3551 3544/7170/3701\nf 3529/6966/3541 3532/6974/3545 3545/7169/3700\nf 3545/7169/3700 3516/6952/3527 3529/6966/3541\nf 3533/6987/3554 3545/7169/3700 3532/6974/3545\nf 3374/6718/3385 3319/6720/3387 3375/6721/3388\nf 3548/6990/3557 3318/6719/3386 3374/6718/3385\nf 3550/6716/3384 3551/6715/3383 3311/6673/3328\nf 3552/6992/3559 3549/6991/3558 3548/6990/3557\nf 3568/6997/3564 3374/6718/3385 3375/6721/3388\nf 3376/6722/3389 3556/7032/3599 3568/6997/3564\nf 3556/7032/3599 3376/6722/3389 3377/6724/3390\nf 3377/6724/3390 3557/10831/3601 3556/7032/3599\nf 3547/6989/3556 3557/7035/3601 3377/6725/3390\nf 3557/7035/3601 3547/6989/3556 3558/7037/3603\nf 3374/6718/3385 3568/6997/3564 3553/6993/3560\nf 3559/7003/3570 3558/7037/3603 3546/6999/3566\nf 3547/6989/3556 3546/6999/3566 3558/7037/3603\nf 3379/6728/3392 3546/6999/3566 3378/6727/3391\nf 3560/6998/3565 3562/7001/3568 3563/7002/3569\nf 3561/7000/3567 3380/6729/3393 3565/7005/3572\nf 3380/6729/3393 3561/7000/3567 3379/6728/3392\nf 3566/7006/3573 3563/7002/3569 3562/7001/3568\nf 3565/7005/3572 3562/7001/3568 3561/7000/3567\nf 3563/7002/3569 3571/7009/3576 3559/7003/3570\nf 3570/7040/3606 3559/7003/3570 3571/7009/3576\nf 3570/7040/3606 3558/7037/3603 3559/7003/3570\nf 3570/7040/3606 3571/7009/3576 3572/7012/3579\nf 3571/7009/3576 3742/7008/3575 3573/7010/3577\nf 3574/7011/3578 3573/7010/3577 3575/7014/3581\nf 3576/7013/3580 3574/7011/3578 3575/7014/3581\nf 3577/7015/3582 3579/7018/3585 3581/7017/3584\nf 3584/7022/3589 3579/7018/3585 3582/7021/3588\nf 3586/7024/3591 3589/7026/3593 3585/7023/3590\nf 3586/7024/3591 3587/7650/4063 3590/7027/3594\nf 3588/7025/3592 3590/7027/3594 3591/7652/4065\nf 3567/7007/3574 3552/6992/3559 3553/6993/3560\nf 3595/7031/3598 3568/6997/3564 3556/7032/3599\nf 3596/7033/3600 3556/7032/3599 3557/10831/3601\nf 3597/7036/3602 3557/7035/3601 3558/7037/3603\nf 3598/7039/3605 3569/7038/3604 3558/7037/3603\nf 3599/7042/3608 3598/7039/3605 3570/7040/3606\nf 3570/7040/3606 3572/7012/3579 3600/7041/3607\nf 3600/7041/3607 3576/7013/3580 3599/7042/3608\nf 3600/7041/3607 3572/7012/3579 3574/7011/3578\nf 3576/7013/3580 3601/7043/3609 3603/7045/3611\nf 3578/7016/3583 3581/7017/3584 3604/7046/3612\nf 3605/7410/3875 3602/7044/3610 3604/7046/3612\nf 3583/7020/3587 3604/7046/3612 3581/7017/3584\nf 3607/7047/3613 3585/7023/3590 3589/7026/3593\nf 3608/7048/3614 3589/7026/3593 3609/7049/3615\nf 3609/7049/3615 3589/7026/3593 3588/7025/3592\nf 3611/7066/3628 3588/7025/3592 3591/7652/4065\nf 3611/7066/3628 3612/7052/3618 3613/7068/3630\nf 3612/7052/3618 3611/7066/3628 3591/7652/4065\nf 3615/7051/3617 3613/7068/3630 3612/7052/3618\nf 3615/10832/3617 3616/10833/3620 3618/10834/3622\nf 3616/7054/3620 3615/10835/3617 3614/7656/3619\nf 3617/7055/3621 3620/7061/3624 3621/7074/3635\nf 3620/7061/3624 3622/7062/3625 3623/7076/3637\nf 3623/7076/3637 3621/7074/3635 3620/7061/3624\nf 3626/7078/3639 3622/7062/3625 3625/7064/3627\nf 3627/7079/3640 3626/7078/3639 3625/7064/3627\nf 3476/6885/3489 3433/6832/3462 3449/6831/3461\nf 3613/7068/3630 3618/7069/3622 3885/7070/3631\nf 3886/7440/3634 3885/7070/3631 3618/7069/3622\nf 3618/7056/3622 3617/7055/3621 3621/7074/3635\nf 3618/7056/3622 3621/7074/3635 3630/7072/3633\nf 3450/6839/3463 3494/6913/3505 3475/6883/3487\nf 3494/6913/3505 3450/6839/3463 3476/6915/3489\nf 3518/6955/3530 3636/7083/3644 3634/7081/3642\nf 3638/7087/3647 3367/7086/3377 3366/7089/3379\nf 3650/7109/3659 3639/7091/3648 3638/7087/3647\nf 3639/10836/3648 3351/6689/3361 3326/10764/3649\nf 3641/7104/3652 3649/7106/3658 3510/10837/3522\nf 3642/6953/3528 3509/6946/3521 3511/6948/3523\nf 3644/10838/3653 3351/7094/3361 3640/7093/3650\nf 3645/10839/3654 3644/7097/3653 3646/7100/3655\nf 3644/7097/3653 3645/10839/3654 3355/6695/3367\nf 3359/6700/3370 3356/6698/3368 3645/7102/3654\nf 3647/7115/3656 3359/6700/3370 3645/7102/3654\nf 3641/7104/3652 3643/7165/3651 3648/7105/3657\nf 3649/7107/3658 3650/7109/3659 3637/7090/3646\nf 3644/7097/3653 3640/7111/3650 3652/7113/3661\nf 3652/7113/3661 3646/7100/3655 3644/7097/3653\nf 3647/7115/3656 3653/10840/3662 3654/7131/3671\nf 3647/7101/3656 3646/7100/3655 3653/7114/3662\nf 3656/7119/3664 3360/6750/3371 3358/10841/3369\nf 3657/7120/3665 3333/6702/3352 3361/6704/3373\nf 3650/7109/3659 3658/7121/3666 3659/7122/3667\nf 3660/7123/3668 3651/7110/3660 3659/7122/3667\nf 3653/7114/3662 3652/7113/3661 3660/7126/3668\nf 3654/7131/3671 3669/7150/3687 3655/7116/3663\nf 3359/6700/3370 3655/7116/3663 3674/7133/3673\nf 3665/7141/3678 3674/7133/3673 3655/7116/3663\nf 3661/7125/3669 3668/7138/3675 3667/7139/3676\nf 3660/7123/3668 3663/7157/3693 3662/7130/3670\nf 3660/7123/3668 3667/7139/3676 3663/7157/3693\nf 3671/10842/3689 3670/7151/3688 3669/7150/3687\nf 3669/10843/3687 3654/7128/3671 3671/7153/3689\nf 3654/7128/3671 3662/7130/3670 3671/7153/3689\nf 3663/7157/3693 3671/7153/3689 3662/7130/3670\nf 3672/7140/3677 3655/7116/3663 3669/7150/3687\nf 3665/7141/3678 3672/7140/3677 3673/7148/3685\nf 3675/7142/3679 3677/7144/3681 3676/7143/3680\nf 3677/7144/3681 3675/7142/3679 3681/7147/3684\nf 3680/7207/3729 3677/7144/3681 3681/7147/3684\nf 3673/7148/3685 3682/7149/3686 3681/7147/3684\nf 3681/7147/3684 3675/7142/3679 3665/7141/3678\nf 3672/7140/3677 3670/7151/3688 3682/7149/3686\nf 3684/7750/4136 3670/7152/3688 3683/7154/3690\nf 3683/7154/3690 3671/7153/3689 3663/7157/3693\nf 3685/7155/3691 3687/7158/3694 3686/7156/3692\nf 3668/7138/3675 4135/10844/6119 3687/7158/3694\nf 3685/7155/3691 3663/7157/3693 3667/7139/3676\nf 3668/7138/3675 3666/7137/3674 3688/7160/3696\nf 3688/7160/3696 4135/10844/6119 3668/7138/3675\nf 3689/7161/3695 3666/7134/3674 3658/7136/3666\nf 3690/7162/3697 3658/7136/3666 3649/7163/3658\nf 3643/7095/3651 3642/6953/3528 3693/6988/3555\nf 3517/6954/3529 3521/6957/3532 3516/6952/3527\nf 3545/7169/3700 3533/6987/3554 3693/6988/3555\nf 3692/7168/3699 3537/6977/3546 3536/6979/3548\nf 3692/7167/3699 3536/6981/3548 3544/7170/3701\nf 3691/7166/3698 3544/7170/3701 3541/7189/3553\nf 3648/7105/3657 3709/7171/3702 3694/7172/3703\nf 3689/7159/3695 3695/7174/3704 3688/7160/3696\nf 3689/10845/3695 3690/10846/3697 3694/10847/3703\nf 3695/10848/3704 3689/10849/3695 3694/10850/3703\nf 3700/7193/3720 3697/10851/3706 3699/10852/3708\nf 3702/7180/3710 3697/7176/3706 3703/10853/3714\nf 3702/7180/3710 3705/7182/3712 3704/7181/3711\nf 3705/7184/3712 3702/10854/3710 3703/7185/3714\nf 3705/7182/3712 3542/8096/3717 3708/7187/3716\nf 3542/7188/3717 3705/7184/3712 3707/7186/3715\nf 3696/7195/3705 3695/10855/3704 3710/7190/3718\nf 3703/7185/3714 3710/7190/3718 3695/10855/3704\nf 3709/7171/3702 3691/7166/3698 3541/7189/3553\nf 3709/7171/3702 3541/7189/3553 3707/7186/3715\nf 3694/7172/3703 3707/7186/3715 3703/7185/3714\nf 3713/7198/3722 3380/6729/3393 3340/6730/3353\nf 3340/6730/3353 3333/10856/3352 3657/7197/3665\nf 3657/7197/3665 3664/7132/3672 3714/7240/3756\nf 3715/7199/3723 3674/7133/3673 3676/7143/3680\nf 3677/7144/3681 3718/7206/3728 3719/7205/3727\nf 3718/7206/3728 3722/7209/3731 3721/7212/3734\nf 3726/7216/3736 3731/10857/4123 3727/10858/3739\nf 3726/7217/3736 3727/7222/3739 3728/7218/3737\nf 3730/7223/3740 3727/7222/3739 3731/7732/4123\nf 3737/7230/3746 3727/7222/3739 3732/7224/3741\nf 3727/7222/3739 3737/7230/3746 3733/7225/3742\nf 3737/7230/3746 3739/7687/4081 4060/10859/4060\nf 4060/10859/4060 3733/7225/3742 3737/7230/3746\nf 3737/7230/3746 3736/7229/3745 3738/7688/4094\nf 3737/7230/3746 3738/7688/4094 3739/7687/4081\nf 3741/7232/3748 3723/7211/3733 3725/7213/3735\nf 3743/7265/3771 3575/7014/3581 3573/7010/3577\nf 3575/7014/3581 3743/7265/3771 3744/7233/3749\nf 3744/7233/3749 3745/7234/3750 3577/7015/3582\nf 3746/7235/3751 3748/7237/3753 3747/7236/3752\nf 3746/7235/3751 3747/7236/3752 3577/7015/3582\nf 3580/7019/3586 3747/7236/3752 3749/7238/3754\nf 3582/7021/3588 3580/7019/3586 3749/7238/3754\nf 3380/6729/3393 3713/7198/3722 3762/7239/3755\nf 3713/7198/3722 3714/7240/3756 3751/7242/3758\nf 3674/7133/3673 3753/7250/3760 3752/7241/3757\nf 3753/7250/3760 3674/7133/3673 3715/7199/3723\nf 3716/7204/3724 3791/7203/3726 3754/7331/3811\nf 3716/7204/3724 3754/7331/3811 3755/7887/4222\nf 3756/7243/3759 3716/7204/3724 3755/7887/4222\nf 3757/7247/3761 3715/7246/3723 3717/7244/3725\nf 3753/7250/3760 3760/7255/3764 3752/7241/3757\nf 3761/7256/3765 3751/7242/3758 3752/7241/3757\nf 3713/10860/3722 3751/7257/3758 3762/7259/3755\nf 3734/7227/3743 3740/7231/3747 3729/7221/3738\nf 3740/7231/3747 3734/7227/3743 3749/7238/3754\nf 3749/7238/3754 3748/7237/3753 3764/7260/3767\nf 3565/7005/3572 3564/7004/3571 3763/7262/3766\nf 3765/7261/3768 3566/7006/3573 3565/7005/3572\nf 3566/7006/3573 3765/7261/3768 3766/7263/3769\nf 3742/7008/3575 3566/7006/3573 3573/7010/3577\nf 3573/7010/3577 3766/7263/3769 3775/7264/3770\nf 3767/7266/3772 3743/7265/3771 3775/7264/3770\nf 3744/7233/3749 3743/7265/3771 3767/7266/3772\nf 3745/7234/3750 3744/7233/3749 3768/7267/3773\nf 3746/7235/3751 3769/7275/3775 3748/7237/3753\nf 3764/7260/3767 3741/7232/3748 3740/7231/3747\nf 3769/7271/3775 3770/7335/3774 3764/7269/3767\nf 3771/7272/3776 3770/7335/3774 3769/7271/3775\nf 3746/7235/3751 3745/7234/3750 3773/7274/3778\nf 3773/10861/3778 3772/10862/3777 3769/10863/3775\nf 3774/7276/3779 3773/7274/3778 3745/7234/3750\nf 3721/7212/3734 3741/7232/3748 3770/7268/3774\nf 3721/7212/3734 3723/7211/3733 3741/7232/3748\nf 3766/7263/3769 3776/7277/3780 3775/7264/3770\nf 3763/7258/3766 3778/7282/3782 3779/7307/3795\nf 3780/7872/3783 3778/7282/3782 3761/10864/3765\nf 3760/10865/3764 3759/7900/3763 3781/7899/4217\nf 3781/7873/4217 3780/7872/3783 3760/10866/3764\nf 3777/7304/3781 3763/7258/3766 3779/7307/3795\nf 3775/7291/3770 3783/7290/3785 3784/7292/3786\nf 3768/7267/3773 3785/10867/3787 3774/7276/3779\nf 3785/7295/3787 3768/10868/3773 3767/7293/3772\nf 3786/7336/3814 3770/7335/3774 3771/7272/3776\nf 3771/7272/3776 3787/7296/3788 3786/7336/3814\nf 3721/7212/3734 3789/7300/3790 3788/10869/3789\nf 3721/7212/3734 3719/7205/3727 3718/7206/3728\nf 3719/7299/3727 3790/7301/3791 3679/10870/3683\nf 3791/10871/3726 3678/7145/3682 3679/7146/3683\nf 3777/7304/3781 3779/7307/3795 3792/7302/3792\nf 3792/10872/3792 3782/10873/3784 3776/10874/3780\nf 3792/7302/3792 3794/7306/3794 3782/10875/3784\nf 3793/7305/3793 3797/7871/3798 3794/7306/3794\nf 3793/7305/3793 3779/7307/3795 3778/7282/3782\nf 3783/7290/3785 3795/7309/3796 3784/7292/3786\nf 3794/7306/3794 3797/7871/3798 3795/10876/3796\nf 3796/7311/3797 3795/7310/3796 3797/7313/3798\nf 4213/7318/3800 3801/7320/3802 3799/7319/3801\nf 3799/7319/3801 3802/7321/3803 3800/7339/3817\nf 3799/7319/3801 3803/7322/3804 3784/7312/3786\nf 3804/7342/3805 3785/7295/3787 3784/7292/3786\nf 3785/7295/3787 3804/7342/3805 3805/7344/3819\nf 3785/7295/3787 3805/7344/3819 3806/7346/3806\nf 3806/10877/3806 3773/7274/3778 3774/7276/3779\nf 3773/7274/3778 3806/10877/3806 3807/7326/3807\nf 3808/7328/3808 3787/10878/3788 3772/7327/3777\nf 3810/10879/3813 3809/7329/3809 3788/7298/3789\nf 3811/10880/3832 3790/7301/3791 3809/7329/3809\nf 3790/7301/3791 3811/10880/3832 3812/10881/3833\nf 3790/7301/3791 3791/7203/3726 3679/10870/3683\nf 3790/7301/3791 3812/10881/3833 3813/7330/3810\nf 3789/7334/3790 3810/7333/3813 3788/10882/3789\nf 3814/7332/3812 3789/7334/3790 3770/7335/3774\nf 3787/7296/3788 3815/7337/3815 3786/7336/3814\nf 3806/7346/3806 3818/7345/3820 3819/7347/3821\nf 3820/7349/3823 3819/7347/3821 3818/7345/3820\nf 3818/7345/3820 3805/7344/3819 3804/7342/3805\nf 3822/8433/4579 3820/7349/3823 3821/7352/3824\nf 3807/7353/3807 3823/7348/3822 3824/7354/3825\nf 3825/7357/3828 3809/7363/3809 3810/7333/3813\nf 3814/7332/3812 3815/7337/3815 3826/7355/3826\nf 3810/7333/3813 3826/7355/3826 3827/7356/3827\nf 3828/7358/3829 3826/7355/3826 3815/7337/3815\nf 3825/7357/3828 3832/7367/3835 3830/7361/3831\nf 3833/7369/3837 3826/7355/3826 3834/8308/4161\nf 3835/7370/3838 3828/7358/3829 3808/7359/3808\nf 3824/7354/3825 3835/7371/3838 3807/7353/3807\nf 3829/10883/3830 3835/8424/3838 3836/8426/4494\nf 3838/7374/3840 3840/7373/3839 3839/7375/3841\nf 3840/7373/3839 3592/7028/3595 3567/7007/3574\nf 3840/7373/3839 3843/7378/3844 3841/7383/3849\nf 3593/7029/3596 3594/7030/3597 3842/7377/3843\nf 3594/7030/3597 3595/7031/3598 3844/7380/3846\nf 3594/7030/3597 3844/7380/3846 3842/7377/3843\nf 3845/7389/3855 3842/7377/3843 3844/7380/3846\nf 3595/7031/3598 3596/7033/3600 3846/7379/3845\nf 3844/7380/3846 3846/7379/3845 3845/7389/3855\nf 3837/7376/3842 3839/7375/3841 3847/7381/3847\nf 3843/7378/3844 3849/7385/3851 3847/7381/3847\nf 3848/7384/3850 3850/7387/3853 3849/7385/3851\nf 3850/7387/3853 3848/7384/3850 3851/7386/3852\nf 3851/7386/3852 3853/7390/3856 3854/7396/3862\nf 3854/7396/3862 3852/7388/3854 3851/7386/3852\nf 3856/7382/3848 3847/7381/3847 3855/7391/3857\nf 3847/7381/3847 3858/7393/3859 3855/7391/3857\nf 3849/7385/3851 3859/7394/3860 3858/7393/3859\nf 3850/7387/3853 3860/7395/3861 3859/7394/3860\nf 3854/7396/3862 3861/10884/3910 3860/7395/3861\nf 3862/7397/3863 3855/7391/3857 3863/7398/3864\nf 3858/7393/3859 3994/7558/3990 3863/7398/3864\nf 3858/7393/3859 3859/7394/3860 3864/7559/3991\nf 3994/7558/3990 3858/7393/3859 3864/7559/3991\nf 3859/7394/3860 3865/7399/3865 3864/7559/3991\nf 3860/7395/3861 3866/7554/3986 3865/7399/3865\nf 3867/7484/3938 3860/7395/3861 3861/10884/3910\nf 3596/7034/3600 3597/7036/3602 3868/7400/3866\nf 3869/7422/3885 3846/7401/3845 3868/7400/3866\nf 3869/7422/3885 3845/7421/3855 3846/7401/3845\nf 3597/7036/3602 3569/7038/3604 3868/7400/3866\nf 3598/7039/3605 3874/7403/3868 3870/7402/3867\nf 3875/7404/3869 3602/7044/3610 3871/7405/3870\nf 3602/7044/3610 3875/7404/3869 3603/7045/3611\nf 3599/7042/3608 3603/7045/3611 3875/7404/3869\nf 3874/7403/3868 3875/7404/3869 3873/7407/3872\nf 3877/7409/3874 3876/7408/3873 3602/7044/3610\nf 3878/7412/3877 3877/7409/3874 3605/7410/3875\nf 3605/7410/3875 3606/7414/3879 3879/7411/3876\nf 3880/7413/3878 3879/7411/3876 3606/7414/3879\nf 3608/7048/3614 3881/7416/3881 3880/7413/3878\nf 3608/7048/3614 3610/7050/3616 3882/7415/3880\nf 3628/7067/3629 3629/7071/3632 3883/7418/3883\nf 3884/7417/3882 3882/7415/3880 3610/7050/3616\nf 3883/7418/3883 3610/7050/3616 3628/7067/3629\nf 3886/7073/3634 3630/7072/3633 3887/7441/3901\nf 3889/10755/6114 3626/7078/3639 3633/7080/3641\nf 3893/7454/3913 3892/7423/3886 3870/7402/3867\nf 3870/7402/3867 3873/7407/3872 3893/7454/3913\nf 3892/7423/3886 3869/7422/3885 3870/7402/3867\nf 3853/7425/3856 3869/7422/3885 3894/7424/3887\nf 3895/7456/3915 3893/7454/3913 3873/7407/3872\nf 3895/7456/3915 3872/7406/3871 3896/7428/3889\nf 3872/7406/3871 3895/7456/3915 3873/7407/3872\nf 3877/7409/3874 3899/7431/3892 3898/7429/3890\nf 3900/7430/3891 3901/7433/3894 3899/7431/3892\nf 3899/7431/3892 3877/7409/3874 3878/7412/3877\nf 3900/7430/3891 3879/7411/3876 3902/7432/3893\nf 3902/7432/3893 3880/7413/3878 3903/7434/3895\nf 3881/7416/3881 3882/7415/3880 3904/7436/3897\nf 3904/7436/3897 3903/7434/3895 3881/7416/3881\nf 3885/7070/3631 3884/7417/3882 3883/7418/3883\nf 3908/7439/3900 3907/7438/3899 3885/7070/3631\nf 3887/7441/3901 3888/7419/3884 3909/7443/3902\nf 3910/7445/3904 3909/7443/3902 3888/7419/3884\nf 3911/7444/3903 3888/7419/3884 3889/10755/6114\nf 3912/10885/3905 3889/10755/6114 3890/10886/3906\nf 3889/10755/6114 3912/10885/3905 3911/7444/3903\nf 3913/7448/3907 3890/7447/3906 3891/7449/3908\nf 3894/7424/3887 3915/7453/3912 3861/7451/3910\nf 3916/7452/3911 3917/7458/3917 3915/7453/3912\nf 3916/7452/3911 3918/7455/3914 3917/7458/3917\nf 3916/7452/3911 3892/7423/3886 3893/7454/3913\nf 3919/7459/3918 3895/7456/3915 3896/7428/3889\nf 3919/7459/3918 3921/7461/3920 3920/7457/3916\nf 3919/7459/3918 3896/7428/3889 3897/7427/3888\nf 3919/7459/3918 3897/7427/3888 3898/7429/3890\nf 3899/7431/3892 3923/7492/3944 3922/7460/3919\nf 3923/7492/3944 3899/7431/3892 3901/7433/3894\nf 3901/7433/3894 3925/7463/3922 3923/7492/3944\nf 3926/7464/3923 3901/7433/3894 3902/7432/3893\nf 3902/7432/3893 3903/7434/3895 3927/7465/3924\nf 3928/7467/3926 3927/7465/3924 3903/7434/3895\nf 3904/7436/3897 3905/7435/3896 3929/7466/3925\nf 3906/7437/3898 3930/7468/3927 3882/7415/3880\nf 3907/7438/3899 3906/7437/3898 3884/7417/3882\nf 3908/7442/3900 3932/7473/3930 3933/10887/3929\nf 3932/7473/3930 3934/7474/3931 3935/10888/3954\nf 3934/7474/3931 3932/7473/3930 3909/7443/3902\nf 3911/7444/3903 3912/10885/3905 3936/7475/3932\nf 3937/7476/3933 3910/7445/3904 3911/7444/3903\nf 3936/7475/3932 3912/10885/3905 3913/7478/3907\nf 3938/10889/3934 3936/7475/3932 3913/7478/3907\nf 3915/7483/3912 3867/7484/3938 3861/10884/3910\nf 3915/7483/3912 3939/7480/3935 3941/7482/3937\nf 3942/7487/3939 3939/7485/3935 3917/7458/3917\nf 3921/7461/3920 3982/7546/3980 3943/7488/3940\nf 3944/7490/3942 3921/7461/3920 3945/7489/3941\nf 3946/7493/3945 3977/7540/3977 3925/7463/3922\nf 3924/7462/3921 3926/7464/3923 3946/7493/3945\nf 3946/7493/3945 3947/7494/3946 3948/7538/3948\nf 3947/7494/3946 3946/7493/3945 3926/7464/3923\nf 3947/7494/3946 3928/7467/3926 3929/7466/3925\nf 3947/7494/3946 3929/7466/3925 3905/7435/3896\nf 3950/7498/3947 3905/7435/3896 3930/7468/3927\nf 3930/7468/3927 3906/7437/3898 3951/7500/3950\nf 3931/7472/3928 3953/7504/3952 3952/7502/3951\nf 3954/7505/3953 3932/7508/3930 3935/7506/3954\nf 3934/10890/3931 3910/10891/3904 3937/10892/3933\nf 3937/7509/3933 3957/7512/3957 3955/7507/3955\nf 3935/10888/3954 3934/7474/3931 3955/10893/3955\nf 3957/7512/3957 3956/7511/3956 3958/7515/3958\nf 3959/10894/3959 3958/10895/3958 3936/7475/3932\nf 3958/10896/3958 3959/10897/3959 3938/10898/3934\nf 3961/7522/3962 3958/7515/3958 3960/7520/3960\nf 3960/7520/3960 5382/7563/3995 3962/7521/3961\nf 3961/7522/3962 3962/7521/3961 3963/7523/3963\nf 3957/7512/3957 3963/7523/3963 3964/7525/3965\nf 3963/7523/3963 3957/7512/3957 3958/7515/3958\nf 3965/7524/3964 3955/7507/3955 3957/7512/3957\nf 3965/7524/3964 3967/7527/3967 3953/7504/3952\nf 3967/7527/3967 3965/7524/3964 3966/7526/3966\nf 3952/7502/3951 3953/7504/3952 3967/7527/3967\nf 3969/7529/3969 3967/7527/3967 3968/7528/3968\nf 3968/7528/3968 3970/7531/3971 3969/7529/3969\nf 3971/7530/3970 3969/7529/3969 3970/7531/3971\nf 3971/7530/3970 3949/10899/3949 3951/7503/3950\nf 3971/7530/3970 3974/7534/3974 3948/7497/3948\nf 3950/7496/3947 3949/10899/3949 3971/7530/3970\nf 3976/7536/3976 3975/7535/3975 3974/7534/3974\nf 3977/7544/3977 3975/7535/3975 3976/7536/3976\nf 3977/7540/3977 3979/7542/3979 3925/7463/3922\nf 3978/7545/3978 3981/7547/3981 3980/7491/3943\nf 3979/7542/3979 3980/7491/3943 3945/7489/3941\nf 3979/7542/3979 3945/7489/3941 3925/7463/3922\nf 3944/7490/3942 3980/7491/3943 3981/7547/3981\nf 3944/7490/3942 3982/7546/3980 3921/7461/3920\nf 3982/7546/3980 3944/7490/3942 3981/7547/3981\nf 3943/7488/3940 3982/7546/3980 3983/7548/3982\nf 3983/7548/3982 3985/7585/4015 3984/7549/3983\nf 3984/7549/3983 3943/7488/3940 3983/7548/3982\nf 3984/10900/3983 3985/7588/4015 3986/7587/3984\nf 3940/7486/3936 3942/7487/3939 3984/7549/3983\nf 3941/7482/3937 3940/7481/3936 3987/7591/4018\nf 3941/7482/3937 3987/7591/4018 3988/7593/4019\nf 3989/10901/6120 3941/7482/3937 3988/7593/4019\nf 3941/7482/3937 3989/10901/6120 3867/7484/3938\nf 3867/7484/3938 3866/7554/3986 3860/7395/3861\nf 3867/10902/3938 3989/10903/6120 3990/10904/3985\nf 3992/7556/3988 3864/7559/3991 3865/7399/3865\nf 3863/7398/3864 3996/7597/4022 3997/10905/6121\nf 3863/7398/3864 3997/10905/6121 3862/7397/3863\nf 3999/7562/3994 3998/7561/3993 3962/7521/3961\nf 3963/7523/3963 3998/7561/3993 4000/7565/3997\nf 4001/7564/3996 3964/7525/3965 3963/7523/3963\nf 4000/7565/3997 4003/7568/4000 4002/7566/3998\nf 4001/7564/3996 4002/7566/3998 3966/7526/3966\nf 4004/7567/3999 4002/7566/3998 4003/7568/4000\nf 4002/7566/3998 4004/7567/3999 3970/7531/3971\nf 4004/7567/3999 4005/7569/4001 4006/7570/4002\nf 4004/7567/3999 4006/7570/4002 3970/7531/3971\nf 4008/7572/4004 4009/7573/4005 3972/7532/3972\nf 3973/7533/3973 4010/7574/4006 4011/7576/4008\nf 4012/7575/4007 4010/7574/4006 3972/7532/3972\nf 4011/7576/4008 3976/7536/3976 3973/7533/3973\nf 4014/7578/4010 3978/7543/3978 3976/7536/3976\nf 4016/7580/4012 3981/7581/3981 3978/7543/3978\nf 4016/7580/4012 4014/7578/4010 4015/7579/4011\nf 4017/7582/4013 4016/7580/4012 4015/7579/4011\nf 4017/7582/4013 4015/7579/4011 4018/7620/4039\nf 4017/7582/4013 4018/7620/4039 4019/7623/4016\nf 4020/10906/4014 4017/7582/4013 4019/7623/4016\nf 4017/10907/4013 4020/7584/4014 3983/7548/3982\nf 4022/7595/4020 3989/10901/6120 3988/7593/4019\nf 3995/7560/3992 4027/7631/4046 4023/7596/4021\nf 4025/7599/4024 3995/7560/3992 4024/7598/4023\nf 3995/7560/3992 4025/7599/4024 4027/7631/4046\nf 4024/7598/4023 3994/7558/3990 3993/7557/3989\nf 4024/10908/4023 3993/10909/3989 3992/10910/3988\nf 4029/7602/4027 4030/10911/4028 4028/7601/4026\nf 4024/7598/4023 3992/7556/3988 3991/7555/3987\nf 4022/10912/4020 3990/10904/3985 3989/10903/6120\nf 4022/7606/4020 4029/7608/4027 3866/10913/3986\nf 3998/7561/3993 4031/7612/4031 4033/7611/4030\nf 4033/7611/4030 4034/7613/4032 4000/7565/3997\nf 4033/7611/4030 4000/7565/3997 3998/7561/3993\nf 4005/7569/4001 4036/7615/4034 4007/7571/4003\nf 4005/7569/4001 4003/7568/4000 4035/7614/4033\nf 4012/7575/4007 4037/7616/4035 4010/7574/4006\nf 4037/7616/4035 4012/7575/4007 4036/7615/4034\nf 4037/7616/4035 4011/7576/4008 4010/7574/4006\nf 4037/7616/4035 4013/7577/4009 4011/7576/4008\nf 4039/7618/4037 4013/7577/4009 4038/7617/4036\nf 4041/7621/4040 4039/7618/4037 4040/7619/4038\nf 4041/7621/4040 4042/7622/4041 4043/7624/4042\nf 4041/7621/4040 4043/7624/4042 4019/7623/4016\nf 4030/7603/4028 4021/7605/4017 4044/7625/4043\nf 4046/7627/4045 4044/7625/4043 4045/7626/4044\nf 4046/7627/4045 4026/7630/4025 4028/7628/4026\nf 4026/7630/4025 4046/7627/4045 4045/7626/4044\nf 4023/7596/4021 4027/7631/4046 4047/7633/4047\nf 4048/7634/4048 4049/7635/4049 4038/7617/4036\nf 4038/7617/4036 4050/7636/4050 4040/7619/4038\nf 4051/7642/4056 4052/7637/4051 4050/7636/4050\nf 4052/7637/4051 4042/7622/4041 4040/7619/4038\nf 4054/7638/4052 4052/7637/4051 4053/7644/4058\nf 4054/7638/4052 4047/9664/4047 4045/7626/4044\nf 4035/7614/4033 4048/7634/4048 4036/7615/4034\nf 4056/7640/4054 4057/7641/4055 4049/7635/4049\nf 4049/7635/4049 4051/7642/4056 4050/7636/4050\nf 4051/7642/4056 4057/7641/4055 4058/7643/4057\nf 3733/7645/3742 3750/7662/4072 3734/7227/3743\nf 4059/7646/4059 3750/7662/4072 3733/7645/3742\nf 3582/7021/3588 3750/7662/4072 3584/7022/3589\nf 3587/7650/4063 4062/7649/4062 3590/7027/3594\nf 3590/7027/3594 4063/7665/4075 3591/7652/4065\nf 3619/7059/3623 3616/7058/3620 3614/10914/3619\nf 4067/7658/4068 3622/7062/3625 3620/7061/3624\nf 4069/7660/4070 3622/7062/3625 4067/7658/4068\nf 4069/7660/4070 3624/7063/3626 3622/7062/3625\nf 4061/7648/4061 4059/7646/4059 4071/7663/4073\nf 4062/7649/4062 4072/7664/4074 3590/7027/3594\nf 3591/7652/4065 4063/7665/4075 4073/7666/4076\nf 3614/7656/3619 4065/7654/4066 4074/7668/4077\nf 4074/7668/4077 4066/7657/4067 3619/7060/3623\nf 4066/7657/4067 4074/7668/4077 4068/7659/4069\nf 4069/7660/4070 4067/7658/4068 4076/7670/4079\nf 4070/7661/4071 4069/7660/4070 4076/7670/4079\nf 4061/7648/4061 3586/7024/3591 3584/7022/3589\nf 3584/7022/3589 3750/7662/4072 4061/7648/4061\nf 4077/7671/4080 4059/7646/4059 4060/7647/4060\nf 4059/7646/4059 4077/7671/4080 4071/7663/4073\nf 4078/7675/4084 4072/7664/4074 4071/7663/4073\nf 4071/7663/4073 4089/7673/4082 4093/7674/4083\nf 4078/7675/4084 4080/7677/4086 4072/7664/4074\nf 4073/7666/4076 4063/7665/4075 4081/7678/4087\nf 4073/7666/4076 4082/7679/4088 4065/7667/4066\nf 4084/7681/4090 4085/10915/6122 4074/7668/4077\nf 4084/7681/4090 4074/7668/4077 4065/7654/4066\nf 4074/7668/4077 4086/7683/4091 4068/7659/4069\nf 4086/7683/4091 4074/7668/4077 4085/10915/6122\nf 4076/7670/4079 4075/7669/4078 4087/7684/4092\nf 3738/7688/4094 3736/7229/3745 4090/7713/4095\nf 4092/7692/4097 4094/7700/4103 4089/7673/4082\nf 4092/7692/4097 3738/10916/4094 4091/7702/4096\nf 4093/7674/4083 4089/7673/4082 4094/7700/4103\nf 4095/7695/4098 4078/7675/4084 4093/7674/4083\nf 4096/7707/4108 4079/7676/4085 4095/7695/4098\nf 4091/7691/4096 4090/7690/4095 4097/7710/4111\nf 4091/7691/4096 4097/7710/4111 4098/7696/4099\nf 4099/7698/4101 4093/7674/4083 4094/7700/4103\nf 4094/7700/4103 4102/7703/4104 4099/7698/4101\nf 4101/7701/4100 4100/7699/4102 4092/7692/4097\nf 4101/7697/4100 4103/7704/4105 4104/7927/4247\nf 4105/7705/4106 4095/7695/4098 4099/7698/4101\nf 4107/7709/4110 4104/7927/4247 4103/7704/4105\nf 4103/7704/4105 4111/7716/4114 4112/7708/4109\nf 4098/7711/4099 4090/7690/4095 4103/7704/4105\nf 3735/7228/3744 4116/7731/4119 4108/7712/4112\nf 3736/7229/3745 3735/7228/3744 4108/7712/4112\nf 4108/7712/4112 4116/7731/4119 4110/10917/4121\nf 4108/7715/4112 4110/10918/4121 4109/7714/4113\nf 4111/7716/4114 4103/7704/4105 4090/7690/4095\nf 4115/7721/4117 4112/10919/4109 4114/7722/4116\nf 4116/10920/4119 4121/10921/4126 4117/10922/4120\nf 4118/7730/4122 4121/10923/4126 4116/7731/4119\nf 3731/10857/4123 4122/7737/4127 4119/7733/4124\nf 4119/7733/4124 4118/7736/4122 3731/10857/4123\nf 3726/7216/3736 4122/7737/4127 3731/10857/4123\nf 3724/7215/3732 4124/7740/4130 4123/7738/4128\nf 3724/7210/3732 3722/7209/3731 4125/7741/4129\nf 4125/10924/4129 4126/7786/4131 4499/7788/4160\nf 3720/7208/3730 4126/7742/4131 3722/7209/3731\nf 4129/7759/4134 4128/7744/4133 3680/7746/3729\nf 3681/7147/3684 3682/7149/3686 4129/7747/4134\nf 3682/7749/3686 3670/7152/3688 3684/7750/4136\nf 3683/7154/3690 4131/7752/4137 3684/7750/4136\nf 4131/7752/4137 4132/7753/4138 4133/10925/4148\nf 4132/7753/4138 3683/7154/3690 3686/7156/3692\nf 3686/7156/3692 3687/7158/3694 4134/7755/4140\nf 4134/7755/4140 4132/7753/4138 3686/7156/3692\nf 3687/7158/3694 4135/10844/6119 4136/7754/4139\nf 4137/7819/4141 4136/7754/4139 4135/10844/6119\nf 3688/7160/3696 4137/7819/4141 4135/10844/6119\nf 4137/7756/4141 3688/10926/3696 3696/7195/3705\nf 4140/7758/4143 4138/7777/4153 4139/7775/4151\nf 4140/7758/4143 4139/7775/4151 4129/7759/4134\nf 4142/7761/4144 4141/10927/4211 4140/7758/4143\nf 4143/7762/4145 4140/7758/4143 4130/7760/4135\nf 4130/7760/4135 3684/10928/4136 4143/7762/4145\nf 4143/7762/4145 4145/7764/4147 4142/7761/4144\nf 4144/7763/4146 4146/10929/6123 4145/7764/4147\nf 4143/7765/4145 3684/7750/4136 4131/7752/4137\nf 4144/7763/4146 4147/7772/4149 4146/10929/6123\nf 4147/7772/4149 4144/7763/4146 4134/7771/4140\nf 4128/7779/4133 4150/10930/4154 4151/7780/4155\nf 4151/7780/4155 4153/7783/4157 4127/7781/4132\nf 4153/7783/4157 4154/7785/4159 3720/7787/3730\nf 3720/7787/3730 4127/7781/4132 4153/7783/4157\nf 4126/7786/4131 4154/7785/4159 4499/7788/4160\nf 4157/10931/4162 4156/8305/3836 4155/7784/4158\nf 4158/7792/4163 4155/7791/4158 4153/7881/4157\nf 4160/7797/4168 4159/7794/4165 4162/7796/4167\nf 4173/7800/4171 4164/7799/4170 4159/7794/4165\nf 4165/7795/4166 4166/7801/4172 4167/7803/4173\nf 4237/7805/4175 4169/7921/4240 4170/7806/4176\nf 4171/8674/4726 4237/7805/4175 4163/7798/4169\nf 4170/7806/4176 4160/7797/4168 4163/7798/4169\nf 4166/7812/4172 4174/7811/4178 4175/7926/4231\nf 4175/7906/4231 4167/7803/4173 4166/7801/4172\nf 3711/7192/3719 3712/7194/3721 4177/7813/4179\nf 3696/7195/3705 4177/7813/4179 4180/7757/4142\nf 4134/7771/4140 4136/10932/4139 4178/7814/4180\nf 4179/7816/4181 4137/7756/4141 4180/7757/4142\nf 4177/7813/4179 3712/7194/3721 4181/7820/4182\nf 3712/7194/3721 3700/7193/3720 4183/8563/4662\nf 3699/10852/3708 4183/8563/4662 3700/7193/3720\nf 3699/10852/3708 4185/8565/4185 4183/8563/4662\nf 4180/7757/4142 4182/7821/4183 4186/7826/4186\nf 4179/7816/4181 4180/7757/4142 4187/7827/4187\nf 4179/7816/4181 4188/7836/4188 4178/7817/4180\nf 4188/7828/4188 4189/7838/4196 4148/7773/4150\nf 4189/7838/4196 4190/7845/4199 4147/7772/4149\nf 4189/7838/4196 4147/7772/4149 4148/7773/4150\nf 4146/10929/6123 4147/7772/4149 4190/7845/4199\nf 4190/7845/4199 4192/7848/4202 4146/10929/6123\nf 4146/10929/6123 4191/7829/4189 4145/7764/4147\nf 4191/7829/4189 4146/10929/6123 4192/7848/4202\nf 4194/7858/4208 4142/7761/4144 4193/7830/4190\nf 4204/7849/4193 4198/7840/4195 4197/7839/4194\nf 4196/7835/4192 4197/7834/4194 4188/10933/4188\nf 4198/7837/4195 4199/7853/4197 4189/7838/4196\nf 4193/7830/4190 4192/7848/4202 4201/7846/4200\nf 4193/7830/4190 4202/7847/4201 4194/7858/4208\nf 4204/7849/4193 4195/7831/4191 4205/10934/6124\nf 4198/7840/4195 4204/7849/4193 4206/7850/4203\nf 4200/7843/4198 4199/7842/4197 4207/7851/4204\nf 4200/7843/4198 4207/7851/4204 4211/7856/4207\nf 4201/7846/4200 4190/7845/4199 4208/7854/4205\nf 4201/7846/4200 4203/7869/4216 4202/7847/4201\nf 4204/7849/4193 4205/10934/6124 4209/7855/4206\nf 4209/7855/4206 4211/7856/4207 4207/7851/4204\nf 4209/7855/4206 4207/7851/4204 4206/7850/4203\nf 4211/7856/4207 4210/8002/4302 3802/7321/3803\nf 4210/8002/4302 4211/7856/4207 4209/7855/4206\nf 4211/7856/4207 4208/7857/4205 4200/7843/4198\nf 4203/7869/4216 4201/7846/4200 4212/7867/4214\nf 4201/7846/4200 4208/7854/4205 4212/7867/4214\nf 4213/7870/3800 4212/7867/4214 3801/10935/3802\nf 3801/7320/3802 4212/10936/4214 4208/10937/4205\nf 4216/7865/4213 4217/7864/4212 4215/7860/4210\nf 4202/7847/4201 4216/7865/4213 4215/7860/4210\nf 4216/7865/4213 4202/7847/4201 4203/7869/4216\nf 4216/7865/4213 4218/7868/4215 3798/7866/3799\nf 3798/7866/3799 4218/7868/4215 4213/7870/3800\nf 3780/7872/3783 4217/7864/4212 3778/7282/3782\nf 3793/7305/3793 3778/7282/3782 4217/7864/4212\nf 4219/10938/4225 4214/7859/4209 4215/7860/4210\nf 4219/10939/4225 4215/10940/4210 3781/7899/4217\nf 4219/10941/4225 4141/10942/4211 4214/10943/4209\nf 4220/7875/4219 4149/10944/4152 4138/7892/4153\nf 4224/7886/4223 4223/7877/4221 4222/10945/4220\nf 4224/7886/4223 3757/10946/3761 3756/10947/3759\nf 4224/7886/4223 3756/10947/3759 3755/7885/4222\nf 4158/10948/4163 4156/8305/3836 4157/10931/4162\nf 4158/10948/4163 3830/10949/3831 3832/10950/3835\nf 4158/7792/4163 3811/7365/3832 3830/10951/3831\nf 4152/7882/4156 3811/7365/3832 4153/7881/4157\nf 3831/10952/3834 4150/7778/4154 4149/7776/4152\nf 4149/10944/4152 4220/7875/4219 3831/7366/3834\nf 4221/7874/4218 3831/7366/3834 4220/7875/4219\nf 3754/7889/3811 4221/7874/4218 4223/7877/4221\nf 4141/7891/4211 4220/7875/4219 4138/7892/4153\nf 4141/7891/4211 4222/7876/4220 4220/7875/4219\nf 4219/7895/4225 3781/10953/4217 4225/7894/4224\nf 4224/7897/4223 3759/7900/3763 3757/10954/3761\nf 4226/10955/4234 4228/7901/4226 4168/7804/4174\nf 4228/10956/4226 4226/7909/4234 4227/7911/4227\nf 4165/7795/4166 4168/7804/4174 4228/7901/4226\nf 4231/7905/4230 4167/7803/4173 4175/7906/4231\nf 4232/7908/4233 4233/10957/4716 4168/7804/4174\nf 4226/7909/4234 4233/8649/4716 4234/7910/4235\nf 4233/8649/4716 4226/7909/4234 4168/10958/4174\nf 4169/7917/4240 4237/7914/4175 4235/7913/4237\nf 4235/7913/4237 4236/7912/4236 4238/7915/4238\nf 4235/7913/4237 4238/7915/4238 4169/7917/4240\nf 4238/7915/4238 4239/7919/4242 4240/7916/4239\nf 4243/7920/4243 4170/7806/4176 4169/7921/4240\nf 4244/7924/4245 4172/8034/4177 4170/7806/4176\nf 4245/10959/4747 4246/8721/4246 4174/10960/4178\nf 4246/10961/4246 4748/8718/4745 4176/10962/4232\nf 4175/7926/4231 4246/7925/4246 4176/10963/4232\nf 4107/7709/4110 4113/7717/4115 4247/7928/4248\nf 4104/7927/4247 4107/7709/4110 4247/7928/4248\nf 4101/7701/4100 4104/10964/4247 4248/7931/4249\nf 4248/7931/4249 4249/7930/4250 4100/7699/4102\nf 4112/7708/4109 4115/10965/4117 4303/7932/4251\nf 4102/7703/4104 4250/7934/4253 4105/7705/4106\nf 4105/7935/4106 4250/10966/4253 4251/7936/4254\nf 4106/7706/4107 4081/7678/4087 4096/7707/4108\nf 4106/7706/4107 4105/7705/4106 4252/7938/4256\nf 4253/10967/4255 4252/7938/4256 4105/7705/4106\nf 4253/7937/4255 4251/7936/4254 4254/7944/4260\nf 4255/7939/4257 4082/10968/4088 4081/7940/4087\nf 4253/7937/4255 4255/7939/4257 4252/7941/4256\nf 4258/7955/4271 4084/7681/4090 4083/7682/4089\nf 4084/7681/4090 4258/7955/4271 4259/7954/4270\nf 4084/7681/4090 4086/7683/4091 4085/10915/6122\nf 4086/7683/4091 4084/7681/4090 4259/7954/4270\nf 4260/7945/4261 4086/7683/4091 4259/7954/4270\nf 4260/7945/4261 4261/7946/4262 4087/7684/4092\nf 4263/7948/4264 4087/7684/4092 4262/7947/4263\nf 4263/7948/4264 4088/7685/4093 4087/7684/4092\nf 4265/7950/4266 4263/7948/4264 4266/7952/4268\nf 4262/7947/4263 4266/7952/4268 4263/7948/4264\nf 4268/7953/4269 4267/7951/4267 4261/7946/4262\nf 4268/7953/4269 4260/7945/4261 4259/7954/4270\nf 4269/7956/4272 4268/7953/4269 4259/7954/4270\nf 4268/7953/4269 4269/7956/4272 4267/7951/4267\nf 4271/7959/4275 4258/7955/4271 4270/7957/4273\nf 4258/7955/4271 4271/7959/4275 4269/7956/4272\nf 4082/10968/4088 4255/7939/4257 4272/7958/4274\nf 4270/7957/4273 4258/7955/4271 4083/7682/4089\nf 4272/7958/4274 4083/7682/4089 4082/10968/4088\nf 4255/7939/4257 4256/7943/4259 4273/7960/4276\nf 4273/7960/4276 4270/7957/4273 4255/7939/4257\nf 4274/7961/4277 4267/7951/4267 4269/7956/4272\nf 4275/7971/4278 4266/7952/4268 4274/7961/4277\nf 4266/7952/4268 4276/9995/4279 4265/7950/4266\nf 4256/7943/4259 4277/7965/4280 4278/7966/4281\nf 4273/7960/4276 4278/7966/4281 4279/7967/4282\nf 4280/7968/4283 4274/7961/4277 4269/7956/4272\nf 4279/7967/4282 4269/7956/4272 4271/7959/4275\nf 4280/7968/4283 4275/7971/4278 4274/7961/4277\nf 4257/7942/4258 4254/7944/4260 4284/7974/4287\nf 4285/7978/4288 4279/7980/4282 4278/10969/4281\nf 4286/8040/4322 4281/7979/4284 4285/7978/4288\nf 4281/7979/4284 4286/8040/4322 4287/7983/4290\nf 4288/7986/4289 4282/7985/4285 4280/10970/4283\nf 4287/7983/4290 4280/7982/4283 4281/7979/4284\nf 4289/7987/4291 4254/7944/4260 4251/7936/4254\nf 4251/7936/4254 4292/7990/4294 4290/7988/4292\nf 4251/7936/4254 4250/10966/4253 4293/7991/4295\nf 4293/10971/4295 4250/7934/4253 4249/7930/4250\nf 4249/7930/4250 4248/7931/4249 4294/10972/4297\nf 4249/7930/4250 4294/10972/4297 4293/10971/4295\nf 4295/10973/4298 4294/10974/4297 4248/10975/4249\nf 4247/10976/4248 4295/10977/4298 4248/10978/4249\nf 4247/7928/4248 4113/7717/4115 4297/7933/4252\nf 4298/8000/4300 4284/7974/4287 4254/7944/4260\nf 4289/7987/4291 4290/7988/4292 4298/8000/4300\nf 3802/7321/3803 4299/8001/4301 3800/7339/3817\nf 3816/7338/3816 3800/10979/3817 4300/10980/4646\nf 4300/10980/4646 3821/7350/3824 3816/7338/3816\nf 4296/8020/4299 4301/8003/4303 4295/10981/4298\nf 4301/8003/4303 4307/8021/4309 4306/8019/4308\nf 4303/10982/4251 4115/7721/4117 4310/8023/4311\nf 4296/8020/4299 4297/10983/4252 4308/8022/4310\nf 4311/8026/4305 4312/8025/4313 4298/10984/4300\nf 4241/7918/4241 4313/8030/4314 4239/7919/4242\nf 4314/10985/4316 4243/7920/4243 4242/7922/4244\nf 4314/10985/4316 4242/7922/4244 4240/10986/4239\nf 4244/10987/4245 4316/10988/4749 4317/10989/4317\nf 4319/8036/4318 4172/7808/4177 4317/10990/4317\nf 4319/8036/4318 4245/10991/4747 4174/7811/4178\nf 4322/8038/4320 4288/7981/4289 4287/7983/4290\nf 4323/8041/4323 4327/8046/4325 4324/8039/4321\nf 4324/8039/4321 4287/7983/4290 4286/8040/4322\nf 4323/8041/4323 4286/8040/4322 4285/7978/4288\nf 4323/8041/4323 4325/8024/4312 4326/8045/4324\nf 4284/7974/4287 4312/10992/4313 4325/8047/4312\nf 4310/8023/4311 4329/10993/4327 4303/10982/4251\nf 4329/8051/4327 4308/10994/4310 4297/7933/4252\nf 4331/8052/4328 4305/8017/4307 4306/8019/4308\nf 4307/8021/4309 4308/8022/4310 4330/10995/4334\nf 4331/8055/4328 4307/10996/4309 4330/8064/4334\nf 4333/8057/4329 4304/8008/4304 4332/8015/4306\nf 4334/10997/4330 4336/8061/4331 4335/10998/4541\nf 4334/10997/4330 4310/8023/4311 4328/8050/4326\nf 4336/8061/4331 4334/10997/4330 4328/8050/4326\nf 4338/8063/4333 4308/8067/4310 4329/8060/4327\nf 4334/8059/4330 4335/10999/4541 4338/8063/4333\nf 4339/8065/4335 4330/8064/4334 4338/8063/4333\nf 4340/8066/4336 4339/8065/4335 4341/8069/4337\nf 4340/8066/4336 4332/8053/4306 4331/8055/4328\nf 4333/8068/4329 4332/8053/4306 4340/8066/4336\nf 4333/8068/4329 4341/8069/4337 4342/8070/4338\nf 4344/11000/4339 4472/8242/4461 4345/8243/4340\nf 4343/8074/4341 4345/8073/4340 4337/8062/4332\nf 4309/7723/4118 4346/11001/4343 4344/8072/4339\nf 4344/8072/4339 4328/8050/4326 4309/7723/4118\nf 4114/7722/4116 4346/11001/4343 4309/7723/4118\nf 4348/8079/4344 4321/8037/4319 4350/8080/4345\nf 4350/8080/4345 4327/8046/4325 4355/8082/4347\nf 4352/8085/4350 4351/8083/4348 4326/8045/4324\nf 4326/8045/4324 4325/8024/4312 4353/8084/4349\nf 4353/8084/4349 4325/8024/4312 4311/8026/4305\nf 4351/8083/4348 4352/8085/4350 4354/8086/4351\nf 4357/8087/4352 4353/8084/4349 4311/8026/4305\nf 4357/8087/4352 4356/8355/4530 4352/8085/4350\nf 4357/8087/4352 4352/8085/4350 4353/8084/4349\nf 4357/11002/4352 4339/8065/4335 4338/8063/4333\nf 3523/10104/3536 4358/8770/4764 3524/8769/3537\nf 3525/6964/3539 3524/6962/3537 4359/11003/4753\nf 3525/6964/3539 4359/11003/4753 4752/11004/4752\nf 4360/11005/4754 3527/6967/3540 3525/6969/3539\nf 4360/11005/4754 3525/6969/3539 4752/11006/4752\nf 4360/11005/4754 3531/11007/3544 3527/6967/3540\nf 3532/11008/3545 3534/11009/3547 3533/11010/3554\nf 3534/8094/3547 4361/8093/4353 3535/8713/3549\nf 4363/8773/4766 4365/8098/4355 4364/8774/4767\nf 4364/11011/4767 3343/6684/3356 3298/6633/3317\nf 3343/8097/3356 4364/8774/4767 4365/8098/4355\nf 4367/11012/4357 3344/6685/3357 3343/6684/3356\nf 4367/8101/4357 3343/8097/3356 4366/8099/4356\nf 3369/6713/3381 4367/11012/4357 4369/11013/4359\nf 4368/8103/4358 4370/11014/4361 4369/8104/4359\nf 4372/8110/4363 4369/8107/4359 4371/8109/4362\nf 4369/11015/4359 4372/8112/4363 3371/8114/4360\nf 4374/11016/4365 3514/6951/3526 3512/6949/3524\nf 4376/8120/4368 4377/8124/4369 4375/8121/4367\nf 3508/6945/3520 3372/6714/3382 4372/8123/4363\nf 4377/8124/4369 4376/8120/4368 4372/8110/4363\nf 4378/11017/4371 3519/6956/3531 3517/6954/3529\nf 4378/11017/4371 3517/6954/3529 3515/8116/4366\nf 4378/11017/4371 4379/8125/4370 3519/6956/3531\nf 4374/11018/4365 4381/11019/4373 3515/11020/4366\nf 4380/8128/4372 4378/8127/4371 3515/11021/4366\nf 4381/11019/4373 4380/11022/4372 3515/11020/4366\nf 4383/8133/4375 4379/8126/4370 4381/8129/4373\nf 4384/8137/4378 3635/11023/3643 4383/11024/4375\nf 4386/8135/4376 4384/8137/4378 4383/11024/4375\nf 4387/8139/4380 4385/8136/4377 4386/8135/4376\nf 4389/8138/4379 4385/8136/4377 4387/8139/4380\nf 4389/8138/4379 5775/8142/4383 4385/8136/4377\nf 4391/8143/4384 4383/8133/4375 4381/8129/4373\nf 4375/8131/4367 4392/8144/4385 4381/8129/4373\nf 4375/8131/4367 4393/11025/4387 4392/8144/4385\nf 4394/8145/4386 4373/8111/4364 4395/8680/4731\nf 4375/8121/4367 4377/8124/4369 4373/8111/4364\nf 4396/8681/4732 4395/8680/4731 4373/8111/4364\nf 4398/8147/4388 4396/8681/4732 4373/8111/4364\nf 4398/8147/4388 4397/8149/4390 4396/8681/4732\nf 4398/8147/4388 4371/8109/4362 4370/8108/4361\nf 4398/8147/4388 4370/8108/4361 4399/8148/4389\nf 4399/8148/4389 4400/8672/4724 4397/8149/4390\nf 4399/8148/4389 4370/8108/4361 4401/8151/4392\nf 4508/11026/4391 4400/11027/4724 4399/11028/4389\nf 4382/8132/4374 4401/11029/4392 4368/8103/4358\nf 4401/8151/4392 4382/11030/4374 4402/8153/4393\nf 4404/11031/4395 4382/11030/4374 4366/11032/4356\nf 4404/11031/4395 4366/11032/4356 4365/11033/4355\nf 4404/11031/4395 4402/8153/4393 4382/11030/4374\nf 4404/8155/4395 4365/8098/4355 4405/8156/4396\nf 4407/8159/4398 4390/8141/4382 4389/8138/4379\nf 4407/8159/4398 4742/8160/4399 4408/8161/4400\nf 4407/8159/4398 4446/8162/4401 4409/8167/4405\nf 4407/8159/4398 4409/8167/4405 4410/8164/4403\nf 4413/8169/4406 4430/8183/4420 4414/8185/4422\nf 4415/8212/4442 4413/8169/4406 4414/8185/4422\nf 4413/8169/4406 4415/8212/4442 4425/8170/4407\nf 4413/8169/4406 4416/8171/4408 4527/8336/4514\nf 4417/8173/4410 4426/8172/4409 4418/8174/4411\nf 4418/8174/4411 4420/8176/4413 4417/8173/4410\nf 4421/8177/4414 4355/8082/4347 4420/8176/4413\nf 4419/8175/4412 4421/8177/4414 4420/8176/4413\nf 4419/8175/4412 4429/8178/4415 4421/8177/4414\nf 4355/8082/4347 4421/8177/4414 4349/8081/4346\nf 4348/8079/4344 4349/8081/4346 4421/8177/4414\nf 4421/8177/4414 4422/8179/4416 4423/8180/4417\nf 4423/8180/4417 4321/8037/4319 4348/8079/4344\nf 4424/8181/4418 4322/8038/4320 4423/8180/4417\nf 4426/8172/4409 4427/8211/4439 4418/8174/4411\nf 4430/8183/4420 4435/8189/4426 4431/8184/4421\nf 4414/8185/4422 4432/8187/4424 4415/8212/4442\nf 4433/8186/4423 4414/8185/4422 4431/8184/4421\nf 4350/8080/4345 4324/8039/4321 4327/8046/4325\nf 4354/8086/4351 4352/8085/4350 4356/8355/4530\nf 4434/8188/4425 4437/8191/4428 4433/8186/4423\nf 4438/8192/4429 4440/8195/4432 4437/8191/4428\nf 4438/8192/4429 4439/8193/4430 4440/8195/4432\nf 4439/8193/4430 4442/8197/4434 4441/8194/4431\nf 4444/8196/4433 4441/8194/4431 4442/8197/4434\nf 4444/8196/4433 4443/8198/4435 4446/8200/4401\nf 4450/11034/6125 4429/8178/4415 4428/8182/4419\nf 4429/8178/4415 4450/11034/6125 5816/8206/4438\nf 4425/8170/4407 4427/8211/4439 4426/8172/4409\nf 4427/8211/4439 4425/8170/4407 4448/8213/4440\nf 4449/8210/4441 4450/11034/6125 4428/8182/4419\nf 4427/8211/4439 4428/8182/4419 4418/8174/4411\nf 4455/8219/4447 4452/8218/4444 4454/8223/4446\nf 4454/8223/4446 4458/8222/4450 4455/8219/4447\nf 4460/8232/4452 4457/8221/4449 4461/8364/4539\nf 4460/8232/4452 4461/8364/4539 4462/8363/4538\nf 4460/8232/4452 4462/8363/4538 4337/8233/4332\nf 4463/11035/6126 4459/8225/4451 4464/11036/4468\nf 4457/8226/4449 4463/11035/6126 4461/11037/4539\nf 4457/8226/4449 4459/8225/4451 4463/11035/6126\nf 4457/8221/4449 4460/8232/4452 4467/8230/4454\nf 4455/8219/4447 4466/8234/4455 4456/8220/4448\nf 4458/8222/4450 4467/8230/4454 4466/8234/4455\nf 4468/8238/4459 4469/11038/4456 4471/8239/4458\nf 4470/8236/4457 4466/8244/4455 4465/8228/4453\nf 4469/11039/4456 4456/11040/4448 4470/11041/4457\nf 4470/8236/4457 4456/11042/4448 4466/8244/4455\nf 4473/8765/4466 4476/8255/4463 4474/11043/6127\nf 4473/11044/4466 4464/11036/4468 4459/8225/4451\nf 4477/8254/4464 4468/8238/4459 4478/8240/4460\nf 4478/8240/4460 4479/8257/4465 4474/11043/6127\nf 4474/11043/6127 4476/8255/4463 4478/8240/4460\nf 4473/8765/4466 4474/11043/6127 4480/11045/4467\nf 4481/11046/4469 4344/8072/4339 4346/11001/4343\nf 4346/8078/4343 4482/8263/4470 4481/8262/4469\nf 4346/11047/4343 4347/11048/4342 4482/11049/4470\nf 4481/11050/4469 4484/11051/4472 4485/8271/4475\nf 4109/7729/4113 4486/8266/4473 4347/11052/4342\nf 4111/7716/4114 4109/7714/4113 4347/11053/4342\nf 4485/8271/4475 4479/8270/4465 4481/11050/4469\nf 4488/8269/4476 4474/11054/6127 4479/8270/4465\nf 4474/11054/6127 4488/8269/4476 4480/11055/4467\nf 4490/8276/4478 4120/7734/4125 4119/7733/4124\nf 4491/8277/4479 4119/7733/4124 4122/7737/4127\nf 4124/7740/4130 4494/8289/4485 4492/8279/4481\nf 4492/8279/4481 4493/8278/4480 4496/8403/4483\nf 4497/8284/4484 4123/7738/4128 4124/7740/4130\nf 4491/8296/4479 4122/8287/4127 4497/8286/4484\nf 4497/8283/4484 4496/8282/4483 4498/11056/4489\nf 4497/8286/4484 4498/8297/4489 4491/8296/4479\nf 4499/8288/4160 4124/7740/4130 4125/7739/4129\nf 4492/8279/4481 4501/8292/4487 4495/8280/4482\nf 4501/8292/4487 4494/8289/4485 4500/8293/4486\nf 4565/8392/4555 4498/8297/4489 4496/8397/4483\nf 4120/7734/4125 4490/8276/4478 4504/11057/4491\nf 4156/8305/3836 4502/8304/4488 4500/8290/4486\nf 4500/8290/4486 4155/7784/4158 4156/8305/3836\nf 3836/8307/4494 3826/7355/3826 3829/7360/3830\nf 4507/11058/4495 4412/8166/4404 4409/8167/4405\nf 4403/8311/4394 4402/8158/4393 4412/8168/4404\nf 4508/8150/4391 4509/11059/4496 4400/8672/4724\nf 4508/8150/4391 4401/8151/4392 4403/8154/4394\nf 4509/11059/4496 4511/11060/4498 4400/8672/4724\nf 4512/8318/4499 4442/8197/4434 4439/8193/4430\nf 4517/8322/4503 4512/8318/4499 4515/8321/4502\nf 4512/8318/4499 4517/8322/4503 4442/8197/4434\nf 4443/8198/4435 4442/8197/4434 4517/8322/4503\nf 4517/8322/4503 4518/8324/4505 4445/8199/4436\nf 4518/8324/4505 4517/8322/4503 4516/8323/4504\nf 4519/8325/4506 4522/11061/4509 4436/8326/4427\nf 4522/11061/4509 4519/8325/4506 4521/8329/4508\nf 4522/11062/4509 4521/8570/4508 4513/8572/4500\nf 4438/8192/4429 4522/8330/4509 4512/8318/4499\nf 4438/11063/4429 4436/8326/4427 4522/11061/4509\nf 4519/11064/4506 4435/8189/4426 4523/8332/4510\nf 4524/8333/4511 4420/8176/4413 4355/8082/4347\nf 4417/8173/4410 4525/8334/4512 4527/8336/4514\nf 4527/8336/4514 4528/8337/4515 4529/11065/6128\nf 4413/8169/4406 4530/8338/4516 4430/8183/4420\nf 4527/8336/4514 4529/11065/6128 4530/8338/4516\nf 4531/8339/4517 4532/8341/4518 4523/8332/4510\nf 4520/8340/4507 4523/8332/4510 4532/8341/4518\nf 4534/8343/4520 4520/8340/4507 4533/8342/4519\nf 4523/8332/4510 4520/8340/4507 4519/11064/4506\nf 4533/8342/4519 4537/8346/4523 4535/8344/4521\nf 4534/8343/4520 4533/8342/4519 4535/8344/4521\nf 4531/11066/4517 4530/11067/4516 4538/11068/4525\nf 4531/8339/4517 4538/11069/4525 4539/8347/4524\nf 4531/8339/4517 4537/8346/4523 4532/8341/4518\nf 4538/11070/4525 4529/11065/6128 4540/8352/4526\nf 4538/11071/4525 4530/11072/4516 4529/11073/6128\nf 4528/8337/4515 4526/8335/4513 4541/8351/4527\nf 4529/11065/6128 4528/8337/4515 4540/8352/4526\nf 4542/8353/4528 4525/8334/4512 4524/8333/4511\nf 4525/8334/4512 4542/8353/4528 4526/8335/4513\nf 4542/8353/4528 4524/8333/4511 4354/8086/4351\nf 4544/8360/4535 4545/8356/4531 4546/8359/4534\nf 4544/8360/4535 4543/8354/4529 4356/8355/4530\nf 4545/8356/4531 4544/8360/4535 4356/8355/4530\nf 4357/8087/4352 4338/11074/4333 4545/8356/4531\nf 4547/8357/4532 4551/8520/4540 4548/8358/4533\nf 4544/8360/4535 4546/8359/4534 4548/8358/4533\nf 4550/8362/4537 4547/8370/4532 4462/8363/4538\nf 4461/8364/4539 4463/11075/6126 4550/8362/4537\nf 4335/8368/4541 4552/11076/4542 4549/8361/4536\nf 4336/8369/4331 4462/8363/4538 4547/8370/4532\nf 4552/8371/4542 4547/8370/4532 4549/11077/4536\nf 4552/11078/4542 4335/10999/4541 4336/11079/4331\nf 4335/8368/4541 4545/8356/4531 4338/11074/4333\nf 4553/11080/4543 4121/7735/4126 4120/7734/4125\nf 4553/11080/4543 4120/7734/4125 4505/11081/4492\nf 4117/7728/4120 4121/11082/4126 4553/8372/4543\nf 4553/8372/4543 4554/8374/4544 4117/7728/4120\nf 4482/8375/4470 4347/11052/4342 4486/8266/4473\nf 4555/8376/4545 4482/11083/4470 4554/8377/4544\nf 4504/11084/4491 4556/11085/4546 4555/8379/4545\nf 4555/8376/4545 4505/8378/4492 4504/11086/4491\nf 4484/8265/4472 4483/8264/4471 4557/8382/4547\nf 4556/8381/4546 4558/8391/4554 4557/8383/4547\nf 4559/11087/4548 4562/11088/4551 4560/11089/4549\nf 4487/8267/4474 4559/8385/4548 4561/8387/4550\nf 4559/8385/4548 4487/8267/4474 4484/8265/4472\nf 4562/8388/4551 4559/8385/4548 4484/8265/4472\nf 4503/8298/4490 4564/8390/4553 4556/8381/4546\nf 4564/8393/4553 4503/11090/4490 4565/8394/4555\nf 4566/11091/4556 4568/8399/4558 4570/8401/4560\nf 4568/11092/4558 4566/8395/4556 4567/8396/4557\nf 4568/8399/4558 4496/8403/4483 4493/8278/4480\nf 4571/8405/4562 4495/8280/4482 4501/8292/4487\nf 4501/8292/4487 4502/8294/4488 4571/8405/4562\nf 4569/11093/4559 4495/11094/4482 4572/11095/4561\nf 4506/8407/4493 3836/11096/4494 4573/8410/4563\nf 4573/11097/4563 3836/8426/4494 4574/8415/4564\nf 4574/8415/4564 4571/11098/4562 4573/11097/4563\nf 4569/8414/4559 4572/11099/4561 4574/8415/4564\nf 4575/8416/4565 4576/8417/4566 4577/11100/4567\nf 4575/11101/4565 4577/8418/4567 4569/8400/4559\nf 4570/8401/4560 4579/8420/4569 4580/8421/4570\nf 4579/8420/4569 4570/8401/4560 4569/8400/4559\nf 4566/11091/4556 4570/8401/4560 4581/8422/4571\nf 4582/8425/4572 4574/8415/4564 3836/8426/4494\nf 4584/8428/4574 4583/8427/4573 3824/7354/3825\nf 4585/8429/4575 4582/8425/4572 3835/8424/3838\nf 4585/8429/4575 4583/8427/4573 4586/8432/4578\nf 4587/8430/4576 4584/8428/4574 3819/7347/3821\nf 4588/8431/4577 4583/8427/4573 4584/8428/4574\nf 3822/8433/4579 3821/7352/3824 4590/8436/4582\nf 3822/11102/4579 4591/11103/4581 4589/11104/4580\nf 4589/8434/4580 4593/11105/4633 4592/8437/4583\nf 4588/8431/4577 4587/8430/4576 4592/8437/4583\nf 4592/8437/4583 4594/8438/4584 4588/8431/4577\nf 4586/8432/4578 4588/8431/4577 4594/8438/4584\nf 4596/8440/4586 4586/8432/4578 4595/8439/4585\nf 4576/8417/4566 4597/8443/4587 4577/11100/4567\nf 4597/8443/4587 4576/8417/4566 4596/8440/4586\nf 4597/8443/4587 4599/8444/4589 4598/8448/4588\nf 4578/8419/4568 4577/8418/4567 4597/11106/4587\nf 4578/8419/4568 4598/8442/4588 4600/8445/4590\nf 4579/8420/4569 4578/8419/4568 4601/8446/4591\nf 4598/8442/4588 4602/11107/4592 4600/11108/4590\nf 4598/8448/4588 4599/8444/4589 4605/8453/4595\nf 4599/8444/4589 4595/8439/4585 4606/8454/4596\nf 4595/8439/4585 4594/8438/4584 4606/8454/4596\nf 4594/8438/4584 4592/8437/4583 4607/8455/4597\nf 4593/11109/4633 4608/8595/4635 4607/8596/4597\nf 4607/8455/4597 4592/8437/4583 4593/11105/4633\nf 4609/8459/4598 4611/8465/4604 4603/8449/4593\nf 4605/8457/4595 4612/11110/4600 4610/8458/4599\nf 4612/11110/4600 4605/8457/4595 4606/11111/4596\nf 4614/11112/4601 4612/11110/4600 4606/11111/4596\nf 4615/11113/4603 4614/11114/4601 4606/11115/4596\nf 4604/8464/4594 4603/8449/4593 4616/8466/4605\nf 4581/11116/4571 4580/11117/4570 4618/8468/4607\nf 4564/8390/4553 4581/11116/4571 4618/8468/4607\nf 4600/11118/4590 4604/8464/4594 4619/8482/4608\nf 4620/8472/4609 4619/8482/4608 4557/8383/4547\nf 4618/11119/4607 4580/11120/4570 4601/11121/4591\nf 4621/8473/4610 4557/8383/4547 4558/8391/4554\nf 4601/8446/4591 4600/8445/4590 4620/11122/4609\nf 4601/8474/4591 4620/8472/4609 4621/8473/4610\nf 4622/8477/4611 4617/8476/4606 4623/8493/4620\nf 4624/8478/4612 4625/8480/4613 4623/11123/4620\nf 4625/8480/4613 4557/8383/4547 4619/8482/4608\nf 4622/8481/4611 4625/8480/4613 4619/8482/4608\nf 4625/11124/4613 4622/11125/4611 4623/11126/4620\nf 4629/11127/4617 4628/8485/4616 4627/8484/4615\nf 4629/11127/4617 4611/8465/4604 4628/8485/4616\nf 4629/8487/4617 4627/11128/4615 4630/11129/4621\nf 4629/8486/4617 4630/8496/4621 4617/8467/4606\nf 4617/11130/4606 4631/8490/4618 4563/8479/4552\nf 4633/8497/4622 4630/8496/4621 4627/8484/4615\nf 4633/11131/4622 4638/11132/4627 4632/11133/4619\nf 4634/8501/4623 4636/8503/4625 4635/8502/4624\nf 4635/8502/4624 4626/8483/4614 4634/8501/4623\nf 4633/8497/4622 4636/8503/4625 4637/8504/4626\nf 4562/8507/4551 4563/8479/4552 4639/8506/4628\nf 4639/8506/4628 4632/8491/4619 4638/8505/4627\nf 4639/11134/4628 4640/11135/4629 4560/11136/4549\nf 4640/8510/4629 4638/8505/4627 4637/8504/4626\nf 4480/11137/4467 4489/8514/4477 4464/11036/4468\nf 4463/11035/6126 4464/11036/4468 4641/8512/4630\nf 4641/11138/4630 4550/8362/4537 4463/11075/6126\nf 4641/8512/4630 4464/11036/4468 4489/8514/4477\nf 4561/8387/4550 4488/8272/4476 4487/8267/4474\nf 4489/8514/4477 4560/8516/4549 4551/8513/4540\nf 4642/8518/4631 4640/8510/4629 4637/8504/4626\nf 4642/8518/4631 4551/8520/4540 4560/11139/4549\nf 4537/8346/4523 4539/8347/4524 4643/8519/4632\nf 4643/8519/4632 4634/8501/4623 4535/8344/4521\nf 4643/8519/4632 4539/8347/4524 4540/8352/4526\nf 4636/8503/4625 4541/8351/4527 4637/8504/4626\nf 4541/8351/4527 4543/8354/4529 4637/8504/4626\nf 4637/8504/4626 4543/8354/4529 4548/8358/4533\nf 4591/8435/4581 4590/8436/4582 4646/8535/4644\nf 4645/8528/4637 4647/8527/4636 4648/8530/4639\nf 4649/8529/4638 4645/8528/4637 4648/8530/4639\nf 4651/8532/4641 4647/8527/4636 4644/8522/4634\nf 4652/11140/4642 4651/8532/4641 4591/8526/4581\nf 4653/8534/4643 4652/11141/4642 4591/8435/4581\nf 4654/8536/4645 4300/8537/4646 4655/8539/4647\nf 4654/8536/4645 4590/8436/4582 3821/7352/3824\nf 4655/11142/4647 3800/11143/3817 4656/11144/4649\nf 4656/8541/4649 4657/8540/4648 4654/11145/4645\nf 4658/8544/4650 4653/8534/4643 4646/8535/4644\nf 4209/11146/4206 4657/8540/4648 4210/8542/4302\nf 4657/11147/4648 4209/7855/4206 4659/8546/4651\nf 4209/7855/4206 4205/10934/6124 4661/8552/4653\nf 4661/8552/4653 4712/8633/4703 4660/8547/4652\nf 4661/8552/4653 4205/10934/6124 4195/7831/4191\nf 4664/8555/4655 4663/8554/4654 4187/7827/4187\nf 4665/8556/4656 4663/8554/4654 4666/8557/4657\nf 4669/8758/4659 4181/7820/4182 4668/11148/4660\nf 3712/7194/3721 4668/11148/4660 4181/7820/4182\nf 4668/11148/4660 3712/7194/3721 4183/8563/4662\nf 4670/8562/4661 4668/11148/4660 4183/8563/4662\nf 4185/8565/4185 4672/11149/4664 4671/8564/4663\nf 4673/8569/4665 4674/8577/4666 4521/8568/4508\nf 4521/8568/4508 4520/8340/4507 4534/8343/4520\nf 4675/8573/4667 4674/8571/4666 4676/11150/4673\nf 4677/8574/4668 4675/8573/4667 4676/11150/4673\nf 4677/8574/4668 4684/8592/4676 4678/8575/4669\nf 4679/8576/4670 4676/11151/4673 4674/8577/4666\nf 4534/8343/4520 4679/8576/4670 4673/8569/4665\nf 4679/8576/4670 4534/8343/4520 4536/8345/4522\nf 4609/8578/4598 4680/8580/4671 4536/11152/4522\nf 4609/8459/4598 4628/8485/4616 4611/8465/4604\nf 4679/8576/4670 4536/8345/4522 4680/8581/4671\nf 4681/8586/4672 4680/8581/4671 4612/8460/4600\nf 4682/8590/4674 4614/8461/4601 4615/11153/4603\nf 4682/8590/4674 4681/8586/4672 4613/8462/4602\nf 4682/8588/4674 4615/11154/4603 4683/8593/4675\nf 4683/11155/4675 4677/11156/4668 4676/11151/4673\nf 4683/8591/4675 4615/8594/4603 4684/8592/4676\nf 4684/8592/4676 4608/8595/4635 4645/11157/4637\nf 4684/8592/4676 4649/11158/4638 4650/8601/4640\nf 4649/8529/4638 4684/11159/4676 4645/8528/4637\nf 4685/8598/4678 4513/8572/4500 4675/8573/4667\nf 4685/11160/4678 4686/8615/4677 4514/8320/4501\nf 4513/8572/4500 4685/8598/4678 4514/11161/4501\nf 4678/8575/4669 4688/8600/4680 4685/8598/4678\nf 4678/8575/4669 4684/8592/4676 4650/8601/4640\nf 4690/8603/4682 4691/8602/4681 4693/8610/4688\nf 4511/8314/4498 4510/8313/4497 4695/8607/4686\nf 4691/11162/4681 4696/8608/4687 4695/8607/4686\nf 4696/8671/4687 4691/8602/4681 4692/8604/4683\nf 4695/8609/4686 4510/11163/4497 4516/11164/4504\nf 4697/8613/4689 4516/8323/4504 4515/8321/4502\nf 4698/8618/4690 4693/8610/4688 4697/8612/4689\nf 4686/8615/4677 4698/8614/4690 4515/8321/4502\nf 4686/8616/4677 4687/11165/4679 4699/8617/4691\nf 4518/8324/4505 4507/8309/4495 4409/8205/4405\nf 4507/8309/4495 4518/8324/4505 4510/8313/4497\nf 4700/8619/4692 4236/7912/4236 4237/7914/4175\nf 4701/8625/4696 4700/8619/4692 4694/8606/4685\nf 4700/8619/4692 4701/8625/4696 4702/8629/4693\nf 4703/8623/4694 4241/7918/4241 4238/7915/4238\nf 4702/8629/4693 4703/8623/4694 4236/7912/4236\nf 4704/8624/4695 4702/8629/4693 4701/8625/4696\nf 4705/8626/4697 4701/8625/4696 4694/8606/4685\nf 4690/8603/4682 4693/8610/4688 4705/8626/4697\nf 4708/8630/4700 4705/8626/4697 4693/8610/4688\nf 4708/8630/4700 4699/8617/4691 4687/11165/4679\nf 4708/8630/4700 4706/8627/4698 4705/8626/4697\nf 4710/8631/4701 4709/8632/4702 4712/8633/4703\nf 4710/8631/4701 4711/8641/4710 4650/8531/4640\nf 4662/8635/4705 4712/8633/4703 4661/8552/4653\nf 4713/8634/4704 4712/8633/4703 4662/8635/4705\nf 4713/8634/4704 4715/8637/4707 4716/8642/4708\nf 4713/8634/4704 4716/8642/4708 4710/8631/4701\nf 4688/8600/4680 4717/8639/4709 4718/8643/4711\nf 4717/8639/4709 4688/8600/4680 4650/8601/4640\nf 4665/8556/4656 4662/8635/4705 4661/8552/4653\nf 4714/8636/4706 4667/8558/4658 4715/8637/4707\nf 4664/8555/4655 4181/7820/4182 4669/8758/4659\nf 4664/8555/4655 4186/7826/4186 4181/7820/4182\nf 4721/8647/4714 4725/8653/4719 4232/8652/4233\nf 4721/11166/4714 4232/7908/4233 4167/7803/4173\nf 4722/11167/4715 4167/7803/4173 4231/7905/4230\nf 4722/11168/4715 4746/11169/4743 4719/11170/4712\nf 4724/8655/4718 4723/8657/4717 4233/10957/4716\nf 4724/8655/4718 4760/11171/4763 4726/8656/4720\nf 4386/8666/4376 4383/8133/4375 4391/8143/4384\nf 4696/8671/4687 4692/8604/4683 4397/8149/4390\nf 4511/11060/4498 4696/8671/4687 4400/8672/4724\nf 4730/8673/4725 4690/8603/4682 4689/8605/4684\nf 4730/8673/4725 4397/8149/4390 4692/8604/4683\nf 4171/8674/4726 4162/7796/4167 4731/8676/4728\nf 4731/8676/4728 4237/7805/4175 4171/8674/4726\nf 4162/7796/4167 4732/8677/4729 4733/8675/4727\nf 4732/8677/4729 4162/7796/4167 4161/7793/4164\nf 4730/8673/4725 4689/8605/4684 4396/8681/4732\nf 4730/8673/4725 4396/8681/4732 4397/8149/4390\nf 4734/8679/4730 4689/8605/4684 4694/8606/4685\nf 4731/8682/4728 4734/8679/4730 4694/8606/4685\nf 4731/8682/4728 4395/8680/4731 4734/8679/4730\nf 4735/8683/4733 4395/11172/4731 4731/8676/4728\nf 4735/8684/4733 4733/8689/4727 4393/8685/4387\nf 4394/8145/4386 4395/8680/4731 4735/11173/4733\nf 4391/8690/4384 4392/11174/4385 4737/8691/4735\nf 4739/8693/4737 4738/8692/4736 4737/8691/4735\nf 4738/8692/4736 4739/8693/4737 4387/8695/4380\nf 4736/8697/4734 4729/11175/4723 4737/8698/4735\nf 4392/8696/4385 4393/11176/4387 4736/8697/4734\nf 4742/8160/4399 4389/8138/4379 4388/8140/4381\nf 4739/8693/4737 4740/8699/4738 4387/8695/4380\nf 4739/8693/4737 4744/8706/4741 4741/8700/4739\nf 4743/8705/4740 4741/11177/4739 4447/11178/4437\nf 3540/8707/3552 4749/8719/4746 3708/7187/3716\nf 3540/8707/3552 4362/8095/4354 3542/8096/3717\nf 4745/8709/4742 4361/11179/4353 4746/8710/4743\nf 4722/8708/4715 4231/11180/4230 4745/8709/4742\nf 4745/8711/4742 3535/8713/3549 4361/8093/4353\nf 4747/8715/4744 4231/7905/4230 4176/7907/4232\nf 4747/8715/4744 4745/8714/4742 4231/7905/4230\nf 4747/8717/4744 4176/10962/4232 4748/8718/4745\nf 4749/8719/4746 3538/11181/3550 4747/8717/4744\nf 4749/8719/4746 3540/8707/3552 3538/11181/3550\nf 4320/8729/4748 3706/7183/3713 4319/8725/4318\nf 4320/8729/4748 4317/11182/4317 4316/8730/4749\nf 3704/7181/3711 3706/7183/3713 4320/8729/4748\nf 4746/11183/4743 4361/8093/4353 4719/8645/4712\nf 4750/8731/4750 4361/8093/4353 3530/6970/3542\nf 4751/8732/4751 4359/8734/4753 3524/8769/3537\nf 4751/8732/4751 4724/8651/4718 4725/8653/4719\nf 4725/8653/4719 4752/8733/4752 4751/8732/4751\nf 4360/8735/4754 4752/8733/4752 4725/8653/4719\nf 4721/8647/4714 3531/6972/3544 4725/8653/4719\nf 4753/8736/4755 3530/6970/3542 3531/6972/3544\nf 4720/8737/4713 4753/8736/4755 4721/8647/4714\nf 4750/8731/4750 3530/6970/3542 4753/8736/4755\nf 4318/8738/4756 3704/7181/3711 4316/8730/4749\nf 3701/7179/3709 4318/8738/4756 3698/7177/3707\nf 3698/11184/3707 4318/11185/4756 4314/11186/4316\nf 3698/11184/3707 4314/11186/4316 4184/11187/4184\nf 4243/11188/4243 4316/11189/4749 4244/11190/4245\nf 4316/11189/4749 4243/11188/4243 4318/11185/4756\nf 4314/11186/4316 4318/11185/4756 4243/11188/4243\nf 4314/8033/4316 4315/8032/4315 4184/7822/4184\nf 4315/8032/4315 4672/8567/4664 4184/7822/4184\nf 4313/11191/4314 4672/8567/4664 4240/8031/4239\nf 4754/8742/4757 4671/8564/4663 4672/8743/4664\nf 4671/8564/4663 4754/8742/4757 4755/8746/4758\nf 4241/8750/4241 4703/8753/4694 4756/8747/4759\nf 4756/8747/4759 4703/8753/4694 4715/8751/4707\nf 4707/8754/4699 4706/8755/4698 4757/8752/4760\nf 4716/8638/4708 4715/8751/4707 4757/8752/4760\nf 4708/8756/4700 4687/8599/4679 4718/8643/4711\nf 4718/8643/4711 4757/8752/4760 4706/8755/4698\nf 3582/7021/3588 3734/7227/3743 3750/7662/4072\nf 4670/8562/4661 4671/8564/4663 4758/8757/4761\nf 4758/8757/4761 4664/8555/4655 4669/8758/4659\nf 4666/8557/4657 4663/8554/4654 4758/8757/4761\nf 4758/8757/4761 4671/8564/4663 4667/8558/4658\nf 4471/8237/4458 4470/8236/4457 4345/8243/4340\nf 4475/8250/4462 4473/11044/4466 4459/8225/4451\nf 4363/8773/4766 4405/8156/4396 4365/8098/4355\nf 4406/8165/4397 4759/8766/4762 4410/8164/4403\nf 4760/8768/4763 4751/8732/4751 3524/8769/3537\nf 4364/11011/4767 3298/6633/3317 3301/10758/4765\nf 3301/8772/4765 4405/8156/4396 4363/8773/4766\nf 3301/10749/4765 3299/8828/3316 4761/10750/6112\nf 3299/8828/3316 4801/8827/4807 4761/10750/6112\nf 4762/8780/4768 4767/11192/4772 4763/8879/4845\nf 4762/8780/4768 4763/8879/4845 4764/8881/4769\nf 4762/8780/4768 4766/8779/4771 4767/11192/4772\nf 4770/11193/4847 4767/11192/4772 4769/11194/4774\nf 4767/11192/4772 4770/11193/4847 4763/8879/4845\nf 4774/8786/4777 4773/8785/4776 4768/8782/4773\nf 4775/8788/4779 4774/8786/4777 4776/8790/4781\nf 4774/8786/4777 4775/8788/4779 4773/8785/4776\nf 4779/8792/4783 4778/11195/4782 4776/8869/4781\nf 4810/8800/4790 4786/8799/4789 4787/8801/4791\nf 4793/8808/4798 4784/8797/4787 4783/8807/4797\nf 4793/8810/4798 4794/9141/4799 4796/8811/4800\nf 4797/8873/4839 4798/8824/4806 4795/8812/4801\nf 4796/8811/4800 4797/8873/4839 4795/8812/4801\nf 3335/6670/3348 4766/8819/4771 4765/8777/4770\nf 3336/6669/3347 3338/8866/4834 4802/8816/4802\nf 4802/8816/4802 4766/8819/4771 3335/6670/3348\nf 4800/11196/4857 4805/8893/4855 4803/8823/4805\nf 4803/11197/4805 4799/11198/4804 4800/11199/4857\nf 4798/8824/4806 4797/8873/4839 4804/8825/4803\nf 4803/8823/4805 4805/8893/4855 4798/8890/4806\nf 4765/8777/4770 4764/8776/4769 4801/11200/4807\nf 4801/8832/4807 4807/8829/4808 4761/11201/6112\nf 4806/8857/4809 4801/11202/4807 4764/8834/4769\nf 4809/8833/4811 4806/8857/4809 4764/8834/4769\nf 4810/8800/4790 4764/8834/4769 4811/11203/4865\nf 4811/11203/4865 4785/8798/4788 4810/8800/4790\nf 4812/8839/4816 4792/8805/4795 4791/8804/4794\nf 4790/8806/4796 4814/8837/4814 4813/8835/4812\nf 4791/8804/4794 4813/8835/4812 4812/8839/4816\nf 4817/8836/4813 4813/8835/4812 4814/8837/4814\nf 4817/8836/4813 4815/9239/4818 4812/8839/4816\nf 4818/11204/4815 4816/8840/4817 4817/8842/4813\nf 4816/8840/4817 4818/11204/4815 4819/8843/4819\nf 4816/8840/4817 4821/8844/4820 4820/9244/5095\nf 4819/8845/4819 4824/8849/4823 4822/8846/4821\nf 4824/8849/4823 4800/8895/4857 4799/8850/4804\nf 4788/8802/4792 4826/8852/4825 4825/8851/4824\nf 4787/8801/4791 4789/8803/4793 4826/8852/4825\nf 4827/11205/4827 4825/11206/4824 4826/11207/4825\nf 4826/8852/4825 4789/8803/4793 4828/8855/4828\nf 4829/8853/4826 4830/8863/4832 4827/8854/4827\nf 4789/8803/4793 4792/8805/4795 5095/11208/5086\nf 4828/8855/4828 4789/8803/4793 5095/11208/5086\nf 4831/11209/4831 4808/8831/4810 4825/11210/4824\nf 4832/8858/4829 4831/11211/4831 4825/8851/4824\nf 4832/8862/4829 4827/8854/4827 4830/8863/4832\nf 5012/9150/5016 4802/8816/4802 3373/6996/3563\nf 4802/8816/4802 5012/9150/5016 4772/8820/4778\nf 5016/8867/4835 5011/8870/4836 4776/8869/4781\nf 4836/9145/5011 4837/8872/4838 4781/8796/4786\nf 4783/8807/4797 4837/8872/4838 4838/11212/5018\nf 4838/9153/5018 4794/9141/4799 4783/11213/4797\nf 4839/8874/4840 4796/8811/4800 4794/9141/4799\nf 4797/8873/4839 4840/8875/4841 4841/8876/4842\nf 4769/8783/4774 4771/8784/4775 4843/8878/4844\nf 4770/11193/4847 4845/8922/4848 4763/8879/4845\nf 4782/8795/4785 4784/8797/4787 4846/11214/4850\nf 4784/8884/4787 4847/8919/4851 4873/8885/4849\nf 4793/8808/4798 4847/11215/4851 4784/8797/4787\nf 4795/8812/4801 4848/8888/4852 4847/8887/4851\nf 4798/8890/4806 4805/8893/4855 4850/8892/4854\nf 4805/8893/4855 4800/11196/4857 4851/8894/4856\nf 4852/11216/4858 4851/8894/4856 4800/11196/4857\nf 4867/8898/4860 4853/8897/4859 4854/8912/4871\nf 4855/8899/4861 4853/8897/4859 4819/8845/4819\nf 4853/8897/4859 4855/8899/4861 4854/8912/4871\nf 4856/8909/4862 4814/11217/4814 4865/8910/4869\nf 4814/11217/4814 4857/11218/4863 4864/8977/4911\nf 4858/8902/4864 4857/8901/4863 4786/8799/4789\nf 4811/8906/4865 4858/11219/4864 4785/11220/4788\nf 4858/11219/4864 4811/8906/4865 4859/8905/4867\nf 4860/8904/4866 4862/8954/4897 4859/8905/4867\nf 4858/11219/4864 4859/8905/4867 4862/8954/4897\nf 4857/11218/4863 4858/11219/4864 4862/8954/4897\nf 4862/8954/4897 4863/8956/4899 4857/11218/4863\nf 4863/8956/4899 4864/8977/4911 4857/11218/4863\nf 4864/8977/4911 4865/8910/4869 4814/11217/4814\nf 4867/8898/4860 4869/9012/4931 4824/8849/4823\nf 4824/8849/4823 4869/9012/4931 4868/8913/4872\nf 4777/8789/4780 4778/8791/4782 4870/8914/4873\nf 4780/8915/4784 4782/8916/4785 4871/8927/4880\nf 4871/8927/4880 4870/8914/4873 4780/8915/4784\nf 4872/8917/4874 4871/8927/4880 4782/8916/4785\nf 4873/8885/4849 4875/8918/4875 4874/8931/4884\nf 4875/8918/4875 4873/8885/4849 4847/8919/4851\nf 4876/8920/4876 4845/8883/4848 4769/8783/4774\nf 4876/8950/4876 4877/8949/4894 4845/8922/4848\nf 4845/8922/4848 4877/8949/4894 4878/8921/4877\nf 4844/8880/4846 4763/8879/4845 4878/8921/4877\nf 4878/8921/4877 4861/8923/4868 4844/8880/4846\nf 4842/8877/4843 4879/8952/4879 4843/8878/4844\nf 4842/8924/4843 4870/11221/4873 4880/8925/4878\nf 4870/8914/4873 4871/8927/4880 4880/8961/4878\nf 4881/8929/4882 4880/8961/4878 4871/8927/4880\nf 4871/8927/4880 4872/8917/4874 4882/8928/4881\nf 4872/8917/4874 4846/8886/4850 4882/8928/4881\nf 4883/8930/4883 4846/8886/4850 4873/8885/4849\nf 4874/11222/4884 4875/11223/4875 4886/8933/4886\nf 4874/8931/4884 4886/11224/4886 4884/8932/4885\nf 4885/11225/4890 4875/8918/4875 4848/8889/4852\nf 4875/11223/4875 4885/8937/4890 4886/8933/4886\nf 4888/8966/4888 4884/8932/4885 4886/11224/4886\nf 4849/8891/4853 4885/11225/4890 4848/8889/4852\nf 4889/8936/4889 4886/8933/4886 4885/8937/4890\nf 4850/11226/4854 4889/8936/4889 4849/8938/4853\nf 4850/11226/4854 4851/8945/4856 4891/8947/4892\nf 4891/8947/4892 4890/11227/4891 4850/11226/4854\nf 4894/8999/4926 4878/8921/4877 4877/8949/4894\nf 4878/8921/4877 4895/8998/4925 4861/8923/4868\nf 4895/8998/4925 4878/8921/4877 4894/8999/4926\nf 4860/8904/4866 4861/8907/4868 4895/11228/4925\nf 4898/8983/4902 4897/8985/4901 4880/8925/4878\nf 4899/8962/4903 4881/8929/4882 4882/8928/4881\nf 4881/8929/4882 4899/8962/4903 4900/8963/4904\nf 4901/8964/4905 4899/8962/4903 4884/8932/4885\nf 4902/8965/4906 4901/8964/4905 4884/8932/4885\nf 4887/8934/4887 4886/8933/4886 4903/8970/4907\nf 4891/9019/4892 4868/8913/4872 4929/9014/4933\nf 4868/8913/4872 4869/9012/4931 4929/9014/4933\nf 4866/8911/4870 4855/8899/4861 4865/8975/4869\nf 4896/8955/4898 4906/9002/4910 4865/8910/4869\nf 4865/8910/4869 4864/8977/4911 4896/8955/4898\nf 4907/8978/4912 4894/8999/4926 4877/8949/4894\nf 4894/11229/4926 4907/9048/4912 4909/9047/4948\nf 4892/8948/4893 4897/8958/4901 4912/8982/4915\nf 4912/8982/4915 4911/9042/4945 4910/8981/4914\nf 4898/8983/4902 4913/9038/4916 4912/8984/4915\nf 4914/8987/4917 4913/8986/4916 4900/8963/4904\nf 4915/8990/4920 4901/8964/4905 4902/8965/4906\nf 4915/8990/4920 4916/8989/4919 4914/8987/4917\nf 4901/8964/4905 4915/8990/4920 4914/8987/4917\nf 4917/8988/4918 4915/8990/4920 4902/8965/4906\nf 4904/8968/4908 4917/8988/4918 4887/8969/4887\nf 4904/11230/4908 4903/8970/4907 4919/9035/4922\nf 4860/11231/4866 4921/8997/4924 4949/8996/4896\nf 4921/9000/4924 4860/11232/4866 4895/8998/4925\nf 4909/9050/4948 4921/9000/4924 4894/8999/4926\nf 4921/9000/4924 4909/9050/4948 4920/9052/4923\nf 4906/8976/4910 4923/9003/4927 4905/8971/4909\nf 4925/9011/4929 4905/8971/4909 4924/9004/4928\nf 4869/9012/4931 4928/9016/4934 4927/9013/4932\nf 4930/9017/4935 4931/11233/4968 4890/9018/4891\nf 4930/9017/4935 4891/9019/4892 4929/9014/4933\nf 4931/11233/4968 4932/9020/4936 4919/11234/4922\nf 4919/11234/4922 4890/9018/4891 4931/11233/4968\nf 4932/9082/4936 4935/11235/6129 4933/11236/4937\nf 4918/8991/4921 4933/9023/4937 4917/8988/4918\nf 4918/11237/4921 4919/11234/4922 4932/9020/4936\nf 4933/11238/4937 4935/11239/6129 4934/11240/4956\nf 4934/11241/4956 4916/8989/4919 4933/11242/4937\nf 4916/8989/4919 4934/11241/4956 4938/9031/4938\nf 4939/9033/4941 4913/9038/4916 4914/9034/4917\nf 4913/9038/4916 4939/9033/4941 4940/11243/4944\nf 4889/8936/4889 4890/11227/4891 4919/9035/4922\nf 4913/9038/4916 4942/9037/4943 4941/9036/4942\nf 4942/9039/4943 4940/9041/4944 4939/11244/4941\nf 4910/8981/4914 4911/9042/4945 4908/8980/4913\nf 4944/9046/4947 4945/9069/4950 4909/9047/4948\nf 4946/11245/4949 4948/9053/4951 4920/8995/4923\nf 4948/9053/4951 4946/11245/4949 4947/9072/4964\nf 4949/8996/4896 4920/8995/4923 4948/9053/4951\nf 4948/9053/4951 4950/9055/4952 4922/9054/4900\nf 4950/11246/4952 4952/11247/4954 4923/9001/4927\nf 4952/9058/4954 4950/9055/4952 4951/9057/4953\nf 4925/9011/4929 4953/9059/4955 4928/9016/4934\nf 4927/9079/4932 4928/11248/4934 4953/9076/4955\nf 4927/9079/4932 4931/9080/4968 4930/11249/4935\nf 4954/11250/4976 4935/11235/6129 4932/9082/4936\nf 4954/11250/4976 4934/11251/4956 4935/11235/6129\nf 4955/9062/4957 4934/9061/4956 4954/11252/4976\nf 4956/9063/4958 4937/9028/4940 4938/9030/4938\nf 4957/9065/4959 4941/9036/4942 4939/9033/4941\nf 4941/9036/4942 4957/9065/4959 4967/9066/4960\nf 4945/11253/4950 4943/9044/4946 4959/9086/4971\nf 4943/9044/4946 4945/11253/4950 4944/9045/4947\nf 4945/9069/4950 4961/9071/4963 4946/11245/4949\nf 4947/9072/4964 4946/11245/4949 4961/9071/4963\nf 4951/9057/4953 4948/9053/4951 4962/9073/4965\nf 4964/9078/4967 4931/9080/4968 4927/9079/4932\nf 4931/9080/4968 4964/9078/4967 4965/9081/4969\nf 4965/9081/4969 4954/11250/4976 4932/9082/4936\nf 4954/9098/4976 4966/11254/4970 4955/11255/4957\nf 4966/11256/4970 4967/9066/4960 4957/9065/4959\nf 4957/9065/4959 4956/9063/4958 4966/11256/4970\nf 4967/9066/4960 4968/9087/4972 4958/9067/4961\nf 4959/9086/4971 4960/11257/4962 4945/11253/4950\nf 4961/9071/4963 4960/9070/4962 4969/9089/4973\nf 4970/9093/4975 4947/9072/4964 4961/9071/4963\nf 4970/9093/4975 4971/9091/4974 4962/9073/4965\nf 4962/9073/4965 4947/9072/4964 4970/9093/4975\nf 4963/9074/4966 4962/9073/4965 4971/9091/4974\nf 4966/11256/4970 4968/9087/4972 4967/9066/4960\nf 4969/9089/4973 4966/11254/4970 4954/9098/4976\nf 4969/9089/4973 4968/9096/4972 4966/11254/4970\nf 4974/9101/4979 4975/10140/5735 4972/9099/4977\nf 4974/9101/4979 5098/9237/5090 4976/9102/4980\nf 4977/9103/4981 4975/10140/5735 4974/9101/4979\nf 4976/9102/4980 5098/9237/5090 5143/9288/5129\nf 4979/9110/4983 4978/9104/4982 4976/9102/4980\nf 4979/9110/4983 4976/9102/4980 5143/9288/5129\nf 4980/11258/4984 4983/9111/4987 3634/9113/3642\nf 4983/9111/4987 4980/11258/4984 4979/11259/4983\nf 5005/9138/5005 4985/9114/4988 4984/6960/3535\nf 4984/11260/3535 4983/9111/4987 5005/11261/5005\nf 3523/6961/3536 4984/6960/3535 4985/9114/4988\nf 4987/9117/4991 4986/9115/4989 4985/9114/4988\nf 4989/9124/4994 4993/9126/4996 4990/11262/4992\nf 4990/9121/4992 4988/9116/4990 4991/9122/4993\nf 4997/11263/5000 5000/11264/6095 4998/11265/6092\nf 4997/11266/5000 4998/11267/6092 4996/11268/4998\nf 4996/9129/4998 4995/9139/5006 4999/9130/4999\nf 4997/9290/5000 5001/11269/5002 5000/11270/6095\nf 5002/9137/5001 5000/11270/6095 5001/11269/5002\nf 4991/9122/4993 5005/9138/5005 5143/9288/5129\nf 5003/9135/5003 5001/11269/5002 5006/9292/5131\nf 5006/9292/5131 5001/11269/5002 4997/9290/5000\nf 5007/9289/5130 4994/9127/4997 4991/9122/4993\nf 4991/9122/4993 5143/9288/5129 5007/9289/5130\nf 4994/9127/4997 5007/9289/5130 4995/9139/5006\nf 4838/9153/5018 5008/9142/5008 4794/9141/4799\nf 4772/8820/4778 5012/9150/5016 5016/8867/4835\nf 5010/9144/5010 5011/8870/4836 5013/9146/5012\nf 5013/9146/5012 5011/8870/4836 5016/8867/4835\nf 5016/8867/4835 5017/9149/5015 5015/9148/5014\nf 3373/6996/3563 3555/6995/3562 5017/9149/5015\nf 4837/8872/4838 4836/9145/5011 5030/9184/5048\nf 5030/9184/5048 5018/9151/5017 4837/8872/4838\nf 5014/9147/5013 5030/9184/5048 4836/9145/5011\nf 5020/9156/5020 5009/9143/5009 5008/9142/5008\nf 4840/8875/4841 5022/9158/5022 5023/9161/5025\nf 5022/9158/5022 5021/9157/5021 5024/9159/5023\nf 4841/8876/4842 5027/9162/5026 5026/11271/5198\nf 5027/9162/5026 4841/8876/4842 5023/9161/5025\nf 5025/9160/5024 5024/9159/5023 5028/9163/5027\nf 5021/9157/5021 5020/9156/5020 5032/9191/5055\nf 5031/9165/5029 5021/9157/5021 5032/9191/5055\nf 5033/11272/6130 5031/9165/5029 5032/9191/5055\nf 5031/9165/5029 5036/11273/6131 5034/9166/5030\nf 5035/9168/5032 5034/9166/5030 5036/11273/6131\nf 5035/9168/5032 5036/11273/6131 5038/9169/5033\nf 5037/9170/5034 5039/9171/5035 5040/9172/5036\nf 5041/9173/5037 5042/9356/5183 5037/9170/5034\nf 5041/9173/5037 5043/9175/5039 5042/9356/5183\nf 5041/9173/5037 5040/9172/5036 5044/9176/5040\nf 5047/9180/5044 5045/9174/5038 5046/9177/5041\nf 5047/9180/5044 5050/9179/5043 5051/9181/5045\nf 5052/9198/5062 5051/9181/5045 5050/9179/5043\nf 5015/9148/5014 3554/6994/3561 3592/7028/3595\nf 5029/9164/5028 5053/9487/5269 5014/9147/5013\nf 5054/9489/5271 5014/9147/5013 5053/9487/5269\nf 5014/9147/5013 5054/9489/5271 5055/9183/5047\nf 5056/9185/5049 5057/11274/5050 5018/9151/5017\nf 5057/9186/5050 5058/9187/5051 5019/9155/5019\nf 5058/9187/5051 5059/9189/5053 5020/9156/5020\nf 5032/9191/5055 5060/9188/5052 5061/9192/5056\nf 5060/9188/5052 5032/9191/5055 5020/9156/5020\nf 5062/9190/5054 5033/11272/6130 5032/9191/5055\nf 5063/9193/5057 5064/9194/5058 5065/9196/5060\nf 5038/9169/5033 5061/9192/5056 5064/9194/5058\nf 5066/9195/5059 5040/9172/5036 5039/9171/5035\nf 5040/9172/5036 5066/9195/5059 5044/9176/5040\nf 5044/9176/5040 5067/9519/5297 5068/9524/5302\nf 5049/9178/5042 5046/9177/5041 5069/9523/5301\nf 5069/9523/5301 5070/9522/5300 5049/9178/5042\nf 5050/9179/5043 5070/9522/5300 5071/9213/5076\nf 5050/9179/5043 5049/9178/5042 5070/9522/5300\nf 5073/9199/5063 5074/9201/5065 5052/9198/5062\nf 5075/9206/5064 5076/9205/5069 5074/9676/5065\nf 5077/9202/5066 5080/9217/5077 5078/9203/5067\nf 5080/9217/5077 5077/9202/5066 5075/9206/5064\nf 5081/9207/5070 5082/9208/5071 5083/9209/5072\nf 5086/9211/5074 5084/9210/5073 5085/9220/5082\nf 5086/9211/5074 5085/9220/5082 3627/7079/3640\nf 3625/7064/3627 3624/7063/3626 5086/9211/5074\nf 5071/9213/5076 5072/9197/5061 5050/9179/5043\nf 5073/9199/5063 5087/9212/5075 5089/9215/5078\nf 5087/9212/5075 5073/9199/5063 5072/9197/5061\nf 5089/9215/5078 5075/9200/5064 5073/9199/5063\nf 5089/9215/5078 5088/11275/6132 5090/9216/5079\nf 5080/9217/5077 5090/11276/5079 5321/9548/5325\nf 5080/9217/5077 5321/9548/5325 5322/9218/5080\nf 5082/9208/5071 5078/9203/5067 5080/9217/5077\nf 5082/9208/5071 5322/9218/5080 5091/9219/5081\nf 5083/9209/5072 5091/9219/5081 5092/9221/5083\nf 5092/9221/5083 5084/9210/5073 5083/9209/5072\nf 4943/9223/4946 4908/8980/4913 4958/9222/4961\nf 3634/7081/3642 3636/7083/3644 4980/11277/4984\nf 3636/7083/3644 5761/11278/5746 4982/9109/4986\nf 4981/9108/4985 4980/11277/4984 3636/7083/3644\nf 5094/9225/5084 4973/11279/4978 4972/9226/4977\nf 5095/9229/5086 5093/11280/5085 4830/9230/4832\nf 5096/9233/5087 5095/9229/5086 4792/11281/4795\nf 4973/11279/4978 5094/9225/5084 5097/9248/5089\nf 5099/9252/5091 5096/9233/5087 4812/11282/4816\nf 5099/9238/5091 4812/8839/4816 4815/9239/4818\nf 4815/9239/4818 5101/9241/5093 5100/9240/5092\nf 4820/9244/5095 5101/9243/5093 4816/8840/4817\nf 5094/9225/5084 5103/9249/5099 5138/9246/5097\nf 5104/9234/5088 5093/11280/5085 5095/9229/5086\nf 5099/11283/5091 5106/11284/5104 5105/11285/5100\nf 5106/11286/5104 5099/11287/5091 5100/9240/5092\nf 5100/9240/5092 5107/9253/5101 5106/11286/5104\nf 5101/9243/5093 5114/9245/5096 5109/11288/6133\nf 5109/11288/6133 5102/9254/5094 5101/9243/5093\nf 4820/9244/5095 4821/8844/4820 5110/9321/5153\nf 4820/9244/5095 5110/9321/5153 5114/9245/5096\nf 4821/8844/4820 4823/11289/4822 5110/9321/5153\nf 4822/8846/4821 4799/8850/4804 4823/8847/4822\nf 5111/9257/5103 5103/11290/5099 5104/9234/5088\nf 5111/9257/5103 5105/9251/5100 5112/9259/5105\nf 5102/9254/5094 5109/11288/6133 5113/9262/5106\nf 5109/11288/6133 5114/9245/5096 5115/9268/5112\nf 5109/11288/6133 5115/9268/5112 5116/9275/5119\nf 5103/11291/5099 5111/11292/5103 5137/11293/5126\nf 5113/9262/5106 5130/9277/5121 5118/9279/5110\nf 5118/9279/5110 5108/9255/5102 5113/9262/5106\nf 5118/9266/5110 5107/9260/5101 5108/11294/5102\nf 5116/9275/5119 5113/9262/5106 5109/11288/6133\nf 5113/9262/5106 5116/9275/5119 5128/9274/5118\nf 5122/9273/5117 5121/9324/5156 5123/9323/5155\nf 5121/9324/5156 5122/9273/5117 5120/9267/5111\nf 5120/9267/5111 5116/9275/5119 5115/9268/5112\nf 5120/9267/5111 5124/9269/5113 5121/9324/5156\nf 5126/9270/5114 5120/9267/5111 5122/9273/5117\nf 5127/9272/5116 5129/9276/5120 5128/9274/5118\nf 5126/9270/5114 5128/9274/5118 5116/9275/5119\nf 5128/9274/5118 5130/9277/5121 5113/9262/5106\nf 5131/9770/5122 5132/9282/5125 5118/9266/5110\nf 5132/9282/5125 5134/9281/5124 5119/9265/5109\nf 5119/9265/5109 5118/9266/5110 5132/9282/5125\nf 5133/9280/5123 5136/9298/5135 5135/9264/5108\nf 5135/9264/5108 5119/9265/5109 5134/9281/5124\nf 5135/9264/5108 5134/9281/5124 5133/9280/5123\nf 5117/9263/5107 5112/9259/5105 5135/9264/5108\nf 5117/9263/5107 5135/9264/5108 5136/9298/5135\nf 5137/9297/5126 5111/9257/5103 5117/9263/5107\nf 5143/9288/5129 4983/9287/4987 4979/9110/4983\nf 5141/11295/5127 4999/9130/4999 5142/9140/5007\nf 5140/9247/5098 5006/9292/5131 5141/9284/5127\nf 5144/9293/5132 5139/9285/5128 5159/9314/5149\nf 5163/9294/5133 5159/9314/5149 5139/9285/5128\nf 5137/11296/5126 5145/9295/5134 5138/9246/5097\nf 5146/11297/5148 5145/9296/5134 5136/9298/5135\nf 5147/9299/5136 5151/11298/5547 5148/9300/5137\nf 5151/9842/5547 5147/9311/5136 5150/9310/5146\nf 5152/9302/5139 5147/9299/5136 5149/9301/5138\nf 5153/9315/5140 5152/11299/5139 5155/11300/5142\nf 5155/11300/5142 5157/9316/5150 5153/9315/5140\nf 5157/9316/5150 5155/11300/5142 5004/9136/5004\nf 5004/9136/5004 5003/9135/5003 5157/9316/5150\nf 5160/9312/5147 5147/9311/5136 5153/9315/5140\nf 5160/9312/5147 5161/9309/5145 5147/9311/5136\nf 5161/9309/5145 5162/9841/5546 5150/9310/5146\nf 5145/9295/5134 5160/9312/5147 5153/9315/5140\nf 5145/9295/5134 5153/9315/5140 5163/9294/5133\nf 5157/9316/5150 5003/9135/5003 5159/9314/5149\nf 5163/9294/5133 5157/9316/5150 5159/9314/5149\nf 4804/8825/4803 4841/8876/4842 5164/9358/5185\nf 4804/8825/4803 5164/9358/5185 5165/9317/5151\nf 5165/9317/5151 4799/9319/4804 4804/8825/4803\nf 5167/9322/5154 5115/9268/5112 5114/9245/5096\nf 5124/9269/5113 5167/9322/5154 5168/11301/5158\nf 5169/9325/5157 5123/11302/5155 5124/9326/5113\nf 5125/9271/5115 5122/9273/5117 5171/9423/5228\nf 5125/9271/5115 5171/9423/5228 5170/9328/5159\nf 5170/9328/5159 5174/9330/5161 5172/11303/5519\nf 5177/9336/5165 5176/11304/5164 5178/9337/5166\nf 5179/9338/5167 5178/9337/5166 5181/9342/5169\nf 5183/9344/5171 5182/9343/5170 5181/9342/5169\nf 5178/9339/5166 5180/9341/5168 5184/9376/5195\nf 5183/9344/5171 5185/9345/5172 5186/9348/5175\nf 5187/11305/5173 5181/9666/5169 5446/9670/5427\nf 5191/9350/5177 5180/9341/5168 5176/9340/5164\nf 5175/9331/5162 5173/9329/5160 5191/9350/5177\nf 5193/9167/5031 5028/9163/5027 5024/9159/5023\nf 5195/9354/5181 5194/9351/5178 5035/9168/5032\nf 5037/9170/5034 5196/9352/5179 5195/9354/5181\nf 5198/9355/5182 5200/9386/5203 5197/9353/5180\nf 5198/9355/5182 5199/9357/5184 5200/9386/5203\nf 5026/11271/5198 5164/9358/5185 4841/8876/4842\nf 5164/9358/5185 5166/9320/5152 4823/9318/4822\nf 5203/9360/5187 5166/9320/5152 5202/9359/5186\nf 5203/9360/5187 5204/9361/5188 5114/9245/5096\nf 5167/9322/5154 5114/9245/5096 5204/9361/5188\nf 5207/11306/6134 5206/9366/5191 5168/9327/5158\nf 5207/11306/6134 5168/9327/5158 5208/9364/5190\nf 5209/9368/5192 5204/9367/5188 5210/11307/6135\nf 5209/9368/5192 5208/9364/5190 5205/9363/5189\nf 5204/9367/5188 5211/9370/5193 5212/9924/5596\nf 5204/9367/5188 5212/9924/5596 5210/11307/6135\nf 5214/9379/5197 5213/9373/5194 5164/9375/5185\nf 5213/9373/5194 5214/9379/5197 5215/9408/5213\nf 5199/9357/5184 5180/9341/5168 5190/9349/5176\nf 5216/9377/5196 5200/9386/5203 5199/9357/5184\nf 5217/9381/5199 5027/9162/5026 5028/9163/5027\nf 5034/9166/5030 5217/9381/5199 5193/9167/5031\nf 5217/9381/5199 5034/9166/5030 5218/9398/5212\nf 5219/9383/5200 5218/9398/5212 5034/9166/5030\nf 5219/9383/5200 5194/9351/5178 5220/9384/5201\nf 5220/9384/5201 5194/9351/5178 5195/9354/5181\nf 5216/9377/5196 5191/9350/5177 5192/9396/5205\nf 5216/11308/5196 5222/9387/5204 5200/9386/5203\nf 5223/9391/5206 5224/9418/5208 5222/9388/5204\nf 5225/9392/5207 5197/9353/5180 5222/9387/5204\nf 5220/9384/5201 5221/9385/5202 5226/9395/5210\nf 5227/9397/5211 5228/11309/5220 5218/9398/5212\nf 5227/9397/5211 5219/9383/5200 5220/9384/5201\nf 5217/9381/5199 5218/9398/5212 5228/11309/5220\nf 5217/9381/5199 5229/11310/5217 5215/9399/5213\nf 5217/9381/5199 5228/11309/5220 5229/11310/5217\nf 4961/9071/4963 4969/9089/4973 4970/9093/4975\nf 5213/9373/5194 5215/9408/5213 5231/11311/5215\nf 5231/11312/5215 5211/9370/5193 5213/9372/5194\nf 5233/9925/5582 5212/9924/5596 5211/9370/5193\nf 5211/9405/5193 5232/9404/5216 5234/11313/5583\nf 5211/11314/5193 5234/9900/5583 5233/9899/5582\nf 5227/9411/5211 5220/9414/5201 5237/9413/5221\nf 5196/9352/5179 5225/9392/5207 5239/9416/5222\nf 5223/9391/5206 5192/9390/5205 5240/9417/5223\nf 5173/9329/5160 5241/9419/5224 5243/9421/5226\nf 5241/11315/5224 5171/9424/5228 5242/9426/5225\nf 5171/9423/5228 5241/9419/5224 5170/9328/5159\nf 5169/11316/5157 5244/9422/5227 5122/9273/5117\nf 5245/9435/5230 5230/9407/5214 5229/9406/5217\nf 5245/9435/5230 5229/9406/5217 5228/11317/5220\nf 5245/9435/5230 5247/9434/5232 5230/9407/5214\nf 5246/9433/5231 5250/9892/5234 5247/9434/5232\nf 5231/9403/5215 5230/9407/5214 5247/9434/5232\nf 5235/9409/5218 5246/9438/5231 5236/9410/5219\nf 5248/11318/5233 5250/9892/5234 5246/9433/5231\nf 5249/9441/5235 5248/9440/5233 5251/9442/5236\nf 5251/9442/5236 5255/9879/5573 5599/9443/5237\nf 5251/9442/5236 5253/9445/5239 5255/9879/5573\nf 5248/9440/5233 5256/9447/5240 5251/9442/5236\nf 5237/9446/5221 5257/11319/5241 5256/9447/5240\nf 5226/9415/5210 5238/11320/5209 5257/9448/5241\nf 5258/9458/5250 5257/9448/5241 5238/11320/5209\nf 5239/9416/5222 5258/11321/5250 5238/9394/5209\nf 5224/9418/5208 5240/9417/5223 5259/11322/5247\nf 5259/9480/5247 5239/9416/5222 5224/9393/5208\nf 5242/9426/5225 5261/9449/5242 5263/9451/5244\nf 5244/9425/5227 5169/9325/5157 5264/9427/5229\nf 5261/9449/5242 5264/9427/5229 5265/11323/6136\nf 5265/11323/6136 5262/9450/5243 5261/9449/5242\nf 5243/9454/5226 5242/11324/5225 5278/9467/5257\nf 5266/9453/5246 5240/9417/5223 5192/9390/5205\nf 5266/9453/5246 5243/9454/5226 5278/9467/5257\nf 5266/9453/5246 5267/9456/5248 5240/9417/5223\nf 5251/9442/5236 5256/9447/5240 5252/9444/5238\nf 5257/9448/5241 5258/9458/5250 5268/9466/5256\nf 5275/9457/5249 5268/9466/5256 5258/9458/5250\nf 5257/9448/5241 5268/9466/5256 5269/9461/5252\nf 5269/9461/5252 5270/11325/5251 5257/9448/5241\nf 5256/11326/5240 5257/9448/5241 5270/11325/5251\nf 5271/10028/5666 5252/9444/5238 5270/9460/5251\nf 5269/11327/5252 5272/10030/5668 5270/9460/5251\nf 5272/10449/5668 5269/9461/5252 5273/9463/5254\nf 5276/9464/5255 5275/9457/5249 5239/9459/5222\nf 5275/9457/5249 5276/9464/5255 5277/10440/5930\nf 5277/10440/5930 5268/9466/5256 5275/9457/5249\nf 5242/11324/5225 5260/11328/5245 5278/9467/5257\nf 5280/9469/5259 5267/9456/5248 5266/9453/5246\nf 5281/9470/5260 5259/9455/5247 5267/9456/5248\nf 5282/9471/5261 5281/9470/5260 5280/9469/5259\nf 5281/9470/5260 5282/9471/5261 5283/9483/5266\nf 5278/9467/5257 5260/11328/5245 5284/9475/5262\nf 5279/9468/5258 5278/9467/5257 5547/9476/5263\nf 5285/9478/5265 5282/9471/5261 5279/9468/5258\nf 3838/7374/3840 3837/7376/3842 5287/9486/5268\nf 3838/7374/3840 5053/9487/5269 5029/9164/5028\nf 5029/9164/5028 3592/7028/3595 3838/7374/3840\nf 5054/9489/5271 5289/9488/5270 5288/9490/5272\nf 5289/9488/5270 5054/9489/5271 5053/9487/5269\nf 5055/9183/5047 5288/9490/5272 5290/9491/5273\nf 5291/9492/5274 5290/9491/5273 5292/9498/5280\nf 5291/9492/5274 5057/11274/5050 5056/9185/5049\nf 3837/7376/3842 3856/7382/3848 5293/9493/5275\nf 5294/9494/5276 5287/9486/5268 5293/9493/5275\nf 5296/9496/5278 5288/9490/5272 5295/9495/5277\nf 5296/9500/5278 5302/9508/5281 5298/9501/5282\nf 5293/9493/5275 3857/7392/3858 5299/11329/6137\nf 3857/7392/3858 5293/9493/5275 3856/7382/3848\nf 5299/11329/6137 5300/9503/5283 5293/9493/5275\nf 5301/9505/5285 5302/9499/5281 5297/9497/5279\nf 5297/9497/5279 5295/9495/5277 5301/9505/5285\nf 3857/7392/3858 5303/9506/5286 5299/11329/6137\nf 5299/11329/6137 5303/9506/5286 5300/9503/5283\nf 5301/9505/5285 5306/11330/5288 5302/9499/5281\nf 5308/9511/5290 5058/9187/5051 5057/9186/5050\nf 5308/9511/5290 5059/9189/5053 5058/9187/5051\nf 5308/9511/5290 5309/9513/5291 5310/9514/5292\nf 5059/9189/5053 5308/9511/5290 5310/9514/5292\nf 5060/9188/5052 5310/9514/5292 5312/9515/5293\nf 5311/9517/5295 5065/9196/5060 5313/9516/5294\nf 5313/9516/5294 5064/9194/5058 5061/9192/5056\nf 5315/9520/5298 5068/9524/5302 5067/9519/5297\nf 5317/9521/5299 5068/9524/5302 5315/9520/5298\nf 5319/9541/5319 5318/9526/5304 5317/9521/5299\nf 5320/9527/5305 5088/11275/6132 5087/9212/5075\nf 5092/9221/5083 5324/9529/5307 5325/9530/5308\nf 3633/7080/3641 5085/9220/5082 5325/9530/5308\nf 5327/9533/5311 5329/9534/5312 5328/9532/5310\nf 5328/9532/5310 5312/9515/5293 5310/9514/5292\nf 5292/9502/5280 5298/9501/5282 5330/9535/5313\nf 5312/9515/5293 5328/9532/5310 5331/9537/5315\nf 5331/9537/5315 5311/9517/5295 5312/9515/5293\nf 5332/9536/5314 5314/9518/5296 5311/9517/5295\nf 5332/9536/5314 5335/9540/5318 5314/9518/5296\nf 5335/9540/5318 5334/9539/5317 5336/11331/6138\nf 5336/11331/6138 5316/9525/5303 5335/9540/5318\nf 5337/9542/5320 5317/9521/5299 5316/9525/5303\nf 5316/9525/5303 5336/11331/6138 5337/9542/5320\nf 5338/9543/5321 5320/9527/5305 5318/9526/5304\nf 5339/9544/5322 5090/9216/5079 5320/9527/5305\nf 5339/9546/5322 5321/9548/5325 5090/11276/5079\nf 5341/9547/5324 5323/9528/5306 5322/9218/5080\nf 5323/9528/5306 5341/9547/5324 5342/9587/5356\nf 5323/9528/5306 5342/9587/5356 5343/9549/5326\nf 5343/9549/5326 5324/9529/5307 5091/9219/5081\nf 5344/9550/5327 5325/9530/5308 5324/9529/5307\nf 5344/9550/5327 5326/9531/5309 5325/9530/5308\nf 5326/9531/5309 5344/9550/5327 5345/9551/5328\nf 5347/9567/5341 5328/9532/5310 5329/9534/5312\nf 5347/9567/5341 5329/9534/5312 5346/9553/5329\nf 5331/9537/5315 5328/9532/5310 5347/9567/5341\nf 5347/9567/5341 5348/9554/5330 5331/9537/5315\nf 5348/9554/5330 5350/9569/5343 5349/9555/5331\nf 5351/9571/5345 5349/9555/5331 5350/9569/5343\nf 5349/9555/5331 5351/9571/5345 5334/9539/5317\nf 5351/9571/5345 5336/11331/6138 5334/9539/5317\nf 5336/11331/6138 5351/9571/5345 5352/9557/5333\nf 5336/11331/6138 5353/9556/5332 5337/9542/5320\nf 5353/9556/5332 5336/11331/6138 5352/9557/5333\nf 5353/9556/5332 5319/9541/5319 5337/9542/5320\nf 5338/9543/5321 5354/9558/5334 5355/11332/5335\nf 5340/9561/5323 5355/9560/5335 5339/9581/5322\nf 5356/9564/5338 5343/9549/5326 5342/9587/5356\nf 5357/9586/5355 5356/9564/5338 5342/9587/5356\nf 5358/9562/5336 5345/9551/5328 5344/9550/5327\nf 5359/9563/5337 5344/9550/5327 5343/9549/5326\nf 5378/11333/5359 5345/9551/5328 5358/9562/5336\nf 5345/9551/5328 5378/11333/5359 3938/7477/3934\nf 5360/11334/6139 5346/9553/5329 5307/9510/5289\nf 5361/9565/5339 5363/9568/5342 5347/9567/5341\nf 5351/9571/5345 5350/9569/5343 5364/9572/5346\nf 5364/9572/5346 5365/11335/5376 5366/9570/5344\nf 5367/9573/5347 5352/9557/5333 5351/9571/5345\nf 5368/11336/5349 5367/9573/5347 5366/9570/5344\nf 5354/9558/5334 5352/9557/5333 5367/9573/5347\nf 5370/9575/5348 5367/11337/5347 5368/9576/5349\nf 5371/9580/5352 5339/9581/5322 5355/9560/5335\nf 5355/9560/5335 5369/9577/5350 5372/9579/5351\nf 5373/9583/5353 5342/11338/5356 5341/9582/5324\nf 5371/9580/5352 5372/9579/5351 5374/9584/5354\nf 5375/11339/5357 5356/9564/5338 5357/9586/5355\nf 5375/11339/5357 5359/9563/5337 5356/9564/5338\nf 5375/9588/5357 5376/9596/5363 5377/9589/5358\nf 5359/9563/5337 5375/11339/5357 5378/11340/5359\nf 5379/9593/5360 5378/9590/5359 5377/9589/5358\nf 5379/11341/5360 3938/7477/3934 5378/11333/5359\nf 5379/9593/5360 5377/9589/5358 5380/9594/5361\nf 5379/9593/5360 5380/9594/5361 3960/7520/3960\nf 5380/9594/5361 5377/9589/5358 5381/9595/5362\nf 3960/7520/3960 5381/9595/5362 5382/7563/3995\nf 5383/9597/5364 5381/9595/5362 5377/9589/5358\nf 5376/9596/5363 5384/9598/5365 5383/9597/5364\nf 5384/9598/5365 5376/9596/5363 5375/9588/5357\nf 5357/9601/5355 5386/9600/5367 5384/9598/5365\nf 5386/9600/5367 5357/9601/5355 5373/9583/5353\nf 5386/9600/5367 5374/9584/5354 5372/9579/5351\nf 5389/9604/5370 5372/9579/5351 5369/9577/5350\nf 5372/9579/5351 5389/9604/5370 5388/9603/5369\nf 5391/9627/5390 5390/9605/5371 5392/9606/5372\nf 5392/9606/5372 5394/9609/5375 5391/9627/5390\nf 5392/9606/5372 5369/9577/5350 5368/9576/5349\nf 5392/9606/5372 5393/9607/5373 5394/9609/5375\nf 5393/9607/5373 5368/9576/5349 5366/9610/5344\nf 5393/9607/5373 5365/9611/5376 5395/9608/5374\nf 5365/11335/5376 5397/9613/5378 5396/9615/5377\nf 5397/9613/5378 5365/11335/5376 5364/9572/5346\nf 5397/11342/5378 5399/11343/5380 5398/11344/5379\nf 5399/9617/5380 5350/9569/5343 5363/9568/5342\nf 5399/11343/5380 5400/11345/5381 5398/11344/5379\nf 5400/11346/5381 5402/11347/5382 5401/11348/5396\nf 5402/9619/5382 5363/9568/5342 5362/9566/5340\nf 5401/11349/5396 5402/9619/5382 5362/9566/5340\nf 5362/9566/5340 5403/11350/6140 5401/11349/5396\nf 5403/11350/6140 5362/9566/5340 5360/11334/6139\nf 5360/11351/6139 5404/11352/6141 5403/11353/6140\nf 5360/11334/6139 5362/9566/5340 5346/9553/5329\nf 5360/11334/6139 5307/9510/5289 5306/11354/5288\nf 5360/11351/6139 5306/11355/5288 5404/11352/6141\nf 5405/11356/5404 5404/11357/6141 5306/9509/5288\nf 5306/11330/5288 5301/9505/5285 5406/9642/5405\nf 5305/9507/5287 5406/9642/5405 5301/9505/5285\nf 3997/10905/6121 5303/9506/5286 3862/7397/3863\nf 5407/9620/5383 3998/7561/3993 3999/7562/3994\nf 5408/9621/5384 3999/7562/3994 5382/7563/3995\nf 5381/9595/5362 5383/9597/5364 5408/9621/5384\nf 5408/9621/5384 5410/9623/5386 5407/9620/5383\nf 5408/9621/5384 5383/9597/5364 5385/9599/5366\nf 5409/9622/5385 5385/9599/5366 5387/9602/5368\nf 5387/9602/5368 5411/9624/5387 5409/9622/5385\nf 5389/9604/5370 5390/9605/5371 5412/9626/5389\nf 5411/9624/5387 5412/9626/5389 5413/9625/5388\nf 5412/9626/5389 5414/9629/5392 5415/9628/5391\nf 5414/9629/5392 5391/9627/5390 5394/9609/5375\nf 5416/9630/5393 5414/9629/5392 5394/9609/5375\nf 5394/9609/5375 5395/9608/5374 5416/9630/5393\nf 5416/9630/5393 5417/9632/5395 5418/9631/5394\nf 5417/9632/5395 5416/9630/5393 5395/9608/5374\nf 5417/9632/5395 5396/9612/5377 5398/11344/5379\nf 5417/9632/5395 5398/11344/5379 5400/11345/5381\nf 5417/9632/5395 5400/11345/5381 5401/9633/5396\nf 5417/9632/5395 5420/9635/5398 5418/9631/5394\nf 5421/9636/5399 5422/9637/5400 5420/9635/5398\nf 5421/9636/5399 5401/9633/5396 5403/11358/6140\nf 5403/11353/6140 5423/11359/5401 5421/11360/5399\nf 5423/11359/5401 5403/11353/6140 5404/11352/6141\nf 5424/9644/5407 5422/9637/5400 5423/9638/5401\nf 5303/9506/5286 3997/10905/6121 3996/7597/4022\nf 5425/9639/5402 5305/9507/5287 5303/9506/5286\nf 5406/9642/5405 5305/9507/5287 5426/9640/5403\nf 5426/9640/5403 5427/11361/5406 5405/9641/5404\nf 5306/11330/5288 5406/9642/5405 5405/9641/5404\nf 5405/11356/5404 5423/11362/5401 5404/11357/6141\nf 5423/9638/5401 5405/11363/5404 5427/9643/5406\nf 4031/7612/4031 3998/7561/3993 5407/9620/5383\nf 4031/7612/4031 5407/9620/5383 5428/9645/5408\nf 5428/9645/5408 5410/9623/5386 5413/9625/5388\nf 5428/9645/5408 5429/9646/5409 4032/7610/4029\nf 5413/9625/5388 5430/9647/5410 5429/9646/5409\nf 5432/9649/5412 5418/9631/5394 5420/9635/5398\nf 5434/9651/5414 5435/9652/5415 5436/9655/5418\nf 5435/9652/5415 5437/9653/5416 5436/9655/5418\nf 5437/9653/5416 5424/9644/5407 5427/9643/5406\nf 5438/9654/5417 5439/9657/5420 5436/9655/5418\nf 5426/9658/5403 5440/9656/5419 5438/9654/5417\nf 4023/7596/4021 4047/7633/4047 5439/9659/5420\nf 5425/9639/5402 4023/7596/4021 5440/9660/5419\nf 5425/9639/5402 3996/7597/4022 4023/7596/4021\nf 5431/9648/5411 5442/9662/5422 5441/9661/5421\nf 5433/9650/5413 5436/9655/5418 5442/9662/5422\nf 5443/9665/5424 5442/9662/5422 5436/9655/5418\nf 5436/9655/5418 5444/9663/5423 5443/9665/5424\nf 4054/7638/4052 4053/7644/4058 5444/9663/5423\nf 4047/9664/4047 5444/9663/5423 5439/9657/5420\nf 5429/9646/5409 4055/7639/4053 4035/7614/4033\nf 5429/9646/5409 4035/7614/4033 4032/7610/4029\nf 4056/7640/4054 4055/7639/4053 5430/9647/5410\nf 5441/9661/5421 4057/7641/4055 4056/7640/4054\nf 5430/9647/5410 5441/9661/5421 4056/7640/4054\nf 5443/9665/5424 4057/7641/4055 5442/9662/5422\nf 4058/7643/4057 5443/9665/5424 5444/9663/5423\nf 4058/7643/4057 5444/9663/5423 4053/7644/4058\nf 5184/9376/5195 5445/9667/5425 5181/9666/5169\nf 5445/9667/5425 5446/9670/5427 5181/9666/5169\nf 5188/9347/5174 5187/9346/5173 5446/11364/5427\nf 5187/9346/5173 5188/9347/5174 5185/9345/5172\nf 5045/9174/5038 5201/9668/5426 5043/9175/5039\nf 5448/9673/5430 5201/9668/5426 5447/9672/5429\nf 5052/9198/5062 5450/9696/5451 5051/9181/5045\nf 5449/9681/5431 5074/9676/5065 5451/9675/5432\nf 5452/9684/5439 5079/9204/5068 5081/9207/5070\nf 5455/9678/5434 5452/9684/5439 5081/9207/5070\nf 5084/9210/5073 5086/9211/5074 5456/9679/5435\nf 5086/9211/5074 3624/7063/3626 5456/9679/5435\nf 5448/9673/5430 5445/9667/5425 5201/9668/5426\nf 5450/9696/5451 5457/9680/5436 5051/9181/5045\nf 5052/9198/5062 5449/9674/5431 5458/9697/5452\nf 5450/9696/5451 5052/9198/5062 5458/9697/5452\nf 5459/11365/5437 5458/9697/5452 5449/9674/5431\nf 5076/9205/5069 5079/9204/5068 5460/9683/5438\nf 5079/9204/5068 5452/9684/5439 5461/9686/5441\nf 5453/9685/5440 5452/9684/5439 5455/9678/5434\nf 5455/9678/5434 5462/9687/5442 5453/9685/5440\nf 5462/9687/5442 5454/9677/5433 5456/9679/5435\nf 5464/9689/5444 5456/9679/5435 4070/7661/4071\nf 5465/9691/5446 5448/9673/5430 5048/9182/5046\nf 5465/9691/5446 5048/9182/5046 5457/9680/5436\nf 5447/9672/5429 5047/9180/5044 5048/9182/5046\nf 5466/9690/5445 5189/9671/5428 5445/9667/5425\nf 5465/9691/5446 5457/9680/5436 5467/9692/5447\nf 5465/9691/5446 5466/9690/5445 5448/9673/5430\nf 5468/9694/5449 5467/9692/5447 5457/9680/5436\nf 5458/9697/5452 5468/9694/5449 5469/9695/5450\nf 5458/9697/5452 5469/9695/5450 5450/9696/5451\nf 5458/9697/5452 5459/11365/5437 5470/9698/5453\nf 5471/9699/5454 5459/9682/5437 5451/9675/5432\nf 5461/9686/5441 5472/9700/5455 5460/9683/5438\nf 5463/9688/5443 4070/7661/4071 4088/7685/4093\nf 5463/9688/5443 5464/9689/5444 4070/7661/4071\nf 5189/11366/5428 5466/11367/5445 5475/11368/5458\nf 5189/9703/5428 5476/9705/5459 5188/11369/5174\nf 5188/11370/5174 5478/11371/5462 5477/11372/5460\nf 5475/9714/5458 5483/9713/5464 5479/9707/5461\nf 5479/9710/5461 5476/9711/5459 5475/11373/5458\nf 5480/11374/5448 5475/11368/5458 5466/11367/5445\nf 5480/9693/5448 5467/9692/5447 5481/9718/5468\nf 5480/9693/5448 5482/9712/5463 5475/9714/5458\nf 5480/11375/5448 5481/11376/5468 5484/11377/5465\nf 5482/9712/5463 5484/9715/5465 5485/9717/5467\nf 5486/9716/5466 5484/9715/5465 5467/9692/5447\nf 5478/9708/5462 5491/9723/5472 5487/9719/5469\nf 5482/9712/5463 5485/9717/5467 5489/9722/5471\nf 5488/9721/5470 5482/9712/5463 5489/9722/5471\nf 5488/9721/5470 5490/9726/5475 5483/9713/5464\nf 5490/9726/5475 5479/9707/5461 5483/9713/5464\nf 5479/9707/5461 5490/9726/5475 5491/9723/5472\nf 5493/9724/5473 5487/9719/5469 5491/9723/5472\nf 5494/10019/5659 5490/9726/5475 5495/10020/5660\nf 5490/9726/5475 5494/10019/5659 5492/9725/5474\nf 5488/9721/5470 5489/9722/5471 5496/9971/5616\nf 5488/9721/5470 5495/10020/5660 5490/9726/5475\nf 5487/9729/5469 5493/9955/5473 5502/9957/5482\nf 5498/9731/5478 5499/9730/5477 5186/9348/5175\nf 5477/9728/5460 5497/9727/5476 5500/9732/5479\nf 5501/11378/5480 5498/9731/5478 5477/9706/5460\nf 5502/9957/5482 5497/9727/5476 5487/9729/5469\nf 5503/11379/5481 5505/10089/5484 5497/10091/5476\nf 5506/11380/5485 5500/10282/5479 5507/10284/5486\nf 5506/11381/5485 5508/11382/5487 5498/11383/5478\nf 5182/9343/5170 5183/9344/5171 5499/9730/5477\nf 5509/9746/5488 5499/9730/5477 5498/9731/5478\nf 5510/9748/5489 5512/9752/5490 5179/9749/5167\nf 5510/9748/5489 5508/9751/5487 5511/10380/5851\nf 5179/9749/5167 5512/9752/5490 5177/9335/5165\nf 5175/9333/5162 5177/9335/5165 5514/9754/5163\nf 5515/11384/5494 5174/11385/5161 5514/9754/5163\nf 5515/11384/5494 5517/11386/5493 5174/11385/5161\nf 5174/9330/5161 5517/11387/5493 5172/11303/5519\nf 5519/9758/5495 5170/9328/5159 5172/11303/5519\nf 5518/9797/5516 5519/9796/5495 5172/9800/5519\nf 5521/9762/5497 5127/9272/5116 5125/9271/5115\nf 5127/9272/5116 5522/11388/5498 5523/11389/5499\nf 5129/9768/5120 5523/11390/5499 5524/9769/5500\nf 5129/9768/5120 5131/9770/5122 5130/11391/5121\nf 5524/9769/5500 5525/9771/5501 5132/9282/5125\nf 5537/9772/5502 5527/11392/6142 5133/9280/5123\nf 5133/9280/5123 5132/9282/5125 5525/9771/5501\nf 5526/9835/5541 5133/9280/5123 5527/11392/6142\nf 5133/9280/5123 5526/9835/5541 5528/9773/5503\nf 5528/9774/5503 5529/9834/5540 5146/9313/5148\nf 5532/9776/5504 5523/9785/5499 5522/9763/5498\nf 5532/9779/5504 5533/9781/5507 5534/9782/5508\nf 5535/9784/5509 5524/11393/5500 5523/9785/5499\nf 5536/9786/5510 5538/9790/5511 5537/9789/5502\nf 5537/9789/5502 5535/9784/5509 5536/9786/5510\nf 5527/11394/6142 5537/9789/5502 5539/9791/5512\nf 5527/11394/6142 5539/9791/5512 5569/9849/5542\nf 5530/9777/5505 5520/9760/5496 5540/9793/5514\nf 5530/9777/5505 5522/9763/5498 5520/9760/5496\nf 5519/9796/5495 5541/9795/5513 5520/11395/5496\nf 5518/9797/5516 5544/9799/5518 5542/9794/5515\nf 5516/9755/5492 5543/9798/5517 5517/9756/5493\nf 5516/9755/5492 5545/9802/5264 5546/9801/5520\nf 5546/9801/5520 5544/9799/5518 5543/9798/5517\nf 5550/10679/6077 5548/9807/5521 5549/11396/5533\nf 5548/9807/5521 5550/10679/6077 5551/9808/5522\nf 5548/9825/5521 5553/11397/5525 5564/9827/5528\nf 5553/9811/5525 5548/9807/5521 5552/9809/5523\nf 5557/9810/5524 5554/9813/5527 5553/9811/5525\nf 5556/9932/5599 5557/9810/5524 5555/9812/5526\nf 5558/9821/5529 5562/11398/5603 5559/11399/5530\nf 5561/11400/5532 5558/9815/5529 5560/9817/5531\nf 5562/11398/5603 5558/9821/5529 5630/9823/5534\nf 5563/9826/5535 5561/11400/5532 5549/9824/5533\nf 5568/9833/5539 5162/9841/5546 5161/9309/5145\nf 5569/9836/5542 5526/9835/5541 5527/11392/6142\nf 5570/9837/5543 5571/9839/5544 5529/9834/5540\nf 5568/9833/5539 5571/9839/5544 5572/9840/5545\nf 5151/9842/5547 5150/9310/5146 5162/9841/5546\nf 5573/9844/5548 6046/11401/6103 5148/9845/5137\nf 5574/9847/5549 5575/9848/5550 5572/9840/5545\nf 5571/11402/5544 5574/11403/5549 5572/11404/5545\nf 5575/9848/5550 5571/9839/5544 5570/9837/5543\nf 5569/9849/5542 5578/9855/5553 5576/9850/5551\nf 5538/9790/5511 5581/9868/5563 5579/9856/5554\nf 5579/9856/5554 5577/9857/5552 5539/9791/5512\nf 5538/9790/5511 5579/9856/5554 5539/9791/5512\nf 5582/9859/5556 5536/9786/5510 5534/9787/5508\nf 5583/9860/5557 5582/9859/5556 5534/9787/5508\nf 5575/9848/5550 5585/9865/5561 5586/9862/5559\nf 5585/9865/5561 5575/9848/5550 5570/9837/5543\nf 5578/9855/5553 5588/9867/5562 5587/9866/5560\nf 5579/9856/5554 5581/9868/5563 5588/9867/5562\nf 5581/9868/5563 5538/9790/5511 5580/9858/5555\nf 5589/9869/5564 5580/9858/5555 5583/9860/5557\nf 5583/9860/5557 5594/9870/5565 5589/9869/5564\nf 5594/9870/5565 5583/9860/5557 5584/9861/5558\nf 5587/9864/5560 5592/9875/5568 5591/9872/5567\nf 5591/9872/5567 5586/9862/5559 5585/9865/5561\nf 5588/11405/5562 5593/9880/5574 5592/9875/5568\nf 5581/9868/5563 5597/9874/5569 5593/11406/5574\nf 5593/11406/5574 5588/9867/5562 5581/9868/5563\nf 5595/9877/5571 5591/9872/5567 5592/9875/5568\nf 5596/9878/5572 5253/9445/5239 5254/9876/5570\nf 5592/9875/5568 5596/9878/5572 5254/9876/5570\nf 5593/9880/5574 5597/9884/5569 5596/9878/5572\nf 5597/9874/5569 5594/9870/5565 5598/9881/5575\nf 5255/9882/5573 5597/9874/5569 5598/9881/5575\nf 5600/9885/5576 5534/9782/5508 5533/9781/5507\nf 5600/9894/5576 5602/9888/5578 5584/9861/5558\nf 5601/9887/5577 5584/9861/5558 5602/9888/5578\nf 5601/9887/5577 5598/9881/5575 5590/9871/5566\nf 5599/9883/5237 5598/9881/5575 5604/9890/5580\nf 5232/9404/5216 5603/9889/5579 5602/9888/5578\nf 5603/9889/5579 5231/9403/5215 5247/9434/5232\nf 5247/9434/5232 5250/9892/5234 5603/9889/5579\nf 5234/11313/5583 5232/9404/5216 5602/9888/5578\nf 5605/9898/5581 5234/9900/5583 5602/11407/5578\nf 5609/9904/5587 5606/9901/5584 5608/9903/5586\nf 5609/9904/5587 5531/9780/5506 5530/9905/5505\nf 5608/9903/5586 5611/9907/5589 5609/9904/5587\nf 5207/11408/6134 5208/9908/5190 5610/9906/5588\nf 5542/9913/5515 5544/9804/5518 5612/9910/5590\nf 5263/9472/5244 5612/9910/5590 5544/9804/5518\nf 5263/9472/5244 5262/9911/5243 5612/9910/5590\nf 5541/9912/5513 5262/9911/5243 5613/9914/5591\nf 5540/9916/5514 5606/9901/5584 5530/9905/5505\nf 5606/9901/5584 5540/9916/5514 5607/9902/5585\nf 5614/9917/5592 5610/9906/5588 5608/9903/5586\nf 5207/11306/6134 5610/11409/5588 5206/9366/5191\nf 5610/9906/5588 5614/9917/5592 5206/9919/5191\nf 5615/9920/5593 5265/11410/6136 5264/9918/5229\nf 5614/9917/5592 5615/9920/5593 5264/9918/5229\nf 5615/9920/5593 5614/9917/5592 5607/9902/5585\nf 5615/9920/5593 5262/9911/5243 5265/11410/6136\nf 5616/9921/5594 5233/11411/5582 5605/11412/5581\nf 5616/9921/5594 5605/11412/5581 5533/9781/5507\nf 5616/9921/5594 5531/9780/5506 5609/9904/5587\nf 5616/9921/5594 5609/9904/5587 5611/9907/5589\nf 5617/9922/5595 5233/11411/5582 5616/9921/5594\nf 5209/9368/5192 5617/9923/5595 5611/11413/5589\nf 5618/9937/5602 5556/9932/5599 5555/9812/5526\nf 4227/9926/4227 5618/9939/5602 5555/9927/5526\nf 5557/9810/5524 5619/9931/5598 5620/9929/5597\nf 5619/9931/5598 5557/9810/5524 5556/9932/5599\nf 5556/9934/5599 4727/9938/4721 5622/9935/5601\nf 5627/9947/5610 5626/9945/5608 5624/9942/5605\nf 5630/11414/5534 5627/9947/5610 5562/9940/5603\nf 5630/11415/5534 5561/9950/5532 5631/9951/5612\nf 5565/11416/5536 5635/11417/5613 5633/11418/6143\nf 5634/11419/5614 5565/9828/5536 5566/9830/5537\nf 5567/11420/5538 5634/11419/5614 5566/9830/5537\nf 5567/9952/5538 6120/10714/6096 5635/9953/5613\nf 5565/11416/5536 5634/11421/5614 5635/11417/5613\nf 5502/9957/5482 5636/9956/5615 5503/10032/5481\nf 5496/9971/5616 5495/10020/5660 5488/9721/5470\nf 5495/10020/5660 5496/9971/5616 5637/11422/5618\nf 5496/9959/5616 5642/9968/5622 5638/9960/5617\nf 5639/9962/5619 5486/9716/5466 5468/9694/5449\nf 5641/9967/5621 5496/9971/5616 5489/9722/5471\nf 5470/9973/5453 5640/9964/5620 5639/11423/5619\nf 5640/9964/5620 5644/9987/5638 5645/9974/5625\nf 5642/9968/5622 5646/9975/5626 5647/9969/5623\nf 5470/9973/5453 5471/9699/5454 5643/9972/5624\nf 5471/9699/5454 5470/9973/5453 5459/9682/5437\nf 5471/9699/5454 5649/9977/5628 5650/9978/5629\nf 5472/9700/5455 5650/9978/5629 5649/9977/5628\nf 5651/9979/5630 5472/9700/5455 5473/9701/5456\nf 5653/9981/5632 5463/9688/5443 5654/9983/5634\nf 4088/7685/4093 4264/7949/4265 5654/9983/5634\nf 4088/7685/4093 5654/9983/5634 5463/9688/5443\nf 4264/7949/4265 4265/7950/4266 5654/9983/5634\nf 5656/9984/5635 5653/9981/5632 5655/9982/5633\nf 5656/9984/5635 5652/9980/5631 5653/9981/5632\nf 5657/9985/5636 5658/9986/5637 5650/9978/5629\nf 5657/9985/5636 5659/9992/5643 5658/9986/5637\nf 5660/9988/5639 5648/9976/5627 5644/9987/5638\nf 5660/9988/5639 5644/9987/5638 5640/9964/5620\nf 5660/9988/5639 5640/9964/5620 5643/9972/5624\nf 5661/9990/5641 5645/9974/5625 5644/9987/5638\nf 5644/9987/5638 5663/9991/5642 5662/9989/5640\nf 5657/9985/5636 5656/9984/5635 5664/9993/5644\nf 5664/9993/5644 5663/9991/5642 5659/9992/5643\nf 5655/9982/5633 5664/9993/5644 5656/9984/5635\nf 5655/11424/5633 4276/7964/4279 5666/11425/5652\nf 5662/11426/5640 5668/10005/5647 5669/11427/5648\nf 5661/9990/5641 5662/9989/5640 5670/9999/5649\nf 5671/10003/5650 5665/9994/5645 5672/11428/5651\nf 5672/10004/5651 5669/11427/5648 5668/10005/5647\nf 5671/10003/5650 5668/9997/5647 5663/9991/5642\nf 4283/7972/4286 5666/11425/5652 4276/7964/4279\nf 5646/9975/5626 5667/9996/5646 5673/10009/5653\nf 5667/9996/5646 5646/9975/5626 5645/9974/5625\nf 5672/10004/5651 5670/10001/5649 5669/11427/5648\nf 5670/10001/5649 5672/10004/5651 5675/10013/5655\nf 5676/10014/5656 5675/10013/5655 5672/10004/5651\nf 5665/11429/5645 5666/11430/5652 4288/7986/4289\nf 5666/11430/5652 4283/7984/4286 4288/7986/4289\nf 5638/9960/5617 5677/10016/5657 5678/10035/5671\nf 5638/9960/5617 5678/10035/5671 5679/10017/5658\nf 5679/11431/5658 5678/10038/5671 5686/10041/5675\nf 5679/10018/5658 5495/10020/5660 5637/11422/5618\nf 5680/10022/5662 5492/9725/5474 5494/10019/5659\nf 5679/10018/5658 5680/10022/5662 5494/10019/5659\nf 5680/10022/5662 5679/10018/5658 5686/11432/5675\nf 5636/9956/5615 5687/10033/5669 5503/10032/5481\nf 5636/9956/5615 5682/10044/5663 5687/10033/5669\nf 5647/9969/5623 5673/10009/5653 5684/10026/5664\nf 5685/10029/5667 5271/10028/5666 5270/9460/5251\nf 5681/10023/5661 5680/11433/5662 5686/10041/5675\nf 5688/11434/6144 5505/9739/5484 5504/9738/5483\nf 5690/10037/5673 5689/10034/5670 5677/10016/5657\nf 5689/10034/5670 5690/10037/5673 5692/11435/5693\nf 5689/10039/5670 5692/11436/5693 5693/11437/5692\nf 5694/10040/5674 5689/10039/5670 5693/11437/5692\nf 5695/10068/5678 5682/10024/5663 5681/10023/5661\nf 5694/10040/5674 5695/10068/5678 5681/10023/5661\nf 5688/11434/6144 5697/10061/5688 5696/10084/5705\nf 5697/10061/5688 5688/11434/6144 5504/9738/5483\nf 5687/10033/5669 5698/10042/5676 5504/10031/5483\nf 5687/11438/5669 5695/10068/5678 5699/11439/5677\nf 5626/9945/5608 5700/11440/6145 5629/9946/5609\nf 5700/11440/6145 5626/9945/5608 5627/9947/5610\nf 5630/11441/5534 5631/11442/5612 5701/11443/6104\nf 5630/11444/5534 5701/10731/6104 5627/10730/5610\nf 5631/11445/5612 5632/11446/5611 5702/11447/5679\nf 5702/10053/5679 5563/9826/5535 5564/9827/5528\nf 5704/10054/5681 5564/9827/5528 5565/9828/5536\nf 5565/11448/5536 5633/11449/6143 5704/11450/5681\nf 5706/10056/5683 5709/10059/5686 5707/10058/5685\nf 5706/10056/5683 5707/10058/5685 5675/10013/5655\nf 5706/10056/5683 5676/10014/5656 5705/10055/5682\nf 5707/11451/5685 5710/11452/5687 5674/11453/5654\nf 5710/11454/5687 5673/11455/5653 5674/11456/5654\nf 5710/11454/5687 5684/10026/5664 5673/10009/5653\nf 5698/10064/5676 5699/11457/5677 5712/10065/5690\nf 5694/10040/5674 5693/11437/5692 5713/10067/5691\nf 5712/10065/5690 5695/11458/5678 5713/10071/5691\nf 5712/11459/5690 5699/11439/5677 5695/10068/5678\nf 5690/10073/5673 5691/11460/5672 5714/10072/5694\nf 5715/11461/5695 5711/10066/5689 5716/11462/5696\nf 5711/11463/5689 5715/10074/5695 5697/10061/5688\nf 5711/10066/5689 5712/10065/5690 5719/10103/5717\nf 5719/10103/5717 5716/11462/5696 5711/10066/5689\nf 5712/10065/5690 5721/10078/5699 5720/10080/5701\nf 5719/10103/5717 5712/10065/5690 5720/10080/5701\nf 5721/10078/5699 5692/10070/5693 5714/10072/5694\nf 5723/11464/6146 5722/10079/5700 5714/10072/5694\nf 5724/10081/5702 5697/10061/5688 5715/10074/5695\nf 5724/10081/5702 5715/10074/5695 5718/10077/5698\nf 5725/10257/5703 5847/10254/5822 5726/11465/5704\nf 5726/10083/5704 5727/10085/5706 5696/10084/5705\nf 5505/9739/5484 5688/11434/6144 5696/10084/5705\nf 5731/10092/5708 5705/10055/5682 5729/10093/5709\nf 5731/10092/5708 5730/10094/5710 5736/10095/5711\nf 5708/10057/5684 5732/10096/5712 5733/10099/5715\nf 5732/10096/5712 5708/10057/5684 5709/10059/5686\nf 5708/10057/5684 5733/10099/5715 5734/10097/5713\nf 5710/10060/5687 5708/10057/5684 5684/10048/5664\nf 5734/10097/5713 5714/10101/5694 5691/10046/5672\nf 5735/10098/5714 5732/10096/5712 5736/10095/5711\nf 5738/10100/5716 5723/11466/6146 5714/10101/5694\nf 5733/10099/5715 5737/10224/5797 5738/10100/5716\nf 5738/10100/5716 5722/11467/5700 5723/11466/6146\nf 5738/10100/5716 5720/11468/5701 5722/11467/5700\nf 5739/10107/5719 4986/9115/4989 4987/9117/4991\nf 4994/10113/4997 5741/10112/5721 4992/9125/4995\nf 4998/10708/6092 5741/10112/5721 4996/10111/4998\nf 5743/10120/5724 5746/10119/5723 5744/10745/6110\nf 4807/10118/4808 5745/10122/5726 5746/10119/5723\nf 4761/10750/6112 4807/11469/4808 5743/10748/5724\nf 4807/11469/4808 4808/11470/4810 5747/11471/5725\nf 5747/10121/5725 5748/10125/5729 5745/10122/5726\nf 4808/11472/4810 4831/11473/4831 5747/10121/5725\nf 5749/11474/5727 5747/11475/5725 4831/11209/4831\nf 5749/10123/5727 5751/11476/5761 5750/10124/5728\nf 5749/11477/5727 5753/10132/5731 5751/10184/5761\nf 5753/10132/5731 5749/11477/5727 5752/10133/5730\nf 5755/11478/5734 5763/10156/5739 5756/11479/5733\nf 5756/10135/5733 4977/9103/4981 4978/9104/4982\nf 5752/10144/5730 4834/8864/4833 4972/9099/4977\nf 5752/10133/5730 5759/10142/5738 5758/10141/5737\nf 4978/9104/4982 4979/9110/4983 4982/9109/4986\nf 5760/10151/5740 4982/10146/4986 5761/11480/5746\nf 4982/10146/4986 5760/10151/5740 5755/10147/5734\nf 5764/10153/5741 5762/10154/5742 5757/10149/5736\nf 5760/10151/5740 5761/11480/5746 5767/10163/5745\nf 5768/10169/5749 5770/10168/5748 5767/10165/5745\nf 4384/10164/4378 5768/10169/5749 5767/10165/5745\nf 5769/10167/5747 5771/11481/6087 5770/10168/5748\nf 5769/10167/5747 5772/10171/5751 5771/11481/6087\nf 5775/10173/4383 5773/10170/5750 5768/10169/5749\nf 5767/10163/5745 5777/10176/5754 5762/10154/5742\nf 5757/10149/5736 5762/10154/5742 5777/10176/5754\nf 5779/10178/5756 5758/10141/5737 5757/10139/5736\nf 5779/10178/5756 5781/10180/5757 5780/10682/6080\nf 5782/10181/5758 5779/10178/5756 5780/10682/6080\nf 5784/10182/5759 5753/10132/5731 5754/10134/5732\nf 5785/10185/5762 5751/10184/5761 5784/10182/5759\nf 5785/10185/5762 5784/10182/5759 5783/10183/5760\nf 5787/11482/5766 5751/11476/5761 5785/11483/5762\nf 5788/11484/5764 5787/11485/5766 5785/11486/5762\nf 5787/11487/5766 5750/10124/5728 5751/11476/5761\nf 5787/11487/5766 5789/11488/5765 5766/10162/5744\nf 5750/10124/5728 5787/11487/5766 5766/10162/5744\nf 5790/10194/5769 5766/10160/5744 5789/11489/5765\nf 5792/10193/5768 5745/10158/5726 5766/10160/5744\nf 5792/10196/5768 5793/11490/5776 4405/8156/4396\nf 5792/10196/5768 5789/10319/5765 5793/11490/5776\nf 5794/10197/5770 6114/10199/5772 5774/10172/5752\nf 5794/10197/5770 5827/10201/5774 5795/10198/5771\nf 5794/10197/5770 5797/10751/6113 5798/10202/5775\nf 5797/10751/6113 5794/10197/5770 5775/10173/4383\nf 5799/10318/5777 5793/11490/5776 5789/10319/5765\nf 5799/10204/5777 5796/10200/5773 5798/10202/5775\nf 5800/10222/5795 5817/10221/5794 5801/10206/5779\nf 5802/10205/5778 5810/10214/5787 5801/10206/5779\nf 5802/10205/5778 5812/10209/5782 5810/10214/5787\nf 5805/10210/5783 5807/10211/5784 5806/10217/5790\nf 5807/10211/5784 5736/10095/5711 5808/10212/5785\nf 5808/10212/5785 5815/10218/5791 5806/10217/5790\nf 5807/10211/5784 5808/10212/5785 5806/10217/5790\nf 5730/10094/5710 5808/10212/5785 5736/10095/5711\nf 5808/10212/5785 5730/10094/5710 5729/10093/5709\nf 5808/10212/5785 5729/10093/5709 5809/10213/5786\nf 5808/10212/5785 5816/8206/4438 5815/10218/5791\nf 5809/10213/5786 4322/8038/4320 4424/8181/4418\nf 5805/10210/5783 5806/10217/5790 5814/10219/5792\nf 5816/8206/4438 4424/8181/4418 4422/8179/4416\nf 5818/10220/5793 5821/10225/5798 5817/10221/5794\nf 5819/10223/5796 5801/10206/5779 5811/10215/5788\nf 5706/10056/5683 5705/10055/5682 5731/10092/5708\nf 4433/8186/4423 4437/8191/4428 5820/10226/5799\nf 5820/10226/5799 5818/10220/5793 4433/8186/4423\nf 5822/11491/5861 5820/10226/5799 4437/8191/4428\nf 5823/10227/5800 5822/11491/5861 4437/8191/4428\nf 5824/10228/5801 4440/8195/4432 4441/8194/4431\nf 4440/8195/4432 5824/10228/5801 5823/10227/5800\nf 5824/10228/5801 4441/8194/4431 4444/8196/4433\nf 5826/10327/5803 5825/10229/5802 4444/8196/4433\nf 5795/10198/5771 5827/10201/5774 5826/10231/5803\nf 5814/10219/5792 5815/10218/5791 4450/11034/6125\nf 5816/8206/4438 4450/11034/6125 5815/10218/5791\nf 5812/10209/5782 5813/10216/5789 5810/10214/5787\nf 5828/10232/5804 4450/11034/6125 4449/8210/4441\nf 5828/10232/5804 5814/10219/5792 4450/11034/6125\nf 5811/10215/5788 5810/10214/5787 4448/8213/4440\nf 4433/8186/4423 5819/10223/5796 4451/8214/4443\nf 5831/10239/5810 5832/10238/5807 5829/11492/5806\nf 5832/11493/5807 5834/10243/5809 5835/10242/5813\nf 5836/10245/5814 5833/10236/5808 5837/10246/5815\nf 5837/10246/5815 5842/10250/5818 5840/10247/5816\nf 5842/10250/5818 5837/10246/5815 5833/10236/5808\nf 5833/10236/5808 5831/10239/5810 5841/10249/5817\nf 5846/10251/5819 5843/11494/5824 5844/10252/5820\nf 5843/11494/5824 5846/10251/5819 5845/10256/5823\nf 5725/10257/5703 5846/10251/5819 5847/10254/5822\nf 5841/11495/5817 5840/10255/5816 5842/11496/5818\nf 5840/10255/5816 5841/11495/5817 5845/10256/5823\nf 5829/10234/5806 5843/10264/5824 5831/11497/5810\nf 5844/10263/5820 5829/10234/5806 5830/10233/5805\nf 5848/10272/5828 5851/10271/5826 5849/11498/5831\nf 5835/11499/5813 5839/11500/5812 5849/11501/5831\nf 5850/10266/5825 5830/10265/5805 5832/11493/5807\nf 5852/10268/5827 5844/10270/5820 5830/11502/5805\nf 5830/11502/5805 5851/10271/5826 5852/10268/5827\nf 5853/10269/5821 5854/10273/5829 5847/11503/5822\nf 5853/10269/5821 5851/10271/5826 5848/10272/5828\nf 5855/11504/5830 5848/10272/5828 5849/11498/5831\nf 5854/10273/5829 5726/11505/5704 5847/11503/5822\nf 5857/11506/5897 5856/10279/5832 5858/10281/5834\nf 5857/11507/5897 5728/11508/5707 5727/11509/5706\nf 5856/10279/5832 5857/11506/5897 5727/11510/5706\nf 5860/10285/5836 5859/11511/5833 5856/10286/5832\nf 5728/10090/5707 5500/10282/5479 5497/10091/5476\nf 5863/10290/5838 5860/11512/5836 5854/10291/5829\nf 5855/11513/5830 5863/10290/5838 5848/10292/5828\nf 5863/11514/5838 5855/11515/5830 5864/11516/5984\nf 5510/9748/5489 5511/10380/5851 5865/10294/5839\nf 5867/10300/5845 5869/10296/5841 5514/9754/5163\nf 5869/10296/5841 5867/10300/5845 5868/10297/5842\nf 5870/10413/5915 5868/10297/5842 5867/10300/5845\nf 5867/11517/5845 5871/11518/5844 5870/11519/5915\nf 5514/9754/5163 5513/9753/5491 5871/10299/5844\nf 5871/10301/5844 5512/10303/5490 5866/10304/5840\nf 5872/10305/5846 5870/11520/5915 5871/10301/5844\nf 5515/11384/5494 5514/9754/5163 5869/10296/5841\nf 5873/10306/5847 5515/9757/5494 5869/11521/5841\nf 5873/10308/5847 5869/10296/5841 5874/10307/5848\nf 5870/11520/5915 5872/10305/5846 5939/10405/5909\nf 5865/11522/5839 5872/10305/5846 5866/10304/5840\nf 5865/11522/5839 5876/10391/5900 5872/10305/5846\nf 5865/11522/5839 5877/10392/5850 5876/10391/5900\nf 5877/11523/5850 5865/10294/5839 5511/10380/5851\nf 5545/9802/5264 5516/9755/5492 5873/10306/5847\nf 5875/10313/5849 5879/10422/5917 5285/10314/5265\nf 5282/9471/5261 5285/9478/5265 5286/10315/5267\nf 5791/10317/5767 5880/10640/5853 5799/10318/5777\nf 5788/10321/5764 5881/10623/6042 5882/10322/5854\nf 5881/11524/6042 5788/11525/5764 5786/10186/5763\nf 5883/10323/5855 5886/10610/6031 5884/11526/5863\nf 5886/10610/6031 5883/10323/5855 5885/10324/5856\nf 5885/10324/5856 5887/10636/6047 5886/10610/6031\nf 5885/10324/5856 5890/10326/5858 5887/10636/6047\nf 5885/10324/5856 5824/10228/5801 5825/10229/5802\nf 5890/10326/5858 5888/10325/5857 5889/10328/5859\nf 5893/11527/5864 5891/10329/5860 5892/10331/5862\nf 5891/10329/5860 5893/11527/5864 5894/11528/5873\nf 5892/11529/5862 5883/10323/5855 5884/11526/5863\nf 5892/10331/5862 5822/10330/5861 5823/11530/5800\nf 5883/10323/5855 5892/11529/5862 5823/10227/5800\nf 5891/10329/5860 5821/10337/5798 5820/10332/5799\nf 5821/10225/5798 5895/10344/5865 5817/10221/5794\nf 5896/10338/5866 5735/10098/5714 5736/10095/5711\nf 5897/10363/5885 5899/10339/5867 5898/10342/5870\nf 5897/10363/5885 5896/10338/5866 5804/10208/5781\nf 5899/10339/5867 5897/10363/5885 5804/10208/5781\nf 5803/10207/5780 5899/10339/5867 5802/10205/5778\nf 5899/10339/5867 5803/10207/5780 5900/10340/5868\nf 5803/10207/5780 5801/10206/5779 5817/10221/5794\nf 5902/10343/5871 5900/10340/5868 5803/10207/5780\nf 5895/10344/5865 5904/10347/5874 5903/10345/5872\nf 5817/10221/5794 5903/10345/5872 5902/10343/5871\nf 5894/10346/5873 5906/10348/5875 5904/10347/5874\nf 5891/11531/5860 5894/10346/5873 5895/10344/5865\nf 5906/10348/5875 5894/10346/5873 5905/10351/5878\nf 5907/10349/5876 5906/10348/5875 5905/10351/5878\nf 5910/10358/5881 5902/10360/5871 5903/11532/5872\nf 5903/10345/5872 5908/10350/5877 5911/10535/5880\nf 5910/11533/5881 5911/11534/5880 5912/11535/5882\nf 5912/10357/5882 5901/10341/5869 5900/10340/5868\nf 5901/10341/5869 5912/10357/5882 5913/10361/5883\nf 5898/10342/5870 5914/10362/5884 5897/10363/5885\nf 5735/10098/5714 5896/10338/5866 5914/10362/5884\nf 5737/10224/5797 5915/10364/5886 5916/10365/5887\nf 5918/10367/5889 5738/10100/5716 5737/10224/5797\nf 5919/10369/5890 5923/10533/5985 5920/10370/5891\nf 5919/10369/5890 5917/10366/5888 5916/10365/5887\nf 5922/11536/5893 5920/11537/5891 5923/11538/5985\nf 5922/10372/5893 5838/11539/5811 5836/10245/5814\nf 5922/10372/5893 5836/10245/5814 5837/10246/5815\nf 5716/10374/5696 5917/10366/5888 5921/10371/5892\nf 5920/10373/5891 5837/10246/5815 5717/10378/5697\nf 5717/11540/5697 5716/11541/5696 5924/11542/5894\nf 5717/10378/5697 5837/10246/5815 5718/10248/5698\nf 5716/10374/5696 5918/10367/5889 5917/10366/5888\nf 5925/10382/5895 5508/11543/5487 5507/10284/5486\nf 5925/10379/5895 5926/11544/5896 5878/10381/5852\nf 5861/10283/5835 5728/10090/5707 5857/10384/5897\nf 5926/10387/5896 5857/11545/5897 5927/10388/5898\nf 5877/11546/5850 5878/10389/5852 5927/10388/5898\nf 5929/10395/5901 5930/11547/5902 5927/10385/5898\nf 5928/10390/5899 5927/11548/5898 5930/10396/5902\nf 5932/10403/5904 5936/10528/5983 5933/11549/5905\nf 5859/10280/5833 5932/10403/5904 5934/10401/5906\nf 5936/10528/5983 5932/10403/5904 5862/10289/5837\nf 5937/10404/5908 5928/10390/5899 5931/10397/5903\nf 5937/10404/5908 5938/10489/5912 5939/10405/5909\nf 5928/10390/5899 5937/10404/5908 5876/10391/5900\nf 5939/10405/5909 5941/11550/5911 5870/11520/5915\nf 5942/10410/5913 5945/10437/5927 5943/10411/5914\nf 5945/11551/5927 5942/10412/5913 5940/10407/5910\nf 5868/10297/5842 5942/10410/5913 5944/10298/5843\nf 5874/11552/5848 5944/11553/5843 5946/10420/5918\nf 5946/10420/5918 5875/10419/5849 5874/11554/5848\nf 5947/11555/5916 5946/10420/5918 5944/11553/5843\nf 5949/10421/5919 5286/11556/5267 5285/10314/5265\nf 5948/10423/5920 5286/11557/5267 5949/10424/5919\nf 5946/10420/5918 5949/10424/5919 5879/10418/5917\nf 5950/11558/5921 5946/11559/5918 5947/11560/5916\nf 5943/10428/5914 5951/10432/5922 5950/10426/5921\nf 5951/10432/5922 5953/10434/5924 5950/10426/5921\nf 5955/10436/5926 5952/10431/5923 5943/10411/5914\nf 5943/10411/5914 5945/10437/5927 5955/10436/5926\nf 5945/10437/5927 5938/11561/5912 5956/10438/5928\nf 5938/11561/5912 5945/10437/5927 5940/11562/5910\nf 5276/9464/5255 5958/10441/5931 5957/10439/5929\nf 5286/9485/5267 5950/10426/5921 5958/10441/5931\nf 5277/10440/5930 5959/10443/5933 5960/10442/5932\nf 5274/9462/5253 5960/10442/5932 5962/10446/5936\nf 5960/10442/5932 5274/9462/5253 5268/9466/5256\nf 5960/10442/5932 5961/10444/5934 5962/10446/5936\nf 5962/10446/5936 5963/10445/5935 5273/9463/5254\nf 5962/10446/5936 5273/9463/5254 5274/9462/5253\nf 5273/11563/5254 5963/11564/5935 5964/11565/5938\nf 5966/10447/5937 5970/10473/5956 5967/10472/5940\nf 5968/11566/5941 5965/10451/5939 5963/10450/5935\nf 5970/10473/5956 5966/10447/5937 5969/10455/5942\nf 5969/10455/5942 5966/10447/5937 5962/10446/5936\nf 5969/10455/5942 5962/10446/5936 5961/10444/5934\nf 5973/10458/5945 5957/10439/5929 5958/10441/5931\nf 5973/10458/5945 5953/10434/5924 5974/10459/5946\nf 5953/10434/5924 5973/10458/5945 5958/10441/5931\nf 5974/11567/5946 5954/10435/5925 5975/10464/5947\nf 5974/10459/5946 5976/10461/5948 5973/10458/5945\nf 5974/11568/5946 5952/10431/5923 5954/10435/5925\nf 5977/10462/5949 5954/10435/5925 5955/10436/5926\nf 5954/10435/5925 5977/10462/5949 5978/10463/5950\nf 5978/10463/5950 5979/11569/5951 5975/10464/5947\nf 5979/11570/5951 5978/10491/5950 5980/11571/5952\nf 5982/10469/5954 5976/10461/5948 5979/10468/5951\nf 5976/10461/5948 5982/10469/5954 5983/10471/5955\nf 5976/10461/5948 5972/10457/5944 5973/10458/5945\nf 5984/10474/5957 5970/10473/5956 5969/10455/5942\nf 5969/10455/5942 5983/10471/5955 5985/11572/5958\nf 5984/10475/5957 5969/11573/5942 5985/10476/5958\nf 5986/11574/5960 5987/11575/6027 5982/10482/5954\nf 5986/10478/5960 5982/10469/5954 5981/10470/5953\nf 5987/11575/6027 5988/10480/5962 5982/10482/5954\nf 5983/11576/5955 5989/10483/5963 5985/10476/5958\nf 5981/11577/5953 5980/11578/5952 5991/11579/6147\nf 5981/10470/5953 5991/11580/6147 5992/10487/5965\nf 5938/10489/5912 5994/10488/5966 5956/11581/5928\nf 5930/10490/5902 5980/11571/5952 5978/10491/5950\nf 5995/10495/5967 5996/10494/5968 5930/10396/5902\nf 5977/10462/5949 5956/10438/5928 5994/11582/5966\nf 5996/10494/5968 5994/10488/5966 5931/10397/5903\nf 5931/10397/5903 5930/10396/5902 5996/10494/5968\nf 5995/11583/5967 5978/10463/5950 5977/10462/5949\nf 5997/11584/5970 5992/11585/5965 5991/11586/6147\nf 5997/10507/5970 5991/11579/6147 5980/11578/5952\nf 5999/10501/5971 5930/10502/5902 5929/11587/5901\nf 5935/10499/5907 5999/10501/5971 5929/11587/5901\nf 5929/10395/5901 5859/10280/5833 5935/10402/5907\nf 5980/10503/5952 5999/10501/5971 5998/10500/5969\nf 6000/10598/6028 6003/10514/5977 6001/10512/5975\nf 6000/10598/6028 6001/10512/5975 5909/10352/5879\nf 6000/10598/6028 5993/10479/5961 6002/11588/6148\nf 6003/10514/5977 6000/10598/6028 6002/11588/6148\nf 6004/11589/5973 6003/11590/5977 6002/11591/6148\nf 6002/11592/6148 5993/10479/5961 5992/10487/5965\nf 6002/11592/6148 5992/10487/5965 6004/10505/5973\nf 6005/10506/5972 5992/11593/5965 5997/10507/5970\nf 6004/10511/5973 6006/10510/5974 6003/11594/5977\nf 6001/10512/5975 6007/10515/5978 6008/10513/5976\nf 6006/10517/5974 6009/10516/5979 6007/10515/5978\nf 5935/10499/5907 6011/10519/5981 6005/10504/5972\nf 6011/10519/5981 5935/10499/5907 5934/10520/5906\nf 6011/10519/5981 6012/10525/5982 6006/10517/5974\nf 6012/10525/5982 6009/10526/5979 6006/10517/5974\nf 5839/10241/5812 5864/10529/5984 5855/11595/5830\nf 5922/10527/5893 5923/10530/5985 5839/10241/5812\nf 5839/10241/5812 5923/10530/5985 5864/10529/5984\nf 5936/11596/5983 5863/11597/5838 5864/10529/5984\nf 5864/10529/5984 5933/10531/5905 5936/11596/5983\nf 6013/10532/5986 6012/10525/5982 5933/10521/5905\nf 6014/10534/5987 5911/10535/5880 5908/10350/5877\nf 6014/10534/5987 5908/10350/5877 5907/10349/5876\nf 6014/10534/5987 6008/10513/5976 5912/10357/5882\nf 5912/10357/5882 6008/10513/5976 6010/10518/5980\nf 5913/10361/5883 6010/10518/5980 5915/10364/5886\nf 6013/10532/5986 5919/10369/5890 5915/10364/5886\nf 5919/10369/5890 6013/10532/5986 5923/10533/5985\nf 6015/10540/5988 5967/10453/5940 5984/10474/5957\nf 5968/11598/5941 6015/10536/5988 6018/10552/5991\nf 5964/10448/5938 6018/10553/5991 6019/10555/5998\nf 6021/10548/5993 6016/10538/5989 6020/10547/5992\nf 6023/10550/5995 6015/10536/5988 6016/10538/5989\nf 6015/10536/5988 6023/10550/5995 6024/10551/5996\nf 6018/10553/5991 6025/11599/5999 6026/10554/5997\nf 6027/10558/6000 6029/10559/6001 5964/10448/5938\nf 6028/11600/6149 6027/10558/6000 6019/10555/5998\nf 5685/10560/5667 6030/11601/6003 5271/11602/5666\nf 5272/10449/5668 5964/10448/5938 6029/10559/6001\nf 6030/11601/6003 5685/10560/5667 6029/10559/6001\nf 6031/11603/6002 5271/11604/5666 6030/11605/6003\nf 6032/11606/6004 6030/11601/6003 6029/10559/6001\nf 6033/10564/6005 6028/11600/6149 6019/10555/5998\nf 6033/10565/6005 6027/10567/6000 6028/11607/6149\nf 6036/11608/6007 5254/11609/5570 6032/11610/6004\nf 6029/11611/6001 6036/11608/6007 6032/11610/6004\nf 5254/11609/5570 6036/11608/6007 6037/11612/6008\nf 5595/9877/5571 6037/10571/6008 6038/10572/6009\nf 6039/10573/6010 5591/9872/5567 5595/9877/5571\nf 6040/10574/6011 6038/10572/6009 6037/10571/6008\nf 6034/11613/6006 6037/11614/6008 6036/11615/6007\nf 6040/10574/6011 6034/10566/6006 6041/10578/6012\nf 6043/10656/6059 6033/10565/6005 6035/10657/6060\nf 6043/10656/6059 6042/10579/6013 6041/10578/6012\nf 6033/11616/6005 6043/11617/6059 6041/11618/6012\nf 6043/10656/6059 6044/10581/6015 6042/10579/6013\nf 6042/10579/6013 6044/10581/6015 5586/9862/5559\nf 5591/11619/5567 6039/11620/6010 6038/11621/6009\nf 5586/9862/5559 5591/9872/5567 6038/10572/6009\nf 5573/9843/5548 5162/9841/5546 6045/10580/6014\nf 5905/10351/5878 5894/10346/5873 5893/10583/5864\nf 5884/10334/5863 6051/10588/6020 6049/10587/6019\nf 5884/10334/5863 6049/10587/6019 6047/10586/6018\nf 6050/11622/6025 6047/10586/6018 6049/10587/6019\nf 6049/10587/6019 6052/10589/6021 6053/10590/6022\nf 6049/10587/6019 6054/10591/6023 6050/11622/6025\nf 6055/10592/6024 6048/10584/6017 6047/10585/6018\nf 6048/10584/6017 6055/10592/6024 5905/10351/5878\nf 6000/10598/6028 5909/10352/5879 6056/10597/6026\nf 6056/10597/6026 5986/10478/5960 5993/10479/5961\nf 6056/10597/6026 5988/10486/5962 5987/11623/6027\nf 6056/10597/6026 5909/10352/5879 6055/10592/6024\nf 6057/10599/6029 6055/10592/6024 6050/10593/6025\nf 5990/10600/5964 5989/10485/5963 5988/10486/5962\nf 6057/10599/6029 6050/10593/6025 5990/10600/5964\nf 6058/10601/5959 5990/11624/5964 6050/10602/6025\nf 6054/10603/6023 6053/11625/6022 6058/10601/5959\nf 6058/10477/5959 6059/10604/6030 5984/10475/5957\nf 6058/10477/5959 5985/10476/5958 5990/10484/5964\nf 6059/10604/6030 6053/10590/6022 6022/10607/5994\nf 5886/11626/6031 6051/10588/6020 5884/10334/5863\nf 6061/11627/6033 6051/10609/6020 6060/10611/6032\nf 6063/10615/6035 6061/10612/6033 6062/10614/6034\nf 6063/10615/6035 6022/10607/5994 6053/10590/6022\nf 6061/10612/6033 6063/10615/6035 6052/10589/6021\nf 6064/10616/6036 6101/10676/6075 6065/10617/6037\nf 6067/11628/6039 6066/10618/6038 6065/10617/6037\nf 6067/11628/6039 6071/10634/6044 6068/10626/6040\nf 6064/10616/6036 6066/10618/6038 6068/10626/6040\nf 6069/10622/6041 5882/10322/5854 5881/10623/6042\nf 6069/10622/6041 6070/10624/6043 6068/10627/6040\nf 6069/11629/6041 6072/10635/6046 5890/10326/5858\nf 6069/10629/6041 6071/10634/6044 6072/10633/6046\nf 6072/10635/6046 6073/11630/6045 5887/10636/6047\nf 6074/10637/6048 6062/11631/6034 6060/10638/6032\nf 5887/10636/6047 6073/11630/6045 6060/10611/6032\nf 5889/10328/5859 5827/10641/5774 5796/10639/5773\nf 5882/10322/5854 5889/10328/5859 5880/10640/5853\nf 6076/10646/6050 6075/10642/6049 5623/9941/5604\nf 6076/10646/6050 5628/9944/5607 6077/10649/6053\nf 6075/10642/6049 6076/10646/6050 6078/10647/6051\nf 6079/10648/6052 6078/10647/6051 6080/11632/6108\nf 6079/10648/6052 6071/10634/6044 6067/11628/6039\nf 6079/10648/6052 6067/11628/6039 6065/10617/6037\nf 6078/10647/6051 6076/10646/6050 6077/10649/6053\nf 6081/10650/6054 6080/11632/6108 6078/10647/6051\nf 6080/11632/6108 6074/10637/6048 6079/10648/6052\nf 6074/10637/6048 6080/11632/6108 6062/11631/6034\nf 6082/10652/6056 6023/10550/5995 6021/10548/5993\nf 6082/10652/6056 6021/10548/5993 6022/10549/5994\nf 6083/10651/6055 6025/10557/5999 6023/10550/5995\nf 6083/10651/6055 6035/10657/6060 6033/10565/6005\nf 6085/10655/6058 6044/10581/6015 6043/10656/6059\nf 6035/10657/6060 6083/10651/6055 6085/10655/6058\nf 6089/11633/6064 6088/10740/6063 6086/11634/6061\nf 6082/10652/6056 6089/10661/6064 6086/10658/6061\nf 6089/11633/6064 6084/11635/6057 6090/10662/6065\nf 6090/10662/6065 6084/11635/6057 6022/10607/5994\nf 6091/10663/6066 6090/10662/6065 6063/10615/6035\nf 6085/10655/6058 6087/10659/6062 6044/10581/6015\nf 6088/10660/6063 6092/10582/6016 6087/10659/6062\nf 5621/11636/5600 6096/10721/6100 6095/10667/6069\nf 5619/9931/5598 5621/9933/5600 6095/11637/6069\nf 6097/11638/6070 5619/10665/5598 6093/10664/6067\nf 5621/11639/5600 5622/11640/5601 6098/11641/6072\nf 6098/10723/6072 6096/10721/6100 5621/11636/5600\nf 4726/8656/4720 4760/11171/4763 6098/10672/6072\nf 4727/8663/4721 4726/8656/4720 5622/10673/5601\nf 5776/10175/5753 5770/10174/5748 5771/11642/6087\nf 5551/11643/5522 4729/8670/4723 4728/8669/4722\nf 6070/10625/6043 5786/10186/5763 5783/10183/5760\nf 5786/10186/5763 6070/10625/6043 5881/11524/6042\nf 6100/10675/6074 6099/10674/6073 6101/10676/6075\nf 5560/9817/5531 5559/9816/5530 6102/11644/6076\nf 5560/10677/5531 5550/10679/6077 5549/11396/5533\nf 6103/10685/6083 6102/11644/6076 5559/9816/5530\nf 6103/10685/6083 5559/9816/5530 5625/9943/5606\nf 6105/10681/6079 6104/10680/6078 5550/10679/6077\nf 6101/10676/6075 5782/10181/5758 5780/10682/6080\nf 6101/10676/6075 6099/10674/6073 5783/10183/5760\nf 6106/10683/6081 6065/10617/6037 6101/10676/6075\nf 6107/10684/6082 5625/9943/5606 6065/10617/6037\nf 6107/10687/6082 6108/10686/6084 6102/10678/6076\nf 6108/10686/6084 6105/10681/6079 6102/10678/6076\nf 6108/11645/6084 5781/10180/5757 5778/10179/5755\nf 6109/11646/6089 6104/10680/6078 6105/10681/6079\nf 6109/11647/6089 6105/10693/6079 5778/10692/5755\nf 6109/11646/6089 4729/8678/4723 6104/10680/6078\nf 6110/10694/6085 5777/11648/5754 5776/10695/5753\nf 6111/10696/6086 5776/10695/5753 5771/10697/6087\nf 6112/10698/6088 4729/8694/4723 6110/10694/6085\nf 6110/11649/6085 4729/11650/4723 6109/10700/6089\nf 5777/10699/5754 6110/11649/6085 6109/10700/6089\nf 6114/10199/5772 6113/11651/6090 5772/10171/5751\nf 6113/10702/6090 6114/11652/5772 4741/8700/4739\nf 6113/11653/6090 5771/11481/6087 5772/10171/5751\nf 6114/11652/5772 6115/11654/6150 4741/8700/4739\nf 6114/10199/5772 5795/10198/5771 6115/11655/6150\nf 6112/10698/6088 6113/10702/6090 4741/8700/4739\nf 4744/8706/4741 4729/8694/4723 6112/10698/6088\nf 4447/11178/4437 4741/11656/4739 6115/11655/6150\nf 6115/11655/6150 5795/10198/5771 4447/8204/4437\nf 4809/8833/4811 4825/8851/4824 4806/8857/4809\nf 5158/9307/5144 6119/10711/6094 5002/10703/5001\nf 6116/11657/6071 5741/11658/5721 6117/10705/6091\nf 6097/10704/6070 6116/11657/6071 6117/10705/6091\nf 6117/10707/6091 4998/10708/6092 5000/11659/6095\nf 6117/10710/6091 5000/11660/6095 6118/10709/6093\nf 6118/10712/6093 6119/10711/6094 6120/10714/6096\nf 6120/11661/6096 6119/11662/6094 5635/11417/5613\nf 5158/9307/5144 5635/11663/5613 6119/10711/6094\nf 5633/11664/6143 5635/11663/5613 5158/9307/5144\nf 5704/10716/5681 5633/11664/6143 5158/9307/5144\nf 5704/10716/5681 5158/9307/5144 5156/9306/5143\nf 6121/11665/6097 5702/11666/5679 5704/11667/5681\nf 6121/10715/6097 5154/9304/5141 5702/10727/5679\nf 5741/10112/5721 6093/10664/6067 6122/10718/6098\nf 6122/10718/6098 6093/10664/6067 6094/10666/6068\nf 6123/10719/6099 5739/10720/5719 6124/10722/5718\nf 6096/10721/6100 6124/10722/5718 5740/11668/5720\nf 6096/10721/6100 5740/11668/5720 4993/9126/4996\nf 6125/10724/6101 6095/10667/6069 4993/9126/4996\nf 6122/10718/6098 6094/10725/6068 6125/10724/6101\nf 5149/9301/5138 5703/10726/5680 5154/9304/5141\nf 6126/10728/6102 5703/10726/5680 5149/9301/5138\nf 6046/11669/6103 5703/11670/5680 6126/11671/6102\nf 6126/10728/6102 5148/9300/5137 6046/11672/6103\nf 5631/11673/5612 5703/11670/5680 6046/11669/6103\nf 5701/10731/6104 5631/11674/5612 6046/10729/6103\nf 6046/10729/6103 6127/10732/6105 5627/10730/5610\nf 6127/11675/6105 5573/11676/5548 6045/11677/6014\nf 6127/10732/6105 5700/11678/6145 5627/10730/5610\nf 6127/11679/6105 5629/11680/5609 5700/11681/6145\nf 6127/10735/6105 6128/10734/6106 5629/11682/5609\nf 6045/10580/6014 6092/10582/6016 6128/10734/6106\nf 6129/10739/6107 6077/10741/6053 5628/10737/5607\nf 6128/10736/6106 6129/10739/6107 5628/10737/5607\nf 6129/10739/6107 6128/10736/6106 6092/11683/6016\nf 6129/10739/6107 6092/11683/6016 6088/10740/6063\nf 6130/10743/6109 6080/10742/6108 6081/11684/6054\nf 6130/10743/6109 6081/11684/6054 6077/10741/6053\nf 6130/10743/6109 6077/10741/6053 6088/10740/6063\nf 6130/10743/6109 6088/10740/6063 6089/11633/6064\nf 6130/10743/6109 6089/11633/6064 6090/10662/6065\nf 6091/10663/6066 6062/10614/6034 6080/10742/6108\nf 6130/10743/6109 6090/10662/6065 6091/10663/6066\nf 5043/9175/5039 5184/9376/5195 5199/9357/5184\nf 6045/10580/6014 5572/9840/5545 5586/9862/5559\nf 5254/11685/5570 6031/10561/6002 6032/10563/6004\nf 5254/11685/5570 5271/11686/5666 6031/10561/6002\nf 5840/10255/5816 5725/10257/5703 5718/11687/5698\nf 5832/11493/5807 5835/10242/5813 5850/10266/5825\nf 5850/11688/5825 5849/11498/5831 5851/10271/5826\nf 6131/10746/6111 4405/11689/4396 5793/10203/5776\nf 4760/8768/4763 4358/8770/4764 4986/10105/4989\nf 6123/10719/6099 6098/10723/6072 4760/8768/4763\nf 5775/10173/4383 5768/10169/5749 4385/10747/4377\nf 3636/7083/3644 4384/11690/4378 5761/11278/5746\nf 3319/6720/3387 3318/6719/3386 3386/10763/3424\nf 3376/6722/3389 3327/6662/3341 3329/6723/3345\nf 3378/6727/3391 3546/6999/3566 3547/6989/3556\nf 3549/6991/3558 3552/6992/3559 3550/6716/3384\nf 3574/7011/3578 3576/7013/3580 3600/7041/3607\nf 3576/7013/3580 3578/7016/3583 3601/7043/3609\nf 3604/7046/3612 3583/7020/3587 3605/7410/3875\nf 3583/7020/3587 3585/7023/3590 3606/7414/3879\nf 3606/7414/3879 3585/7023/3590 3607/7047/3613\nf 3628/7067/3629 3610/7050/3616 3609/7049/3615\nf 3628/7067/3629 3613/7068/3630 3629/7071/3632\nf 3888/7419/3884 3887/7441/3901 3630/7072/3633\nf 3632/7077/3638 3626/7078/3639 3889/10755/6114\nf 3890/10886/3906 3889/10755/6114 3633/7080/3641\nf 4782/8795/4785 4779/8792/4783 4781/8796/4786\nf 5036/11273/6131 5031/9165/5029 5033/11272/6130\nf 5062/9190/5054 5038/9169/5033 5036/11273/6131\nf 5036/11273/6131 5033/11272/6130 5062/9190/5054\nf 5067/9519/5297 5044/9176/5040 5066/9195/5059\nf 5068/9524/5302 5046/9177/5041 5044/9176/5040\nf 5069/9523/5301 5046/9177/5041 5068/9524/5302\nf 5088/11275/6132 5089/9215/5078 5087/9212/5075\nf 5088/11275/6132 5320/9527/5305 5090/9216/5079\n"
  },
  {
    "path": "custom_backend/cwobj/cwobj.h",
    "content": "/*\n    Copyright (c) 2018, Julien Verneuil\n    All rights reserved.\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef CWOBJ_H_\n#define CWOBJ_H_\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n\n/** @brief indices type*/\n#define CWOBJ_INDICE_TYPE unsigned int\n/** @brief max line length in .obj and .mtl file*/\n#define CWOBJ_MAX_LINE_LENGTH 512\n\n/*\n    A set of tools related to string processing\n*/\n\n//! case insensitive compare\n/*!\n    \\param str1first string\n    \\param str2 second string\n    \\param length max length\n    \\return 0 if equal, 1 otherwise\n*/\nint cwobj_strncmpi(const char *str1, const char *str2, int length);\n\n//! split a string given a delimiter (result must be freed with cwobj_freeSplitResult)\n/*!\n    \\param str string to split\n    \\param delimiter delimiter\n    \\param n a pointer holding the length of the resulting array\n    \\return array of strings\n*/\nchar **cwobj_splitString(const char *str, char delimiter, long *n);\n\n//! free a cwobj_splitString result\n/*!\n    \\param split_result array of strings\n    \\param n length of the given array\n*/\nvoid cwobj_freeSplitResult(char **split_result, long n);\n\n//! transform a string to lowercase (in place)\n/*!\n    \\param string pointer to a string\n*/\nvoid cwobj_toLowercase(char *string);\n\n//! get a file path (without filename, separated by '/' only)\n/*!\n    \\param string filepath\n    \\return path\n*/\nchar *cwobj_getPath(const char *string);\n\n//! parse an arbitrary value (interger or real)\n/*!\n    \\param sp value pointer\n    \\return parsed value as bytes, NULL if not a value\n*/\nchar *cwobj_parseValue(char **sp);\n\n//! parse a float\n/*!\n    \\param sp value pointer\n    \\return float value\n*/\nfloat cwobj_parseFloat(char **sp);\n\n//! parse an integer\n/*!\n    \\param sp value pointer\n    \\return integer value\n*/\nint cwobj_parseInt(char **sp);\n\ninline int cwobj_strncmpi(const char *str1, const char *str2, int length) {\n    int k;\n    for (k = 0; k < length; k += 1) {\n        if ((str1[k] | 32) != (str2[k] | 32))\n            break;\n    }\n\n    if (k != length)\n        return 1;\n    return 0;\n}\n\ninline void cwobj_toLowercase(char *string) {\n    if (!string) return;\n\n    char *p = string;\n    while (*p != '\\0') {\n        if (*p >= 'A' && *p <= 'Z') {\n            *p += 32;\n        }\n\n        p++;\n    }\n}\n\ninline void cwobj_freeSplitResult(char **split_result, long n) {\n    while(n--) {\n        free(split_result[n]);\n    };\n    free(split_result);\n}\n\ninline char **cwobj_splitString(const char *str, char delimiter, long *n) {\n    if (!str) return NULL;\n\n    char **split_result = 0;\n    long strings_count = 0;\n\n    const char *begin = str;\n    while (*str++ != '\\0') {\n        size_t new_str_length = (str-begin);\n        //if (*(str-1) == delimiter) {\n           // begin = str; // make it ignore a sequence of delimiters\n           // continue;\n        //}\n\n        if (*str == delimiter || *str == '\\0') {\n            char *new_str = NULL;\n            if (new_str_length > 0) {\n                new_str = (char *)malloc(sizeof(char) * (new_str_length+1));\n                if (!new_str) continue;\n\n                strncpy(new_str, begin, new_str_length);\n                new_str[new_str_length] = '\\0';\n            }\n\n            begin = str+1;\n\n            char **split_result_tmp = (char **)realloc(split_result,\n                                        sizeof(char **) * (strings_count+1));\n            if (!split_result_tmp) {\n                free(new_str);\n                continue;\n            }\n\n            split_result = split_result_tmp;\n            split_result[strings_count] = new_str;\n\n            strings_count++;\n        }\n    }\n\n    *n = strings_count;\n\n    return split_result;\n}\n\ninline char *cwobj_getPath(const char *string) {\n    if (!string)  return NULL;\n    if (!*string) return NULL;\n\n    size_t length = strlen(string);\n\n    const char *end = string+length;\n    int new_length = 0;\n    while (*--end != '/' && (new_length = end-string) > 0);\n\n    if (!new_length) {\n        return NULL;\n    }\n\n    char *path = (char *)malloc(sizeof(char) * (new_length+1));\n    strncpy(path, string, new_length);\n    path[new_length] = '\\0';\n\n    return path;\n}\n\ninline char *cwobj_parseValue(char **sp) {\n    if (!sp) {\n        return NULL;\n    }\n\n\tint j = 0;\n\tchar *value_s = (char *)malloc(sizeof(char) * 32);\n\n\tif (!value_s) {\n        fprintf(stderr, \"cwobj_parseValue: malloc failed\\n\");\n\n        return NULL;\n    }\n\n    memset(value_s, 0, sizeof(char) * 32);\n\n    int ignore = 0;\n\twhile ((*(*sp)) != '\\0') {\n        if ((*(*sp) >= 48 && *(*sp) < 58 && j < 32 && ignore == 0) ||\n\t\t\t*(*sp) == '.' || *(*sp) == '-') {\n            value_s[j++] = (*(*sp));\n        } else {\n            if (j) {\n                ignore = 1;\n\n                if ((*(*sp)) == ' ') {\n                    break;\n                }\n            }\n        }\n\n        *sp = *sp+1;\n\t}\n\n\treturn value_s;\n}\n\ninline int cwobj_parseInt(char **sp) {\n\tchar *value_s = cwobj_parseValue(sp);\n\n    int value = 0;\n\n    if (value_s) {\n        value = atoi(value_s);\n\n        free(value_s);\n    } else {\n        fprintf(stderr, \"cwobj_parseInt: cwobj_parseValue failed\\n\");\n    }\n\n\treturn value;\n}\n\ninline float cwobj_parseFloat(char **sp) {\n\tchar *value_s = cwobj_parseValue(sp);\n\n    float value = 0;\n\n    if (value_s) {\n\t    value = atof(value_s);\n\n\t    free(value_s);\n    } else {\n        fprintf(stderr, \"cwobj_parseFloat: cwobj_parseValue failed\\n\");\n    }\n\n\treturn value;\n}\n\n/*\n    Generic HASH TABLE implementation (linear probing algorithm)\n    It store void pointers (arbitrary data), it is a generic storage solution; you need to free the data you put into it.\n*/\n\n#define CWOBJ_HASH_TABLE_INITIAL_SIZE 31\n\n//! CWOBJ hash table data structure\ntypedef struct {\n    unsigned int table_size;\n    unsigned int entry_size;\n\n    int lg_table_size;\n\n    char **keys;\n    void **vals;\n} cwobj_hashtable;\n\n//! create a hashtable\n/*!\n    \\return hashtable data structure pointer\n*/\ncwobj_hashtable *cwobj_hashTableInit();\n\n//! create a hashtable of a specified size\n/*!\n    \\param size hashtable size\n    \\return hashtable data structure pointer\n*/\ncwobj_hashtable *cwobj_hashTableInitExt(unsigned int size);\n\n//! free a hashtable\n/*!\n    \\param hash_table hashtable data structure pointer\n*/\nvoid cwobj_hashTableFree(cwobj_hashtable *hash_table);\n\n//! resize a hashtable\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param new_size new size\n    \\return 1 if successfull 0 otherwise\n*/\nint cwobj_hashTableResize(cwobj_hashtable *hash_table, unsigned int new_size);\n\n//! set a key/value pair\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param key key\n    \\param value arbitrary value\n    \\return 1 if successfull 0 otherwise\n*/\nint cwobj_hashTableSet(cwobj_hashtable *hash_table, const char *key, void *value);\n\n//! get a value\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param key key\n    \\return the value associated to the key or NULL\n*/\nvoid *cwobj_hashTableGet(cwobj_hashtable *hash_table, const char *key);\n\n//! delete a key with its associated value\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param key the key to delete\n*/\nvoid cwobj_hashTableDelete(cwobj_hashtable *hash_table, const char *key);\n\n//! show hashtable occupancy statistics and its entire content (stdout)\n/*!\n    \\param hash_table hashtable data structure pointer\n*/\nvoid cwobj_hashTableDebug(cwobj_hashtable *hash_table);\n\n//! get a key at a specified index\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param index index\n    \\return key name at specified index or NULL\n*/\nconst char *cwobj_hashTableGetKeyAt(cwobj_hashtable *hash_table, unsigned int index);\n\n//! get a value at a specified index\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param index index\n    \\return the value at specified index or NULL\n*/\nvoid *cwobj_hashTableGetValueAt(cwobj_hashtable *hash_table, unsigned int index);\n\n//! get a hash from a given string\n/*!\n    \\param hash_table hashtable data structure pointer\n    \\param str string used to compute the hash\n    \\return hash associated to the given string\n*/\nunsigned int cwobj_hashTableCode(cwobj_hashtable *hash_table, const char *str);\n\ninline unsigned int cwobj_hashTableCode(cwobj_hashtable *hash_table,\n                                      const char *str) {\n    const int primes[27] = {31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381,\n                    32749, 65521, 131071, 262139, 524287, 1048573, 2097143,\n                    4194301, 8388593, 16777213, 33554393, 67108859, 134217689,\n                    268435399, 536870909, 1073741789, 2147483647};\n\n    if (!hash_table || !str) return -1;\n\n    unsigned int hash = 0;\n\n    do {\n        hash = (9 * hash + *str) % hash_table->table_size;\n    } while (*str++ != '\\0');\n\n    if (hash_table->lg_table_size < 26) {\n        hash = hash % primes[hash_table->lg_table_size+5];\n        return hash % hash_table->table_size;\n    }\n\n    return hash;\n}\n\ninline cwobj_hashtable *cwobj_hashTableInit() {\n\tcwobj_hashtable *hash_table = (cwobj_hashtable *)malloc(sizeof(cwobj_hashtable));\n\n\tif (!hash_table) return NULL;\n\n    memset(hash_table, 0, sizeof(cwobj_hashtable));\n\n    hash_table->table_size = CWOBJ_HASH_TABLE_INITIAL_SIZE;\n    hash_table->lg_table_size = log10(hash_table->table_size);\n    hash_table->keys = (char **)malloc(sizeof(char *) * hash_table->table_size);\n    hash_table->vals = (void **)malloc(sizeof(void *) * hash_table->table_size);\n\n    memset(hash_table->keys, 0, sizeof(char *) * hash_table->table_size);\n    memset(hash_table->vals, 0, sizeof(char *) * hash_table->table_size);\n\n\treturn hash_table;\n}\n\ninline cwobj_hashtable *cwobj_hashTableInitExt(unsigned int size) {\n\tcwobj_hashtable *hash_table = (cwobj_hashtable *)malloc(sizeof(cwobj_hashtable));\n\n\tif (!hash_table) return NULL;\n\n    memset(hash_table, 0, sizeof(cwobj_hashtable));\n\n    hash_table->table_size = size;\n    hash_table->lg_table_size = log10(size);\n    hash_table->keys = (char **)malloc(sizeof(char *) * size);\n    hash_table->vals = (void **)malloc(sizeof(void *) * size);\n\n    memset(hash_table->keys, 0, sizeof(char *) * size);\n    memset(hash_table->vals, 0, sizeof(char *) * size);\n\n\treturn hash_table;\n}\n\ninline int cwobj_hashTableResize(cwobj_hashtable *hash_table, unsigned int new_size) {\n    if (!hash_table) return 0;\n\n    cwobj_hashtable *ht_tmp = cwobj_hashTableInitExt(new_size);\n\n    char **keys = hash_table->keys;\n    void **vals = hash_table->vals;\n\n    unsigned int i = 0;\n    for (i = 0; i < hash_table->table_size; i++) {\n        cwobj_hashTableSet(ht_tmp, keys[i], vals[i]);\n        free(keys[i]);\n    }\n\n    free(hash_table->keys);\n    free(hash_table->vals);\n\n    hash_table->table_size    = ht_tmp->table_size;\n    hash_table->entry_size    = ht_tmp->entry_size;\n    hash_table->lg_table_size = ht_tmp->lg_table_size;\n    hash_table->keys          = ht_tmp->keys;\n    hash_table->vals          = ht_tmp->vals;\n\n    free(ht_tmp);\n\n    return 1;\n}\n\ninline int cwobj_hashTableSet(cwobj_hashtable *hash_table,\n                                const char *key,\n                                void *value) {\n    if (!hash_table || !key || !value) return 0;\n\n    if (hash_table->entry_size >= hash_table->table_size / 2) {\n        if (!cwobj_hashTableResize(hash_table, 2 * hash_table->table_size)) {\n            return 0;\n        }\n    }\n\n    unsigned int hash = cwobj_hashTableCode(hash_table, key);\n    if (hash == (unsigned int)-1) return 0;\n\n    int i = 0;\n    for (i = hash; hash_table->keys[i] != NULL;\n                                        i = (i + 1) % hash_table->table_size) {\n        if (strcmp(hash_table->keys[i], key) == 0) {\n            hash_table->vals[i] = value;\n            return 1;\n        }\n    }\n\n    size_t key_length = strlen(key)+1;\n    char *key_cpy = (char *)malloc(sizeof(char) * key_length);\n    if (!key_cpy) return 0;\n\n    strncpy(key_cpy, key, key_length);\n\n    hash_table->keys[i] = key_cpy;\n    hash_table->vals[i] = value;\n\n    hash_table->entry_size++;\n\n    return 1;\n}\n\ninline void *cwobj_hashTableGet(cwobj_hashtable *hash_table, const char *key) {\n\n    if (!hash_table || !key) return NULL;\n\n    unsigned int hash = cwobj_hashTableCode(hash_table, key);\n\n    int i = 0;\n    for (i = hash; hash_table->keys[i] != NULL;\n                                        i = (i + 1) % hash_table->table_size) {\n        if (strcmp(hash_table->keys[i], key) == 0) {\n            return hash_table->vals[i];\n        }\n    }\n\n    return NULL;\n}\n\ninline void cwobj_hashTableDelete(cwobj_hashtable *hash_table, const char *key) {\n    if (!hash_table || !key) return;\n    if (!cwobj_hashTableGet(hash_table, key)) return;\n\n    int i = cwobj_hashTableCode(hash_table, key);\n    while (strcmp(key, hash_table->keys[i]) != 0) {\n        i = (i + 1) % hash_table->table_size;\n    }\n\n    free(hash_table->keys[i]);\n\n    hash_table->keys[i] = NULL;\n    hash_table->vals[i] = NULL;\n\n    i = (i + 1) % hash_table->table_size;\n\n    while (hash_table->keys[i] != NULL) {\n        char *rkey = hash_table->keys[i];\n        char *rval = (char *)hash_table->vals[i];\n        hash_table->keys[i] = NULL;\n        hash_table->vals[i] = NULL;\n\n        hash_table->entry_size--;\n\n        cwobj_hashTableSet(hash_table, rkey, rval);\n        i = (i + 1) % hash_table->table_size;\n    }\n\n    hash_table->entry_size--;\n    if (hash_table->entry_size > 0 ||\n        hash_table->entry_size == hash_table->table_size/8) {\n        cwobj_hashTableResize(hash_table, hash_table->table_size/2);\n    }\n}\n\ninline void cwobj_hashTableDebug(cwobj_hashtable *hash_table) {\n    if (!hash_table) return;\n\n    fprintf(stdout, \">------- HashTable occupancy pattern <-------\\n\");\n    int wrap = 96;\n    unsigned int i = 0;\n    for (i = 0; i < hash_table->table_size; i++) {\n        if (i%wrap == 0) {\n            fprintf(stdout, \"\\n\");\n        }\n\n        if (hash_table->keys[i]) {\n            fprintf(stdout, \"*\");\n        } else {\n            fprintf(stdout, \"-\");\n        }\n    }\n\n    fprintf(stdout, \"\\n\\n\");\n    fprintf(stdout, \">------- HashTable content <-------\\n\\n\");\n    for (i = 0; i < hash_table->table_size; i += 1) {\n        fprintf(stdout, \"key[%i] = %s\\n\", i, hash_table->keys[i]);\n    }\n}\n\ninline const char *cwobj_hashTableGetKeyAt(cwobj_hashtable *hash_table,\n                                  unsigned int index) {\n    if (!hash_table) return NULL;\n    if (hash_table->table_size == 0) return NULL;\n    if (index >= hash_table->table_size) return NULL;\n\n    return hash_table->keys[index];\n}\n\ninline void *cwobj_hashTableGetValueAt(cwobj_hashtable *hash_table, unsigned int index) {\n    if (!hash_table) return NULL;\n    if (hash_table->table_size == 0) return NULL;\n    if (index >= hash_table->table_size) return NULL;\n\n    return hash_table->vals[index];\n}\n\ninline void cwobj_hashTableFree(cwobj_hashtable *hash_table) {\n    if (!hash_table) return;\n\n    unsigned int i = 0;\n    for (i = 0; i < hash_table->table_size; i++) {\n        free(hash_table->keys[i]);\n    }\n\n    free(hash_table->keys);\n    free(hash_table->vals);\n    free(hash_table);\n}\n\n/*\n    OBJ loader\n\n    Support for indices, vertices, texcoords, normals, colors extraction with indices unification (geometry data duplicata removal)\n\n    Limited support for materials; load multiple materials but apply a single material only\n\n    Also support loading of textures automatically but you must provide a callback which will handle the image load and texture creation.\n\n    This was extracted from my old OpenGL engine and enhanced : https://github.com/grz0zrg/M3D\n*/\n\n#define CWOBJ_GEOMETRY_POINT    1\n#define CWOBJ_GEOMETRY_LINE     2\n#define CWOBJ_GEOMETRY_TRIANGLE 4\n\n//! CWOBJ color data structure\ntypedef struct {\n    float r, g, b, unused;\n} cwobj_color;\n\n//! CWOBJ material data structure\ntypedef struct {\n    //! material name\n    char *name;\n\n    //! ambient color\n    cwobj_color ambient_color;\n    //! diffuse color\n    cwobj_color diffuse_color;\n    //! ambient color\n    cwobj_color specular_color;\n    //! emissive color\n    cwobj_color emissive_color;\n\n    //! opacity\n    float opacity;\n\n    //! ior\n    float ior;\n    //! specular hardness\n    float specular_hardness;\n\n    //! illumination mode (0 ignore lighting, 1 no specular, 2 lighting)\n    int illum_mode;\n\n    //! type\n    unsigned int type;\n    //! flags\n    unsigned int flags;\n\n    //! used flag (unused materials are automatically freed)\n    int used;\n\n    //! diffuse texture id\n    unsigned int diffuse_texture;\n} cwobj_mat;\n\n//! CWOBJ geometry data structure\ntypedef struct {\n    //! indices data\n    CWOBJ_INDICE_TYPE *indice;\n\n    //! vertices data\n    float *vertice;\n    //! texcoords data\n    float *texcoord;\n    //! uv data\n    float *normal;\n\n    //! colors data\n    unsigned char *color;\n\n    //! indices count\n    unsigned int indice_n;\n    //! vertices count (as triplet so you must multiply by 3 to get the data length)\n    unsigned int vertice_n;\n    //! texcoords count (as pair so you must multiply by 2 to get the data length)\n    unsigned int texcoord_n;\n    //! normals count (as triplet so you must multiply by 3 to get the data length)\n    unsigned int normal_n;\n    //! colors count (as triplet so you must multiply by 3 to get the data length)\n    unsigned int color_n;\n\n    //! primitive type\n    int prim_type;\n} cwobj_geo;\n\n//! CWOBJ materials library data structure\ntypedef struct {\n    //! hold materials\n    cwobj_mat **materials;\n\n    //! hold the number of stored materials\n    unsigned int materials_n;\n} cwobj_mtllib;\n\n//! CWOBJ data structure\ntypedef struct {\n    //! mesh name\n    char *name;\n\n    //! mesh geometry\n    cwobj_geo *geometry;\n    //! mesh material\n    cwobj_mat *material;\n} cwobj;\n\n//! load an .obj file\n/*!\n    \\param filename filename\n    \\param get_texture function used to load a texture (return a texture id which is stored in the mesh material)\n    \\return mesh data structure\n*/\ncwobj *cwobj_load(const char *filename, unsigned int (*get_texture)(const char *filename));\n\n//! create a mesh\n/*!\n    \\return mesh data structure\n*/\ncwobj *cwobj_meshInit();\n\n//! free a mesh\n/*!\n    \\param mesh mesh data structure\n*/\nvoid cwobj_free(cwobj *mesh);\n\n//! set the name of a mesh\n/*!\n    \\param mesh mesh data structure\n    \\param name mesh name\n*/\nvoid cwobj_meshSetName(cwobj *mesh, const char *name);\n\n//! set the material of a mesh\n/*!\n    \\param mesh mesh data structure\n    \\param material associated material\n*/\nvoid cwobj_meshSetMaterial(cwobj *mesh, cwobj_mat *material);\n\n//! set the geometry of a mesh\n/*!\n    \\param mesh mesh data structure\n    \\param geom associated geometry\n*/\nvoid cwobj_meshSetGeometry(cwobj *mesh, cwobj_geo *geom);\n\n//! clone a mesh\n/*!\n    \\param mesh mesh data structure\n    \\return new mesh data structure\n*/\ncwobj *cwobj_meshClone(cwobj *mesh);\n\n\n//! create a geometry\n/*!\n    \\return geometry data structure\n*/\ncwobj_geo *cwobj_geomInit();\n\n//! free a geometry\n/*!\n    \\param geom geometry data structure\n*/\nvoid cwobj_geomFree(cwobj_geo *geom);\n\n//! merge geometry\n/*!\n    \\param dst destination geometry data structure\n    \\param src source geometry data structure which will be merged into dst\n*/\nvoid cwobj_geomMerge(cwobj_geo *dst, cwobj_geo *src);\nvoid cwobj_geomSetVertice(cwobj_geo *geom, unsigned int index, float v1, float v2, float v3);\nvoid cwobj_geomSetTexcoord(cwobj_geo *geom, unsigned int index, float u, float v);\nvoid cwobj_geomAllocVertice(cwobj_geo *geom, unsigned int size);\nvoid cwobj_geomAllocTexcoord(cwobj_geo *geom, unsigned int size);\nvoid cwobj_geomAllocNormal(cwobj_geo *geom, unsigned int size);\nvoid cwobj_geomAllocColor(cwobj_geo *geom, unsigned int size);\nvoid cwobj_geomAllocIndice(cwobj_geo *geom, unsigned int size);\nint cwobj_geomAddVertice(cwobj_geo *geom, float v1, float v2, float v3);\nint cwobj_geomAddNormal(cwobj_geo *geom, float n1, float n2, float n3);\nint cwobj_geomAddTexcoord(cwobj_geo *geom, float u, float v);\nint cwobj_geomAddColor(cwobj_geo *geom, unsigned char r, unsigned char g, unsigned char b, unsigned char a);\nint cwobj_geomAddIndice(cwobj_geo *geom, CWOBJ_INDICE_TYPE ind);\nvoid cwobj_geomDebug(cwobj_geo *geom);\n\n//! clone a geometry\n/*!\n    \\param geom geometry data structure\n    \\return new geometry data structure\n*/\ncwobj_geo *cwobj_geomClone(cwobj_geo *geom);\n\nvoid cwobj_setColor3f(cwobj_color *color, float r, float g, float b);\n\ncwobj_mat *cwobj_materialInit();\nvoid cwobj_materialFree(cwobj_mat *material);\n\ncwobj_mtllib *cwobj_objMtlibInit();\nvoid cwobj_objMtlibFree(cwobj_mtllib *mtlib);\ncwobj_mat *cwobj_objMtlibAddMaterial(cwobj_mtllib *mtlib, char *name);\nvoid cwobj_objMtlibSetUsed(cwobj_mtllib *mtlib, const char *name);\ncwobj_mat *cwobj_objMtlibGetMaterial(cwobj_mtllib *mtlib, const char *name);\nchar *cwobj_objGetLine(FILE *f);\nchar *cwobj_objGetTag(const char *line);\nchar *cwobj_objGetData(char *line);\ncwobj_mtllib *cwobj_objLoadMtlib(const char *filename, unsigned int (*get_texture)(const char *filename));\n\ninline cwobj *cwobj_meshInit() {\n\tcwobj *mesh = (cwobj *)malloc(sizeof(cwobj));\n\n\tif (!mesh) return NULL;\n\n    memset(mesh, 0, sizeof(cwobj));\n\n\treturn mesh;\n}\n\ninline void cwobj_free(cwobj *mesh) {\n    if (!mesh) return;\n\n    cwobj_geomFree(mesh->geometry);\n    cwobj_materialFree(mesh->material);\n\n\tfree(mesh->name);\n\tfree(mesh);\n}\n\ninline void cwobj_meshSetName(cwobj *mesh, const char *name) {\n    if (!mesh) return;\n    if (!name) return;\n\n    size_t name_length = strlen(name);\n\n    mesh->name = (char *)malloc(sizeof(char) * (name_length+1));\n    if (mesh->name) {\n        memcpy(mesh->name, name, name_length+1);\n    }\n}\n\ninline void cwobj_meshSetMaterial(cwobj *mesh, cwobj_mat *material) {\n    if (!mesh || !material) return;\n\n    mesh->material = material;\n}\n\ninline void cwobj_meshSetGeometry(cwobj *mesh, cwobj_geo *geom) {\n    if (!mesh || !geom) return;\n\n    mesh->geometry = geom;\n}\n\ninline cwobj *cwobj_meshClone(cwobj *mesh) {\n    if (!mesh) return NULL;\n\n    cwobj *new_mesh = cwobj_meshInit();\n    if (!new_mesh) return NULL;\n\n    new_mesh->geometry = mesh->geometry;\n    new_mesh->material = mesh->material;\n\n    cwobj_meshSetName(new_mesh, mesh->name);\n\n    return new_mesh;\n}\n\ninline cwobj_geo *cwobj_geomInit() {\n\tcwobj_geo *geom = (cwobj_geo *)malloc(sizeof(cwobj_geo));\n\n\tif (!geom) return NULL;\n\n    memset(geom, 0, sizeof(cwobj_geo));\n\n\tgeom->prim_type = CWOBJ_GEOMETRY_TRIANGLE;\n\n\treturn geom;\n}\n\ninline void cwobj_geomFree(cwobj_geo *geom) {\n    if (!geom) return;\n\n\tfree(geom->indice);\n\tfree(geom->vertice);\n\tfree(geom->texcoord);\n\tfree(geom->normal);\n\tfree(geom->color);\n\tfree(geom);\n}\n\ninline void cwobj_geomMerge(cwobj_geo *dst, cwobj_geo *src) {\n    if (!dst || !src) return;\n\n    unsigned int i = 0, data_length = 0;\n    if (dst->indice && src->indice) {\n        data_length = (dst->indice_n+src->indice_n);\n        CWOBJ_INDICE_TYPE *merged = NULL;\n        merged = (CWOBJ_INDICE_TYPE *)realloc(dst->indice,\n                                            sizeof(CWOBJ_INDICE_TYPE) *\n                                            data_length);\n\n        if (merged) {\n            dst->indice = merged;\n            for (i = dst->indice_n; i < data_length; i++) {\n                dst->indice[i] = src->indice[i-dst->indice_n]+(dst->vertice_n);\n            }\n            dst->indice_n = data_length;\n        }\n    }\n\n    if (dst->vertice && src->vertice) {\n        data_length = (dst->vertice_n+src->vertice_n) * 3;\n        float *merged = NULL;\n        merged = (float *)realloc(dst->vertice,\n                                            sizeof(float) *\n                                            data_length);\n        if (merged) {\n            dst->vertice = merged;\n            unsigned int v_real_n = dst->vertice_n * 3;\n            for (i = v_real_n; i < data_length; i++) {\n                dst->vertice[i] = src->vertice[i-v_real_n];\n            }\n\n            dst->vertice_n = (dst->vertice_n+src->vertice_n);\n        }\n    }\n\n    if (dst->texcoord && src->texcoord) {\n        data_length = (dst->texcoord_n+src->texcoord_n) * 2;\n        float *merged = NULL;\n        merged = (float *)realloc(dst->texcoord,\n                                            sizeof(float) *\n                                            data_length);\n        if (merged) {\n            dst->texcoord = merged;\n            unsigned int t_real_n = dst->texcoord_n * 2;\n            for (i = t_real_n; i < data_length; i++) {\n                dst->texcoord[i] = src->texcoord[i-t_real_n];\n            }\n            dst->texcoord_n = (dst->texcoord_n+src->texcoord_n);\n        }\n    }\n\n    if (dst->normal && src->normal) {\n        data_length = (dst->normal_n+src->normal_n) * 3;\n        float *merged = NULL;\n        merged = (float *)realloc(dst->normal,\n                                            sizeof(float) *\n                                            data_length);\n        if (merged) {\n            dst->normal = merged;\n            unsigned int n_real_n = dst->normal_n * 3;\n            for (i = n_real_n; i < data_length; i++) {\n                dst->normal[i] = src->normal[i-n_real_n];\n            }\n            dst->normal_n = (dst->normal_n+src->normal_n);\n        }\n    }\n\n    if (dst->color && src->color) {\n        data_length = (dst->color_n+src->color_n) * 4;\n        unsigned char *merged = NULL;\n        merged = (unsigned char *)realloc(dst->color,\n                                            sizeof(unsigned char) *\n                                            data_length);\n        if (merged) {\n            dst->color = merged;\n            unsigned int c_real_n = dst->color_n * 4;\n            for (i = c_real_n; i < data_length; i++) {\n                dst->color[i] = src->color[i-c_real_n];\n            }\n            dst->color_n = (dst->color_n+src->color_n);\n        }\n    }\n}\n\ninline void cwobj_geomSetVertice(cwobj_geo *geom, unsigned int index,\n                        float v1, float v2, float v3) {\n    unsigned int i = index * 3;\n\n    geom->vertice[i]   = v1;\n    geom->vertice[i+1] = v2;\n    geom->vertice[i+2] = v3;\n}\n\ninline void cwobj_geomSetTexcoord(cwobj_geo *geom, unsigned int index,\n                         float u, float v) {\n    unsigned int i = index<<1;\n\n    geom->texcoord[i]   = u;\n    geom->texcoord[i+1] = v;\n}\n\ninline void cwobj_geomAllocVertice(cwobj_geo *geom, unsigned int size) {\n    if (geom->vertice) free(geom->vertice);\n\n    geom->vertice = (float *)malloc(sizeof(float) * 3 * size);\n    geom->vertice_n = size;\n}\n\ninline void cwobj_geomAllocTexcoord(cwobj_geo *geom, unsigned int size) {\n    if (geom->texcoord) free(geom->texcoord);\n\n    geom->texcoord = (float *)malloc(sizeof(float) * 2 * size);\n    geom->texcoord_n = size;\n}\n\ninline void cwobj_geomAllocNormal(cwobj_geo *geom, unsigned int size) {\n    if (geom->normal) free(geom->normal);\n\n    geom->normal = (float *)malloc(sizeof(float) * 3 * size);\n    geom->normal_n = size;\n}\n\ninline void cwobj_geomAllocColor(cwobj_geo *geom, unsigned int size) {\n    if (geom->color) free(geom->color);\n\n    geom->color = (unsigned char *)malloc(sizeof(unsigned char) * 4 * size);\n    geom->color_n = size;\n}\n\ninline void cwobj_geomAllocIndice(cwobj_geo *geom, unsigned int size) {\n    if (geom->indice) free(geom->indice);\n\n    geom->indice = (CWOBJ_INDICE_TYPE *)malloc(sizeof(CWOBJ_INDICE_TYPE) * size);\n    geom->indice_n = size;\n}\n\ninline int cwobj_geomAddVertice(cwobj_geo *geom, float v1, float v2, float v3) {\n\tif (!geom) return 1;\n\n    float *vertice = NULL;\n\tif (geom->vertice == NULL) {\n\t\tvertice = (float *)malloc(sizeof(float) * 3);\n\t} else {\n\t\tvertice = (float *)realloc(geom->vertice,\n                                sizeof(float) * 3 * (geom->vertice_n+1));\n\t}\n\n\tif (!vertice) {\n\t\treturn 1;\n\t}\n\n\tgeom->vertice = vertice;\n\n\tunsigned int start_index     = geom->vertice_n * 3;\n\tgeom->vertice[start_index]   = v1;\n\tgeom->vertice[start_index+1] = v2;\n\tgeom->vertice[start_index+2] = v3;\n\n\tgeom->vertice_n++;\n\n\treturn 0;\n}\n\ninline int cwobj_geomAddNormal(cwobj_geo *geom, float n1, float n2, float n3) {\n\tif (!geom) return 1;\n\n    float *normal = NULL;\n\tif (geom->normal == NULL) {\n\t\tnormal = (float *)malloc(sizeof(float) * 3);\n\t} else {\n\t\tnormal = (float *)realloc(geom->normal,\n                                sizeof(float) * 3 * (geom->normal_n+1));\n\t}\n\n\tif (!normal) {\n\t\treturn 1;\n\t}\n\n\tgeom->normal = normal;\n\n\tunsigned int start_index    = geom->normal_n * 3;\n\tgeom->normal[start_index]   = n1;\n\tgeom->normal[start_index+1] = n2;\n\tgeom->normal[start_index+2] = n3;\n\n\tgeom->normal_n++;\n\n\treturn 0;\n}\n\ninline int cwobj_geomAddTexcoord(cwobj_geo *geom, float u, float v) {\n\tif (!geom) return 1;\n\n    float *texcoord = NULL;\n\tif (geom->texcoord == NULL) {\n\t\ttexcoord = (float *)malloc(sizeof(float) * 2);\n\t} else {\n\t\ttexcoord = (float *)realloc(geom->texcoord,\n\t\t\t\t\t\t\t\t\tsizeof(float) * 2 * (geom->texcoord_n+1));\n\t}\n\n\tif (!texcoord) {\n\t\treturn 1;\n\t}\n\n\tgeom->texcoord = texcoord;\n\n\tunsigned int start_index    = geom->texcoord_n * 2;\n\tgeom->texcoord[start_index]   = u;\n\tgeom->texcoord[start_index+1] = v;\n\n\tgeom->texcoord_n++;\n\n\treturn 0;\n}\n\ninline int cwobj_geomAddColor(cwobj_geo *geom, unsigned char r,\n                                     unsigned char g,\n                                     unsigned char b,\n                                     unsigned char a) {\n\tif (!geom) return 1;\n\n    unsigned char *color = NULL;\n\tif (geom->color == NULL) {\n\t\tcolor = (unsigned char *)malloc(sizeof(unsigned char) * 4);\n\t} else {\n\t\tcolor = (unsigned char *)realloc(geom->color,\n                                sizeof(unsigned char) * 4 * (geom->color_n+1));\n\t}\n\n\tif (!color) {\n\t\treturn 1;\n\t}\n\n\tgeom->color = color;\n\n\tunsigned int start_index   = geom->color_n * 4;\n\tgeom->color[start_index]   = r;\n\tgeom->color[start_index+1] = g;\n\tgeom->color[start_index+2] = b;\n\tgeom->color[start_index+3] = a;\n\n\tgeom->color_n++;\n\n\treturn 0;\n}\n\ninline int cwobj_geomAddIndice(cwobj_geo *geom, CWOBJ_INDICE_TYPE ind) {\n\tif (!geom) return 1;\n\n    CWOBJ_INDICE_TYPE *indice = NULL;\n\tif (geom->indice == NULL) {\n\t\tindice = (CWOBJ_INDICE_TYPE *)malloc(sizeof(CWOBJ_INDICE_TYPE));\n\t} else {\n\t\tindice = (CWOBJ_INDICE_TYPE *)realloc(geom->indice,\n                                sizeof(CWOBJ_INDICE_TYPE) * (geom->indice_n+1));\n\t}\n\n\tif (!indice) {\n\t\treturn 1;\n\t}\n\n\tgeom->indice = indice;\n\n\tgeom->indice[geom->indice_n] = ind;\n\n\tgeom->indice_n++;\n\n\treturn 0;\n}\n\ninline void cwobj_geomDebug(cwobj_geo *geom) {\n    if (!geom) return;\n\n    if (!geom->indice) {\n        unsigned int i = 0;\n        for (i = 0; i < geom->vertice_n*3; i+=3) {\n            fprintf(stdout, \"Vertice:%f %f %f\\n\\n\",\n                  geom->vertice[i], geom->vertice[i+1],\n                  geom->vertice[i+2]);\n        }\n\n        for (i = 0; i < geom->normal_n*3; i+=3) {\n            fprintf(stdout, \"Normal:%f %f %f\\n\\n\",\n                  geom->normal[i], geom->normal[i+1],\n                  geom->normal[i+2]);\n        }\n\n        for (i = 0; i < geom->texcoord_n*2; i+=2) {\n            fprintf(stdout, \"UV:%f %f\\n\\n\",\n                  geom->texcoord[i], geom->texcoord[i+1]);\n        }\n    } else {\n        unsigned int i = 0;\n        for (i = 0; i < geom->indice_n; i++) {\n            unsigned int indice = geom->indice[i];\n            fprintf(stdout, \"Indice %i:\\nVertice:%f %f %f\\n\"\n                   \"UV:     %f %f\\nNormal: %f %f %f\\n\\n\", indice,\n                  geom->vertice[(indice*3)], geom->vertice[(indice*3)+1],\n                  geom->vertice[(indice*3)+2],\n                  geom->texcoord[(indice*2)], geom->texcoord[(indice*2)+1],\n                  geom->normal[(indice*3)], geom->normal[(indice*3)+1],\n                  geom->normal[(indice*3)+2]);\n        }\n    }\n\n    fflush(stdout);\n}\n\ninline cwobj_geo *cwobj_geomClone(cwobj_geo *geom) {\n    if (!geom) return NULL;\n\n    cwobj_geo *new_geom = cwobj_geomInit();\n    if (!new_geom) return NULL;\n\n    cwobj_geomAllocIndice(new_geom, geom->indice_n);\n    cwobj_geomAllocVertice(new_geom, geom->vertice_n);\n    cwobj_geomAllocNormal(new_geom, geom->normal_n);\n    cwobj_geomAllocTexcoord(new_geom, geom->texcoord_n);\n    cwobj_geomAllocColor(new_geom, geom->color_n);\n\n    unsigned int i = 0;\n    for (i = 0; i < geom->indice_n; i++) {\n        new_geom->indice[i] = geom->indice[i];\n    }\n\n    for (i = 0; i < geom->vertice_n*3; i++) {\n        new_geom->vertice[i] = geom->vertice[i];\n    }\n\n    for (i = 0; i < geom->normal_n*3; i++) {\n        new_geom->normal[i] = geom->normal[i];\n    }\n\n    for (i = 0; i < geom->texcoord_n*2; i++) {\n        new_geom->texcoord[i] = geom->texcoord[i];\n    }\n\n    for (i = 0; i < geom->color_n*4; i++) {\n        new_geom->color[i] = geom->color[i];\n    }\n\n    return new_geom;\n}\n\n\ninline void cwobj_setColor3f(cwobj_color *color, float r, float g, float b) {\n    color->r = r; color->g = g; color->b = b; color->unused = 0;\n}\n\ninline cwobj_mat *cwobj_materialInit() {\n\tcwobj_mat *material = (cwobj_mat *)malloc(sizeof(cwobj_mat));\n\n\tif (!material) return NULL;\n\n\tmemset(material, 0, sizeof(cwobj_mat));\n\n\treturn material;\n}\n\ninline void cwobj_materialFree(cwobj_mat *material) {\n    if (!material) return;\n\n    free(material->name);\n\tfree(material);\n}\n\ninline cwobj_mtllib *cwobj_objMtlibInit() {\n\tcwobj_mtllib *mtlib = (cwobj_mtllib *)malloc(sizeof(cwobj_mtllib));\n\n\tif (!mtlib) return NULL;\n\n\tmemset(mtlib, 0, sizeof(cwobj_mtllib));\n\n\treturn mtlib;\n}\n\ninline cwobj_mat *cwobj_objMtlibAddMaterial(cwobj_mtllib *mtlib, char *name) {\n    if (!mtlib) return NULL;\n\n    cwobj_mat *material = cwobj_materialInit();\n    if (!material) return NULL;\n\n    material->name = name;\n\n    cwobj_mat **mtls_tmp = NULL;\n    if (!mtlib->materials) {\n        mtls_tmp = (cwobj_mat **)malloc(sizeof(cwobj_mat *));\n    } else {\n        mtls_tmp = (cwobj_mat **)realloc(mtlib->materials,\n                            sizeof(cwobj_mat *) * (mtlib->materials_n+1));\n    }\n\n    if (!mtls_tmp) {\n        cwobj_materialFree(material);\n        return NULL;\n    }\n\n    mtlib->materials = mtls_tmp;\n\n    mtlib->materials[mtlib->materials_n] = material;\n\n    material->used = 0;\n\n    mtlib->materials_n++;\n\n    return material;\n}\n\ninline void cwobj_objMtlibSetUsed(cwobj_mtllib *mtlib, const char *name) {\n    if (!mtlib || !name) return;\n\n    size_t name_len = strlen(name);\n\n    unsigned int i = 0;\n    for (i = 0; i < mtlib->materials_n; i++) {\n        cwobj_mat *objmtl = mtlib->materials[i];\n\n        if (!objmtl) continue;\n\n        cwobj_mat *tmp_mat = objmtl;\n        const char *material_name = tmp_mat->name;\n\n        if (material_name) {\n            if (strlen(material_name) != name_len) {\n                continue;\n            }\n\n            if (strncmp(name, material_name, name_len) == 0) {\n                objmtl->used = 1;\n                break;\n            }\n        }\n    }\n}\n\ninline cwobj_mat *cwobj_objMtlibGetMaterial(cwobj_mtllib *mtlib, const char *name) {\n    if (!name) return NULL;\n\n    cwobj_mat *material = NULL;\n\n    size_t name_len = strlen(name);\n\n    unsigned int i = 0;\n    for (i = 0; i < mtlib->materials_n; i++) {\n        cwobj_mat *objmtl = mtlib->materials[i];\n\n        if (!objmtl) continue;\n\n        cwobj_mat *tmp_mat = objmtl;\n        const char *material_name = tmp_mat->name;\n\n        if (material_name) {\n            if (strlen(material_name) != name_len) {\n                continue;\n            }\n\n            if (strncmp(name, material_name, name_len) == 0) {\n                material = tmp_mat;\n                break;\n            }\n        }\n    }\n\n    return material;\n}\n\ninline void cwobj_objMtlibFree(cwobj_mtllib *mtlib) {\n    if (!mtlib) return;\n\n    unsigned int i = 0;\n    for (i = 0; i < mtlib->materials_n; i++) {\n        cwobj_mat *objmtl = mtlib->materials[i];\n        if (!objmtl) continue;\n\n        // only free unused materials\n        if (!objmtl->used) {\n            cwobj_materialFree(objmtl);\n        }\n    }\n    free(mtlib->materials);\n    free(mtlib);\n}\n\ninline char *cwobj_objGetLine(FILE *f) {\n    if (!f) {\n        return NULL;\n    }\n\n    char *line = (char *)malloc(sizeof(char) * CWOBJ_MAX_LINE_LENGTH);\n    if (!line) {\n        return NULL;\n    }\n\n    int c = fgetc(f);\n    while (c == ' ') { c = fgetc(f); }; // skip whitespaces\n\n    if (c == EOF) {\n        free(line);\n        return NULL;\n    }\n\n    memset(line, 0, sizeof(char) * CWOBJ_MAX_LINE_LENGTH);\n\n    int i = 0; // store true line length\n    while (c != '\\n' && c != EOF) {\n        if (i < (CWOBJ_MAX_LINE_LENGTH-1)) {\n            if (c == '#') { // skip .obj comments\n                while (c != '\\n' && c != EOF) { c = fgetc(f); };\n                break;\n            }\n\n            line[i++] = c;\n        }\n\n        c = fgetc(f);\n    }\n\n    return line;\n}\n\ninline char *cwobj_objGetTag(const char *line) {\n    if (!line) return NULL;\n\n    long line_length = strlen(line);\n\n    if ((line_length == 1 && line[0] == 0x0D) || (line_length == 1 && line[0] == 0x0A)) return NULL;\n    if (line_length == 2 && line[0] == 0x0D && line[1] == 0x0A) return NULL;\n\n    int tag_end = strcspn(line, \" \");\n    char *tag = (char *)malloc(sizeof(char) * (tag_end+1));\n    if (!tag) return NULL;\n\n    strncpy(tag, line, tag_end);\n    tag[tag_end] = '\\0';\n\n    cwobj_toLowercase(tag);\n\n    return tag;\n}\n\ninline char *cwobj_objGetData(char *line) {\n    if (!line) return NULL;\n\n    int data_start = strcspn(line, \" \")+1;\n    size_t data_length = strlen(line)-data_start;\n\n    char *data_start_p = line+data_start;\n\n    // skip whitespace\n    while (*data_start_p == ' ') { data_start_p++; data_length--; };\n\n    if (data_length <= 0) return NULL;\n\n    char *data = (char *)malloc(sizeof(char) * (data_length+1));\n    if (!data) return NULL;\n\n    memcpy(data, data_start_p, data_length+1);\n\n    return data;\n}\n\ninline cwobj_mtllib *cwobj_objLoadMtlib(const char *filename, unsigned int (*get_texture)(const char *filename)) {\n    FILE *f = fopen(filename, \"r\");\n    if (!f) {\n        fprintf(stderr, \"cwobj_objLoadMtlib: failed to open .mtl '%s'\\n\", filename);\n        return NULL;\n    }\n\n    cwobj_mtllib *mtlib = cwobj_objMtlibInit();\n    if (!mtlib) {\n        fprintf(stderr, \"cwobj_objLoadMtlib: cwobj_objMtlibInit failed\\n\");\n        return NULL;\n    }\n\n    cwobj_mat *curr_material = NULL;\n\n\t// parse the .mtl\n    long curr_line = 0;\n    char *line = NULL;\n    while ((line = cwobj_objGetLine(f))) {\n        unsigned int line_length = strlen(line);\n\n        curr_line += 1;\n\n\t\tif (!line_length) {\n            free(line);\n            continue;\n\t\t}\n\n        char *tag = cwobj_objGetTag(line);\n        if (!tag) {\n            free(line);\n            continue;\n        }\n\n        int tag_length = strlen(tag);\n        if (tag_length == 0) {\n            free(line);\n            free(tag); \n            continue;\n        }\n\n        char *data = cwobj_objGetData(line);\n        if (!data) {\n            free(line);\n            free(tag);\n            continue;\n        }\n\n        char *data_p = data;\n\n        int data_length = strlen(data);\n\n#ifdef DEBUG_CWOBJ\n        fprintf(stdout, \"cwobj_objLoadMtlib: '%s' L%lu parsing tag '%s' with value '%s'\\n\", filename, curr_line, tag, data);\n#endif\n\n        if (cwobj_strncmpi(tag, \"newmtl\", 6) == 0) {\n            char *name = (char *)malloc(sizeof(char) * (data_length+1));\n            if (name) {\n                memcpy(name, data, data_length+1);\n                \n                curr_material = cwobj_objMtlibAddMaterial(mtlib, name);\n                if (!curr_material) {\n                    free(name);\n                    fprintf(stderr, \"cwobj_objLoadMtlib: (newmtl) failed to add material '%s' to the mtlib\\n\", filename);\n                }\n            } else {\n                fprintf(stderr, \"cwobj_objLoadMtlib: (newmtl) failed to allocate material name '%s'\\n\", filename);\n            }\n        } else if (cwobj_strncmpi(tag, \"map_kd\", 6) == 0) {\n            char *path = cwobj_getPath(filename);\n\n            size_t path_length = 0;\n\n            if (path) {\n                path_length = strlen(path);\n            }\n\n            char *texture_filename = (char *)malloc(sizeof(char) *\n                                            (data_length+path_length+1));\n            if (texture_filename) {\n                if (path) {\n                    memcpy(texture_filename, path, path_length);\n                    memcpy(texture_filename+path_length, data, data_length+1);\n                } else {\n                    memcpy(texture_filename, data, data_length+1);\n                }\n\n                if (curr_material) {\n                    if (get_texture) {\n                        curr_material->diffuse_texture = get_texture(texture_filename);\n                    } else {\n                        fprintf(stderr, \"cwobj_objLoadMtlib: texture '%s' ignored (no callback registered to load the texture)\\n\", texture_filename);\n                    }\n                }\n\n                free(texture_filename);\n            } else {\n                fprintf(stderr, \"cwobj_objLoadMtlib: '%s' ignored (malloc. error)\\n\", tag);\n            }\n\n            free(path);\n        } else if (cwobj_strncmpi(tag, \"ns\" , 2) == 0) {\n            if (curr_material) {\n                int specular_hardness = cwobj_parseInt(&data_p);\n\n                curr_material->specular_hardness = specular_hardness;\n            }\n        } else if (cwobj_strncmpi(tag, \"ka\" , 2) == 0) {\n            if (curr_material) {\n                float r = cwobj_parseFloat(&data_p);\n                float g = cwobj_parseFloat(&data_p);\n                float b = cwobj_parseFloat(&data_p);\n\n                cwobj_setColor3f(&curr_material->ambient_color, r, g, b);\n            }\n        } else if (cwobj_strncmpi(tag, \"ke\" , 2) == 0) {\n            if (curr_material) {\n                float r = cwobj_parseFloat(&data_p);\n                float g = cwobj_parseFloat(&data_p);\n                float b = cwobj_parseFloat(&data_p);\n\n                cwobj_setColor3f(&curr_material->emissive_color, r, g, b);\n            }\n        } else if (cwobj_strncmpi(tag, \"kd\" , 2) == 0) {\n            if (curr_material) {\n                float r = cwobj_parseFloat(&data_p);\n                float g = cwobj_parseFloat(&data_p);\n                float b = cwobj_parseFloat(&data_p);\n\n                cwobj_setColor3f(&curr_material->diffuse_color, r, g, b);\n            }\n        } else if (cwobj_strncmpi(tag, \"ks\" , 2) == 0) {\n            if (curr_material) {\n                float r = cwobj_parseFloat(&data_p);\n                float g = cwobj_parseFloat(&data_p);\n                float b = cwobj_parseFloat(&data_p);\n\n                cwobj_setColor3f(&curr_material->specular_color, r, g, b);\n            }\n        } else if (cwobj_strncmpi(tag, \"ni\" , 2) == 0) {\n            if (curr_material) {\n                float ior = cwobj_parseFloat(&data_p);\n\n                curr_material->ior = ior;\n            }\n        } else if (cwobj_strncmpi(tag, \"d\" , 1) == 0) {\n            if (curr_material) {\n                float opacity = cwobj_parseFloat(&data_p);\n\n                curr_material->opacity = opacity;\n            }\n        } else if (cwobj_strncmpi(tag, \"illum\", 5) == 0) {\n            if (curr_material) {\n                int illum_mode = cwobj_parseInt(&data_p);\n\n                curr_material->illum_mode = illum_mode;\n            }\n        } else {\n            fprintf(stderr, \"cwobj_objLoadMtlib: unknow .mtl tag: '%s'\\n\", tag);\n        }\n\n        free(line);\n        free(tag);\n        free(data);\n    }\n\n    fclose(f);\n\n    return mtlib;\n}\n\ninline cwobj *cwobj_load(const char *filename, unsigned int (*get_texture)(const char *filename)) {\n    fprintf(stdout, \"cwobj_load: loading \\\"%s\\\"\\n\", filename);\n\n    fflush(stdout);\n\n    FILE *f = fopen(filename, \"r\");\n    if (!f) {\n        fprintf(stderr, \"cwobj_load: failed to open .obj \\\"%s\\\"\\n\", filename);\n        return NULL;\n    }\n\n\tcwobj *mesh = cwobj_meshInit();\n\tif (!mesh) {\n        fprintf(stderr, \"cwobj_load: failed to open .obj \\\"%s\\\" (mesh. init. failed)\\n\", filename);\n        return NULL;\n\t}\n\n\tcwobj_geo *obj_geom = cwobj_geomInit(); // store temporary obj data\n\tif (!obj_geom) {\n        fprintf(stderr, \"cwobj_load: failed to open .obj \\\"%s\\\" (geom. init. failed)\\n\", filename);\n        cwobj_free(mesh);\n        fclose(f);\n        return NULL;\n\t}\n\n\tcwobj_geo *vcwobj_geom = cwobj_geomInit(); // store final geometry\n\tif (!vcwobj_geom) {\n        fprintf(stderr, \"cwobj_load: failed to open .obj \\\"%s\\\" (geom. init. failed)\\n\", filename);\n        cwobj_geomFree(obj_geom);\n        cwobj_free(mesh);\n        fclose(f);\n        return NULL;\n\t}\n\n    // will store the associated .mtl file data\n\tcwobj_mtllib *mtlib = NULL;\n\n\t/* will be used to unify indices to optimize the final geometry with\n       zero geometry duplicata, with a hash table it is simple but it may\n       require huge amount of memory...\n\t*/\n\tcwobj_hashtable *indices_hash_table = cwobj_hashTableInit();\n\n\t// .obj can store many meshs\n\tint mesh_count = 0;\n\n    char *line = NULL;\n    long curr_line = 0;\n    while ((line = cwobj_objGetLine(f))) {\n        unsigned int line_length = strlen(line);\n\n        curr_line += 1;\n\n\t\tif (!line_length) {\n            free(line);\n            continue;\n\t\t}\n\n        char *tag = cwobj_objGetTag(line);\n        if (!tag) {\n            free(line);\n            continue;\n        }\n\n        int tag_length = strlen(tag);\n        if (tag_length == 0) {\n            free(line);\n            free(tag); \n            continue;\n        }\n\n        char *data = cwobj_objGetData(line);\n        if (!data) {\n            free(line);\n            free(tag);\n            continue;\n        }\n\n        char *data_p = data;\n\n        int data_length = strlen(data);\n\n#ifdef DEBUG_CWOBJ\n        fprintf(stdout, \"cwobj_load: '%s' L%lu parsing tag '%s' with value '%s'\\n\", filename, curr_line, tag, data);\n#endif\n\n\t\t// parse tags\n        if (strncmp(tag, \"mtllib\", 6) == 0) {\n            char *path = cwobj_getPath(filename);\n\n            size_t path_length = 0;\n\n            if (path) {\n                path_length = strlen(path);\n            }\n\n            char *mtl_filename = (char *)malloc(sizeof(char) *\n                                                (data_length+path_length+1));\n            if (mtl_filename) {\n                if (path) {\n                    memcpy(mtl_filename, path, path_length);\n                    memcpy(mtl_filename+path_length, data, data_length+1);\n                } else {\n                    memcpy(mtl_filename, data, data_length+1);\n                }\n\n                mtlib = cwobj_objLoadMtlib(mtl_filename, get_texture);\n                if (!mtlib) {\n                    fprintf(stderr, \"cwobj_load: failed to load .mtl \\\"%s\\\"\\n\", mtl_filename);\n                }\n\n                free(mtl_filename);\n            } else {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" ignored (malloc. error)\\n\", tag);\n            }\n\n            free(path);\n        } else if (strncmp(tag, \"usemtl\", 6) == 0) {\n            if (!mesh->material && mtlib) {\n                cwobj_mat *material = cwobj_objMtlibGetMaterial(mtlib, data);\n                if (!material) {\n                    fprintf(stderr, \"cwobj_load: cannot find material in the mtllib \\\"%s\\\" \\n\", data);\n                } else {\n                    cwobj_meshSetMaterial(mesh, material);\n                }\n            } else {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" ignored (a material is already bound to a mesh or no mtllib present)\\n\", tag);\n            }\n        } else if (strncmp(tag, \"l\", 1) == 0) { // edges\n            vcwobj_geom->prim_type = CWOBJ_GEOMETRY_LINE;\n        } else if (strncmp(tag, \"f\", 1) == 0) {  // face\n\n            long iface_type = 0;\n            char **strings_list = cwobj_splitString(data, ' ', &iface_type);\n\n            int i = 0;\n            for (i = 0; i < iface_type; i++) {\n                char *indices = strings_list[i];\n                char **indices_list = NULL;\n                long ind_list_length = 0;\n\n                indices_list = cwobj_splitString(indices, '/',\n                                                   &ind_list_length);\n                if (!indices_list || ind_list_length == 0) {\n                    continue;\n                }\n\n                if (ind_list_length > 3) {\n                    fprintf(stderr, \"cwobj_load: \\\"%s\\\" warning: unknow face type\\n\", filename);\n                    continue;\n                }\n\n                unsigned int *indice = NULL;\n                indice = (unsigned int *)cwobj_hashTableGet(indices_hash_table,\n                                                          indices);\n\n                if (indice != NULL) { // the data for that indice exist already!\n                    if (cwobj_geomAddIndice(vcwobj_geom, *indice)) {\n                        fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddIndice error)\\n\", filename);\n                        cwobj_free(mesh);\n\n                        fclose(f);\n                        break;\n                    }\n                } else { // the indice does not so we add it with the geom data\n                    unsigned int vertice_indice = atoi(indices_list[0]);\n                    unsigned int vertice_index  = (vertice_indice-1) * 3;\n\n                    if (vertice_indice > obj_geom->vertice_n) continue;\n\n                    float v1 = obj_geom->vertice[vertice_index];\n                    float v2 = obj_geom->vertice[vertice_index+1];\n                    float v3 = obj_geom->vertice[vertice_index+2];\n\n                    if (cwobj_geomAddVertice(vcwobj_geom, v1, v2, v3)) {\n                        fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddVertice error)\\n\", filename);\n                        cwobj_free(mesh);\n\n                        fclose(f);\n                        break;\n                    }\n                    if (cwobj_geomAddIndice(vcwobj_geom, vcwobj_geom->vertice_n-1)) {\n                        fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddIndice error)\\n\", filename);\n                        cwobj_free(mesh);\n\n                        fclose(f);\n                        break;\n                    }\n\n                    if (ind_list_length > 1) {\n                        unsigned int uv_indice = atoi(indices_list[1]);\n                        if (uv_indice > 0) {\n                            unsigned int uv_index = (uv_indice-1) * 2;\n\n                            if (uv_indice > obj_geom->texcoord_n) continue;\n\n                            float u = obj_geom->texcoord[uv_index];\n                            float v = obj_geom->texcoord[uv_index + 1];\n\n                            if (cwobj_geomAddTexcoord(vcwobj_geom, u, v)) {\n                                fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddTexcoord error)\\n\", filename);\n                                cwobj_free(mesh);\n\n                                fclose(f);\n                                break;\n                            }\n                        }\n                    }\n\n                    if (ind_list_length == 3) {\n                        unsigned int normal_indice = atoi(indices_list[2]);\n                        unsigned int normal_index = (normal_indice-1) * 3;\n\n                        if (normal_indice > obj_geom->normal_n) continue;\n\n                        float n1 = obj_geom->normal[normal_index];\n                        float n2 = obj_geom->normal[normal_index + 1];\n                        float n3 = obj_geom->normal[normal_index + 2];\n\n                        if (cwobj_geomAddNormal(vcwobj_geom, n1, n2, n3)) {\n                            fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddNormal error)\\n\", filename);\n                            cwobj_free(mesh);\n\n                            fclose(f);\n                            break;\n                        }\n                    }\n\n                    // we add the indices to the hash table\n                    unsigned int *new_indice = (unsigned int *)malloc(\n                                                        sizeof(unsigned int));\n                    *new_indice = vcwobj_geom->vertice_n-1;\n                    cwobj_hashTableSet(indices_hash_table, indices,\n                                     new_indice);\n                }\n\n                cwobj_freeSplitResult(indices_list, ind_list_length);\n            }\n            cwobj_freeSplitResult(strings_list, iface_type);\n\n            if (iface_type == 3) {\n                vcwobj_geom->prim_type = CWOBJ_GEOMETRY_TRIANGLE;\n            } else {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (unsupported face type)\\n\", filename);\n                cwobj_free(mesh);\n                fclose(f);\n            }\n        } else if (strncmp(tag, \"s\", 1) == 0) {  // smooth\n            if (*data == '1') {\n\n            } else { // flat\n\n            }\n        } else if (strncmp(tag, \"o\", 1) == 0) {  // object\n            mesh_count++;\n            if (mesh_count > 1) { // only one is loaded\n                fclose(f);\n            }\n\n            cwobj_meshSetName(mesh, data);\n        } else if (*tag == 'v' && tag_length == 1) {  // vertice\n            float v1 = cwobj_parseFloat(&data_p);\n            float v2 = cwobj_parseFloat(&data_p);\n            float v3 = cwobj_parseFloat(&data_p);\n\n            if (cwobj_geomAddVertice(obj_geom, v1, v2, v3)) {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddVertice error)\\n\", filename);\n\n                cwobj_free(mesh);\n\t\t\t\tfclose(f);\n            }\n        } else if (strncmp(tag, \"vn\", 2) == 0) { // normal\n            float n1 = cwobj_parseFloat(&data_p);\n            float n2 = cwobj_parseFloat(&data_p);\n            float n3 = cwobj_parseFloat(&data_p);\n\n            if (cwobj_geomAddNormal(obj_geom, n1, n2, n3)) {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddNormal error)\\n\", filename);\n\n                cwobj_free(mesh);\n\t\t\t\tfclose(f);\n            }\n        } else if (strncmp(tag, \"vt\", 2) == 0) { // texcoord\n            float u = cwobj_parseFloat(&data_p);\n            float v = cwobj_parseFloat(&data_p);\n\n            if (cwobj_geomAddTexcoord(obj_geom, u, v)) {\n                fprintf(stderr, \"cwobj_load: \\\"%s\\\" failed (cwobj_geomAddTexcoord error)\\n\", filename);\n\n                cwobj_free(mesh);\n                fclose(f);\n            }\n        } else {\n            fprintf(stderr, \"cwobj_load: unknow .obj tag: \\\"%s\\\"\\n\", tag);\n        }\n\n\t\tfree(line);\n        free(tag);\n        free(data);\n    }\n\n    cwobj_geomFree(obj_geom);\n\n    if (!mesh) {\n        cwobj_geomFree(vcwobj_geom);\n    } else {\n        if (vcwobj_geom->indice_n == 0) {\n            vcwobj_geom->prim_type = CWOBJ_GEOMETRY_POINT;\n        }\n\n        cwobj_meshSetGeometry(mesh, vcwobj_geom);\n\n        // we set it as used in the mtllib so cwobj_objMtlibFree does not free it\n        if (mesh->material) {\n            cwobj_objMtlibSetUsed(mtlib, mesh->material->name);\n        }\n    }\n\n    // free the elements of the hash table\n    unsigned int i = 0;\n    for (i = 0; i < indices_hash_table->table_size; i++) {\n        const char *key = cwobj_hashTableGetKeyAt(indices_hash_table, i);\n        if (!key) continue;\n\n        free(cwobj_hashTableGet(indices_hash_table, key));\n    }\n    cwobj_hashTableFree(indices_hash_table);\n\n    cwobj_objMtlibFree(mtlib);\n\n    fclose(f);\n\n    return mesh;\n}\n\n#endif"
  },
  {
    "path": "custom_backend/dispmanx/fbg_dispmanx.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n\n#include \"fbg_dispmanx.h\"\n\nvoid fbg_dispmanxDraw(struct _fbg *fbg);\nvoid fbg_dispmanxFlip(struct _fbg *fbg);\nvoid fbg_dispmanxFree(struct _fbg *fbg);\n\n#ifdef FBG_MMAL\nstatic void callback_vr_input(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer) {\n    mmal_buffer_header_release(buffer);\n}\n#endif\n\nstruct _fbg *fbg_dispmanxSetup(uint32_t displayNumber, VC_IMAGE_TYPE_T image_type) {\n    int components = 3;\n    if (image_type == VC_IMAGE_RGBA32) {\n        components = 4;\n    } else if (image_type == VC_IMAGE_RGB888) {\n        components = 3;\n    } else {\n        fprintf(stderr, \"fbg_dispmanxSetup: only VC_IMAGE_RGBA32 / VC_IMAGE_RGB888 is supported.\\n\");\n        return NULL;\n    }\n\n    bcm_host_init();\n\n    struct _fbg_dispmanx_context *dispmanx_context = (struct _fbg_dispmanx_context *)calloc(1, sizeof(struct _fbg_dispmanx_context));\n    if (!dispmanx_context) {\n        fprintf(stderr, \"fbg_dispmanxSetup: gles2 context calloc failed!\\n\");\n        return NULL;\n    }\n\n    dispmanx_context->display = vc_dispmanx_display_open(displayNumber);\n    if (dispmanx_context->display == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_display_open failed for display %i\\n\", displayNumber);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    DISPMANX_MODEINFO_T info;\n    int result = vc_dispmanx_display_get_info(dispmanx_context->display, &info);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_display_get_info failed for display %i\\n\", displayNumber);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n#ifdef FBG_MMAL\n    vc_dispmanx_display_close(dispmanx_context->display);\n#else\n    // dispmanx setup\n    uint32_t vc_image_ptr;\n\n    dispmanx_context->resource_type = image_type;\n\n    dispmanx_context->back_resource = vc_dispmanx_resource_create(dispmanx_context->resource_type, info.width, info.height, &vc_image_ptr);\n    if (dispmanx_context->back_resource == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_resource_create failed for display %i\\n\", displayNumber);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    dispmanx_context->front_resource = vc_dispmanx_resource_create(dispmanx_context->resource_type, info.width, info.height, &vc_image_ptr);\n    if (dispmanx_context->front_resource == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_resource_create failed for display %i\\n\", displayNumber);\n        vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    dispmanx_context->update = vc_dispmanx_update_start(0);\n    if (dispmanx_context->update == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_update_start failed for display %i\\n\", displayNumber);\n        vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n        vc_dispmanx_resource_delete(dispmanx_context->front_resource);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    dispmanx_context->src_rect = malloc(sizeof(VC_RECT_T));\n    dispmanx_context->dst_rect = malloc(sizeof(VC_RECT_T));\n\n    if (dispmanx_context->src_rect == 0 || dispmanx_context->dst_rect == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: src/dst rect malloc failed for display %i\\n\", displayNumber);\n        vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n        vc_dispmanx_resource_delete(dispmanx_context->front_resource);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context->src_rect);\n        free(dispmanx_context->dst_rect);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    dispmanx_context->pitch = info.width * 3;\n\n    vc_dispmanx_rect_set(dispmanx_context->src_rect, 0, 0, info.width << 16, info.height << 16);\n    vc_dispmanx_rect_set(dispmanx_context->dst_rect, 0, 0, info.width, info.height);\n\n    VC_DISPMANX_ALPHA_T alpha = {\n        DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS,\n        255, /*alpha 0->255*/\n        0\n    };\n\n    dispmanx_context->elem = vc_dispmanx_element_add(dispmanx_context->update, dispmanx_context->display, 0, dispmanx_context->dst_rect, dispmanx_context->front_resource, dispmanx_context->src_rect, \n        DISPMANX_PROTECTION_NONE, &alpha, NULL, DISPMANX_NO_ROTATE);\n    if (dispmanx_context->elem == 0) {\n        fprintf(stderr, \"fbg_dispmanxSetup: vc_dispmanx_element_add failed for display %i\\n\", displayNumber);\n        vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n        vc_dispmanx_resource_delete(dispmanx_context->front_resource);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context->src_rect);\n        free(dispmanx_context->dst_rect);\n        free(dispmanx_context);\n        return NULL;  \n    }\n\n    result = vc_dispmanx_update_submit_sync(dispmanx_context->update);\n#endif\n\n    struct _fbg *fbg = fbg_customSetup(info.width, info.height, components, 1, 1, (void *)dispmanx_context, fbg_dispmanxDraw, fbg_dispmanxFlip, NULL, fbg_dispmanxFree);\n    if (!fbg) {\n        fprintf(stderr, \"fbg_dispmanxSetup: fbg_customSetup failed\\n\");\n\n        vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n        vc_dispmanx_resource_delete(dispmanx_context->front_resource);\n        vc_dispmanx_display_close(dispmanx_context->display);\n        free(dispmanx_context->src_rect);\n        free(dispmanx_context->dst_rect);\n        free(dispmanx_context);\n\n        return NULL;\n    }\n\n#ifdef FBG_MMAL\n    mmal_component_create(\"vc.ril.video_render\", &dispmanx_context->render);\n    MMAL_COMPONENT_T *render = dispmanx_context->render;\n    dispmanx_context->input = render->input[0];\n    MMAL_PORT_T *input = dispmanx_context->input;\n\n    if (image_type == VC_IMAGE_RGBA32) {\n        input->format->encoding = MMAL_ENCODING_RGBA;\n    else if (image_type == VC_IMAGE_RGB888) {\n        input->format->encoding = MMAL_ENCODING_RGB24;\n    }\n\n    input->format->es->video.width  = VCOS_ALIGN_UP(fbg->width,  32);\n    input->format->es->video.height = VCOS_ALIGN_UP(fbg->height, 16);\n    input->format->es->video.crop.x = 0;\n    input->format->es->video.crop.y = 0;\n    input->format->es->video.crop.width  = fbg->width;\n    input->format->es->video.crop.height = fbg->height;\n    mmal_port_format_commit(input); \n    mmal_component_enable(render);\n    mmal_port_parameter_set_boolean(input, MMAL_PARAMETER_ZERO_COPY, MMAL_TRUE);\n    input->buffer_size = input->buffer_size_recommended;\n    input->buffer_num = input->buffer_num_recommended;\n    \n    if (input->buffer_num < 2) {\n        input->buffer_num = 2;\n    }\n\n    dispmanx_context->pool = mmal_port_pool_create(input, input->buffer_num, input->buffer_size);\n    {\n        MMAL_DISPLAYREGION_T param;\n        param.hdr.id = MMAL_PARAMETER_DISPLAYREGION;\n        param.hdr.size = sizeof(MMAL_DISPLAYREGION_T);\n\n        param.set = MMAL_DISPLAY_SET_LAYER;\n        param.layer = 128;    //On top of most things\n\n        param.set |= MMAL_DISPLAY_SET_ALPHA;\n        param.alpha = 255;    //0 = transparent, 255 = opaque\n\n        param.set |= (MMAL_DISPLAY_SET_DEST_RECT | MMAL_DISPLAY_SET_FULLSCREEN);\n        param.fullscreen = MMAL_FALSE;\n        param.dest_rect.x = 0;\n        param.dest_rect.y = 0;\n        param.dest_rect.width = fbg->width;\n        param.dest_rect.height = fbg->height;\n        mmal_port_parameter_set(input, &param.hdr);\n    }\n    mmal_port_enable(input, callback_vr_input);\n#endif\n    return fbg;\n}\n\nvoid fbg_dispmanxOnFlip(struct _fbg *fbg, void (*opt_flip)(struct _fbg *fbg)) {\n    struct _fbg_dispmanx_context *dispmanx_context = fbg->user_context;\n\n    dispmanx_context->opt_flip = opt_flip;\n}\n\nvoid fbg_dispmanxDraw(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = fbg->user_context;\n\n#ifdef FBG_MMAL\n    MMAL_BUFFER_HEADER_T *buffer = mmal_queue_wait(dispmanx_context->pool->queue);\n\n    memcpy(buffer->data, fbg->back_buffer, fbg->size);\n\n    buffer->length = buffer->alloc_size;\n    mmal_port_send_buffer(dispmanx_context->input, buffer);\n#else\n    int ret = vc_dispmanx_resource_write_data(dispmanx_context->back_resource, dispmanx_context->resource_type, dispmanx_context->pitch, fbg->back_buffer, dispmanx_context->dst_rect);\n#endif\n}\n\nvoid fbg_dispmanxFlip(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = fbg->user_context;\n\n#ifndef FBG_MMAL\n    dispmanx_context->update = vc_dispmanx_update_start(0);\n\n    vc_dispmanx_element_change_source(dispmanx_context->update, dispmanx_context->elem, dispmanx_context->back_resource);\n\n    DISPMANX_RESOURCE_HANDLE_T tmp = dispmanx_context->front_resource;\n    dispmanx_context->front_resource = dispmanx_context->back_resource;\n    dispmanx_context->back_resource = tmp;\n\n    if (dispmanx_context->opt_flip) {\n        dispmanx_context->opt_flip(fbg);\n    }\n\n    vc_dispmanx_update_submit_sync(dispmanx_context->update);\n#endif\n}\n\nvoid fbg_dispmanxFree(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = fbg->user_context;\n\n    int result;\n\n#ifdef FBG_MMAL\n    mmal_port_disable(dispmanx_context->input);\n    mmal_component_destroy(dispmanx_context->render);\n#else\n    dispmanx_context->update = vc_dispmanx_update_start(0);\n    result = vc_dispmanx_element_remove(dispmanx_context->update, dispmanx_context->elem);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxFree: vc_dispmanx_element_remove failed\\n\");\n    }\n\n    result = vc_dispmanx_update_submit_sync(dispmanx_context->update);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxFree: vc_dispmanx_update_submit_sync failed\\n\");\n    }\n\n    result = vc_dispmanx_resource_delete(dispmanx_context->back_resource);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxFree: vc_dispmanx_resource_delete failed\\n\");\n    }\n\n    result = vc_dispmanx_resource_delete(dispmanx_context->front_resource);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxFree: vc_dispmanx_resource_delete failed\\n\");\n    }\n\n    result = vc_dispmanx_display_close(dispmanx_context->display);\n    if (result != 0) {\n        fprintf(stderr, \"fbg_dispmanxFree: vc_dispmanx_display_close failed\\n\");\n    }\n#endif\n\n    free(dispmanx_context);\n}\n"
  },
  {
    "path": "custom_backend/dispmanx/fbg_dispmanx.h",
    "content": "/*\n    Copyright (c) 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_DISPMANX_H\n#define FB_GRAPHICS_DISPMANX_H\n\n    #include <sys/ioctl.h>\n    #include <linux/fb.h>\n    #include <unistd.h>\n    #include <fcntl.h>\n\n    #include <GLES2/gl2.h>\n    #include <EGL/egl.h>\n    #include <EGL/eglext.h>\n\n    #include \"bcm_host.h\"\n\n    #include \"fbgraphics.h\"\n\n#ifdef FBG_MMAL\n    #include <interface/mmal/mmal.h>\n    #include <interface/mmal/util/mmal_util.h>\n    #include <interface/mmal/util/mmal_connection.h>\n    #include <interface/mmal/util/mmal_util_params.h>\n#endif\n\n    //! dispmanx wrapper data structure\n    struct _fbg_dispmanx_context {\n#ifdef FBG_MMAL\n      //! MMAL component\n      MMAL_COMPONENT_T *render;\n      //! MMAL input port\n      MMAL_PORT_T *input;\n      //! MMAL pool\n      MMAL_POOL_T *pool;\n#endif\n      //! dispmanx display\n      DISPMANX_DISPLAY_HANDLE_T display;\n      //! dispmanx back resource\n      DISPMANX_RESOURCE_HANDLE_T back_resource;\n      //! dispmanx front resource\n      DISPMANX_RESOURCE_HANDLE_T front_resource;\n      //! dispmanx elem\n      DISPMANX_ELEMENT_HANDLE_T elem;\n      //! dispmanx image type (RGB888)\n      VC_IMAGE_TYPE_T resource_type;\n      //! dispmanx update\n      DISPMANX_UPDATE_HANDLE_T update;\n      //! dispmanx src rect\n      VC_RECT_T *src_rect;\n      //! dispmanx src rect\n      VC_RECT_T *dst_rect;\n\n      //! optional flip content (will be executed between dispmanx start / sync)\n      void (*opt_flip)(struct _fbg *fbg);\n\n      //! fbg->width * 3\n      int pitch;\n    };\n\n    //! initialize a FB Graphics dispmanx context\n    /*!\n      \\param displayNumber dispmanx display number\n      \\return FBG data structure pointer\n    */\n    extern struct _fbg *fbg_dispmanxSetup(uint32_t displayNumber);\n\n    //! add additional flip content (will be executed between dispmanx start / sync)\n    /*!\n      \\param fbg FBG data structure pointer\n      \\param opt_flip flip function executed between dispmanx start / sync upong fbg_flip() call\n    */\n    extern void fbg_dispmanxOnFlip(struct _fbg *fbg, void (*opt_flip)(struct _fbg *fbg));\n\n#endif"
  },
  {
    "path": "custom_backend/dispmanx_example.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"dispmanx/fbg_dispmanx.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_dispmanxSetup(0, VC_IMAGE_RGB888);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    float x = 0, y = 0, velx = 3.4, vely = 3.425;\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_clear(fbg, 0);\n\n        fbg_rect(fbg, x, y, 40, 40, 255, 0, 0);\n\n        fbg_write(fbg, fbg->fps_char, 2, 2);\n\n        fbg_draw(fbg);\n\n        fbg_flip(fbg);\n\n        x += velx;\n        y += vely;\n\n        if (x <= 0 || x > fbg->width - 40) {\n            velx = -velx;\n        }\n\n        if (y <= 0 || y > fbg->height - 40) {\n            vely = -vely;\n        }\n    } while (keep_running);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/dispmanx_parallel.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"dispmanx/fbg_dispmanx.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// user data example\nstruct _fragment_user_data {\n    float offset_x;\n    float offset_y;\n    float velx;\n    float vely;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->offset_x = fbg->task_id * 32.0f;\n    user_data->offset_y = fbg->task_id * 32.0f;\n\n    float signx = 1;\n    float signy = 1;\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signx = -1;\n    }\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signy = -1;\n    }\n\n    user_data->velx = fbg_randf(4, 8) * signx;\n    user_data->vely = fbg_randf(4, 8) * signy;\n\n    return user_data;\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    float c = (float)fbg->task_id / fbg->parallel_tasks * 255;\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n        \n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    ud->offset_x += ud->velx;\n    ud->offset_y += ud->vely;\n\n    if (ud->offset_x <= 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = 32;\n    } else if (ud->offset_x > fbg->width - 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = fbg->width - 32;\n    }\n\n    if (ud->offset_y <= 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = 32;\n    } else if (ud->offset_y > fbg->height - 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = fbg->height - 32;\n    }\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\n// we can use regular buffers mixing but be aware that it may be very slow at high resolution due to the amount of pixels to be mixed on the main thread\n// as such in this example we don't use this mixing function but the accelerated one below\nvoid fbg_XORMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    for (int j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = fbg->back_buffer[j] ^ buffer[j];\n    }\n}\n\n// in the following functions we let the mixing be done by dispmanx by sending each buffer data to an assigned layer (see fbg_mixing)\n// we use a mask for each threads to select which pixel we want to display\nDISPMANX_RESOURCE_HANDLE_T *back_resources;\nDISPMANX_RESOURCE_HANDLE_T *front_resources;\nDISPMANX_ELEMENT_HANDLE_T *elems;\nvoid setupDispmanxMixing(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = (struct _fbg_dispmanx_context *)fbg->user_context;\n\n    back_resources = (DISPMANX_RESOURCE_HANDLE_T *)malloc(sizeof(DISPMANX_RESOURCE_HANDLE_T) * fbg->parallel_tasks);\n    front_resources = (DISPMANX_RESOURCE_HANDLE_T *)malloc(sizeof(DISPMANX_RESOURCE_HANDLE_T) * fbg->parallel_tasks);\n    elems = (DISPMANX_ELEMENT_HANDLE_T *)malloc(sizeof(DISPMANX_ELEMENT_HANDLE_T) * fbg->parallel_tasks);\n\n    // you can change how layers should be mixed here\n    VC_DISPMANX_ALPHA_T alpha = {\n        DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS | DISPMANX_FLAGS_ALPHA_PREMULT,\n        128, /*alpha 0->255*/\n        0\n    };\n\n    dispmanx_context->update = vc_dispmanx_update_start(0);\n\n    uint32_t vc_image_ptr;\n    for (int i = 0; i < fbg->parallel_tasks; i += 1) {\n        back_resources[i] = vc_dispmanx_resource_create(dispmanx_context->resource_type, fbg->width, fbg->height, &vc_image_ptr);\n        front_resources[i] = vc_dispmanx_resource_create(dispmanx_context->resource_type, fbg->width, fbg->height, &vc_image_ptr);\n        elems[i] = vc_dispmanx_element_add(dispmanx_context->update, dispmanx_context->display, (i + 1), dispmanx_context->dst_rect, dispmanx_context->front_resource, dispmanx_context->src_rect, \n            DISPMANX_PROTECTION_NONE, &alpha, NULL, DISPMANX_NO_ROTATE);\n    }\n\n    vc_dispmanx_update_submit_sync(dispmanx_context->update);\n}\n\n// 'accelerated' mixing by using dispmanx, this is much faster (about 4x than single thread mixing at 1920x1080; around 8fps)\nvoid fbg_mixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    struct _fbg_dispmanx_context *dispmanx_context = (struct _fbg_dispmanx_context *)fbg->user_context;\n\n    int ret = vc_dispmanx_resource_write_data(back_resources[task_id - 1], dispmanx_context->resource_type, dispmanx_context->pitch, buffer, dispmanx_context->dst_rect);\n}\n\nvoid fbg_mixingFlip(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = (struct _fbg_dispmanx_context *)fbg->user_context;\n\n    for (int i = 0; i < fbg->parallel_tasks; i += 1) {\n        //dispmanx_context->update = vc_dispmanx_update_start(0);\n        vc_dispmanx_element_change_source(dispmanx_context->update, elems[i], back_resources[i]);\n\n        DISPMANX_RESOURCE_HANDLE_T tmp = front_resources[i];\n        front_resources[i] = back_resources[i];\n        back_resources[i] = tmp;\n        //vc_dispmanx_update_submit_sync(dispmanx_context->update);\n    }\n}\n\nvoid freeDispmanxMixing(struct _fbg *fbg) {\n    struct _fbg_dispmanx_context *dispmanx_context = (struct _fbg_dispmanx_context *)fbg->user_context;\n    \n    int result;\n    for (int i = 0; i < fbg->parallel_tasks; i += 1) {\n        result = vc_dispmanx_resource_delete(back_resources[i]);\n        result = vc_dispmanx_resource_delete(front_resources[i]);\n        result = vc_dispmanx_element_remove(dispmanx_context->update, elems[i]);\n    }\n}\n//\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_dispmanxSetup(0, VC_IMAGE_RGB888);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    // only required with fbg_draw(fbg, fbg_mixing);\n    setupDispmanxMixing(fbg);\n    fbg_dispmanxOnFlip(fbg, fbg_mixingFlip);\n    //\n\n    srand(time(NULL));\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_clear(fbg, 0);\n        \n        // regular mixing, slow at high resolution / use much main thread resources\n        //fbg_draw(fbg, fbg_XORMixing);\n\n        for (int j = 0; j < fbg->parallel_tasks; j += 1) {\n            fbg_write(fbg, fbg->fps_char, 2, 2 + j * 10);\n        }\n\n        fbg_draw(fbg, fbg_mixing);\n        \n        fbg_flip(fbg);\n    } while (keep_running);\n\n    // only required with fbg_draw(fbg, fbg_mixing);\n    freeDispmanxMixing(fbg);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/dispmanx_pure_parallel.c",
    "content": "/*\n    example of parallelism without libraries / fbg builtin parallelism\n\n    sometimes fbg parallelism may be uneeded; this is the case when you don't want to mix stuff and just want to push some pixels!\n    \n    this example split the screen vertically in 4 parts handled by one thread each, it set pixels color / parts (a clear)\n\n    the only synchronization mechanism is a pthread barrier to wait threads result before being sent to GPU\n\n    run at 13 fps @ 1080p on Raspberry PI 3B with OpenGL ES 2 backend\n    run at 20 fps @ 1080p on Raspberry PI 3B with dispmanx backend\n\n    without barrier it run at 50 fps @ 1080p on Raspberry PI 3B with dispmanx backend\n    note : for each threads except the main thread which run at 20 fps due to its additional task of CPU -> GPU transfer\n\n    run at 60 fps @ 720p on Raspberry PI 3B with dispmanx backend\n*/\n\n#include <stdatomic.h>\n#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <math.h>\n\n#include \"dispmanx/fbg_dispmanx.h\"\n\natomic_int keep_running = 1;\n\nstruct _fbg *fbg;\n\nstatic pthread_barrier_t sync_barrier;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nvoid compute(int id) {\n    int n = 4;// threads\n\n    int xx = 0, yy = 0, w3 = fbg->width * fbg->components;\n    int x = 0;\n    int y = fbg->height / 4 * id;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (yy = 0; yy < fbg->height / n; yy += 1) {\n        for (xx = 0; xx < fbg->width; xx += 1) {\n            *pix_pointer++ = id == 1 ? 255 : 0;\n            *pix_pointer++ = id == 2 ? 255 : 0;\n            *pix_pointer++ = id == 3 ? 255 : 0;\n            pix_pointer += fbg->comp_offset;\n        }\n\n        pix_pointer += (fbg->line_length - w3);\n    }\n}\n\nvoid *process(void *t) {\n    int id = *((int *)t);\n\n    int frame;\n    int print_fps = 0;\n\n    struct timeval fps_start;\n    struct timeval fps_stop;\n    gettimeofday(&fps_stop, NULL);\n\n    struct _fbg *my_fbg = fbg;\n\n    while (keep_running) {\n        compute(id);\n\n        // sync\n        pthread_barrier_wait(&sync_barrier);\n\n        // framerate\n        gettimeofday(&fps_stop, NULL);\n        double ms = (fps_stop.tv_sec - fps_start.tv_sec) * 1000000.0 - (fps_stop.tv_usec - fps_start.tv_usec);\n        if (ms >= 1000.0) {\n            gettimeofday(&fps_start, NULL);\n\n            print_fps += 1;\n            if ((print_fps % 5) == 0) {\n                printf(\"%i: %lu fps\\n\", id, (long unsigned int)frame);\n                fflush(stdout);\n            }\n\n            frame = 0;\n        }\n\n        frame += 1;\n    }\n}\n\nint main(int argc, char* argv[]) {\n    fbg = fbg_dispmanxSetup(0, VC_IMAGE_RGB888);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    signal(SIGINT, int_handler);\n\n    // threads setup\n    pthread_t threads[3];\n    int t1 = 1;\n    pthread_create(&threads[0], NULL, process, &t1);\n    int t2 = 2;\n    pthread_create(&threads[1], NULL, process, &t2);\n    int t3 = 3;\n    pthread_create(&threads[2], NULL, process, &t3);\n\n    pthread_barrier_init(&sync_barrier, NULL, 4);\n\n    do {\n        //fbg_clear(fbg, 0);\n        compute(0);\n\n        fbg_write(fbg, fbg->fps_char, 2, 2);\n\n        pthread_barrier_wait(&sync_barrier);\n\n        fbg_draw(fbg);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    pthread_join(threads[0], NULL);\n    pthread_join(threads[1], NULL);\n    pthread_join(threads[2], NULL);\n\n    pthread_barrier_destroy(&sync_barrier);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/fbdev/fbg_fbdev.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <fcntl.h>\n#include <unistd.h>\n#include <sys/mman.h>\n#include <sys/ioctl.h>\n#include <linux/kd.h>\n\n#include \"fbg_fbdev.h\"\n\nvoid fbg_fbdevDraw(struct _fbg *fbg);\nvoid fbg_fbdevFlip(struct _fbg *fbg);\nvoid fbg_fbdevFree(struct _fbg *fbg);\n\nstruct _fbg *fbg_fbdevSetup(char *fb_device, int page_flipping) {\n    struct _fbg_fbdev_context *fbdev_context = (struct _fbg_fbdev_context *)calloc(1, sizeof(struct _fbg_fbdev_context));\n    if (!fbdev_context) {\n        fprintf(stderr, \"fbg_fbdevSetup: fbdev context calloc failed!\\n\");\n        return NULL;\n    }\n\n    char *default_fb_device = \"/dev/fb0\";\n    fb_device = fb_device ? fb_device : default_fb_device;\n\n    fbdev_context->fd = open(fb_device, O_RDWR);\n\n    if (fbdev_context->fd == -1) {\n        fprintf(stderr, \"fbg_fbdevSetup: Cannot open '%s'!\\n\", fb_device);\n\n        free(fbdev_context);\n\n        return NULL;\n    }\n\n    if (ioctl(fbdev_context->fd, FBIOGET_VSCREENINFO, &fbdev_context->vinfo) == -1) {\n        fprintf(stderr, \"fbg_fbdevSetup: '%s' Cannot obtain framebuffer FBIOGET_VSCREENINFO informations!\\n\", fb_device);\n\n        close(fbdev_context->fd);\n\n        free(fbdev_context);\n\n        return NULL;\n    }\n\n    if (ioctl(fbdev_context->fd, FBIOGET_FSCREENINFO, &fbdev_context->finfo) == -1) {\n        fprintf(stderr, \"fbg_fbdevSetup: '%s' Cannot obtain framebuffer FBIOGET_FSCREENINFO informations!\\n\", fb_device);\n\n        close(fbdev_context->fd);\n\n        free(fbdev_context);\n\n        return NULL;\n    }\n\n    fprintf(stdout, \"fbg_fbdevSetup: '%s' (%dx%d (%dx%d virtual) %d bpp (%d/%d, %d/%d, %d/%d) (%d smen_len) %d line_length)\\n\",\n        fb_device,\n        fbdev_context->vinfo.xres, fbdev_context->vinfo.yres,\n        fbdev_context->vinfo.xres_virtual, fbdev_context->vinfo.yres_virtual,\n        fbdev_context->vinfo.bits_per_pixel,\n        fbdev_context->vinfo.red.length,\n        fbdev_context->vinfo.red.offset,\n        fbdev_context->vinfo.green.length,\n        fbdev_context->vinfo.green.offset,\n        fbdev_context->vinfo.blue.length,\n        fbdev_context->vinfo.blue.offset,\n        fbdev_context->finfo.smem_len,\n        fbdev_context->finfo.line_length);\n\n    if (fbdev_context->vinfo.bits_per_pixel != 16 && fbdev_context->vinfo.bits_per_pixel != 24 && fbdev_context->vinfo.bits_per_pixel != 32) {\n        fprintf(stderr, \"fbg_fbdevSetup: '%s' Unsupported format (only 16, 24 or 32 bits framebuffer is supported)!\\n\", fb_device);\n\n        close(fbdev_context->fd);\n\n        free(fbdev_context);\n\n        return NULL;\n    }\n\n    int components = 3;\n\n    if (fbdev_context->vinfo.bits_per_pixel == 16) {\n        fprintf(stdout, \"fbg_fbdevSetup: 16 bpp framebuffer detected; page flipping option not supported; all graphics operations will be managed in 24 bits then converted to 16 bpp before drawing.\\n\");\n\n        page_flipping = 0;\n    } else {\n        components = fbdev_context->vinfo.bits_per_pixel / 8;\n    }\n\n    struct _fbg *fbg = fbg_customSetup(fbdev_context->vinfo.xres, fbdev_context->vinfo.yres, components, 0, 0, (void *)fbdev_context, fbg_fbdevDraw, fbg_fbdevFlip, NULL, fbg_fbdevFree);\n    if (!fbg) {\n        fprintf(stderr, \"fbg_fbdevSetup: fbg_customSetup failed\\n\");\n\n        close(fbdev_context->fd);\n\n        free(fbdev_context);\n\n        return NULL;\n    }\n\n    if ((fbdev_context->vinfo.bits_per_pixel == 24 || fbdev_context->vinfo.bits_per_pixel == 32) &&\n        fbdev_context->vinfo.red.length == 8 &&\n        fbdev_context->vinfo.red.offset == 16 &&\n        fbdev_context->vinfo.green.length == 8 &&\n        fbdev_context->vinfo.blue.length == 8 &&\n        fbdev_context->vinfo.blue.offset == 0 &&\n        fbdev_context->vinfo.green.offset == 8) {\n        fbg->bgr = 1;\n    }\n\n    if (fbdev_context->vinfo.bits_per_pixel == 16 &&\n        fbdev_context->vinfo.red.offset == 11) {\n        fbg->bgr = 1;\n    }\n\n    if (page_flipping) {\n        // check for page flipping support\n        if (ioctl(fbdev_context->fd, FBIOPAN_DISPLAY, &fbdev_context->vinfo) == -1) {\n            fprintf(stderr, \"fbg_fbdevSetup: '%s' FBIOPAN_DISPLAY / page flipping not supported!\\n\", fb_device);\n        } else {\n            // double the virtual height\n            fbdev_context->vinfo.yres_virtual = fbdev_context->vinfo.yres_virtual * 2;\n            if (ioctl(fbdev_context->fd, FBIOPUT_VSCREENINFO, &fbdev_context->vinfo) == -1) {\n                fprintf(stderr, \"fbg_fbdevSetup: '%s' FBIOPUT_VSCREENINFO failed, page flipping disabled!\\n\", fb_device);\n            } else {\n                fbdev_context->page_flipping = 1;\n\n                fprintf(stdout, \"fbg_fbdevSetup: '%s' Page flipping enabled (virtual height was doubled)!\\n\", fb_device);\n\n                if (ioctl(fbdev_context->fd, FBIOGET_FSCREENINFO, &fbdev_context->finfo) == -1) {\n                    fprintf(stderr, \"fbg_fbdevSetup: '%s' Cannot obtain framebuffer FBIOGET_FSCREENINFO informations!\\n\", fb_device);\n\n                    close(fbdev_context->fd);\n\n                    free(fbdev_context);\n\n                    return NULL;\n                }\n            }\n        }\n\n        if (!fbdev_context->page_flipping) {\n            fprintf(stderr, \"fbg_fbdevSetup: '%s' FBIOPAN_DISPLAY / page flipping not supported!\\n\", fb_device);\n        }\n    }\n\n    // initialize framebuffer\n    fbdev_context->buffer = (unsigned char *)mmap(0, fbdev_context->finfo.smem_len,\n        PROT_WRITE,\n        MAP_SHARED,\n        fbdev_context->fd, 0);\n\n    memset(fbdev_context->buffer, 0, fbdev_context->finfo.smem_len);\n\n    // setup page flipping\n    if (fbdev_context->page_flipping) {\n        fbg->disp_buffer = fbdev_context->buffer;\n        fbg->back_buffer = fbdev_context->buffer + fbg->width * fbg->components * fbg->height;\n    } else {\n        // setup front & back buffers\n        fbg->back_buffer = calloc(1, fbg->size * sizeof(char));\n        if (!fbg->back_buffer) {\n            fprintf(stderr, \"fbg_fbdevSetup: back_buffer calloc failed!\\n\");\n\n            close(fbdev_context->fd);\n\n            free(fbdev_context);\n\n            return NULL;\n        }\n\n        fbg->disp_buffer = calloc(1, fbg->size * sizeof(char));\n        if (!fbg->disp_buffer) {\n            fprintf(stderr, \"fbg_fbdevSetup: disp_buffer calloc failed!\\n\");\n\n            free(fbg->back_buffer);\n            close(fbdev_context->fd);\n\n            free(fbdev_context);\n\n            return NULL;\n        }\n    }\n\n    return fbg;\n}\n\nvoid fbg_fbdevDraw(struct _fbg *fbg) {\n    struct _fbg_fbdev_context *fbdev_context = fbg->user_context;\n\n#ifdef FBIO_WAITFORVSYNC\n    static int dummy = 0;\n    ioctl(fbdev_context->fd, FBIO_WAITFORVSYNC, &dummy);\n#endif\n\n    if (fbdev_context->page_flipping == 0) {\n        if (fbdev_context->vinfo.bits_per_pixel == 16) {\n            unsigned char *pix_pointer_src = fbg->disp_buffer;\n            unsigned char *pix_pointer_dst = fbdev_context->buffer;\n\n            int i = 0;\n\n            for (i = 0; i < fbg->width_n_height; i += 1) {\n                unsigned int v = ((*pix_pointer_src++ >> 3) & 0x1f);\n                v |= ((*pix_pointer_src++ >> 2) & 0x3f) << 5;\n                v |= ((*pix_pointer_src++ >> 3) & 0x1f) << 11;\n\n                *pix_pointer_dst++ = v;\n                *pix_pointer_dst++ = v >> 8;;\n            }\n        } else {\n            memcpy(fbdev_context->buffer, fbg->disp_buffer, fbg->size);\n        }\n    }\n}\n\nvoid fbg_fbdevFlip(struct _fbg *fbg) {\n    struct _fbg_fbdev_context *fbdev_context = fbg->user_context;\n    \n    if (fbdev_context->page_flipping) {\n        if (fbdev_context->vinfo.yoffset == 0) {\n            fbdev_context->vinfo.yoffset = fbg->height;\n        } else {\n            fbdev_context->vinfo.yoffset = 0;\n        }\n\n        if (ioctl(fbdev_context->fd, FBIOPAN_DISPLAY, &fbdev_context->vinfo) == -1) {\n            fprintf(stderr, \"fbg_fbdevFlip: FBIOPAN_DISPLAY failed!\\n\");\n        }\n    }\n\n    unsigned char *tmp_buffer = fbg->disp_buffer;\n    fbg->disp_buffer = fbg->back_buffer;\n    fbg->back_buffer = tmp_buffer;\n}\n\nvoid fbg_fbdevFree(struct _fbg *fbg) {\n    struct _fbg_fbdev_context *fbdev_context = fbg->user_context;\n\n    if (!fbdev_context->page_flipping) {\n        free(fbg->back_buffer);\n        free(fbg->disp_buffer);\n    }\n\n    if (fbdev_context->buffer) {\n        munmap(fbdev_context->buffer, fbdev_context->finfo.smem_len);\n        close(fbdev_context->fd);\n    }\n\n    free(fbdev_context);\n}\n"
  },
  {
    "path": "custom_backend/fbdev/fbg_fbdev.h",
    "content": "/*\n    Copyright (c) 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_FBDEV_H\n#define FB_GRAPHICS_FBDEV_H\n\n    #include <linux/fb.h>\n    #include \"fbgraphics.h\"\n\n    //! fbdev wrapper data structure\n    struct _fbg_fbdev_context {\n      //! Framebuffer device file descriptor\n      int fd;\n\n      //! Memory-mapped framebuffer\n      unsigned char *buffer;\n    \n      //! Framebuffer device var. informations\n      struct fb_var_screeninfo vinfo;\n      //! Framebuffer device fix. informations\n      struct fb_fix_screeninfo finfo;\n\n      //! Flag indicating that page flipping is enabled\n      int page_flipping;\n    };\n\n    //! initialize a FB Graphics context (framebuffer)\n    /*!\n      \\param fb_device framebuffer device (example : /dev/fb0)\n      \\param page_flipping wether to use page flipping mechanism for double buffering (slow on some devices)\n      \\return _fbg structure pointer to pass to any FBG library functions\n    */\n    extern struct _fbg *fbg_fbdevSetup(char *fb_device, int page_flipping);\n\n    //! initialize a FB Graphics context with '/dev/fb0' as framebuffer device and no page flipping\n    #define fbg_fbdevInit() fbg_fbdevSetup(NULL, 0)\n#endif\n"
  },
  {
    "path": "custom_backend/gba/fbg_gba.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include \"fbg_gba.h\"\n\nvoid fbg_gbaDraw(struct _fbg *fbg);\n\nstruct _fbg *fbg_gbaSetup(int mode) {\n    struct _fbg_gba_context *gba_context = (struct _fbg_gba_context *)calloc(1, sizeof(struct _fbg_gba_context));\n    if (!gba_context) {\n        return NULL;\n    }\n\n    gba_context->mode = mode;\n\n    *(unsigned int*)0x04000000 = 0x0400 + mode;\n\n    gba_context->buffer = ((unsigned short*)0x06000000);\n\n    int width = 240;\n    int height = 160;\n    if (mode == 5) {\n        width = 160;\n        height = 128;\n    }\n\n    struct _fbg *fbg = fbg_customSetup(width, height, 3, 0, 0, (void *)gba_context, fbg_gbaDraw, NULL, NULL, NULL);\n    if (!fbg) {\n        return NULL;\n    }\n\n    fbg->back_buffer = calloc(1, fbg->size * sizeof(char));\n    if (!fbg->back_buffer) {\n        return NULL;\n    }\n    \n    return fbg;\n}\n\nvoid fbg_gbaDraw(struct _fbg *fbg) {\n    struct _fbg_gba_context *gba_context = fbg->user_context;\n\n    int x, y;\n    for (x = 0; x < 240; ++x) {\n        for (y = 0; y < 160; ++y) {\n            int index = x + y * 240;\n\n            int red = fbg->back_buffer[index * fbg->components];\n            int green = fbg->back_buffer[index * fbg->components + 1];\n            int blue = fbg->back_buffer[index * fbg->components + 2];\n            gba_context->buffer[index] = (((red >> 3) & 31) | (((green >> 3) & 31) << 5) | (((blue >> 3) & 31) << 10));\n        }\n    }\n}\n"
  },
  {
    "path": "custom_backend/gba/fbg_gba.h",
    "content": "/*\n    Copyright (c) 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_GBA_H\n#define FB_GRAPHICS_GBA_H\n\n    #include \"fbgraphics.h\"\n\n    //! fbdev wrapper data structure\n    struct _fbg_gba_context {\n      int mode;\n\n      unsigned short *buffer;\n    };\n\n    //! initialize a FB Graphics context\n    /*!\n      \\param mode GBA bitmap modes (3 = 240x160x16, 4 = 240x160x8 page flip, 5 = 160x128x16 page flip)\n      \\return _fbg structure pointer to pass to any FBG library functions\n    */\n    extern struct _fbg *fbg_gbaSetup(int mode);\n#endif"
  },
  {
    "path": "custom_backend/gba_example.c",
    "content": "// may need devkitpro / devkitarm\n// https://github.com/JamieDStewart/GBA_VSCode_Basic\n\n#include \"gba/fbg_gba.h\"\n\nint main()\n{\n\tstruct _fbg *fbg = fbg_gbaSetup(3);\n\n\tfbg_line(fbg, 0, 0, fbg->width, fbg->height, 255, 0, 0);\n\n\twhile (1) {\n\t\tfbg_draw(fbg);\n\t}\n\n\treturn 0;\n}"
  },
  {
    "path": "custom_backend/glfw/fbg_glfw.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n\n#include \"fbg_glfw.h\"\n\nconst GLfloat fbg_glfwQuad[] = { -1.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, // vertices\n                        0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f }; // UV\n\nconst char *fbg_glfwSimpleVs = \"#version 330\\n \\\n                  layout(location = 0) in vec3 vp; \\\n                  layout(location = 1) in vec2 vu; \\\n                  out vec2 uv; \\\n                  void main() { \\\n                      uv = vu; \\\n                      gl_Position = vec4(vp, 1.0); \\\n                  }\";\n\nconst char *fbg_glfwSimpleFs = \"#version 330\\n \\\n                  in vec2 uv; \\\n                  out vec4 final_color; \\\n                  uniform sampler2D t0; \\\n                  void main() { \\\n                      final_color = texture(t0, uv); \\\n                  }\";\n\nconst char *fbg_glfwDownsampleFs = \"#version 330\\n \\\n                  in vec2 uv; \\\n                  out vec4 final_color; \\\n                  uniform sampler2D t0; \\\n                  uniform int ssaa; \\\n                  void main() { \\\n                    vec3 accum = vec3(0., 0., 0.); \\\n                    vec2 target_res = textureSize(t0, 0) / ssaa; \\\n                    float x_subpix_off = 1.0 / (target_res.x * float(ssaa)); \\\n                    float y_subpix_off = 1.0 / (target_res.y * float(ssaa)); \\\n                    for (int i=0; i < ssaa; i++) { \\\n                        for (int j=0; j < ssaa; j++) { \\\n                            vec2 sample_uv = vec2(uv.x + float(i) * x_subpix_off, uv.y + float(j) * y_subpix_off); \\\n                            accum += texture2D(t0, sample_uv).rgb; \\\n                        } \\\n                    } \\\n                    vec3 final = accum / (floor(float(ssaa)) * floor(float(ssaa))); \\\n                      final_color = vec4(final, 0.); \\\n                  }\";\n\nstruct _fbg **fbg_contexts = NULL;\nint fbg_contexts_count = 0;\n\nvoid fbg_glfwDraw(struct _fbg *fbg);\nvoid fbg_glfwFlip(struct _fbg *fbg);\nvoid fbg_glfwFree(struct _fbg *fbg);\n\nvoid GLAPIENTRY fbg_debugGlCb(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam ) {\n  fprintf(stderr, \"GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\\n\",\n           ( type == GL_DEBUG_TYPE_ERROR ? \"** GL ERROR **\" : \"\" ),\n            type, severity, message);\n}\n\nvoid fbg_glfwFramebufferResizeCb(GLFWwindow* window, int new_width, int new_height) {\n    int i = 0;\n    for (i = 0; i < fbg_contexts_count; i += 1) {\n        struct _fbg *fbg = fbg_contexts[i];\n        struct _fbg_glfw_context *glfw_context = fbg->user_context;\n        if (glfw_context->window == window) {\n            fbg_pushResize(fbg, new_width * glfw_context->ssaa, new_height * glfw_context->ssaa);\n            // called from fbg_resize\n            //fbg_glfwResize(fbg, new_width, new_height);\n\n            break;\n        }\n    }\n}\n\nstruct _fbg *fbg_glfwSetup(int width, int height, int components, const char *title, int monitor_id, int fullscreen, int ssaa) {\n    struct _fbg_glfw_context *glfw_context = (struct _fbg_glfw_context *)calloc(1, sizeof(struct _fbg_glfw_context));\n    if (!glfw_context) {\n        fprintf(stderr, \"fbg_glfwSetup: glfw context calloc failed!\\n\");\n        return NULL;\n    }\n\n    GLFWmonitor *monitor = NULL;\n    GLFWwindow *share = NULL;\n\n    if (!glfwInit()) {\n        fprintf(stderr, \"fbg_glfwSetup : glfwInit failed!\\n\");\n    }\n\n    glfwWindowHint(GLFW_REFRESH_RATE, 60);\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);\n    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);\n\n    int monitor_count = 0;\n    int i = 0;\n    GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);\n    for (i = 0; i < monitor_count; i += 1) {\n        if (monitor_id == i) {\n            monitor = monitors[i];\n            break;\n        }\n    }\n\n    const GLFWvidmode *window_mode = glfwGetVideoMode(monitor);\n\n    if (fullscreen == 0) {\n        monitor = NULL;\n    } else if (fullscreen == 2) {\n        width = window_mode->width;\n        height = window_mode->height;\n    }\n\n    GLFWwindow *window = (void *)glfwCreateWindow(width, height, title, monitor, share);\n    if (!window) {\n        glfwTerminate();\n\n        fprintf(stderr, \"fbg_glfwSetup : glfwCreateWindow failed!\\n\");\n\n        free(glfw_context);\n\n        return NULL;\n    }\n\n    if (fullscreen == 1) {\n        glfwSetWindowMonitor(window, monitor, 0, 0, width, height, window_mode->refreshRate);\n    }\n\n    glfwMakeContextCurrent(window);\n\n    GLenum err = glewInit();\n    if (err != GLEW_OK) {\n        fprintf(stderr, \"fbg_glfwSetup : glewInit failed '%s'\\n\", glewGetErrorString(err));\n\n        glfwTerminate();\n\n        free(glfw_context);\n\n        return NULL;\n    }\n\n    glfwSwapInterval(1);\n\n#ifdef DEBUG\n    glEnable(GL_DEBUG_OUTPUT);\n    glDebugMessageCallback(fbg_debugGlCb, 0);\n#endif\n\n    glfw_context->window = window;\n    glfw_context->monitor = monitor;\n    glfw_context->simple_program = fbg_glfwCreateProgramFromString(fbg_glfwSimpleVs, ssaa > 1 ? fbg_glfwDownsampleFs : fbg_glfwSimpleFs, 0);\n    glfw_context->fbg_vao = fbg_glfwCreateVAOvu(12, &fbg_glfwQuad[0]);\n\n    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);\n    glPixelStorei(GL_PACK_ALIGNMENT, 1); \n\n    glfw_context->width = width;\n    glfw_context->height = height;\n\n    int fbg_width = width;\n    int fbg_height = height;\n\n    if (ssaa > 1) {\n        fbg_width *= ssaa;\n        fbg_height *= ssaa;\n\n        glfw_context->ssaa = ssaa;\n    } else {\n        glfw_context->ssaa = 1;\n    }\n\n    glUseProgram(glfw_context->simple_program);\n    GLint ssaa_location = glGetUniformLocation(glfw_context->simple_program, \"ssaa\");\n    glUniform1i(ssaa_location, glfw_context->ssaa);\n\n    struct _fbg *fbg = fbg_customSetup(fbg_width, fbg_height, components, 1, 1, (void *)glfw_context, fbg_glfwDraw, fbg_glfwFlip, fbg_glfwResize, fbg_glfwFree);\n\n    glfw_context->fbg_texture = fbg_glfwCreateTexture(fbg_width, fbg_height, fbg->components == 4 ? GL_RGBA : GL_RGB);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\n\n    fbg_contexts_count += 1;\n\n    // we keep track of fbg contexts globally due to registered callbacks (resize etc.)\n    if (fbg_contexts == NULL) {\n        fbg_contexts = (struct _fbg **)calloc(1, sizeof(struct _fbg *));\n        if (!fbg_contexts) {\n            fprintf(stderr, \"fbg_glfwSetup: fbg_contexts calloc failed!\\n\");\n        } else {\n            fbg_contexts[0] = fbg;\n        }\n    } else {\n        fbg_contexts = (struct _fbg **)realloc(fbg_contexts, sizeof(struct _fbg *) * fbg_contexts_count);\n        if (!fbg_contexts) {\n            fprintf(stderr, \"fbg_glfwSetup: fbg_contexts realloc failed!\\n\");\n        } else {\n            fbg_contexts[fbg_contexts_count - 1] = fbg;\n        }\n    }\n\n    glfwSetFramebufferSizeCallback(window, fbg_glfwFramebufferResizeCb);\n\n    return fbg;\n}\n\nvoid fbg_glfwFullscreen(struct _fbg *fbg, int enable) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    const GLFWvidmode *window_mode = glfwGetVideoMode(glfw_context->monitor);\n    if (enable) {\n        glfwSetWindowMonitor(glfw_context->window, glfw_context->monitor, 0, 0, window_mode->width, window_mode->height, window_mode->refreshRate);\n    } else {\n        glfwSetWindowMonitor(glfw_context->window, 0, 0, 0, window_mode->width, window_mode->height, window_mode->refreshRate);\n    }\n}\n\nvoid fbg_glfwResize(struct _fbg *fbg, unsigned int new_width, unsigned new_height) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    // we keep a copy of user defined parameters for the fbg_texture (in case it changed)\n    GLint mag_filter, min_filter, swrap_mode, twrap_mode;\n\n    glBindTexture(GL_TEXTURE_2D, glfw_context->fbg_texture);\n    glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &mag_filter);\n    glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, &min_filter); \n    glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, &swrap_mode);\n    glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, &twrap_mode); \n\n    glDeleteTextures(1, &glfw_context->fbg_texture);\n\n    glfw_context->fbg_texture = fbg_glfwCreateTexture(new_width, new_height, fbg->components == 4 ? GL_RGBA : GL_RGB);\n\n    // and we restore its user defined parameters again (if any)\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, swrap_mode);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, twrap_mode);\n\n    glViewport(0, 0, new_width / glfw_context->ssaa, new_height / glfw_context->ssaa);\n}\n\nint fbg_glfwShouldClose(struct _fbg *fbg) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n    \n    return glfwWindowShouldClose(glfw_context->window);\n}\n\nvoid fbg_glfwUpdateBuffer(struct _fbg *fbg) {\n    if (fbg->components == 4) {\n        glReadPixels(0, 0, fbg->width, fbg->height, GL_RGBA, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    } else if (fbg->components == 3) {\n        glReadPixels(0, 0, fbg->width, fbg->height, GL_RGB, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    }\n}\n\nvoid fbg_glfwClear() {\n    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n}\n\nvoid fbg_glfwDraw(struct _fbg *fbg) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    glBindVertexArray(glfw_context->fbg_vao);\n    glUseProgram(glfw_context->simple_program);\n    glActiveTexture(GL_TEXTURE0);\n    glBindTexture(GL_TEXTURE_2D, glfw_context->fbg_texture);\n\n    if (fbg->components == 4) {\n        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fbg->width, fbg->height, GL_RGBA, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    } else if (fbg->components == 3) {\n        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fbg->width, fbg->height, GL_RGB, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    }\n\n    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);\n\n    glBindVertexArray(0);\n    glUseProgram(0);\n}\n\nvoid fbg_glfwFlip(struct _fbg *fbg) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    glfwSwapBuffers(glfw_context->window);\n\n    glfwPollEvents();\n}\n\nvoid fbg_glfwFree(struct _fbg *fbg) {\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    // remove the fbg context in our own contexts list\n    struct _fbg **fbg_contexts_tmp = NULL;\n\n    fbg_contexts_count -= 1;\n    if (fbg_contexts_count == 0) {\n        free(fbg_contexts);\n        fbg_contexts = NULL;\n    } else {\n        fbg_contexts_tmp = (struct _fbg **)calloc(fbg_contexts_count, sizeof(struct _fbg *));\n        if (!fbg_contexts) {\n            fprintf(stderr, \"fbg_glfwFree: fbg_contexts calloc failed!\\n\");\n        }\n    }\n\n    int i = 0, k = 0;\n    for (i = 0; i < fbg_contexts_count; i += 1) {\n        struct _fbg *ctx = fbg_contexts[i];\n        if (ctx != fbg) {\n            fbg_contexts_tmp[k] = ctx;\n\n            k += 1;\n        }\n    }\n\n    free(fbg_contexts);\n    fbg_contexts = fbg_contexts_tmp;\n    //\n\n    glDeleteTextures(1, &glfw_context->fbg_texture);\n\n    glDeleteVertexArrays(1, &glfw_context->fbg_vao);\n\n    glDeleteProgram(glfw_context->simple_program);\n\n    glfwTerminate();\n\n    free(glfw_context);\n}\n\nGLuint fbg_glfwCreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img) {\n    GLuint texture = fbg_glfwCreateTexture(img->width, img->height, fbg->components == 4 ? GL_RGBA : GL_RGB);\n\n    if (fbg->components == 4) {\n        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img->width, img->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img->data);\n    } else if (fbg->components == 3) {\n        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->data);\n    }\n\n    return texture;\n}\n\nGLuint fbg_glfwCreateTexture(GLuint width, GLuint height, GLint internal_format) {\n    GLuint texture;\n    glGenTextures(1, &texture);\n\n    glBindTexture(GL_TEXTURE_2D, texture);\n\n    glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, internal_format, GL_UNSIGNED_BYTE, 0);\n\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n\n    return texture;\n}\n\nGLuint fbg_glfwCreateFBO(GLuint texture) {\n    GLuint fbo = 0;\n    glGenFramebuffers(1, &fbo);\n    \n    glBindFramebuffer(GL_FRAMEBUFFER, fbo);\n    \n    glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0);\n    \n    GLenum drawBuffers[2] = { GL_COLOR_ATTACHMENT0 };\n    glDrawBuffers(1, drawBuffers);\n\n    if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {\n        fprintf(stderr, \"fbg_glfwCreateFBO : glCheckFramebufferStatus failed!\\n\");\n    }\n\n    glBindFramebuffer(GL_FRAMEBUFFER, 0);\n\n    return fbo;\n}\n\nGLuint fbg_glfwCreateVAOvu(GLsizeiptr data_count, const GLvoid *data) {\n    GLuint vbo = 0;\n    GLuint vao = 0;\n\n    glGenVertexArrays(1, &vao);\n    glBindVertexArray(vao);\n\n    glGenBuffers(1, &vbo);\n\n    glBindBuffer(GL_ARRAY_BUFFER, vbo);\n\n    // Vertices + UV\n    glBufferData(GL_ARRAY_BUFFER, (data_count + (data_count / 3) * 2) * sizeof(GLfloat), data, GL_STATIC_DRAW);\n\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);\n    glEnableVertexAttribArray(0);\n\n    glEnableVertexAttribArray(1);\n    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*) (data_count * sizeof(GLfloat)));\n\n    glBindVertexArray(0);\n\n    glDeleteBuffers(1, &vbo);\n\n    return vao;\n}\n\nGLuint fbg_glfwCreateVAO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type,\n                         GLsizeiptr vertices_count, const GLvoid *vertices_data,\n                         GLsizeiptr texcoords_count, const GLvoid *texcoords_data,\n                         GLsizeiptr normals_count, const GLvoid *normals_data,\n                         GLsizeiptr colors_count, const GLvoid *colors_data) {\n    GLuint vbo = 0;\n    GLuint tbo = 0;\n    GLuint ibo = 0;\n    GLuint nbo = 0;\n    GLuint cbo = 0;\n    GLuint vao = 0;\n\n    glGenVertexArrays(1, &vao);\n    glBindVertexArray(vao);\n\n    glGenBuffers(1, &ibo);\n\n    // Vertices\n    glGenBuffers(1, &vbo);\n    glBindBuffer(GL_ARRAY_BUFFER, vbo);\n    glBufferData(GL_ARRAY_BUFFER, vertices_count * 3 * sizeof(GLfloat), vertices_data, GL_STATIC_DRAW);\n\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);\n    glEnableVertexAttribArray(0);\n\n    int attrib_id = 1;\n\n    // UVs\n    if (texcoords_data) {\n        glGenBuffers(1, &tbo);\n        glBindBuffer(GL_ARRAY_BUFFER, tbo);\n        glBufferData(GL_ARRAY_BUFFER, texcoords_count * 2 * sizeof(GLfloat), texcoords_data, GL_STATIC_DRAW);\n\n        glEnableVertexAttribArray(attrib_id);\n        glVertexAttribPointer(attrib_id, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*) 0);\n\n        attrib_id += 1;\n    }\n\n    // normals\n    if (normals_data) {\n        glGenBuffers(1, &nbo);\n        glBindBuffer(GL_ARRAY_BUFFER, nbo);\n        glBufferData(GL_ARRAY_BUFFER, normals_count * 3 * sizeof(GLfloat), normals_data, GL_STATIC_DRAW);\n\n        glEnableVertexAttribArray(attrib_id);\n        glVertexAttribPointer(attrib_id, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*) 0);\n\n        attrib_id += 1;\n    }\n\n    // colors\n    if (colors_data) {\n        glGenBuffers(1, &cbo);\n        glBindBuffer(GL_ARRAY_BUFFER, cbo);\n        glBufferData(GL_ARRAY_BUFFER, colors_count * 3 * sizeof(GL_UNSIGNED_BYTE), colors_data, GL_STATIC_DRAW);\n\n        glEnableVertexAttribArray(attrib_id);\n        glVertexAttribPointer(attrib_id, 3, GL_UNSIGNED_BYTE, GL_FALSE, 0, (GLvoid*) 0);\n    }\n\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);\n    glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_count * sizeof_indice_type, indices_data, GL_STATIC_DRAW);\n\n    glBindVertexArray(0);\n\n    glDeleteBuffers(1, &vbo);\n    glDeleteBuffers(1, &tbo);\n    glDeleteBuffers(1, &ibo);\n    glDeleteBuffers(1, &nbo);\n    glDeleteBuffers(1, &cbo);\n\n    return vao;\n}\n\nvoid fbg_glfwPrintShaderLog(GLuint obj, int type) {\n    static char log[16384];\n\n    if (type == 0) {\n        glGetProgramInfoLog(obj, 16384, 0, log);\n    } else if (type == 1) {\n        glGetShaderInfoLog(obj, 16384, 0, log);\n    }\n    log[16383] = 0;\n\n    fprintf(stderr, \"fbg_glfwPrintShaderLog : BEGIN:\\n%s\\nEND.\\n\", log);\n}\n\nGLuint fbg_glfwCreateShader(GLenum type, const GLchar *source) {\n    GLuint shader;\n    GLint status;\n\n    shader = glCreateShader(type);\n\n    glShaderSource(shader, 1, (const GLchar**)&source, NULL);\n    glCompileShader(shader);\n\n    glGetShaderiv(shader, GL_COMPILE_STATUS, &status);\n\n    if (status != GL_TRUE) {\n        fprintf(stderr, \"fbg_glfwCreateShader : Failed to compile shader '%s'!\\n\", source);\n\n        fbg_glfwPrintShaderLog(shader, 1);\n\n        glDeleteShader(shader);\n        \n        return 0;\n    }\n\n    return shader;\n}\n\nGLuint fbg_glfwCreateShaderFromFile(GLenum type, const char *filename) {\n    FILE *file = fopen(filename, \"rt\");\n    if (!file) {\n        fprintf(stderr, \"fbg_glfwCreateShaderFromFile : Failed to open shader file '%s'!\\n\", filename);\n        return 0;\n    }\n\n    fseek(file, 0, SEEK_END);\n    long size = ftell(file);\n\n    GLchar *source = (GLchar*)malloc(size + 1);\n\n    if (!source) {\n        fprintf(stderr, \"fbg_glfwCreateShaderFromFile : Malloc failed for '%s'!\\n\", filename);\n\n        fclose(file);\n\n        return 0;\n    }\n\n    fseek(file, 0, SEEK_SET);\n    source[fread(source, 1, size, file)] = 0;\n    fclose(file);\n\n    GLuint shader = fbg_glfwCreateShader(type, source);\n    free(source);\n\n    return shader;\n}\n\nGLuint fbg_glfwCreateProgram(GLuint vertex_shader, GLuint fragment_shader, GLuint geometry_shader) {\n    GLuint program = 0;\n    GLint status;\n\n    program = glCreateProgram();\n\n    if (vertex_shader) {\n        glAttachShader(program, vertex_shader);\n    }\n\n    if (fragment_shader) {\n        glAttachShader(program, fragment_shader);\n    }\n\n    if (geometry_shader) {\n        glAttachShader(program, geometry_shader);\n    }\n\n    glLinkProgram(program);\n\n    glGetProgramiv(program, GL_LINK_STATUS, &status);\n    if (status != GL_TRUE) {\n        fprintf(stderr, \"fbg_glfwCreateProgram : Failed to link program!\\n\");\n\n        fbg_glfwPrintShaderLog(program, 0);\n\n        glDeleteProgram(program);\n\n        return 0;\n    }\n\n    if (vertex_shader) {\n        glDetachShader(program, vertex_shader);\n    }\n\n    if (fragment_shader) {\n        glDetachShader(program, fragment_shader);\n    }\n\n    if (geometry_shader) {\n        glDetachShader(program, geometry_shader);\n    }\n\n    return program;\n}\n\nGLenum fbg_glfwCreateProgramFromFiles(const char *vs, const char *fs, const char *gs) {\n    GLuint id_vs = 0;\n    GLuint id_fs = 0;\n    GLuint id_gs = 0;\n\n    if (vs) {\n        id_vs = fbg_glfwCreateShaderFromFile(GL_VERTEX_SHADER, vs);\n    }\n\n    if (fs) {\n        id_fs = fbg_glfwCreateShaderFromFile(GL_FRAGMENT_SHADER, fs);\n    }\n\n    if (gs) {\n        id_gs = fbg_glfwCreateShaderFromFile(GL_GEOMETRY_SHADER, gs);\n    }\n\n    GLuint program = fbg_glfwCreateProgram(id_vs, id_fs, id_gs);\n\n    if (vs) {\n        glDeleteShader(id_vs);\n    }\n\n    if (fs) {\n        glDeleteShader(id_fs);\n    }\n\n    if (gs) {\n        glDeleteShader(id_gs);\n    }\n\n    return program;\n}\n\nGLenum fbg_glfwCreateProgramFromString(const char *vs, const char *fs, const char *gs) {\n    GLuint id_vs = 0;\n    GLuint id_fs = 0;\n    GLuint id_gs = 0;\n\n    if (vs) {\n        id_vs = fbg_glfwCreateShader(GL_VERTEX_SHADER, vs);\n    }\n\n    if (fs) {\n        id_fs = fbg_glfwCreateShader(GL_FRAGMENT_SHADER, fs);\n    }\n\n    if (gs) {\n        id_gs = fbg_glfwCreateShader(GL_GEOMETRY_SHADER, gs);\n    }\n\n    GLuint program = fbg_glfwCreateProgram(id_vs, id_fs, id_gs);\n\n    if (vs) {\n        glDeleteShader(id_vs);\n    }\n\n    if (fs) {\n        glDeleteShader(id_fs);\n    }\n\n    if (gs) {\n        glDeleteShader(id_gs);\n    }\n\n    return program;\n}"
  },
  {
    "path": "custom_backend/glfw/fbg_glfw.h",
    "content": "/*\n    Copyright (c) 2018, Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_GLFW_H\n#define FB_GRAPHICS_GLFW_H\n\n    #include <GL/glew.h>\n    #include <GLFW/glfw3.h>\n\n    #include \"fbgraphics.h\"\n\n    //! GLFW wrapper data structure\n    struct _fbg_glfw_context {\n        //! GLFW window\n        GLFWwindow *window;\n        //! GLFW monitor\n        GLFWmonitor *monitor;\n        //! Simple GLSL program (screen-aligned textured quad)\n        GLenum simple_program;\n        //! FBG VAO\n        GLuint fbg_vao;\n        //! FBG texture (updated at each frames)\n        GLuint fbg_texture;\n        //! tell wether fbg_glfw should update fbg disp_buffer after rendering\n        int update_buffer;\n        //! context width\n        int width;\n        //! context height\n        int height;\n        //! upscale factor for the fbg buffer (serve off as antialiasing; the fbg buffer is downscaled to display size)\n        int ssaa;\n    };\n\n    //! Simple quad geometry (vertices + UV)\n    extern const GLfloat fbg_glfwQuad[];\n\n    //! Simple vertex shader (screen quad, vertices + UV)\n    extern const char *fbg_glfwSimpleVs;\n\n    //! Simple textured fragment shader\n    extern const char *fbg_glfwSimpleFs;\n\n    //! initialize a FB Graphics OpenGL context (GLFW library)\n    /*!\n      \\param width window width\n      \\param height window height\n      \\param components fbg context color components (4 for RGBA or 3 for RGB)\n      \\param title window title\n      \\param monitor monitor id (0 = primary display)\n      \\param fullscreen 0 = windowed, 1 = fullscreen, 2 = windowed full screen\n      \\param ssaa the resolution factor of the fbg context (not OpenGL), mainly for antiliasing, note that you may need to use the glfw_context->width then to refer to the display width instead of fbg->width which will be the internal resolution\n      \\return FBG data structure pointer\n    */\n    extern struct _fbg *fbg_glfwSetup(int width, int height, int components, const char *title, int monitor, int fullscreen, int ssaa);\n\n    //! OpenGL clear\n    extern void fbg_glfwClear();\n\n    //! this update FBG disp_buffer with the actual rendered OpenGL content\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n    */\n    extern void fbg_glfwUpdateBuffer(struct _fbg *fbg);\n\n    //! Query the user requested (window close etc) close status\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\return Boolean indicating close status\n    */\n    extern int fbg_glfwShouldClose(struct _fbg *fbg);\n\n    //! Switch to fullscreen or windowed mode\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param enable Boolean indicating  windowed or fullscreen\n    */\n    extern void fbg_glfwFullscreen(struct _fbg *fbg, int enable);\n\n    //! Display resize\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param new_width new display width\n      \\param new_height new display height\n    */\n    extern void fbg_glfwResize(struct _fbg *fbg, unsigned int new_width, unsigned new_height);\n\n    //! create a non-interpolated (NEAREST) GL texture from a FBG image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\return GL texture id\n    */\n    GLuint fbg_glfwCreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img);\n\n    //-- A SET OF RAW OPENGL UTILITY FUNCTIONS --\n    //! create an empty non-interpolated (NEAREST) GL texture\n    /*!\n      \\param width width of the requested texture\n      \\param height height of the requested texture\n      \\param internal_format OpenGL format (GL_RGBA etc.)\n      \\return GL texture id\n    */\n    extern GLuint fbg_glfwCreateTexture(GLuint width, GLuint height, GLint internal_format);\n\n    //! create a VAO from indexed data, support for vertices, UVs, normals and colors\n    /*!\n      \\param indices_count indices count\n      \\param indices_data data containing indices\n      \\param sizeof_indice_type sizeof indice type\n      \\param vertices_count vertices count\n      \\param vertices_data data containing vertices\n      \\param texcoords_count uv count\n      \\param texcoords_data data containing uv\n      \\param normals_count normals count\n      \\param normals_data data containing normals\n      \\param colors_count colors count\n      \\param colors_data data containing colors\n      \\return GL VAO id\n    */\n    extern GLuint fbg_glfwCreateVAO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type,\n                                    GLsizeiptr vertices_count, const GLvoid *vertices_data,\n                                    GLsizeiptr texcoords_count, const GLvoid *texcoords_data,\n                                    GLsizeiptr normals_count, const GLvoid *normals_data,\n                                    GLsizeiptr colors_count, const GLvoid *colors_data);\n\n    //! create a VAO from vertices + UV data packed into a single array\n    /*!\n      \\param data_count vertices data count\n      \\param data data containing all vertices (set of 3 x float) then all associated UVs (set of 2 x float)\n      \\return GL VAO id\n    */\n    extern GLuint fbg_glfwCreateVAOvu(GLsizeiptr data_count, const GLvoid *data);\n\n    //! create a FBO\n    /*!\n      \\param texture GL texture id\n      \\return GL FBO id\n    */\n    extern GLuint fbg_glfwCreateFBO(GLuint texture);\n\n    //! create a single shader\n    /*!\n      \\param type GL shader type\n      \\param source shader code\n      \\return GL shader id\n    */\n    extern GLuint fbg_glfwCreateShader(GLenum type, const GLchar *source);\n\n    //! create a shader from the content of a file\n    /*!\n      \\param type GL shader type\n      \\param filename file to load\n      \\return GL shader id\n    */\n    extern GLuint fbg_glfwCreateShaderFromFile(GLenum type, const char *filename);\n\n    //! create a vertex and/or fragment program\n    /*!\n      \\param vertex_shader vertex shader id, can be 0\n      \\param fragment_shader fragment shader id, can be 0\n      \\param geometry_shader geometry shader id, can be 0\n      \\return GL shader id\n    */\n    extern GLuint fbg_glfwCreateProgram(GLuint vertex_shader, GLuint fragment_shader, GLuint geometry_shader);\n\n    //! create a vertex and/or fragment/geometry program from a file\n    /*!\n      \\param vs vertex shader file\n      \\param fs fragment shader file\n      \\param gs geometry shader file\n      \\return GL shader id\n    */\n    extern GLenum fbg_glfwCreateProgramFromFiles(const char *vs, const char *fs, const char *gs);\n\n    //! create a vertex and/or fragment/geometry program from a string\n    /*!\n      \\param vs vertex shader string\n      \\param fs fragment shader string\n      \\param gs geometry shader string\n      \\return GL shader id\n    */\n    extern GLenum fbg_glfwCreateProgramFromString(const char *vs, const char *fs, const char *gs);\n\n#endif\n"
  },
  {
    "path": "custom_backend/glfw/glew/glew.c",
    "content": "/*\r\n** The OpenGL Extension Wrangler Library\r\n** Copyright (C) 2008-2017, Nigel Stewart <nigels[]users sourceforge net>\r\n** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>\r\n** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>\r\n** Copyright (C) 2002, Lev Povalahev\r\n** All rights reserved.\r\n** \r\n** Redistribution and use in source and binary forms, with or without \r\n** modification, are permitted provided that the following conditions are met:\r\n** \r\n** * Redistributions of source code must retain the above copyright notice, \r\n**   this list of conditions and the following disclaimer.\r\n** * Redistributions in binary form must reproduce the above copyright notice, \r\n**   this list of conditions and the following disclaimer in the documentation \r\n**   and/or other materials provided with the distribution.\r\n** * The name of the author may be used to endorse or promote products \r\n**   derived from this software without specific prior written permission.\r\n**\r\n** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" \r\n** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE \r\n** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE \r\n** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR \r\n** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \r\n** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\r\n** THE POSSIBILITY OF SUCH DAMAGE.\r\n*/\r\n\r\n#ifndef GLEW_INCLUDE\r\n#include <GL/glew.h>\r\n#else\r\n#include GLEW_INCLUDE\r\n#endif\r\n\r\n#if defined(GLEW_OSMESA)\r\n#  define GLAPI extern\r\n#  include <GL/osmesa.h>\r\n#elif defined(GLEW_EGL)\r\n#  include <GL/eglew.h>\r\n#elif defined(_WIN32)\r\n/*\r\n * If NOGDI is defined, wingdi.h won't be included by windows.h, and thus\r\n * wglGetProcAddress won't be declared. It will instead be implicitly declared,\r\n * potentially incorrectly, which we don't want.\r\n */\r\n#  if defined(NOGDI)\r\n#    undef NOGDI\r\n#  endif\r\n#  include <GL/wglew.h>\r\n#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))\r\n#  include <GL/glxew.h>\r\n#endif\r\n\r\n#include <stddef.h>  /* For size_t */\r\n\r\n#if defined(GLEW_EGL)\r\n#elif defined(GLEW_REGAL)\r\n\r\n/* In GLEW_REGAL mode we call direcly into the linked\r\n   libRegal.so glGetProcAddressREGAL for looking up\r\n   the GL function pointers. */\r\n\r\n#  undef glGetProcAddressREGAL\r\n#  ifdef WIN32\r\nextern void *  __stdcall glGetProcAddressREGAL(const GLchar *name);\r\nstatic void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;\r\n#    else\r\nextern void * glGetProcAddressREGAL(const GLchar *name);\r\nstatic void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;\r\n#  endif\r\n#  define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)\r\n\r\n#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)\r\n#include <dlfcn.h>\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n\r\nvoid* dlGetProcAddress (const GLubyte* name)\r\n{\r\n  static void* h = NULL;\r\n  static void* gpa;\r\n\r\n  if (h == NULL)\r\n  {\r\n    if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL;\r\n    gpa = dlsym(h, \"glXGetProcAddress\");\r\n  }\r\n\r\n  if (gpa != NULL)\r\n    return ((void*(*)(const GLubyte*))gpa)(name);\r\n  else\r\n    return dlsym(h, (const char*)name);\r\n}\r\n#endif /* __sgi || __sun || GLEW_APPLE_GLX */\r\n\r\n#if defined(__APPLE__)\r\n#include <stdlib.h>\r\n#include <string.h>\r\n#include <AvailabilityMacros.h>\r\n\r\n#ifdef MAC_OS_X_VERSION_10_3\r\n\r\n#include <dlfcn.h>\r\n\r\nvoid* NSGLGetProcAddress (const GLubyte *name)\r\n{\r\n  static void* image = NULL;\r\n  void* addr;\r\n  if (NULL == image)\r\n  {\r\n    image = dlopen(\"/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL\", RTLD_LAZY);\r\n  }\r\n  if( !image ) return NULL;\r\n  addr = dlsym(image, (const char*)name);\r\n  if( addr ) return addr;\r\n#ifdef GLEW_APPLE_GLX\r\n  return dlGetProcAddress( name ); // try next for glx symbols\r\n#else\r\n  return NULL;\r\n#endif\r\n}\r\n#else\r\n\r\n#include <mach-o/dyld.h>\r\n\r\nvoid* NSGLGetProcAddress (const GLubyte *name)\r\n{\r\n  static const struct mach_header* image = NULL;\r\n  NSSymbol symbol;\r\n  char* symbolName;\r\n  if (NULL == image)\r\n  {\r\n    image = NSAddImage(\"/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL\", NSADDIMAGE_OPTION_RETURN_ON_ERROR);\r\n  }\r\n  /* prepend a '_' for the Unix C symbol mangling convention */\r\n  symbolName = malloc(strlen((const char*)name) + 2);\r\n  strcpy(symbolName+1, (const char*)name);\r\n  symbolName[0] = '_';\r\n  symbol = NULL;\r\n  /* if (NSIsSymbolNameDefined(symbolName))\r\n\t symbol = NSLookupAndBindSymbol(symbolName); */\r\n  symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL;\r\n  free(symbolName);\r\n  if( symbol ) return NSAddressOfSymbol(symbol);\r\n#ifdef GLEW_APPLE_GLX\r\n  return dlGetProcAddress( name ); // try next for glx symbols\r\n#else\r\n  return NULL;\r\n#endif\r\n}\r\n#endif /* MAC_OS_X_VERSION_10_3 */\r\n#endif /* __APPLE__ */\r\n\r\n/*\r\n * Define glewGetProcAddress.\r\n */\r\n#if defined(GLEW_REGAL)\r\n#  define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)\r\n#elif defined(GLEW_OSMESA)\r\n#  define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)\r\n#elif defined(GLEW_EGL)\r\n#  define glewGetProcAddress(name) eglGetProcAddress((const char *)name)\r\n#elif defined(_WIN32)\r\n#  define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n#  define glewGetProcAddress(name) NSGLGetProcAddress(name)\r\n#elif defined(__sgi) || defined(__sun) || defined(__HAIKU__)\r\n#  define glewGetProcAddress(name) dlGetProcAddress(name)\r\n#elif defined(__ANDROID__)\r\n#  define glewGetProcAddress(name) NULL /* TODO */\r\n#elif defined(__native_client__)\r\n#  define glewGetProcAddress(name) NULL /* TODO */\r\n#else /* __linux */\r\n#  define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)\r\n#endif\r\n\r\n/*\r\n * Redefine GLEW_GET_VAR etc without const cast\r\n */\r\n\r\n#undef GLEW_GET_VAR\r\n# define GLEW_GET_VAR(x) (x)\r\n\r\n#ifdef WGLEW_GET_VAR\r\n# undef WGLEW_GET_VAR\r\n# define WGLEW_GET_VAR(x) (x)\r\n#endif /* WGLEW_GET_VAR */\r\n\r\n#ifdef GLXEW_GET_VAR\r\n# undef GLXEW_GET_VAR\r\n# define GLXEW_GET_VAR(x) (x)\r\n#endif /* GLXEW_GET_VAR */\r\n\r\n#ifdef EGLEW_GET_VAR\r\n# undef EGLEW_GET_VAR\r\n# define EGLEW_GET_VAR(x) (x)\r\n#endif /* EGLEW_GET_VAR */\r\n\r\n/*\r\n * GLEW, just like OpenGL or GLU, does not rely on the standard C library.\r\n * These functions implement the functionality required in this file.\r\n */\r\n\r\nstatic GLuint _glewStrLen (const GLubyte* s)\r\n{\r\n  GLuint i=0;\r\n  if (s == NULL) return 0;\r\n  while (s[i] != '\\0') i++;\r\n  return i;\r\n}\r\n\r\nstatic GLuint _glewStrCLen (const GLubyte* s, GLubyte c)\r\n{\r\n  GLuint i=0;\r\n  if (s == NULL) return 0;\r\n  while (s[i] != '\\0' && s[i] != c) i++;\r\n  return i;\r\n}\r\n\r\nstatic GLuint _glewStrCopy(char *d, const char *s, char c)\r\n{\r\n  GLuint i=0;\r\n  if (s == NULL) return 0;\r\n  while (s[i] != '\\0' && s[i] != c) { d[i] = s[i]; i++; }\r\n  d[i] = '\\0';\r\n  return i;\r\n}\r\n\r\n#if !defined(GLEW_OSMESA)\r\n#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\nstatic GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n)\r\n{\r\n  GLuint i=0;\r\n  if(a == NULL || b == NULL)\r\n    return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE;\r\n  while (i < n && a[i] != '\\0' && b[i] != '\\0' && a[i] == b[i]) i++;\r\n  return i == n ? GL_TRUE : GL_FALSE;\r\n}\r\n#endif\r\n#endif\r\n\r\nstatic GLboolean _glewStrSame1 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)\r\n{\r\n  while (*na > 0 && (**a == ' ' || **a == '\\n' || **a == '\\r' || **a == '\\t'))\r\n  {\r\n    (*a)++;\r\n    (*na)--;\r\n  }\r\n  if(*na >= nb)\r\n  {\r\n    GLuint i=0;\r\n    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;\r\n    if(i == nb)\r\n    {\r\n      *a = *a + nb;\r\n      *na = *na - nb;\r\n      return GL_TRUE;\r\n    }\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nstatic GLboolean _glewStrSame2 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)\r\n{\r\n  if(*na >= nb)\r\n  {\r\n    GLuint i=0;\r\n    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;\r\n    if(i == nb)\r\n    {\r\n      *a = *a + nb;\r\n      *na = *na - nb;\r\n      return GL_TRUE;\r\n    }\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nstatic GLboolean _glewStrSame3 (const GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb)\r\n{\r\n  if(*na >= nb)\r\n  {\r\n    GLuint i=0;\r\n    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;\r\n    if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\\n' || (*a)[i] == '\\r' || (*a)[i] == '\\t'))\r\n    {\r\n      *a = *a + nb;\r\n      *na = *na - nb;\r\n      return GL_TRUE;\r\n    }\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\n/*\r\n * Search for name in the extensions string. Use of strstr()\r\n * is not sufficient because extension names can be prefixes of\r\n * other extension names. Could use strtok() but the constant\r\n * string returned by glGetString might be in read-only memory.\r\n */\r\n#if !defined(GLEW_OSMESA)\r\n#if !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\nstatic GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end)\r\n{\r\n  const GLubyte* p;\r\n  GLuint len = _glewStrLen((const GLubyte*)name);\r\n  p = start;\r\n  while (p < end)\r\n  {\r\n    GLuint n = _glewStrCLen(p, ' ');\r\n    if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;\r\n    p += n+1;\r\n  }\r\n  return GL_FALSE;\r\n}\r\n#endif\r\n#endif\r\n\r\nPFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL;\r\nPFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL;\r\nPFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL;\r\nPFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL;\r\n\r\nPFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL;\r\nPFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL;\r\nPFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL;\r\nPFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL;\r\nPFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL;\r\nPFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL;\r\nPFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL;\r\nPFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL;\r\nPFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL;\r\nPFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL;\r\nPFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL;\r\nPFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL;\r\nPFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL;\r\nPFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL;\r\nPFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL;\r\nPFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL;\r\nPFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL;\r\nPFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL;\r\nPFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL;\r\nPFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL;\r\nPFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL;\r\nPFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL;\r\nPFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL;\r\nPFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL;\r\nPFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL;\r\nPFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL;\r\nPFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL;\r\nPFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL;\r\nPFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL;\r\nPFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL;\r\nPFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL;\r\nPFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL;\r\nPFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL;\r\nPFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL;\r\nPFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL;\r\nPFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL;\r\nPFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL;\r\nPFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL;\r\nPFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL;\r\nPFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL;\r\nPFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL;\r\nPFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL;\r\nPFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL;\r\n\r\nPFNGLBLENDCOLORPROC __glewBlendColor = NULL;\r\nPFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL;\r\nPFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL;\r\nPFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL;\r\nPFNGLFOGCOORDDPROC __glewFogCoordd = NULL;\r\nPFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL;\r\nPFNGLFOGCOORDFPROC __glewFogCoordf = NULL;\r\nPFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL;\r\nPFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL;\r\nPFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL;\r\nPFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL;\r\nPFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL;\r\nPFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL;\r\nPFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL;\r\nPFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL;\r\nPFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL;\r\nPFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL;\r\nPFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL;\r\nPFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL;\r\nPFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL;\r\nPFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL;\r\nPFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL;\r\nPFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL;\r\nPFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL;\r\nPFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL;\r\nPFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL;\r\nPFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL;\r\nPFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL;\r\nPFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL;\r\nPFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL;\r\nPFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL;\r\nPFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL;\r\nPFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL;\r\nPFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL;\r\nPFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL;\r\nPFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL;\r\nPFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL;\r\nPFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL;\r\nPFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL;\r\nPFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL;\r\nPFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL;\r\nPFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL;\r\nPFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL;\r\nPFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL;\r\nPFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL;\r\nPFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL;\r\nPFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL;\r\n\r\nPFNGLBEGINQUERYPROC __glewBeginQuery = NULL;\r\nPFNGLBINDBUFFERPROC __glewBindBuffer = NULL;\r\nPFNGLBUFFERDATAPROC __glewBufferData = NULL;\r\nPFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL;\r\nPFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL;\r\nPFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL;\r\nPFNGLENDQUERYPROC __glewEndQuery = NULL;\r\nPFNGLGENBUFFERSPROC __glewGenBuffers = NULL;\r\nPFNGLGENQUERIESPROC __glewGenQueries = NULL;\r\nPFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL;\r\nPFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL;\r\nPFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL;\r\nPFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL;\r\nPFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL;\r\nPFNGLGETQUERYIVPROC __glewGetQueryiv = NULL;\r\nPFNGLISBUFFERPROC __glewIsBuffer = NULL;\r\nPFNGLISQUERYPROC __glewIsQuery = NULL;\r\nPFNGLMAPBUFFERPROC __glewMapBuffer = NULL;\r\nPFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL;\r\n\r\nPFNGLATTACHSHADERPROC __glewAttachShader = NULL;\r\nPFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL;\r\nPFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL;\r\nPFNGLCOMPILESHADERPROC __glewCompileShader = NULL;\r\nPFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL;\r\nPFNGLCREATESHADERPROC __glewCreateShader = NULL;\r\nPFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL;\r\nPFNGLDELETESHADERPROC __glewDeleteShader = NULL;\r\nPFNGLDETACHSHADERPROC __glewDetachShader = NULL;\r\nPFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL;\r\nPFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL;\r\nPFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL;\r\nPFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL;\r\nPFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL;\r\nPFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL;\r\nPFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL;\r\nPFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL;\r\nPFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL;\r\nPFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL;\r\nPFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL;\r\nPFNGLGETSHADERIVPROC __glewGetShaderiv = NULL;\r\nPFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL;\r\nPFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL;\r\nPFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL;\r\nPFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL;\r\nPFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL;\r\nPFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL;\r\nPFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL;\r\nPFNGLISPROGRAMPROC __glewIsProgram = NULL;\r\nPFNGLISSHADERPROC __glewIsShader = NULL;\r\nPFNGLLINKPROGRAMPROC __glewLinkProgram = NULL;\r\nPFNGLSHADERSOURCEPROC __glewShaderSource = NULL;\r\nPFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL;\r\nPFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL;\r\nPFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL;\r\nPFNGLUNIFORM1FPROC __glewUniform1f = NULL;\r\nPFNGLUNIFORM1FVPROC __glewUniform1fv = NULL;\r\nPFNGLUNIFORM1IPROC __glewUniform1i = NULL;\r\nPFNGLUNIFORM1IVPROC __glewUniform1iv = NULL;\r\nPFNGLUNIFORM2FPROC __glewUniform2f = NULL;\r\nPFNGLUNIFORM2FVPROC __glewUniform2fv = NULL;\r\nPFNGLUNIFORM2IPROC __glewUniform2i = NULL;\r\nPFNGLUNIFORM2IVPROC __glewUniform2iv = NULL;\r\nPFNGLUNIFORM3FPROC __glewUniform3f = NULL;\r\nPFNGLUNIFORM3FVPROC __glewUniform3fv = NULL;\r\nPFNGLUNIFORM3IPROC __glewUniform3i = NULL;\r\nPFNGLUNIFORM3IVPROC __glewUniform3iv = NULL;\r\nPFNGLUNIFORM4FPROC __glewUniform4f = NULL;\r\nPFNGLUNIFORM4FVPROC __glewUniform4fv = NULL;\r\nPFNGLUNIFORM4IPROC __glewUniform4i = NULL;\r\nPFNGLUNIFORM4IVPROC __glewUniform4iv = NULL;\r\nPFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL;\r\nPFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL;\r\nPFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL;\r\nPFNGLUSEPROGRAMPROC __glewUseProgram = NULL;\r\nPFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL;\r\nPFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL;\r\nPFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL;\r\nPFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL;\r\nPFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL;\r\nPFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL;\r\nPFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL;\r\nPFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL;\r\nPFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL;\r\nPFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL;\r\nPFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL;\r\nPFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL;\r\nPFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL;\r\nPFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL;\r\nPFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL;\r\nPFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL;\r\nPFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL;\r\nPFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL;\r\nPFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL;\r\nPFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL;\r\nPFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL;\r\nPFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL;\r\nPFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL;\r\nPFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL;\r\nPFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL;\r\nPFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL;\r\nPFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL;\r\nPFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL;\r\nPFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL;\r\nPFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL;\r\nPFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL;\r\nPFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL;\r\nPFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL;\r\nPFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL;\r\nPFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL;\r\nPFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL;\r\nPFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL;\r\nPFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL;\r\n\r\nPFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL;\r\nPFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL;\r\nPFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL;\r\nPFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL;\r\nPFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL;\r\nPFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL;\r\n\r\nPFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL;\r\nPFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL;\r\nPFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL;\r\nPFNGLCLAMPCOLORPROC __glewClampColor = NULL;\r\nPFNGLCLEARBUFFERFIPROC __glewClearBufferfi = NULL;\r\nPFNGLCLEARBUFFERFVPROC __glewClearBufferfv = NULL;\r\nPFNGLCLEARBUFFERIVPROC __glewClearBufferiv = NULL;\r\nPFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv = NULL;\r\nPFNGLCOLORMASKIPROC __glewColorMaski = NULL;\r\nPFNGLDISABLEIPROC __glewDisablei = NULL;\r\nPFNGLENABLEIPROC __glewEnablei = NULL;\r\nPFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender = NULL;\r\nPFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback = NULL;\r\nPFNGLGETBOOLEANI_VPROC __glewGetBooleani_v = NULL;\r\nPFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation = NULL;\r\nPFNGLGETSTRINGIPROC __glewGetStringi = NULL;\r\nPFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv = NULL;\r\nPFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying = NULL;\r\nPFNGLGETUNIFORMUIVPROC __glewGetUniformuiv = NULL;\r\nPFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv = NULL;\r\nPFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv = NULL;\r\nPFNGLISENABLEDIPROC __glewIsEnabledi = NULL;\r\nPFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv = NULL;\r\nPFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv = NULL;\r\nPFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings = NULL;\r\nPFNGLUNIFORM1UIPROC __glewUniform1ui = NULL;\r\nPFNGLUNIFORM1UIVPROC __glewUniform1uiv = NULL;\r\nPFNGLUNIFORM2UIPROC __glewUniform2ui = NULL;\r\nPFNGLUNIFORM2UIVPROC __glewUniform2uiv = NULL;\r\nPFNGLUNIFORM3UIPROC __glewUniform3ui = NULL;\r\nPFNGLUNIFORM3UIVPROC __glewUniform3uiv = NULL;\r\nPFNGLUNIFORM4UIPROC __glewUniform4ui = NULL;\r\nPFNGLUNIFORM4UIVPROC __glewUniform4uiv = NULL;\r\nPFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i = NULL;\r\nPFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv = NULL;\r\nPFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui = NULL;\r\nPFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv = NULL;\r\nPFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i = NULL;\r\nPFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv = NULL;\r\nPFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui = NULL;\r\nPFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv = NULL;\r\nPFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i = NULL;\r\nPFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv = NULL;\r\nPFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui = NULL;\r\nPFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv = NULL;\r\nPFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv = NULL;\r\nPFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i = NULL;\r\nPFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv = NULL;\r\nPFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv = NULL;\r\nPFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv = NULL;\r\nPFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui = NULL;\r\nPFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv = NULL;\r\nPFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv = NULL;\r\nPFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDPROC __glewDrawArraysInstanced = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDPROC __glewDrawElementsInstanced = NULL;\r\nPFNGLPRIMITIVERESTARTINDEXPROC __glewPrimitiveRestartIndex = NULL;\r\nPFNGLTEXBUFFERPROC __glewTexBuffer = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture = NULL;\r\nPFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v = NULL;\r\nPFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v = NULL;\r\n\r\nPFNGLVERTEXATTRIBDIVISORPROC __glewVertexAttribDivisor = NULL;\r\n\r\nPFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei = NULL;\r\nPFNGLBLENDEQUATIONIPROC __glewBlendEquationi = NULL;\r\nPFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei = NULL;\r\nPFNGLBLENDFUNCIPROC __glewBlendFunci = NULL;\r\nPFNGLMINSAMPLESHADINGPROC __glewMinSampleShading = NULL;\r\n\r\nPFNGLGETGRAPHICSRESETSTATUSPROC __glewGetGraphicsResetStatus = NULL;\r\nPFNGLGETNCOMPRESSEDTEXIMAGEPROC __glewGetnCompressedTexImage = NULL;\r\nPFNGLGETNTEXIMAGEPROC __glewGetnTexImage = NULL;\r\nPFNGLGETNUNIFORMDVPROC __glewGetnUniformdv = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC __glewMultiDrawArraysIndirectCount = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC __glewMultiDrawElementsIndirectCount = NULL;\r\nPFNGLSPECIALIZESHADERPROC __glewSpecializeShader = NULL;\r\n\r\nPFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX = NULL;\r\n\r\nPFNGLDEBUGMESSAGECALLBACKAMDPROC __glewDebugMessageCallbackAMD = NULL;\r\nPFNGLDEBUGMESSAGEENABLEAMDPROC __glewDebugMessageEnableAMD = NULL;\r\nPFNGLDEBUGMESSAGEINSERTAMDPROC __glewDebugMessageInsertAMD = NULL;\r\nPFNGLGETDEBUGMESSAGELOGAMDPROC __glewGetDebugMessageLogAMD = NULL;\r\n\r\nPFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD = NULL;\r\nPFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC __glewBlendEquationSeparateIndexedAMD = NULL;\r\nPFNGLBLENDFUNCINDEXEDAMDPROC __glewBlendFuncIndexedAMD = NULL;\r\nPFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC __glewBlendFuncSeparateIndexedAMD = NULL;\r\n\r\nPFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewFramebufferSamplePositionsfvAMD = NULL;\r\nPFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC __glewGetFramebufferParameterfvAMD = NULL;\r\nPFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC __glewGetNamedFramebufferParameterfvAMD = NULL;\r\nPFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC __glewNamedFramebufferSamplePositionsfvAMD = NULL;\r\n\r\nPFNGLVERTEXATTRIBPARAMETERIAMDPROC __glewVertexAttribParameteriAMD = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTAMDPROC __glewMultiDrawArraysIndirectAMD = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC __glewMultiDrawElementsIndirectAMD = NULL;\r\n\r\nPFNGLDELETENAMESAMDPROC __glewDeleteNamesAMD = NULL;\r\nPFNGLGENNAMESAMDPROC __glewGenNamesAMD = NULL;\r\nPFNGLISNAMEAMDPROC __glewIsNameAMD = NULL;\r\n\r\nPFNGLQUERYOBJECTPARAMETERUIAMDPROC __glewQueryObjectParameteruiAMD = NULL;\r\n\r\nPFNGLBEGINPERFMONITORAMDPROC __glewBeginPerfMonitorAMD = NULL;\r\nPFNGLDELETEPERFMONITORSAMDPROC __glewDeletePerfMonitorsAMD = NULL;\r\nPFNGLENDPERFMONITORAMDPROC __glewEndPerfMonitorAMD = NULL;\r\nPFNGLGENPERFMONITORSAMDPROC __glewGenPerfMonitorsAMD = NULL;\r\nPFNGLGETPERFMONITORCOUNTERDATAAMDPROC __glewGetPerfMonitorCounterDataAMD = NULL;\r\nPFNGLGETPERFMONITORCOUNTERINFOAMDPROC __glewGetPerfMonitorCounterInfoAMD = NULL;\r\nPFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC __glewGetPerfMonitorCounterStringAMD = NULL;\r\nPFNGLGETPERFMONITORCOUNTERSAMDPROC __glewGetPerfMonitorCountersAMD = NULL;\r\nPFNGLGETPERFMONITORGROUPSTRINGAMDPROC __glewGetPerfMonitorGroupStringAMD = NULL;\r\nPFNGLGETPERFMONITORGROUPSAMDPROC __glewGetPerfMonitorGroupsAMD = NULL;\r\nPFNGLSELECTPERFMONITORCOUNTERSAMDPROC __glewSelectPerfMonitorCountersAMD = NULL;\r\n\r\nPFNGLSETMULTISAMPLEFVAMDPROC __glewSetMultisamplefvAMD = NULL;\r\n\r\nPFNGLTEXSTORAGESPARSEAMDPROC __glewTexStorageSparseAMD = NULL;\r\nPFNGLTEXTURESTORAGESPARSEAMDPROC __glewTextureStorageSparseAMD = NULL;\r\n\r\nPFNGLSTENCILOPVALUEAMDPROC __glewStencilOpValueAMD = NULL;\r\n\r\nPFNGLTESSELLATIONFACTORAMDPROC __glewTessellationFactorAMD = NULL;\r\nPFNGLTESSELLATIONMODEAMDPROC __glewTessellationModeAMD = NULL;\r\n\r\nPFNGLBLITFRAMEBUFFERANGLEPROC __glewBlitFramebufferANGLE = NULL;\r\n\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC __glewRenderbufferStorageMultisampleANGLE = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDANGLEPROC __glewDrawArraysInstancedANGLE = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDANGLEPROC __glewDrawElementsInstancedANGLE = NULL;\r\nPFNGLVERTEXATTRIBDIVISORANGLEPROC __glewVertexAttribDivisorANGLE = NULL;\r\n\r\nPFNGLBEGINQUERYANGLEPROC __glewBeginQueryANGLE = NULL;\r\nPFNGLDELETEQUERIESANGLEPROC __glewDeleteQueriesANGLE = NULL;\r\nPFNGLENDQUERYANGLEPROC __glewEndQueryANGLE = NULL;\r\nPFNGLGENQUERIESANGLEPROC __glewGenQueriesANGLE = NULL;\r\nPFNGLGETQUERYOBJECTI64VANGLEPROC __glewGetQueryObjecti64vANGLE = NULL;\r\nPFNGLGETQUERYOBJECTIVANGLEPROC __glewGetQueryObjectivANGLE = NULL;\r\nPFNGLGETQUERYOBJECTUI64VANGLEPROC __glewGetQueryObjectui64vANGLE = NULL;\r\nPFNGLGETQUERYOBJECTUIVANGLEPROC __glewGetQueryObjectuivANGLE = NULL;\r\nPFNGLGETQUERYIVANGLEPROC __glewGetQueryivANGLE = NULL;\r\nPFNGLISQUERYANGLEPROC __glewIsQueryANGLE = NULL;\r\nPFNGLQUERYCOUNTERANGLEPROC __glewQueryCounterANGLE = NULL;\r\n\r\nPFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC __glewGetTranslatedShaderSourceANGLE = NULL;\r\n\r\nPFNGLCOPYTEXTURELEVELSAPPLEPROC __glewCopyTextureLevelsAPPLE = NULL;\r\n\r\nPFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE = NULL;\r\nPFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE = NULL;\r\nPFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE = NULL;\r\nPFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE = NULL;\r\nPFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE = NULL;\r\n\r\nPFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE = NULL;\r\nPFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE = NULL;\r\nPFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE = NULL;\r\nPFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE = NULL;\r\nPFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE = NULL;\r\nPFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE = NULL;\r\nPFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE = NULL;\r\nPFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE = NULL;\r\n\r\nPFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE = NULL;\r\nPFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE = NULL;\r\n\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC __glewRenderbufferStorageMultisampleAPPLE = NULL;\r\nPFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC __glewResolveMultisampleFramebufferAPPLE = NULL;\r\n\r\nPFNGLGETOBJECTPARAMETERIVAPPLEPROC __glewGetObjectParameterivAPPLE = NULL;\r\nPFNGLOBJECTPURGEABLEAPPLEPROC __glewObjectPurgeableAPPLE = NULL;\r\nPFNGLOBJECTUNPURGEABLEAPPLEPROC __glewObjectUnpurgeableAPPLE = NULL;\r\n\r\nPFNGLCLIENTWAITSYNCAPPLEPROC __glewClientWaitSyncAPPLE = NULL;\r\nPFNGLDELETESYNCAPPLEPROC __glewDeleteSyncAPPLE = NULL;\r\nPFNGLFENCESYNCAPPLEPROC __glewFenceSyncAPPLE = NULL;\r\nPFNGLGETINTEGER64VAPPLEPROC __glewGetInteger64vAPPLE = NULL;\r\nPFNGLGETSYNCIVAPPLEPROC __glewGetSyncivAPPLE = NULL;\r\nPFNGLISSYNCAPPLEPROC __glewIsSyncAPPLE = NULL;\r\nPFNGLWAITSYNCAPPLEPROC __glewWaitSyncAPPLE = NULL;\r\n\r\nPFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE = NULL;\r\nPFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE = NULL;\r\n\r\nPFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE = NULL;\r\nPFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE = NULL;\r\nPFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE = NULL;\r\nPFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE = NULL;\r\n\r\nPFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE = NULL;\r\nPFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE = NULL;\r\nPFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE = NULL;\r\n\r\nPFNGLDISABLEVERTEXATTRIBAPPLEPROC __glewDisableVertexAttribAPPLE = NULL;\r\nPFNGLENABLEVERTEXATTRIBAPPLEPROC __glewEnableVertexAttribAPPLE = NULL;\r\nPFNGLISVERTEXATTRIBENABLEDAPPLEPROC __glewIsVertexAttribEnabledAPPLE = NULL;\r\nPFNGLMAPVERTEXATTRIB1DAPPLEPROC __glewMapVertexAttrib1dAPPLE = NULL;\r\nPFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE = NULL;\r\nPFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE = NULL;\r\nPFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE = NULL;\r\n\r\nPFNGLCLEARDEPTHFPROC __glewClearDepthf = NULL;\r\nPFNGLDEPTHRANGEFPROC __glewDepthRangef = NULL;\r\nPFNGLGETSHADERPRECISIONFORMATPROC __glewGetShaderPrecisionFormat = NULL;\r\nPFNGLRELEASESHADERCOMPILERPROC __glewReleaseShaderCompiler = NULL;\r\nPFNGLSHADERBINARYPROC __glewShaderBinary = NULL;\r\n\r\nPFNGLMEMORYBARRIERBYREGIONPROC __glewMemoryBarrierByRegion = NULL;\r\n\r\nPFNGLPRIMITIVEBOUNDINGBOXARBPROC __glewPrimitiveBoundingBoxARB = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC __glewDrawArraysInstancedBaseInstance = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC __glewDrawElementsInstancedBaseInstance = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC __glewDrawElementsInstancedBaseVertexBaseInstance = NULL;\r\n\r\nPFNGLGETIMAGEHANDLEARBPROC __glewGetImageHandleARB = NULL;\r\nPFNGLGETTEXTUREHANDLEARBPROC __glewGetTextureHandleARB = NULL;\r\nPFNGLGETTEXTURESAMPLERHANDLEARBPROC __glewGetTextureSamplerHandleARB = NULL;\r\nPFNGLGETVERTEXATTRIBLUI64VARBPROC __glewGetVertexAttribLui64vARB = NULL;\r\nPFNGLISIMAGEHANDLERESIDENTARBPROC __glewIsImageHandleResidentARB = NULL;\r\nPFNGLISTEXTUREHANDLERESIDENTARBPROC __glewIsTextureHandleResidentARB = NULL;\r\nPFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC __glewMakeImageHandleNonResidentARB = NULL;\r\nPFNGLMAKEIMAGEHANDLERESIDENTARBPROC __glewMakeImageHandleResidentARB = NULL;\r\nPFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC __glewMakeTextureHandleNonResidentARB = NULL;\r\nPFNGLMAKETEXTUREHANDLERESIDENTARBPROC __glewMakeTextureHandleResidentARB = NULL;\r\nPFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC __glewProgramUniformHandleui64ARB = NULL;\r\nPFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC __glewProgramUniformHandleui64vARB = NULL;\r\nPFNGLUNIFORMHANDLEUI64ARBPROC __glewUniformHandleui64ARB = NULL;\r\nPFNGLUNIFORMHANDLEUI64VARBPROC __glewUniformHandleui64vARB = NULL;\r\nPFNGLVERTEXATTRIBL1UI64ARBPROC __glewVertexAttribL1ui64ARB = NULL;\r\nPFNGLVERTEXATTRIBL1UI64VARBPROC __glewVertexAttribL1ui64vARB = NULL;\r\n\r\nPFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed = NULL;\r\nPFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex = NULL;\r\n\r\nPFNGLBUFFERSTORAGEPROC __glewBufferStorage = NULL;\r\n\r\nPFNGLCREATESYNCFROMCLEVENTARBPROC __glewCreateSyncFromCLeventARB = NULL;\r\n\r\nPFNGLCLEARBUFFERDATAPROC __glewClearBufferData = NULL;\r\nPFNGLCLEARBUFFERSUBDATAPROC __glewClearBufferSubData = NULL;\r\nPFNGLCLEARNAMEDBUFFERDATAEXTPROC __glewClearNamedBufferDataEXT = NULL;\r\nPFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC __glewClearNamedBufferSubDataEXT = NULL;\r\n\r\nPFNGLCLEARTEXIMAGEPROC __glewClearTexImage = NULL;\r\nPFNGLCLEARTEXSUBIMAGEPROC __glewClearTexSubImage = NULL;\r\n\r\nPFNGLCLIPCONTROLPROC __glewClipControl = NULL;\r\n\r\nPFNGLCLAMPCOLORARBPROC __glewClampColorARB = NULL;\r\n\r\nPFNGLDISPATCHCOMPUTEPROC __glewDispatchCompute = NULL;\r\nPFNGLDISPATCHCOMPUTEINDIRECTPROC __glewDispatchComputeIndirect = NULL;\r\n\r\nPFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC __glewDispatchComputeGroupSizeARB = NULL;\r\n\r\nPFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData = NULL;\r\n\r\nPFNGLCOPYIMAGESUBDATAPROC __glewCopyImageSubData = NULL;\r\n\r\nPFNGLDEBUGMESSAGECALLBACKARBPROC __glewDebugMessageCallbackARB = NULL;\r\nPFNGLDEBUGMESSAGECONTROLARBPROC __glewDebugMessageControlARB = NULL;\r\nPFNGLDEBUGMESSAGEINSERTARBPROC __glewDebugMessageInsertARB = NULL;\r\nPFNGLGETDEBUGMESSAGELOGARBPROC __glewGetDebugMessageLogARB = NULL;\r\n\r\nPFNGLBINDTEXTUREUNITPROC __glewBindTextureUnit = NULL;\r\nPFNGLBLITNAMEDFRAMEBUFFERPROC __glewBlitNamedFramebuffer = NULL;\r\nPFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC __glewCheckNamedFramebufferStatus = NULL;\r\nPFNGLCLEARNAMEDBUFFERDATAPROC __glewClearNamedBufferData = NULL;\r\nPFNGLCLEARNAMEDBUFFERSUBDATAPROC __glewClearNamedBufferSubData = NULL;\r\nPFNGLCLEARNAMEDFRAMEBUFFERFIPROC __glewClearNamedFramebufferfi = NULL;\r\nPFNGLCLEARNAMEDFRAMEBUFFERFVPROC __glewClearNamedFramebufferfv = NULL;\r\nPFNGLCLEARNAMEDFRAMEBUFFERIVPROC __glewClearNamedFramebufferiv = NULL;\r\nPFNGLCLEARNAMEDFRAMEBUFFERUIVPROC __glewClearNamedFramebufferuiv = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC __glewCompressedTextureSubImage1D = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC __glewCompressedTextureSubImage2D = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC __glewCompressedTextureSubImage3D = NULL;\r\nPFNGLCOPYNAMEDBUFFERSUBDATAPROC __glewCopyNamedBufferSubData = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE1DPROC __glewCopyTextureSubImage1D = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE2DPROC __glewCopyTextureSubImage2D = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE3DPROC __glewCopyTextureSubImage3D = NULL;\r\nPFNGLCREATEBUFFERSPROC __glewCreateBuffers = NULL;\r\nPFNGLCREATEFRAMEBUFFERSPROC __glewCreateFramebuffers = NULL;\r\nPFNGLCREATEPROGRAMPIPELINESPROC __glewCreateProgramPipelines = NULL;\r\nPFNGLCREATEQUERIESPROC __glewCreateQueries = NULL;\r\nPFNGLCREATERENDERBUFFERSPROC __glewCreateRenderbuffers = NULL;\r\nPFNGLCREATESAMPLERSPROC __glewCreateSamplers = NULL;\r\nPFNGLCREATETEXTURESPROC __glewCreateTextures = NULL;\r\nPFNGLCREATETRANSFORMFEEDBACKSPROC __glewCreateTransformFeedbacks = NULL;\r\nPFNGLCREATEVERTEXARRAYSPROC __glewCreateVertexArrays = NULL;\r\nPFNGLDISABLEVERTEXARRAYATTRIBPROC __glewDisableVertexArrayAttrib = NULL;\r\nPFNGLENABLEVERTEXARRAYATTRIBPROC __glewEnableVertexArrayAttrib = NULL;\r\nPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC __glewFlushMappedNamedBufferRange = NULL;\r\nPFNGLGENERATETEXTUREMIPMAPPROC __glewGenerateTextureMipmap = NULL;\r\nPFNGLGETCOMPRESSEDTEXTUREIMAGEPROC __glewGetCompressedTextureImage = NULL;\r\nPFNGLGETNAMEDBUFFERPARAMETERI64VPROC __glewGetNamedBufferParameteri64v = NULL;\r\nPFNGLGETNAMEDBUFFERPARAMETERIVPROC __glewGetNamedBufferParameteriv = NULL;\r\nPFNGLGETNAMEDBUFFERPOINTERVPROC __glewGetNamedBufferPointerv = NULL;\r\nPFNGLGETNAMEDBUFFERSUBDATAPROC __glewGetNamedBufferSubData = NULL;\r\nPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetNamedFramebufferAttachmentParameteriv = NULL;\r\nPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC __glewGetNamedFramebufferParameteriv = NULL;\r\nPFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC __glewGetNamedRenderbufferParameteriv = NULL;\r\nPFNGLGETQUERYBUFFEROBJECTI64VPROC __glewGetQueryBufferObjecti64v = NULL;\r\nPFNGLGETQUERYBUFFEROBJECTIVPROC __glewGetQueryBufferObjectiv = NULL;\r\nPFNGLGETQUERYBUFFEROBJECTUI64VPROC __glewGetQueryBufferObjectui64v = NULL;\r\nPFNGLGETQUERYBUFFEROBJECTUIVPROC __glewGetQueryBufferObjectuiv = NULL;\r\nPFNGLGETTEXTUREIMAGEPROC __glewGetTextureImage = NULL;\r\nPFNGLGETTEXTURELEVELPARAMETERFVPROC __glewGetTextureLevelParameterfv = NULL;\r\nPFNGLGETTEXTURELEVELPARAMETERIVPROC __glewGetTextureLevelParameteriv = NULL;\r\nPFNGLGETTEXTUREPARAMETERIIVPROC __glewGetTextureParameterIiv = NULL;\r\nPFNGLGETTEXTUREPARAMETERIUIVPROC __glewGetTextureParameterIuiv = NULL;\r\nPFNGLGETTEXTUREPARAMETERFVPROC __glewGetTextureParameterfv = NULL;\r\nPFNGLGETTEXTUREPARAMETERIVPROC __glewGetTextureParameteriv = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKI64_VPROC __glewGetTransformFeedbacki64_v = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKI_VPROC __glewGetTransformFeedbacki_v = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKIVPROC __glewGetTransformFeedbackiv = NULL;\r\nPFNGLGETVERTEXARRAYINDEXED64IVPROC __glewGetVertexArrayIndexed64iv = NULL;\r\nPFNGLGETVERTEXARRAYINDEXEDIVPROC __glewGetVertexArrayIndexediv = NULL;\r\nPFNGLGETVERTEXARRAYIVPROC __glewGetVertexArrayiv = NULL;\r\nPFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC __glewInvalidateNamedFramebufferData = NULL;\r\nPFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC __glewInvalidateNamedFramebufferSubData = NULL;\r\nPFNGLMAPNAMEDBUFFERPROC __glewMapNamedBuffer = NULL;\r\nPFNGLMAPNAMEDBUFFERRANGEPROC __glewMapNamedBufferRange = NULL;\r\nPFNGLNAMEDBUFFERDATAPROC __glewNamedBufferData = NULL;\r\nPFNGLNAMEDBUFFERSTORAGEPROC __glewNamedBufferStorage = NULL;\r\nPFNGLNAMEDBUFFERSUBDATAPROC __glewNamedBufferSubData = NULL;\r\nPFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC __glewNamedFramebufferDrawBuffer = NULL;\r\nPFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC __glewNamedFramebufferDrawBuffers = NULL;\r\nPFNGLNAMEDFRAMEBUFFERPARAMETERIPROC __glewNamedFramebufferParameteri = NULL;\r\nPFNGLNAMEDFRAMEBUFFERREADBUFFERPROC __glewNamedFramebufferReadBuffer = NULL;\r\nPFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC __glewNamedFramebufferRenderbuffer = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTUREPROC __glewNamedFramebufferTexture = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC __glewNamedFramebufferTextureLayer = NULL;\r\nPFNGLNAMEDRENDERBUFFERSTORAGEPROC __glewNamedRenderbufferStorage = NULL;\r\nPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewNamedRenderbufferStorageMultisample = NULL;\r\nPFNGLTEXTUREBUFFERPROC __glewTextureBuffer = NULL;\r\nPFNGLTEXTUREBUFFERRANGEPROC __glewTextureBufferRange = NULL;\r\nPFNGLTEXTUREPARAMETERIIVPROC __glewTextureParameterIiv = NULL;\r\nPFNGLTEXTUREPARAMETERIUIVPROC __glewTextureParameterIuiv = NULL;\r\nPFNGLTEXTUREPARAMETERFPROC __glewTextureParameterf = NULL;\r\nPFNGLTEXTUREPARAMETERFVPROC __glewTextureParameterfv = NULL;\r\nPFNGLTEXTUREPARAMETERIPROC __glewTextureParameteri = NULL;\r\nPFNGLTEXTUREPARAMETERIVPROC __glewTextureParameteriv = NULL;\r\nPFNGLTEXTURESTORAGE1DPROC __glewTextureStorage1D = NULL;\r\nPFNGLTEXTURESTORAGE2DPROC __glewTextureStorage2D = NULL;\r\nPFNGLTEXTURESTORAGE2DMULTISAMPLEPROC __glewTextureStorage2DMultisample = NULL;\r\nPFNGLTEXTURESTORAGE3DPROC __glewTextureStorage3D = NULL;\r\nPFNGLTEXTURESTORAGE3DMULTISAMPLEPROC __glewTextureStorage3DMultisample = NULL;\r\nPFNGLTEXTURESUBIMAGE1DPROC __glewTextureSubImage1D = NULL;\r\nPFNGLTEXTURESUBIMAGE2DPROC __glewTextureSubImage2D = NULL;\r\nPFNGLTEXTURESUBIMAGE3DPROC __glewTextureSubImage3D = NULL;\r\nPFNGLTRANSFORMFEEDBACKBUFFERBASEPROC __glewTransformFeedbackBufferBase = NULL;\r\nPFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC __glewTransformFeedbackBufferRange = NULL;\r\nPFNGLUNMAPNAMEDBUFFERPROC __glewUnmapNamedBuffer = NULL;\r\nPFNGLVERTEXARRAYATTRIBBINDINGPROC __glewVertexArrayAttribBinding = NULL;\r\nPFNGLVERTEXARRAYATTRIBFORMATPROC __glewVertexArrayAttribFormat = NULL;\r\nPFNGLVERTEXARRAYATTRIBIFORMATPROC __glewVertexArrayAttribIFormat = NULL;\r\nPFNGLVERTEXARRAYATTRIBLFORMATPROC __glewVertexArrayAttribLFormat = NULL;\r\nPFNGLVERTEXARRAYBINDINGDIVISORPROC __glewVertexArrayBindingDivisor = NULL;\r\nPFNGLVERTEXARRAYELEMENTBUFFERPROC __glewVertexArrayElementBuffer = NULL;\r\nPFNGLVERTEXARRAYVERTEXBUFFERPROC __glewVertexArrayVertexBuffer = NULL;\r\nPFNGLVERTEXARRAYVERTEXBUFFERSPROC __glewVertexArrayVertexBuffers = NULL;\r\n\r\nPFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB = NULL;\r\n\r\nPFNGLBLENDEQUATIONSEPARATEIARBPROC __glewBlendEquationSeparateiARB = NULL;\r\nPFNGLBLENDEQUATIONIARBPROC __glewBlendEquationiARB = NULL;\r\nPFNGLBLENDFUNCSEPARATEIARBPROC __glewBlendFuncSeparateiARB = NULL;\r\nPFNGLBLENDFUNCIARBPROC __glewBlendFunciARB = NULL;\r\n\r\nPFNGLDRAWELEMENTSBASEVERTEXPROC __glewDrawElementsBaseVertex = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex = NULL;\r\nPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex = NULL;\r\nPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex = NULL;\r\n\r\nPFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect = NULL;\r\nPFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect = NULL;\r\n\r\nPFNGLFRAMEBUFFERPARAMETERIPROC __glewFramebufferParameteri = NULL;\r\nPFNGLGETFRAMEBUFFERPARAMETERIVPROC __glewGetFramebufferParameteriv = NULL;\r\nPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC __glewGetNamedFramebufferParameterivEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC __glewNamedFramebufferParameteriEXT = NULL;\r\n\r\nPFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer = NULL;\r\nPFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer = NULL;\r\nPFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer = NULL;\r\nPFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus = NULL;\r\nPFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers = NULL;\r\nPFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers = NULL;\r\nPFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D = NULL;\r\nPFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer = NULL;\r\nPFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers = NULL;\r\nPFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers = NULL;\r\nPFNGLGENERATEMIPMAPPROC __glewGenerateMipmap = NULL;\r\nPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv = NULL;\r\nPFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv = NULL;\r\nPFNGLISFRAMEBUFFERPROC __glewIsFramebuffer = NULL;\r\nPFNGLISRENDERBUFFERPROC __glewIsRenderbuffer = NULL;\r\nPFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage = NULL;\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB = NULL;\r\nPFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB = NULL;\r\nPFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB = NULL;\r\nPFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB = NULL;\r\n\r\nPFNGLGETPROGRAMBINARYPROC __glewGetProgramBinary = NULL;\r\nPFNGLPROGRAMBINARYPROC __glewProgramBinary = NULL;\r\nPFNGLPROGRAMPARAMETERIPROC __glewProgramParameteri = NULL;\r\n\r\nPFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC __glewGetCompressedTextureSubImage = NULL;\r\nPFNGLGETTEXTURESUBIMAGEPROC __glewGetTextureSubImage = NULL;\r\n\r\nPFNGLSPECIALIZESHADERARBPROC __glewSpecializeShaderARB = NULL;\r\n\r\nPFNGLGETUNIFORMDVPROC __glewGetUniformdv = NULL;\r\nPFNGLUNIFORM1DPROC __glewUniform1d = NULL;\r\nPFNGLUNIFORM1DVPROC __glewUniform1dv = NULL;\r\nPFNGLUNIFORM2DPROC __glewUniform2d = NULL;\r\nPFNGLUNIFORM2DVPROC __glewUniform2dv = NULL;\r\nPFNGLUNIFORM3DPROC __glewUniform3d = NULL;\r\nPFNGLUNIFORM3DVPROC __glewUniform3dv = NULL;\r\nPFNGLUNIFORM4DPROC __glewUniform4d = NULL;\r\nPFNGLUNIFORM4DVPROC __glewUniform4dv = NULL;\r\nPFNGLUNIFORMMATRIX2DVPROC __glewUniformMatrix2dv = NULL;\r\nPFNGLUNIFORMMATRIX2X3DVPROC __glewUniformMatrix2x3dv = NULL;\r\nPFNGLUNIFORMMATRIX2X4DVPROC __glewUniformMatrix2x4dv = NULL;\r\nPFNGLUNIFORMMATRIX3DVPROC __glewUniformMatrix3dv = NULL;\r\nPFNGLUNIFORMMATRIX3X2DVPROC __glewUniformMatrix3x2dv = NULL;\r\nPFNGLUNIFORMMATRIX3X4DVPROC __glewUniformMatrix3x4dv = NULL;\r\nPFNGLUNIFORMMATRIX4DVPROC __glewUniformMatrix4dv = NULL;\r\nPFNGLUNIFORMMATRIX4X2DVPROC __glewUniformMatrix4x2dv = NULL;\r\nPFNGLUNIFORMMATRIX4X3DVPROC __glewUniformMatrix4x3dv = NULL;\r\n\r\nPFNGLGETUNIFORMI64VARBPROC __glewGetUniformi64vARB = NULL;\r\nPFNGLGETUNIFORMUI64VARBPROC __glewGetUniformui64vARB = NULL;\r\nPFNGLGETNUNIFORMI64VARBPROC __glewGetnUniformi64vARB = NULL;\r\nPFNGLGETNUNIFORMUI64VARBPROC __glewGetnUniformui64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM1I64ARBPROC __glewProgramUniform1i64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM1I64VARBPROC __glewProgramUniform1i64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM1UI64ARBPROC __glewProgramUniform1ui64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM1UI64VARBPROC __glewProgramUniform1ui64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM2I64ARBPROC __glewProgramUniform2i64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM2I64VARBPROC __glewProgramUniform2i64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM2UI64ARBPROC __glewProgramUniform2ui64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM2UI64VARBPROC __glewProgramUniform2ui64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM3I64ARBPROC __glewProgramUniform3i64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM3I64VARBPROC __glewProgramUniform3i64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM3UI64ARBPROC __glewProgramUniform3ui64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM3UI64VARBPROC __glewProgramUniform3ui64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM4I64ARBPROC __glewProgramUniform4i64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM4I64VARBPROC __glewProgramUniform4i64vARB = NULL;\r\nPFNGLPROGRAMUNIFORM4UI64ARBPROC __glewProgramUniform4ui64ARB = NULL;\r\nPFNGLPROGRAMUNIFORM4UI64VARBPROC __glewProgramUniform4ui64vARB = NULL;\r\nPFNGLUNIFORM1I64ARBPROC __glewUniform1i64ARB = NULL;\r\nPFNGLUNIFORM1I64VARBPROC __glewUniform1i64vARB = NULL;\r\nPFNGLUNIFORM1UI64ARBPROC __glewUniform1ui64ARB = NULL;\r\nPFNGLUNIFORM1UI64VARBPROC __glewUniform1ui64vARB = NULL;\r\nPFNGLUNIFORM2I64ARBPROC __glewUniform2i64ARB = NULL;\r\nPFNGLUNIFORM2I64VARBPROC __glewUniform2i64vARB = NULL;\r\nPFNGLUNIFORM2UI64ARBPROC __glewUniform2ui64ARB = NULL;\r\nPFNGLUNIFORM2UI64VARBPROC __glewUniform2ui64vARB = NULL;\r\nPFNGLUNIFORM3I64ARBPROC __glewUniform3i64ARB = NULL;\r\nPFNGLUNIFORM3I64VARBPROC __glewUniform3i64vARB = NULL;\r\nPFNGLUNIFORM3UI64ARBPROC __glewUniform3ui64ARB = NULL;\r\nPFNGLUNIFORM3UI64VARBPROC __glewUniform3ui64vARB = NULL;\r\nPFNGLUNIFORM4I64ARBPROC __glewUniform4i64ARB = NULL;\r\nPFNGLUNIFORM4I64VARBPROC __glewUniform4i64vARB = NULL;\r\nPFNGLUNIFORM4UI64ARBPROC __glewUniform4ui64ARB = NULL;\r\nPFNGLUNIFORM4UI64VARBPROC __glewUniform4ui64vARB = NULL;\r\n\r\nPFNGLCOLORSUBTABLEPROC __glewColorSubTable = NULL;\r\nPFNGLCOLORTABLEPROC __glewColorTable = NULL;\r\nPFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv = NULL;\r\nPFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv = NULL;\r\nPFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D = NULL;\r\nPFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D = NULL;\r\nPFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf = NULL;\r\nPFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv = NULL;\r\nPFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri = NULL;\r\nPFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv = NULL;\r\nPFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable = NULL;\r\nPFNGLCOPYCOLORTABLEPROC __glewCopyColorTable = NULL;\r\nPFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D = NULL;\r\nPFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D = NULL;\r\nPFNGLGETCOLORTABLEPROC __glewGetColorTable = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv = NULL;\r\nPFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter = NULL;\r\nPFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv = NULL;\r\nPFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv = NULL;\r\nPFNGLGETHISTOGRAMPROC __glewGetHistogram = NULL;\r\nPFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv = NULL;\r\nPFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv = NULL;\r\nPFNGLGETMINMAXPROC __glewGetMinmax = NULL;\r\nPFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv = NULL;\r\nPFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv = NULL;\r\nPFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter = NULL;\r\nPFNGLHISTOGRAMPROC __glewHistogram = NULL;\r\nPFNGLMINMAXPROC __glewMinmax = NULL;\r\nPFNGLRESETHISTOGRAMPROC __glewResetHistogram = NULL;\r\nPFNGLRESETMINMAXPROC __glewResetMinmax = NULL;\r\nPFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC __glewMultiDrawArraysIndirectCountARB = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC __glewMultiDrawElementsIndirectCountARB = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB = NULL;\r\nPFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB = NULL;\r\n\r\nPFNGLGETINTERNALFORMATIVPROC __glewGetInternalformativ = NULL;\r\n\r\nPFNGLGETINTERNALFORMATI64VPROC __glewGetInternalformati64v = NULL;\r\n\r\nPFNGLINVALIDATEBUFFERDATAPROC __glewInvalidateBufferData = NULL;\r\nPFNGLINVALIDATEBUFFERSUBDATAPROC __glewInvalidateBufferSubData = NULL;\r\nPFNGLINVALIDATEFRAMEBUFFERPROC __glewInvalidateFramebuffer = NULL;\r\nPFNGLINVALIDATESUBFRAMEBUFFERPROC __glewInvalidateSubFramebuffer = NULL;\r\nPFNGLINVALIDATETEXIMAGEPROC __glewInvalidateTexImage = NULL;\r\nPFNGLINVALIDATETEXSUBIMAGEPROC __glewInvalidateTexSubImage = NULL;\r\n\r\nPFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange = NULL;\r\nPFNGLMAPBUFFERRANGEPROC __glewMapBufferRange = NULL;\r\n\r\nPFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB = NULL;\r\nPFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB = NULL;\r\nPFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB = NULL;\r\nPFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB = NULL;\r\nPFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB = NULL;\r\n\r\nPFNGLBINDBUFFERSBASEPROC __glewBindBuffersBase = NULL;\r\nPFNGLBINDBUFFERSRANGEPROC __glewBindBuffersRange = NULL;\r\nPFNGLBINDIMAGETEXTURESPROC __glewBindImageTextures = NULL;\r\nPFNGLBINDSAMPLERSPROC __glewBindSamplers = NULL;\r\nPFNGLBINDTEXTURESPROC __glewBindTextures = NULL;\r\nPFNGLBINDVERTEXBUFFERSPROC __glewBindVertexBuffers = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTPROC __glewMultiDrawArraysIndirect = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTPROC __glewMultiDrawElementsIndirect = NULL;\r\n\r\nPFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB = NULL;\r\n\r\nPFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB = NULL;\r\nPFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB = NULL;\r\nPFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB = NULL;\r\nPFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB = NULL;\r\nPFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB = NULL;\r\nPFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB = NULL;\r\nPFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB = NULL;\r\nPFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB = NULL;\r\nPFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB = NULL;\r\nPFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB = NULL;\r\nPFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB = NULL;\r\nPFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB = NULL;\r\nPFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB = NULL;\r\nPFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB = NULL;\r\nPFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB = NULL;\r\nPFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB = NULL;\r\nPFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB = NULL;\r\nPFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB = NULL;\r\nPFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB = NULL;\r\nPFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB = NULL;\r\nPFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB = NULL;\r\nPFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB = NULL;\r\nPFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB = NULL;\r\nPFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB = NULL;\r\nPFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB = NULL;\r\nPFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB = NULL;\r\nPFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB = NULL;\r\nPFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB = NULL;\r\nPFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB = NULL;\r\nPFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB = NULL;\r\nPFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB = NULL;\r\nPFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB = NULL;\r\nPFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB = NULL;\r\nPFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB = NULL;\r\n\r\nPFNGLBEGINQUERYARBPROC __glewBeginQueryARB = NULL;\r\nPFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB = NULL;\r\nPFNGLENDQUERYARBPROC __glewEndQueryARB = NULL;\r\nPFNGLGENQUERIESARBPROC __glewGenQueriesARB = NULL;\r\nPFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB = NULL;\r\nPFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB = NULL;\r\nPFNGLGETQUERYIVARBPROC __glewGetQueryivARB = NULL;\r\nPFNGLISQUERYARBPROC __glewIsQueryARB = NULL;\r\n\r\nPFNGLMAXSHADERCOMPILERTHREADSARBPROC __glewMaxShaderCompilerThreadsARB = NULL;\r\n\r\nPFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB = NULL;\r\nPFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB = NULL;\r\n\r\nPFNGLPOLYGONOFFSETCLAMPPROC __glewPolygonOffsetClamp = NULL;\r\n\r\nPFNGLGETPROGRAMINTERFACEIVPROC __glewGetProgramInterfaceiv = NULL;\r\nPFNGLGETPROGRAMRESOURCEINDEXPROC __glewGetProgramResourceIndex = NULL;\r\nPFNGLGETPROGRAMRESOURCELOCATIONPROC __glewGetProgramResourceLocation = NULL;\r\nPFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC __glewGetProgramResourceLocationIndex = NULL;\r\nPFNGLGETPROGRAMRESOURCENAMEPROC __glewGetProgramResourceName = NULL;\r\nPFNGLGETPROGRAMRESOURCEIVPROC __glewGetProgramResourceiv = NULL;\r\n\r\nPFNGLPROVOKINGVERTEXPROC __glewProvokingVertex = NULL;\r\n\r\nPFNGLGETGRAPHICSRESETSTATUSARBPROC __glewGetGraphicsResetStatusARB = NULL;\r\nPFNGLGETNCOLORTABLEARBPROC __glewGetnColorTableARB = NULL;\r\nPFNGLGETNCOMPRESSEDTEXIMAGEARBPROC __glewGetnCompressedTexImageARB = NULL;\r\nPFNGLGETNCONVOLUTIONFILTERARBPROC __glewGetnConvolutionFilterARB = NULL;\r\nPFNGLGETNHISTOGRAMARBPROC __glewGetnHistogramARB = NULL;\r\nPFNGLGETNMAPDVARBPROC __glewGetnMapdvARB = NULL;\r\nPFNGLGETNMAPFVARBPROC __glewGetnMapfvARB = NULL;\r\nPFNGLGETNMAPIVARBPROC __glewGetnMapivARB = NULL;\r\nPFNGLGETNMINMAXARBPROC __glewGetnMinmaxARB = NULL;\r\nPFNGLGETNPIXELMAPFVARBPROC __glewGetnPixelMapfvARB = NULL;\r\nPFNGLGETNPIXELMAPUIVARBPROC __glewGetnPixelMapuivARB = NULL;\r\nPFNGLGETNPIXELMAPUSVARBPROC __glewGetnPixelMapusvARB = NULL;\r\nPFNGLGETNPOLYGONSTIPPLEARBPROC __glewGetnPolygonStippleARB = NULL;\r\nPFNGLGETNSEPARABLEFILTERARBPROC __glewGetnSeparableFilterARB = NULL;\r\nPFNGLGETNTEXIMAGEARBPROC __glewGetnTexImageARB = NULL;\r\nPFNGLGETNUNIFORMDVARBPROC __glewGetnUniformdvARB = NULL;\r\nPFNGLGETNUNIFORMFVARBPROC __glewGetnUniformfvARB = NULL;\r\nPFNGLGETNUNIFORMIVARBPROC __glewGetnUniformivARB = NULL;\r\nPFNGLGETNUNIFORMUIVARBPROC __glewGetnUniformuivARB = NULL;\r\nPFNGLREADNPIXELSARBPROC __glewReadnPixelsARB = NULL;\r\n\r\nPFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewFramebufferSampleLocationsfvARB = NULL;\r\nPFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC __glewNamedFramebufferSampleLocationsfvARB = NULL;\r\n\r\nPFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB = NULL;\r\n\r\nPFNGLBINDSAMPLERPROC __glewBindSampler = NULL;\r\nPFNGLDELETESAMPLERSPROC __glewDeleteSamplers = NULL;\r\nPFNGLGENSAMPLERSPROC __glewGenSamplers = NULL;\r\nPFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv = NULL;\r\nPFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv = NULL;\r\nPFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv = NULL;\r\nPFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv = NULL;\r\nPFNGLISSAMPLERPROC __glewIsSampler = NULL;\r\nPFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv = NULL;\r\nPFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv = NULL;\r\nPFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf = NULL;\r\nPFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv = NULL;\r\nPFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri = NULL;\r\nPFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv = NULL;\r\n\r\nPFNGLACTIVESHADERPROGRAMPROC __glewActiveShaderProgram = NULL;\r\nPFNGLBINDPROGRAMPIPELINEPROC __glewBindProgramPipeline = NULL;\r\nPFNGLCREATESHADERPROGRAMVPROC __glewCreateShaderProgramv = NULL;\r\nPFNGLDELETEPROGRAMPIPELINESPROC __glewDeleteProgramPipelines = NULL;\r\nPFNGLGENPROGRAMPIPELINESPROC __glewGenProgramPipelines = NULL;\r\nPFNGLGETPROGRAMPIPELINEINFOLOGPROC __glewGetProgramPipelineInfoLog = NULL;\r\nPFNGLGETPROGRAMPIPELINEIVPROC __glewGetProgramPipelineiv = NULL;\r\nPFNGLISPROGRAMPIPELINEPROC __glewIsProgramPipeline = NULL;\r\nPFNGLPROGRAMUNIFORM1DPROC __glewProgramUniform1d = NULL;\r\nPFNGLPROGRAMUNIFORM1DVPROC __glewProgramUniform1dv = NULL;\r\nPFNGLPROGRAMUNIFORM1FPROC __glewProgramUniform1f = NULL;\r\nPFNGLPROGRAMUNIFORM1FVPROC __glewProgramUniform1fv = NULL;\r\nPFNGLPROGRAMUNIFORM1IPROC __glewProgramUniform1i = NULL;\r\nPFNGLPROGRAMUNIFORM1IVPROC __glewProgramUniform1iv = NULL;\r\nPFNGLPROGRAMUNIFORM1UIPROC __glewProgramUniform1ui = NULL;\r\nPFNGLPROGRAMUNIFORM1UIVPROC __glewProgramUniform1uiv = NULL;\r\nPFNGLPROGRAMUNIFORM2DPROC __glewProgramUniform2d = NULL;\r\nPFNGLPROGRAMUNIFORM2DVPROC __glewProgramUniform2dv = NULL;\r\nPFNGLPROGRAMUNIFORM2FPROC __glewProgramUniform2f = NULL;\r\nPFNGLPROGRAMUNIFORM2FVPROC __glewProgramUniform2fv = NULL;\r\nPFNGLPROGRAMUNIFORM2IPROC __glewProgramUniform2i = NULL;\r\nPFNGLPROGRAMUNIFORM2IVPROC __glewProgramUniform2iv = NULL;\r\nPFNGLPROGRAMUNIFORM2UIPROC __glewProgramUniform2ui = NULL;\r\nPFNGLPROGRAMUNIFORM2UIVPROC __glewProgramUniform2uiv = NULL;\r\nPFNGLPROGRAMUNIFORM3DPROC __glewProgramUniform3d = NULL;\r\nPFNGLPROGRAMUNIFORM3DVPROC __glewProgramUniform3dv = NULL;\r\nPFNGLPROGRAMUNIFORM3FPROC __glewProgramUniform3f = NULL;\r\nPFNGLPROGRAMUNIFORM3FVPROC __glewProgramUniform3fv = NULL;\r\nPFNGLPROGRAMUNIFORM3IPROC __glewProgramUniform3i = NULL;\r\nPFNGLPROGRAMUNIFORM3IVPROC __glewProgramUniform3iv = NULL;\r\nPFNGLPROGRAMUNIFORM3UIPROC __glewProgramUniform3ui = NULL;\r\nPFNGLPROGRAMUNIFORM3UIVPROC __glewProgramUniform3uiv = NULL;\r\nPFNGLPROGRAMUNIFORM4DPROC __glewProgramUniform4d = NULL;\r\nPFNGLPROGRAMUNIFORM4DVPROC __glewProgramUniform4dv = NULL;\r\nPFNGLPROGRAMUNIFORM4FPROC __glewProgramUniform4f = NULL;\r\nPFNGLPROGRAMUNIFORM4FVPROC __glewProgramUniform4fv = NULL;\r\nPFNGLPROGRAMUNIFORM4IPROC __glewProgramUniform4i = NULL;\r\nPFNGLPROGRAMUNIFORM4IVPROC __glewProgramUniform4iv = NULL;\r\nPFNGLPROGRAMUNIFORM4UIPROC __glewProgramUniform4ui = NULL;\r\nPFNGLPROGRAMUNIFORM4UIVPROC __glewProgramUniform4uiv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2DVPROC __glewProgramUniformMatrix2dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2FVPROC __glewProgramUniformMatrix2fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X3DVPROC __glewProgramUniformMatrix2x3dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X3FVPROC __glewProgramUniformMatrix2x3fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X4DVPROC __glewProgramUniformMatrix2x4dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X4FVPROC __glewProgramUniformMatrix2x4fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3DVPROC __glewProgramUniformMatrix3dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3FVPROC __glewProgramUniformMatrix3fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X2DVPROC __glewProgramUniformMatrix3x2dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X2FVPROC __glewProgramUniformMatrix3x2fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X4DVPROC __glewProgramUniformMatrix3x4dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X4FVPROC __glewProgramUniformMatrix3x4fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4DVPROC __glewProgramUniformMatrix4dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4FVPROC __glewProgramUniformMatrix4fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X2DVPROC __glewProgramUniformMatrix4x2dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X2FVPROC __glewProgramUniformMatrix4x2fv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X3DVPROC __glewProgramUniformMatrix4x3dv = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X3FVPROC __glewProgramUniformMatrix4x3fv = NULL;\r\nPFNGLUSEPROGRAMSTAGESPROC __glewUseProgramStages = NULL;\r\nPFNGLVALIDATEPROGRAMPIPELINEPROC __glewValidateProgramPipeline = NULL;\r\n\r\nPFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC __glewGetActiveAtomicCounterBufferiv = NULL;\r\n\r\nPFNGLBINDIMAGETEXTUREPROC __glewBindImageTexture = NULL;\r\nPFNGLMEMORYBARRIERPROC __glewMemoryBarrier = NULL;\r\n\r\nPFNGLATTACHOBJECTARBPROC __glewAttachObjectARB = NULL;\r\nPFNGLCOMPILESHADERARBPROC __glewCompileShaderARB = NULL;\r\nPFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB = NULL;\r\nPFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB = NULL;\r\nPFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB = NULL;\r\nPFNGLDETACHOBJECTARBPROC __glewDetachObjectARB = NULL;\r\nPFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB = NULL;\r\nPFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB = NULL;\r\nPFNGLGETHANDLEARBPROC __glewGetHandleARB = NULL;\r\nPFNGLGETINFOLOGARBPROC __glewGetInfoLogARB = NULL;\r\nPFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB = NULL;\r\nPFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB = NULL;\r\nPFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB = NULL;\r\nPFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB = NULL;\r\nPFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB = NULL;\r\nPFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB = NULL;\r\nPFNGLLINKPROGRAMARBPROC __glewLinkProgramARB = NULL;\r\nPFNGLSHADERSOURCEARBPROC __glewShaderSourceARB = NULL;\r\nPFNGLUNIFORM1FARBPROC __glewUniform1fARB = NULL;\r\nPFNGLUNIFORM1FVARBPROC __glewUniform1fvARB = NULL;\r\nPFNGLUNIFORM1IARBPROC __glewUniform1iARB = NULL;\r\nPFNGLUNIFORM1IVARBPROC __glewUniform1ivARB = NULL;\r\nPFNGLUNIFORM2FARBPROC __glewUniform2fARB = NULL;\r\nPFNGLUNIFORM2FVARBPROC __glewUniform2fvARB = NULL;\r\nPFNGLUNIFORM2IARBPROC __glewUniform2iARB = NULL;\r\nPFNGLUNIFORM2IVARBPROC __glewUniform2ivARB = NULL;\r\nPFNGLUNIFORM3FARBPROC __glewUniform3fARB = NULL;\r\nPFNGLUNIFORM3FVARBPROC __glewUniform3fvARB = NULL;\r\nPFNGLUNIFORM3IARBPROC __glewUniform3iARB = NULL;\r\nPFNGLUNIFORM3IVARBPROC __glewUniform3ivARB = NULL;\r\nPFNGLUNIFORM4FARBPROC __glewUniform4fARB = NULL;\r\nPFNGLUNIFORM4FVARBPROC __glewUniform4fvARB = NULL;\r\nPFNGLUNIFORM4IARBPROC __glewUniform4iARB = NULL;\r\nPFNGLUNIFORM4IVARBPROC __glewUniform4ivARB = NULL;\r\nPFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB = NULL;\r\nPFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB = NULL;\r\nPFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB = NULL;\r\nPFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB = NULL;\r\nPFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB = NULL;\r\n\r\nPFNGLSHADERSTORAGEBLOCKBINDINGPROC __glewShaderStorageBlockBinding = NULL;\r\n\r\nPFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName = NULL;\r\nPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName = NULL;\r\nPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv = NULL;\r\nPFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv = NULL;\r\nPFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex = NULL;\r\nPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation = NULL;\r\nPFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv = NULL;\r\nPFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv = NULL;\r\n\r\nPFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB = NULL;\r\nPFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB = NULL;\r\nPFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB = NULL;\r\nPFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB = NULL;\r\nPFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB = NULL;\r\nPFNGLNAMEDSTRINGARBPROC __glewNamedStringARB = NULL;\r\n\r\nPFNGLBUFFERPAGECOMMITMENTARBPROC __glewBufferPageCommitmentARB = NULL;\r\n\r\nPFNGLTEXPAGECOMMITMENTARBPROC __glewTexPageCommitmentARB = NULL;\r\n\r\nPFNGLCLIENTWAITSYNCPROC __glewClientWaitSync = NULL;\r\nPFNGLDELETESYNCPROC __glewDeleteSync = NULL;\r\nPFNGLFENCESYNCPROC __glewFenceSync = NULL;\r\nPFNGLGETINTEGER64VPROC __glewGetInteger64v = NULL;\r\nPFNGLGETSYNCIVPROC __glewGetSynciv = NULL;\r\nPFNGLISSYNCPROC __glewIsSync = NULL;\r\nPFNGLWAITSYNCPROC __glewWaitSync = NULL;\r\n\r\nPFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv = NULL;\r\nPFNGLPATCHPARAMETERIPROC __glewPatchParameteri = NULL;\r\n\r\nPFNGLTEXTUREBARRIERPROC __glewTextureBarrier = NULL;\r\n\r\nPFNGLTEXBUFFERARBPROC __glewTexBufferARB = NULL;\r\n\r\nPFNGLTEXBUFFERRANGEPROC __glewTexBufferRange = NULL;\r\nPFNGLTEXTUREBUFFERRANGEEXTPROC __glewTextureBufferRangeEXT = NULL;\r\n\r\nPFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB = NULL;\r\nPFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB = NULL;\r\nPFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB = NULL;\r\nPFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB = NULL;\r\n\r\nPFNGLGETMULTISAMPLEFVPROC __glewGetMultisamplefv = NULL;\r\nPFNGLSAMPLEMASKIPROC __glewSampleMaski = NULL;\r\nPFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample = NULL;\r\nPFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample = NULL;\r\n\r\nPFNGLTEXSTORAGE1DPROC __glewTexStorage1D = NULL;\r\nPFNGLTEXSTORAGE2DPROC __glewTexStorage2D = NULL;\r\nPFNGLTEXSTORAGE3DPROC __glewTexStorage3D = NULL;\r\n\r\nPFNGLTEXSTORAGE2DMULTISAMPLEPROC __glewTexStorage2DMultisample = NULL;\r\nPFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample = NULL;\r\nPFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC __glewTextureStorage2DMultisampleEXT = NULL;\r\nPFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC __glewTextureStorage3DMultisampleEXT = NULL;\r\n\r\nPFNGLTEXTUREVIEWPROC __glewTextureView = NULL;\r\n\r\nPFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v = NULL;\r\nPFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v = NULL;\r\nPFNGLQUERYCOUNTERPROC __glewQueryCounter = NULL;\r\n\r\nPFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback = NULL;\r\nPFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks = NULL;\r\nPFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback = NULL;\r\nPFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks = NULL;\r\nPFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback = NULL;\r\nPFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback = NULL;\r\nPFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback = NULL;\r\n\r\nPFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed = NULL;\r\nPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream = NULL;\r\nPFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed = NULL;\r\nPFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv = NULL;\r\n\r\nPFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC __glewDrawTransformFeedbackInstanced = NULL;\r\nPFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC __glewDrawTransformFeedbackStreamInstanced = NULL;\r\n\r\nPFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB = NULL;\r\nPFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB = NULL;\r\nPFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB = NULL;\r\nPFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB = NULL;\r\n\r\nPFNGLBINDBUFFERBASEPROC __glewBindBufferBase = NULL;\r\nPFNGLBINDBUFFERRANGEPROC __glewBindBufferRange = NULL;\r\nPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC __glewGetActiveUniformBlockName = NULL;\r\nPFNGLGETACTIVEUNIFORMBLOCKIVPROC __glewGetActiveUniformBlockiv = NULL;\r\nPFNGLGETACTIVEUNIFORMNAMEPROC __glewGetActiveUniformName = NULL;\r\nPFNGLGETACTIVEUNIFORMSIVPROC __glewGetActiveUniformsiv = NULL;\r\nPFNGLGETINTEGERI_VPROC __glewGetIntegeri_v = NULL;\r\nPFNGLGETUNIFORMBLOCKINDEXPROC __glewGetUniformBlockIndex = NULL;\r\nPFNGLGETUNIFORMINDICESPROC __glewGetUniformIndices = NULL;\r\nPFNGLUNIFORMBLOCKBINDINGPROC __glewUniformBlockBinding = NULL;\r\n\r\nPFNGLBINDVERTEXARRAYPROC __glewBindVertexArray = NULL;\r\nPFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays = NULL;\r\nPFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays = NULL;\r\nPFNGLISVERTEXARRAYPROC __glewIsVertexArray = NULL;\r\n\r\nPFNGLGETVERTEXATTRIBLDVPROC __glewGetVertexAttribLdv = NULL;\r\nPFNGLVERTEXATTRIBL1DPROC __glewVertexAttribL1d = NULL;\r\nPFNGLVERTEXATTRIBL1DVPROC __glewVertexAttribL1dv = NULL;\r\nPFNGLVERTEXATTRIBL2DPROC __glewVertexAttribL2d = NULL;\r\nPFNGLVERTEXATTRIBL2DVPROC __glewVertexAttribL2dv = NULL;\r\nPFNGLVERTEXATTRIBL3DPROC __glewVertexAttribL3d = NULL;\r\nPFNGLVERTEXATTRIBL3DVPROC __glewVertexAttribL3dv = NULL;\r\nPFNGLVERTEXATTRIBL4DPROC __glewVertexAttribL4d = NULL;\r\nPFNGLVERTEXATTRIBL4DVPROC __glewVertexAttribL4dv = NULL;\r\nPFNGLVERTEXATTRIBLPOINTERPROC __glewVertexAttribLPointer = NULL;\r\n\r\nPFNGLBINDVERTEXBUFFERPROC __glewBindVertexBuffer = NULL;\r\nPFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC __glewVertexArrayBindVertexBufferEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC __glewVertexArrayVertexAttribBindingEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC __glewVertexArrayVertexAttribFormatEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC __glewVertexArrayVertexAttribIFormatEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC __glewVertexArrayVertexAttribLFormatEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC __glewVertexArrayVertexBindingDivisorEXT = NULL;\r\nPFNGLVERTEXATTRIBBINDINGPROC __glewVertexAttribBinding = NULL;\r\nPFNGLVERTEXATTRIBFORMATPROC __glewVertexAttribFormat = NULL;\r\nPFNGLVERTEXATTRIBIFORMATPROC __glewVertexAttribIFormat = NULL;\r\nPFNGLVERTEXATTRIBLFORMATPROC __glewVertexAttribLFormat = NULL;\r\nPFNGLVERTEXBINDINGDIVISORPROC __glewVertexBindingDivisor = NULL;\r\n\r\nPFNGLVERTEXBLENDARBPROC __glewVertexBlendARB = NULL;\r\nPFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB = NULL;\r\nPFNGLWEIGHTBVARBPROC __glewWeightbvARB = NULL;\r\nPFNGLWEIGHTDVARBPROC __glewWeightdvARB = NULL;\r\nPFNGLWEIGHTFVARBPROC __glewWeightfvARB = NULL;\r\nPFNGLWEIGHTIVARBPROC __glewWeightivARB = NULL;\r\nPFNGLWEIGHTSVARBPROC __glewWeightsvARB = NULL;\r\nPFNGLWEIGHTUBVARBPROC __glewWeightubvARB = NULL;\r\nPFNGLWEIGHTUIVARBPROC __glewWeightuivARB = NULL;\r\nPFNGLWEIGHTUSVARBPROC __glewWeightusvARB = NULL;\r\n\r\nPFNGLBINDBUFFERARBPROC __glewBindBufferARB = NULL;\r\nPFNGLBUFFERDATAARBPROC __glewBufferDataARB = NULL;\r\nPFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB = NULL;\r\nPFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB = NULL;\r\nPFNGLGENBUFFERSARBPROC __glewGenBuffersARB = NULL;\r\nPFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB = NULL;\r\nPFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB = NULL;\r\nPFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB = NULL;\r\nPFNGLISBUFFERARBPROC __glewIsBufferARB = NULL;\r\nPFNGLMAPBUFFERARBPROC __glewMapBufferARB = NULL;\r\nPFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB = NULL;\r\n\r\nPFNGLBINDPROGRAMARBPROC __glewBindProgramARB = NULL;\r\nPFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB = NULL;\r\nPFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB = NULL;\r\nPFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB = NULL;\r\nPFNGLGENPROGRAMSARBPROC __glewGenProgramsARB = NULL;\r\nPFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB = NULL;\r\nPFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB = NULL;\r\nPFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB = NULL;\r\nPFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB = NULL;\r\nPFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB = NULL;\r\nPFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB = NULL;\r\nPFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB = NULL;\r\nPFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB = NULL;\r\nPFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB = NULL;\r\nPFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB = NULL;\r\nPFNGLISPROGRAMARBPROC __glewIsProgramARB = NULL;\r\nPFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB = NULL;\r\nPFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB = NULL;\r\nPFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB = NULL;\r\nPFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB = NULL;\r\nPFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB = NULL;\r\nPFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB = NULL;\r\nPFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB = NULL;\r\nPFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB = NULL;\r\nPFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB = NULL;\r\nPFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB = NULL;\r\nPFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB = NULL;\r\nPFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB = NULL;\r\nPFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB = NULL;\r\nPFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB = NULL;\r\nPFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB = NULL;\r\nPFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB = NULL;\r\nPFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB = NULL;\r\nPFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB = NULL;\r\nPFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB = NULL;\r\nPFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB = NULL;\r\nPFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB = NULL;\r\nPFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB = NULL;\r\nPFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB = NULL;\r\nPFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB = NULL;\r\nPFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB = NULL;\r\nPFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB = NULL;\r\nPFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB = NULL;\r\nPFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB = NULL;\r\nPFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB = NULL;\r\nPFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB = NULL;\r\nPFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB = NULL;\r\nPFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB = NULL;\r\nPFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB = NULL;\r\nPFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB = NULL;\r\nPFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB = NULL;\r\nPFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB = NULL;\r\nPFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB = NULL;\r\nPFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB = NULL;\r\nPFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB = NULL;\r\nPFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB = NULL;\r\nPFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB = NULL;\r\nPFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB = NULL;\r\nPFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB = NULL;\r\nPFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB = NULL;\r\nPFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB = NULL;\r\nPFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB = NULL;\r\n\r\nPFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB = NULL;\r\nPFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB = NULL;\r\nPFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB = NULL;\r\n\r\nPFNGLCOLORP3UIPROC __glewColorP3ui = NULL;\r\nPFNGLCOLORP3UIVPROC __glewColorP3uiv = NULL;\r\nPFNGLCOLORP4UIPROC __glewColorP4ui = NULL;\r\nPFNGLCOLORP4UIVPROC __glewColorP4uiv = NULL;\r\nPFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui = NULL;\r\nPFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv = NULL;\r\nPFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui = NULL;\r\nPFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv = NULL;\r\nPFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui = NULL;\r\nPFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv = NULL;\r\nPFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui = NULL;\r\nPFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv = NULL;\r\nPFNGLNORMALP3UIPROC __glewNormalP3ui = NULL;\r\nPFNGLNORMALP3UIVPROC __glewNormalP3uiv = NULL;\r\nPFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui = NULL;\r\nPFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv = NULL;\r\nPFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui = NULL;\r\nPFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv = NULL;\r\nPFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui = NULL;\r\nPFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv = NULL;\r\nPFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui = NULL;\r\nPFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv = NULL;\r\nPFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui = NULL;\r\nPFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv = NULL;\r\nPFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui = NULL;\r\nPFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv = NULL;\r\nPFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui = NULL;\r\nPFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv = NULL;\r\nPFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui = NULL;\r\nPFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv = NULL;\r\nPFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui = NULL;\r\nPFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv = NULL;\r\nPFNGLVERTEXP2UIPROC __glewVertexP2ui = NULL;\r\nPFNGLVERTEXP2UIVPROC __glewVertexP2uiv = NULL;\r\nPFNGLVERTEXP3UIPROC __glewVertexP3ui = NULL;\r\nPFNGLVERTEXP3UIVPROC __glewVertexP3uiv = NULL;\r\nPFNGLVERTEXP4UIPROC __glewVertexP4ui = NULL;\r\nPFNGLVERTEXP4UIVPROC __glewVertexP4uiv = NULL;\r\n\r\nPFNGLDEPTHRANGEARRAYVPROC __glewDepthRangeArrayv = NULL;\r\nPFNGLDEPTHRANGEINDEXEDPROC __glewDepthRangeIndexed = NULL;\r\nPFNGLGETDOUBLEI_VPROC __glewGetDoublei_v = NULL;\r\nPFNGLGETFLOATI_VPROC __glewGetFloati_v = NULL;\r\nPFNGLSCISSORARRAYVPROC __glewScissorArrayv = NULL;\r\nPFNGLSCISSORINDEXEDPROC __glewScissorIndexed = NULL;\r\nPFNGLSCISSORINDEXEDVPROC __glewScissorIndexedv = NULL;\r\nPFNGLVIEWPORTARRAYVPROC __glewViewportArrayv = NULL;\r\nPFNGLVIEWPORTINDEXEDFPROC __glewViewportIndexedf = NULL;\r\nPFNGLVIEWPORTINDEXEDFVPROC __glewViewportIndexedfv = NULL;\r\n\r\nPFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB = NULL;\r\nPFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB = NULL;\r\nPFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB = NULL;\r\nPFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB = NULL;\r\nPFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB = NULL;\r\nPFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB = NULL;\r\nPFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB = NULL;\r\nPFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB = NULL;\r\nPFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB = NULL;\r\nPFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB = NULL;\r\nPFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB = NULL;\r\nPFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB = NULL;\r\nPFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB = NULL;\r\nPFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB = NULL;\r\nPFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB = NULL;\r\nPFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB = NULL;\r\n\r\nPFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI = NULL;\r\n\r\nPFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI = NULL;\r\nPFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI = NULL;\r\nPFNGLELEMENTPOINTERATIPROC __glewElementPointerATI = NULL;\r\n\r\nPFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI = NULL;\r\nPFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI = NULL;\r\nPFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI = NULL;\r\nPFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI = NULL;\r\n\r\nPFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI = NULL;\r\nPFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI = NULL;\r\nPFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI = NULL;\r\nPFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI = NULL;\r\nPFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI = NULL;\r\nPFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI = NULL;\r\nPFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI = NULL;\r\nPFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI = NULL;\r\nPFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI = NULL;\r\nPFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI = NULL;\r\nPFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI = NULL;\r\nPFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI = NULL;\r\nPFNGLSAMPLEMAPATIPROC __glewSampleMapATI = NULL;\r\nPFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI = NULL;\r\n\r\nPFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI = NULL;\r\nPFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI = NULL;\r\n\r\nPFNGLPNTRIANGLESFATIPROC __glewPNTrianglesfATI = NULL;\r\nPFNGLPNTRIANGLESIATIPROC __glewPNTrianglesiATI = NULL;\r\n\r\nPFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI = NULL;\r\nPFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI = NULL;\r\n\r\nPFNGLARRAYOBJECTATIPROC __glewArrayObjectATI = NULL;\r\nPFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI = NULL;\r\nPFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI = NULL;\r\nPFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI = NULL;\r\nPFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI = NULL;\r\nPFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI = NULL;\r\nPFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI = NULL;\r\nPFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI = NULL;\r\nPFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI = NULL;\r\nPFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI = NULL;\r\nPFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI = NULL;\r\nPFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI = NULL;\r\n\r\nPFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI = NULL;\r\nPFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI = NULL;\r\nPFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI = NULL;\r\n\r\nPFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI = NULL;\r\nPFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI = NULL;\r\nPFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI = NULL;\r\nPFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI = NULL;\r\nPFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI = NULL;\r\nPFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI = NULL;\r\nPFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI = NULL;\r\nPFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI = NULL;\r\nPFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI = NULL;\r\nPFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI = NULL;\r\nPFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI = NULL;\r\nPFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI = NULL;\r\nPFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI = NULL;\r\nPFNGLVERTEXSTREAM1DATIPROC __glewVertexStream1dATI = NULL;\r\nPFNGLVERTEXSTREAM1DVATIPROC __glewVertexStream1dvATI = NULL;\r\nPFNGLVERTEXSTREAM1FATIPROC __glewVertexStream1fATI = NULL;\r\nPFNGLVERTEXSTREAM1FVATIPROC __glewVertexStream1fvATI = NULL;\r\nPFNGLVERTEXSTREAM1IATIPROC __glewVertexStream1iATI = NULL;\r\nPFNGLVERTEXSTREAM1IVATIPROC __glewVertexStream1ivATI = NULL;\r\nPFNGLVERTEXSTREAM1SATIPROC __glewVertexStream1sATI = NULL;\r\nPFNGLVERTEXSTREAM1SVATIPROC __glewVertexStream1svATI = NULL;\r\nPFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI = NULL;\r\nPFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI = NULL;\r\nPFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI = NULL;\r\nPFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI = NULL;\r\nPFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI = NULL;\r\nPFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI = NULL;\r\nPFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI = NULL;\r\nPFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI = NULL;\r\nPFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI = NULL;\r\nPFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI = NULL;\r\nPFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI = NULL;\r\nPFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI = NULL;\r\nPFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI = NULL;\r\nPFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI = NULL;\r\nPFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI = NULL;\r\nPFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI = NULL;\r\nPFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI = NULL;\r\nPFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI = NULL;\r\nPFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI = NULL;\r\nPFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI = NULL;\r\nPFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI = NULL;\r\nPFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI = NULL;\r\nPFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI = NULL;\r\nPFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC __glewDrawArraysInstancedBaseInstanceEXT = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseInstanceEXT = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC __glewDrawElementsInstancedBaseVertexBaseInstanceEXT = NULL;\r\n\r\nPFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT = NULL;\r\nPFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT = NULL;\r\nPFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT = NULL;\r\n\r\nPFNGLBLENDCOLOREXTPROC __glewBlendColorEXT = NULL;\r\n\r\nPFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT = NULL;\r\n\r\nPFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC __glewBindFragDataLocationIndexedEXT = NULL;\r\nPFNGLGETFRAGDATAINDEXEXTPROC __glewGetFragDataIndexEXT = NULL;\r\nPFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC __glewGetProgramResourceLocationIndexEXT = NULL;\r\n\r\nPFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT = NULL;\r\n\r\nPFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT = NULL;\r\n\r\nPFNGLBUFFERSTORAGEEXTPROC __glewBufferStorageEXT = NULL;\r\nPFNGLNAMEDBUFFERSTORAGEEXTPROC __glewNamedBufferStorageEXT = NULL;\r\n\r\nPFNGLCLEARTEXIMAGEEXTPROC __glewClearTexImageEXT = NULL;\r\nPFNGLCLEARTEXSUBIMAGEEXTPROC __glewClearTexSubImageEXT = NULL;\r\n\r\nPFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT = NULL;\r\nPFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT = NULL;\r\n\r\nPFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT = NULL;\r\nPFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT = NULL;\r\n\r\nPFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT = NULL;\r\nPFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT = NULL;\r\nPFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT = NULL;\r\nPFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT = NULL;\r\nPFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT = NULL;\r\nPFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT = NULL;\r\nPFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT = NULL;\r\nPFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT = NULL;\r\nPFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT = NULL;\r\nPFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT = NULL;\r\nPFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT = NULL;\r\nPFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT = NULL;\r\nPFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT = NULL;\r\n\r\nPFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT = NULL;\r\nPFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT = NULL;\r\n\r\nPFNGLCOPYIMAGESUBDATAEXTPROC __glewCopyImageSubDataEXT = NULL;\r\n\r\nPFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT = NULL;\r\nPFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT = NULL;\r\nPFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT = NULL;\r\nPFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT = NULL;\r\nPFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT = NULL;\r\n\r\nPFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT = NULL;\r\nPFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT = NULL;\r\n\r\nPFNGLGETOBJECTLABELEXTPROC __glewGetObjectLabelEXT = NULL;\r\nPFNGLLABELOBJECTEXTPROC __glewLabelObjectEXT = NULL;\r\n\r\nPFNGLINSERTEVENTMARKEREXTPROC __glewInsertEventMarkerEXT = NULL;\r\nPFNGLPOPGROUPMARKEREXTPROC __glewPopGroupMarkerEXT = NULL;\r\nPFNGLPUSHGROUPMARKEREXTPROC __glewPushGroupMarkerEXT = NULL;\r\n\r\nPFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT = NULL;\r\n\r\nPFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT = NULL;\r\nPFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT = NULL;\r\nPFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT = NULL;\r\nPFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT = NULL;\r\nPFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT = NULL;\r\nPFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT = NULL;\r\nPFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT = NULL;\r\nPFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT = NULL;\r\nPFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT = NULL;\r\nPFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT = NULL;\r\nPFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT = NULL;\r\nPFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT = NULL;\r\nPFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT = NULL;\r\nPFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT = NULL;\r\nPFNGLDISABLECLIENTSTATEIEXTPROC __glewDisableClientStateiEXT = NULL;\r\nPFNGLDISABLEVERTEXARRAYATTRIBEXTPROC __glewDisableVertexArrayAttribEXT = NULL;\r\nPFNGLDISABLEVERTEXARRAYEXTPROC __glewDisableVertexArrayEXT = NULL;\r\nPFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT = NULL;\r\nPFNGLENABLECLIENTSTATEIEXTPROC __glewEnableClientStateiEXT = NULL;\r\nPFNGLENABLEVERTEXARRAYATTRIBEXTPROC __glewEnableVertexArrayAttribEXT = NULL;\r\nPFNGLENABLEVERTEXARRAYEXTPROC __glewEnableVertexArrayEXT = NULL;\r\nPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC __glewFlushMappedNamedBufferRangeEXT = NULL;\r\nPFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT = NULL;\r\nPFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT = NULL;\r\nPFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT = NULL;\r\nPFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT = NULL;\r\nPFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT = NULL;\r\nPFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT = NULL;\r\nPFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT = NULL;\r\nPFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT = NULL;\r\nPFNGLGETDOUBLEI_VEXTPROC __glewGetDoublei_vEXT = NULL;\r\nPFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT = NULL;\r\nPFNGLGETFLOATI_VEXTPROC __glewGetFloati_vEXT = NULL;\r\nPFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT = NULL;\r\nPFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT = NULL;\r\nPFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT = NULL;\r\nPFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT = NULL;\r\nPFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT = NULL;\r\nPFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT = NULL;\r\nPFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT = NULL;\r\nPFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT = NULL;\r\nPFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT = NULL;\r\nPFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT = NULL;\r\nPFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT = NULL;\r\nPFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT = NULL;\r\nPFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT = NULL;\r\nPFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT = NULL;\r\nPFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT = NULL;\r\nPFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT = NULL;\r\nPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT = NULL;\r\nPFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT = NULL;\r\nPFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT = NULL;\r\nPFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT = NULL;\r\nPFNGLGETPOINTERI_VEXTPROC __glewGetPointeri_vEXT = NULL;\r\nPFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT = NULL;\r\nPFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT = NULL;\r\nPFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT = NULL;\r\nPFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT = NULL;\r\nPFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT = NULL;\r\nPFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT = NULL;\r\nPFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT = NULL;\r\nPFNGLGETVERTEXARRAYINTEGERI_VEXTPROC __glewGetVertexArrayIntegeri_vEXT = NULL;\r\nPFNGLGETVERTEXARRAYINTEGERVEXTPROC __glewGetVertexArrayIntegervEXT = NULL;\r\nPFNGLGETVERTEXARRAYPOINTERI_VEXTPROC __glewGetVertexArrayPointeri_vEXT = NULL;\r\nPFNGLGETVERTEXARRAYPOINTERVEXTPROC __glewGetVertexArrayPointervEXT = NULL;\r\nPFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT = NULL;\r\nPFNGLMAPNAMEDBUFFERRANGEEXTPROC __glewMapNamedBufferRangeEXT = NULL;\r\nPFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT = NULL;\r\nPFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT = NULL;\r\nPFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT = NULL;\r\nPFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT = NULL;\r\nPFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT = NULL;\r\nPFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT = NULL;\r\nPFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT = NULL;\r\nPFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT = NULL;\r\nPFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT = NULL;\r\nPFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT = NULL;\r\nPFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT = NULL;\r\nPFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT = NULL;\r\nPFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT = NULL;\r\nPFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT = NULL;\r\nPFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT = NULL;\r\nPFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT = NULL;\r\nPFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT = NULL;\r\nPFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT = NULL;\r\nPFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT = NULL;\r\nPFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT = NULL;\r\nPFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT = NULL;\r\nPFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT = NULL;\r\nPFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT = NULL;\r\nPFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT = NULL;\r\nPFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT = NULL;\r\nPFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT = NULL;\r\nPFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT = NULL;\r\nPFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT = NULL;\r\nPFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT = NULL;\r\nPFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT = NULL;\r\nPFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT = NULL;\r\nPFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT = NULL;\r\nPFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT = NULL;\r\nPFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT = NULL;\r\nPFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT = NULL;\r\nPFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT = NULL;\r\nPFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT = NULL;\r\nPFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT = NULL;\r\nPFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT = NULL;\r\nPFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT = NULL;\r\nPFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT = NULL;\r\nPFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT = NULL;\r\nPFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT = NULL;\r\nPFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT = NULL;\r\nPFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT = NULL;\r\nPFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT = NULL;\r\nPFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC __glewNamedCopyBufferSubDataEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT = NULL;\r\nPFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT = NULL;\r\nPFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT = NULL;\r\nPFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT = NULL;\r\nPFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT = NULL;\r\nPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT = NULL;\r\nPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT = NULL;\r\nPFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT = NULL;\r\nPFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT = NULL;\r\nPFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT = NULL;\r\nPFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT = NULL;\r\nPFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT = NULL;\r\nPFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT = NULL;\r\nPFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT = NULL;\r\nPFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT = NULL;\r\nPFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT = NULL;\r\nPFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT = NULL;\r\nPFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT = NULL;\r\nPFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT = NULL;\r\nPFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT = NULL;\r\nPFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT = NULL;\r\nPFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT = NULL;\r\nPFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT = NULL;\r\nPFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT = NULL;\r\nPFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT = NULL;\r\nPFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT = NULL;\r\nPFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT = NULL;\r\nPFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT = NULL;\r\nPFNGLVERTEXARRAYCOLOROFFSETEXTPROC __glewVertexArrayColorOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC __glewVertexArrayEdgeFlagOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC __glewVertexArrayFogCoordOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYINDEXOFFSETEXTPROC __glewVertexArrayIndexOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC __glewVertexArrayMultiTexCoordOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYNORMALOFFSETEXTPROC __glewVertexArrayNormalOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC __glewVertexArraySecondaryColorOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC __glewVertexArrayTexCoordOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC __glewVertexArrayVertexAttribDivisorEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC __glewVertexArrayVertexAttribIOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC __glewVertexArrayVertexAttribOffsetEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXOFFSETEXTPROC __glewVertexArrayVertexOffsetEXT = NULL;\r\n\r\nPFNGLDISCARDFRAMEBUFFEREXTPROC __glewDiscardFramebufferEXT = NULL;\r\n\r\nPFNGLDRAWBUFFERSEXTPROC __glewDrawBuffersEXT = NULL;\r\n\r\nPFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT = NULL;\r\nPFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT = NULL;\r\nPFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT = NULL;\r\nPFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT = NULL;\r\nPFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT = NULL;\r\nPFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT = NULL;\r\n\r\nPFNGLBLENDEQUATIONSEPARATEIEXTPROC __glewBlendEquationSeparateiEXT = NULL;\r\nPFNGLBLENDEQUATIONIEXTPROC __glewBlendEquationiEXT = NULL;\r\nPFNGLBLENDFUNCSEPARATEIEXTPROC __glewBlendFuncSeparateiEXT = NULL;\r\nPFNGLBLENDFUNCIEXTPROC __glewBlendFunciEXT = NULL;\r\nPFNGLCOLORMASKIEXTPROC __glewColorMaskiEXT = NULL;\r\nPFNGLDISABLEIEXTPROC __glewDisableiEXT = NULL;\r\nPFNGLENABLEIEXTPROC __glewEnableiEXT = NULL;\r\nPFNGLISENABLEDIEXTPROC __glewIsEnablediEXT = NULL;\r\n\r\nPFNGLDRAWELEMENTSBASEVERTEXEXTPROC __glewDrawElementsBaseVertexEXT = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC __glewDrawElementsInstancedBaseVertexEXT = NULL;\r\nPFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC __glewDrawRangeElementsBaseVertexEXT = NULL;\r\nPFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC __glewMultiDrawElementsBaseVertexEXT = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT = NULL;\r\n\r\nPFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT = NULL;\r\n\r\nPFNGLBUFFERSTORAGEEXTERNALEXTPROC __glewBufferStorageExternalEXT = NULL;\r\nPFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC __glewNamedBufferStorageExternalEXT = NULL;\r\n\r\nPFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT = NULL;\r\nPFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT = NULL;\r\nPFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT = NULL;\r\nPFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT = NULL;\r\nPFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT = NULL;\r\n\r\nPFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT = NULL;\r\nPFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT = NULL;\r\nPFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT = NULL;\r\nPFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT = NULL;\r\nPFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT = NULL;\r\nPFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT = NULL;\r\nPFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT = NULL;\r\nPFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT = NULL;\r\nPFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT = NULL;\r\nPFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT = NULL;\r\nPFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT = NULL;\r\nPFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT = NULL;\r\nPFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT = NULL;\r\nPFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT = NULL;\r\nPFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT = NULL;\r\nPFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT = NULL;\r\nPFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT = NULL;\r\nPFNGLLIGHTENVIEXTPROC __glewLightEnviEXT = NULL;\r\n\r\nPFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT = NULL;\r\n\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT = NULL;\r\n\r\nPFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT = NULL;\r\nPFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT = NULL;\r\nPFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT = NULL;\r\nPFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT = NULL;\r\nPFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT = NULL;\r\nPFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT = NULL;\r\nPFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT = NULL;\r\nPFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT = NULL;\r\nPFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT = NULL;\r\nPFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT = NULL;\r\nPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT = NULL;\r\nPFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT = NULL;\r\nPFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT = NULL;\r\nPFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT = NULL;\r\nPFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT = NULL;\r\nPFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT = NULL;\r\nPFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT = NULL;\r\n\r\nPFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT = NULL;\r\n\r\nPFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT = NULL;\r\nPFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT = NULL;\r\nPFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT = NULL;\r\nPFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT = NULL;\r\nPFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT = NULL;\r\nPFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT = NULL;\r\nPFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT = NULL;\r\nPFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT = NULL;\r\nPFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT = NULL;\r\nPFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT = NULL;\r\nPFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT = NULL;\r\nPFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT = NULL;\r\nPFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT = NULL;\r\nPFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT = NULL;\r\nPFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT = NULL;\r\nPFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT = NULL;\r\nPFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT = NULL;\r\nPFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT = NULL;\r\nPFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT = NULL;\r\nPFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT = NULL;\r\nPFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT = NULL;\r\nPFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT = NULL;\r\nPFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT = NULL;\r\nPFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT = NULL;\r\nPFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT = NULL;\r\nPFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT = NULL;\r\nPFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT = NULL;\r\nPFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT = NULL;\r\nPFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT = NULL;\r\nPFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT = NULL;\r\nPFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT = NULL;\r\nPFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT = NULL;\r\nPFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT = NULL;\r\nPFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT = NULL;\r\n\r\nPFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT = NULL;\r\nPFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT = NULL;\r\nPFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT = NULL;\r\nPFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT = NULL;\r\nPFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT = NULL;\r\nPFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT = NULL;\r\nPFNGLHISTOGRAMEXTPROC __glewHistogramEXT = NULL;\r\nPFNGLMINMAXEXTPROC __glewMinmaxEXT = NULL;\r\nPFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT = NULL;\r\nPFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT = NULL;\r\n\r\nPFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT = NULL;\r\n\r\nPFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT = NULL;\r\n\r\nPFNGLVERTEXATTRIBDIVISOREXTPROC __glewVertexAttribDivisorEXT = NULL;\r\n\r\nPFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT = NULL;\r\nPFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT = NULL;\r\nPFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT = NULL;\r\n\r\nPFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC __glewFlushMappedBufferRangeEXT = NULL;\r\nPFNGLMAPBUFFERRANGEEXTPROC __glewMapBufferRangeEXT = NULL;\r\n\r\nPFNGLBUFFERSTORAGEMEMEXTPROC __glewBufferStorageMemEXT = NULL;\r\nPFNGLCREATEMEMORYOBJECTSEXTPROC __glewCreateMemoryObjectsEXT = NULL;\r\nPFNGLDELETEMEMORYOBJECTSEXTPROC __glewDeleteMemoryObjectsEXT = NULL;\r\nPFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC __glewGetMemoryObjectParameterivEXT = NULL;\r\nPFNGLGETUNSIGNEDBYTEI_VEXTPROC __glewGetUnsignedBytei_vEXT = NULL;\r\nPFNGLGETUNSIGNEDBYTEVEXTPROC __glewGetUnsignedBytevEXT = NULL;\r\nPFNGLISMEMORYOBJECTEXTPROC __glewIsMemoryObjectEXT = NULL;\r\nPFNGLMEMORYOBJECTPARAMETERIVEXTPROC __glewMemoryObjectParameterivEXT = NULL;\r\nPFNGLNAMEDBUFFERSTORAGEMEMEXTPROC __glewNamedBufferStorageMemEXT = NULL;\r\nPFNGLTEXSTORAGEMEM1DEXTPROC __glewTexStorageMem1DEXT = NULL;\r\nPFNGLTEXSTORAGEMEM2DEXTPROC __glewTexStorageMem2DEXT = NULL;\r\nPFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC __glewTexStorageMem2DMultisampleEXT = NULL;\r\nPFNGLTEXSTORAGEMEM3DEXTPROC __glewTexStorageMem3DEXT = NULL;\r\nPFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC __glewTexStorageMem3DMultisampleEXT = NULL;\r\nPFNGLTEXTURESTORAGEMEM1DEXTPROC __glewTextureStorageMem1DEXT = NULL;\r\nPFNGLTEXTURESTORAGEMEM2DEXTPROC __glewTextureStorageMem2DEXT = NULL;\r\nPFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC __glewTextureStorageMem2DMultisampleEXT = NULL;\r\nPFNGLTEXTURESTORAGEMEM3DEXTPROC __glewTextureStorageMem3DEXT = NULL;\r\nPFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC __glewTextureStorageMem3DMultisampleEXT = NULL;\r\n\r\nPFNGLIMPORTMEMORYFDEXTPROC __glewImportMemoryFdEXT = NULL;\r\n\r\nPFNGLIMPORTMEMORYWIN32HANDLEEXTPROC __glewImportMemoryWin32HandleEXT = NULL;\r\nPFNGLIMPORTMEMORYWIN32NAMEEXTPROC __glewImportMemoryWin32NameEXT = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT = NULL;\r\nPFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTEXTPROC __glewMultiDrawArraysIndirectEXT = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC __glewMultiDrawElementsIndirectEXT = NULL;\r\n\r\nPFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT = NULL;\r\nPFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC __glewFramebufferTexture2DMultisampleEXT = NULL;\r\n\r\nPFNGLDRAWBUFFERSINDEXEDEXTPROC __glewDrawBuffersIndexedEXT = NULL;\r\nPFNGLGETINTEGERI_VEXTPROC __glewGetIntegeri_vEXT = NULL;\r\nPFNGLREADBUFFERINDEXEDEXTPROC __glewReadBufferIndexedEXT = NULL;\r\n\r\nPFNGLCOLORTABLEEXTPROC __glewColorTableEXT = NULL;\r\nPFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT = NULL;\r\n\r\nPFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT = NULL;\r\nPFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT = NULL;\r\n\r\nPFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT = NULL;\r\nPFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT = NULL;\r\n\r\nPFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT = NULL;\r\n\r\nPFNGLPOLYGONOFFSETCLAMPEXTPROC __glewPolygonOffsetClampEXT = NULL;\r\n\r\nPFNGLPROVOKINGVERTEXEXTPROC __glewProvokingVertexEXT = NULL;\r\n\r\nPFNGLCOVERAGEMODULATIONNVPROC __glewCoverageModulationNV = NULL;\r\nPFNGLCOVERAGEMODULATIONTABLENVPROC __glewCoverageModulationTableNV = NULL;\r\nPFNGLGETCOVERAGEMODULATIONTABLENVPROC __glewGetCoverageModulationTableNV = NULL;\r\nPFNGLRASTERSAMPLESEXTPROC __glewRasterSamplesEXT = NULL;\r\n\r\nPFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT = NULL;\r\nPFNGLENDSCENEEXTPROC __glewEndSceneEXT = NULL;\r\n\r\nPFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT = NULL;\r\nPFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT = NULL;\r\nPFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT = NULL;\r\nPFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT = NULL;\r\nPFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT = NULL;\r\nPFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT = NULL;\r\nPFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT = NULL;\r\nPFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT = NULL;\r\nPFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT = NULL;\r\nPFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT = NULL;\r\nPFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT = NULL;\r\nPFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT = NULL;\r\nPFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT = NULL;\r\nPFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT = NULL;\r\nPFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT = NULL;\r\nPFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT = NULL;\r\nPFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT = NULL;\r\n\r\nPFNGLDELETESEMAPHORESEXTPROC __glewDeleteSemaphoresEXT = NULL;\r\nPFNGLGENSEMAPHORESEXTPROC __glewGenSemaphoresEXT = NULL;\r\nPFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC __glewGetSemaphoreParameterui64vEXT = NULL;\r\nPFNGLISSEMAPHOREEXTPROC __glewIsSemaphoreEXT = NULL;\r\nPFNGLSEMAPHOREPARAMETERUI64VEXTPROC __glewSemaphoreParameterui64vEXT = NULL;\r\nPFNGLSIGNALSEMAPHOREEXTPROC __glewSignalSemaphoreEXT = NULL;\r\nPFNGLWAITSEMAPHOREEXTPROC __glewWaitSemaphoreEXT = NULL;\r\n\r\nPFNGLIMPORTSEMAPHOREFDEXTPROC __glewImportSemaphoreFdEXT = NULL;\r\n\r\nPFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC __glewImportSemaphoreWin32HandleEXT = NULL;\r\nPFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC __glewImportSemaphoreWin32NameEXT = NULL;\r\n\r\nPFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT = NULL;\r\nPFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT = NULL;\r\nPFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT = NULL;\r\n\r\nPFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT = NULL;\r\nPFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT = NULL;\r\n\r\nPFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC __glewClearPixelLocalStorageuiEXT = NULL;\r\nPFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewFramebufferPixelLocalStorageSizeEXT = NULL;\r\nPFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC __glewGetFramebufferPixelLocalStorageSizeEXT = NULL;\r\n\r\nPFNGLTEXPAGECOMMITMENTEXTPROC __glewTexPageCommitmentEXT = NULL;\r\nPFNGLTEXTUREPAGECOMMITMENTEXTPROC __glewTexturePageCommitmentEXT = NULL;\r\n\r\nPFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT = NULL;\r\n\r\nPFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT = NULL;\r\nPFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT = NULL;\r\nPFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT = NULL;\r\n\r\nPFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT = NULL;\r\n\r\nPFNGLTEXBUFFEREXTPROC __glewTexBufferEXT = NULL;\r\n\r\nPFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT = NULL;\r\nPFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT = NULL;\r\nPFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT = NULL;\r\nPFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT = NULL;\r\nPFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT = NULL;\r\nPFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT = NULL;\r\n\r\nPFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT = NULL;\r\nPFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT = NULL;\r\nPFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT = NULL;\r\nPFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT = NULL;\r\nPFNGLISTEXTUREEXTPROC __glewIsTextureEXT = NULL;\r\nPFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT = NULL;\r\n\r\nPFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT = NULL;\r\n\r\nPFNGLTEXSTORAGE1DEXTPROC __glewTexStorage1DEXT = NULL;\r\nPFNGLTEXSTORAGE2DEXTPROC __glewTexStorage2DEXT = NULL;\r\nPFNGLTEXSTORAGE3DEXTPROC __glewTexStorage3DEXT = NULL;\r\nPFNGLTEXTURESTORAGE1DEXTPROC __glewTextureStorage1DEXT = NULL;\r\nPFNGLTEXTURESTORAGE2DEXTPROC __glewTextureStorage2DEXT = NULL;\r\nPFNGLTEXTURESTORAGE3DEXTPROC __glewTextureStorage3DEXT = NULL;\r\n\r\nPFNGLTEXTUREVIEWEXTPROC __glewTextureViewEXT = NULL;\r\n\r\nPFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT = NULL;\r\nPFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT = NULL;\r\n\r\nPFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT = NULL;\r\nPFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT = NULL;\r\nPFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT = NULL;\r\nPFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT = NULL;\r\nPFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT = NULL;\r\nPFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT = NULL;\r\n\r\nPFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT = NULL;\r\nPFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT = NULL;\r\nPFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT = NULL;\r\nPFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT = NULL;\r\nPFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT = NULL;\r\nPFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT = NULL;\r\nPFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT = NULL;\r\nPFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT = NULL;\r\n\r\nPFNGLBINDARRAYSETEXTPROC __glewBindArraySetEXT = NULL;\r\nPFNGLCREATEARRAYSETEXTPROC __glewCreateArraySetExt = NULL;\r\nPFNGLDELETEARRAYSETSEXTPROC __glewDeleteArraySetsEXT = NULL;\r\n\r\nPFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT = NULL;\r\nPFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT = NULL;\r\nPFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT = NULL;\r\nPFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT = NULL;\r\nPFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT = NULL;\r\nPFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT = NULL;\r\nPFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT = NULL;\r\nPFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT = NULL;\r\nPFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT = NULL;\r\nPFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT = NULL;\r\nPFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT = NULL;\r\n\r\nPFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT = NULL;\r\nPFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT = NULL;\r\nPFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT = NULL;\r\nPFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT = NULL;\r\nPFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT = NULL;\r\nPFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT = NULL;\r\nPFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT = NULL;\r\nPFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT = NULL;\r\nPFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT = NULL;\r\nPFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT = NULL;\r\nPFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT = NULL;\r\nPFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT = NULL;\r\nPFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT = NULL;\r\nPFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT = NULL;\r\nPFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT = NULL;\r\nPFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT = NULL;\r\nPFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT = NULL;\r\nPFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT = NULL;\r\nPFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT = NULL;\r\nPFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT = NULL;\r\nPFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT = NULL;\r\nPFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT = NULL;\r\nPFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT = NULL;\r\nPFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT = NULL;\r\nPFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT = NULL;\r\nPFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT = NULL;\r\nPFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT = NULL;\r\nPFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT = NULL;\r\nPFNGLSHADEROP1EXTPROC __glewShaderOp1EXT = NULL;\r\nPFNGLSHADEROP2EXTPROC __glewShaderOp2EXT = NULL;\r\nPFNGLSHADEROP3EXTPROC __glewShaderOp3EXT = NULL;\r\nPFNGLSWIZZLEEXTPROC __glewSwizzleEXT = NULL;\r\nPFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT = NULL;\r\nPFNGLVARIANTBVEXTPROC __glewVariantbvEXT = NULL;\r\nPFNGLVARIANTDVEXTPROC __glewVariantdvEXT = NULL;\r\nPFNGLVARIANTFVEXTPROC __glewVariantfvEXT = NULL;\r\nPFNGLVARIANTIVEXTPROC __glewVariantivEXT = NULL;\r\nPFNGLVARIANTSVEXTPROC __glewVariantsvEXT = NULL;\r\nPFNGLVARIANTUBVEXTPROC __glewVariantubvEXT = NULL;\r\nPFNGLVARIANTUIVEXTPROC __glewVariantuivEXT = NULL;\r\nPFNGLVARIANTUSVEXTPROC __glewVariantusvEXT = NULL;\r\nPFNGLWRITEMASKEXTPROC __glewWriteMaskEXT = NULL;\r\n\r\nPFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT = NULL;\r\nPFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT = NULL;\r\nPFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT = NULL;\r\n\r\nPFNGLACQUIREKEYEDMUTEXWIN32EXTPROC __glewAcquireKeyedMutexWin32EXT = NULL;\r\nPFNGLRELEASEKEYEDMUTEXWIN32EXTPROC __glewReleaseKeyedMutexWin32EXT = NULL;\r\n\r\nPFNGLWINDOWRECTANGLESEXTPROC __glewWindowRectanglesEXT = NULL;\r\n\r\nPFNGLIMPORTSYNCEXTPROC __glewImportSyncEXT = NULL;\r\n\r\nPFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY = NULL;\r\n\r\nPFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY = NULL;\r\n\r\nPFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP = NULL;\r\nPFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP = NULL;\r\nPFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP = NULL;\r\nPFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP = NULL;\r\nPFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP = NULL;\r\nPFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP = NULL;\r\n\r\nPFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM = NULL;\r\nPFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM = NULL;\r\n\r\nPFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM = NULL;\r\nPFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM = NULL;\r\nPFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM = NULL;\r\nPFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM = NULL;\r\nPFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM = NULL;\r\nPFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM = NULL;\r\nPFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM = NULL;\r\nPFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM = NULL;\r\n\r\nPFNGLMAPTEXTURE2DINTELPROC __glewMapTexture2DINTEL = NULL;\r\nPFNGLSYNCTEXTUREINTELPROC __glewSyncTextureINTEL = NULL;\r\nPFNGLUNMAPTEXTURE2DINTELPROC __glewUnmapTexture2DINTEL = NULL;\r\n\r\nPFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL = NULL;\r\nPFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL = NULL;\r\nPFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL = NULL;\r\nPFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL = NULL;\r\n\r\nPFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL = NULL;\r\nPFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL = NULL;\r\nPFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL = NULL;\r\nPFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL = NULL;\r\nPFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL = NULL;\r\nPFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL = NULL;\r\nPFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL = NULL;\r\nPFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL = NULL;\r\nPFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL = NULL;\r\nPFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL = NULL;\r\n\r\nPFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL = NULL;\r\nPFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL = NULL;\r\n\r\nPFNGLBLENDBARRIERKHRPROC __glewBlendBarrierKHR = NULL;\r\n\r\nPFNGLDEBUGMESSAGECALLBACKPROC __glewDebugMessageCallback = NULL;\r\nPFNGLDEBUGMESSAGECONTROLPROC __glewDebugMessageControl = NULL;\r\nPFNGLDEBUGMESSAGEINSERTPROC __glewDebugMessageInsert = NULL;\r\nPFNGLGETDEBUGMESSAGELOGPROC __glewGetDebugMessageLog = NULL;\r\nPFNGLGETOBJECTLABELPROC __glewGetObjectLabel = NULL;\r\nPFNGLGETOBJECTPTRLABELPROC __glewGetObjectPtrLabel = NULL;\r\nPFNGLOBJECTLABELPROC __glewObjectLabel = NULL;\r\nPFNGLOBJECTPTRLABELPROC __glewObjectPtrLabel = NULL;\r\nPFNGLPOPDEBUGGROUPPROC __glewPopDebugGroup = NULL;\r\nPFNGLPUSHDEBUGGROUPPROC __glewPushDebugGroup = NULL;\r\n\r\nPFNGLMAXSHADERCOMPILERTHREADSKHRPROC __glewMaxShaderCompilerThreadsKHR = NULL;\r\n\r\nPFNGLGETNUNIFORMFVPROC __glewGetnUniformfv = NULL;\r\nPFNGLGETNUNIFORMIVPROC __glewGetnUniformiv = NULL;\r\nPFNGLGETNUNIFORMUIVPROC __glewGetnUniformuiv = NULL;\r\nPFNGLREADNPIXELSPROC __glewReadnPixels = NULL;\r\n\r\nPFNGLBUFFERREGIONENABLEDPROC __glewBufferRegionEnabled = NULL;\r\nPFNGLDELETEBUFFERREGIONPROC __glewDeleteBufferRegion = NULL;\r\nPFNGLDRAWBUFFERREGIONPROC __glewDrawBufferRegion = NULL;\r\nPFNGLNEWBUFFERREGIONPROC __glewNewBufferRegion = NULL;\r\nPFNGLREADBUFFERREGIONPROC __glewReadBufferRegion = NULL;\r\n\r\nPFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA = NULL;\r\n\r\nPFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA = NULL;\r\nPFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA = NULL;\r\nPFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA = NULL;\r\nPFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA = NULL;\r\nPFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA = NULL;\r\nPFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA = NULL;\r\nPFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA = NULL;\r\nPFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA = NULL;\r\nPFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA = NULL;\r\nPFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA = NULL;\r\nPFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA = NULL;\r\nPFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA = NULL;\r\nPFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA = NULL;\r\nPFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA = NULL;\r\nPFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA = NULL;\r\nPFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA = NULL;\r\nPFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA = NULL;\r\nPFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA = NULL;\r\nPFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA = NULL;\r\nPFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA = NULL;\r\nPFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA = NULL;\r\nPFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA = NULL;\r\nPFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA = NULL;\r\nPFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA = NULL;\r\n\r\nPFNGLBEGINCONDITIONALRENDERNVXPROC __glewBeginConditionalRenderNVX = NULL;\r\nPFNGLENDCONDITIONALRENDERNVXPROC __glewEndConditionalRenderNVX = NULL;\r\n\r\nPFNGLLGPUCOPYIMAGESUBDATANVXPROC __glewLGPUCopyImageSubDataNVX = NULL;\r\nPFNGLLGPUINTERLOCKNVXPROC __glewLGPUInterlockNVX = NULL;\r\nPFNGLLGPUNAMEDBUFFERSUBDATANVXPROC __glewLGPUNamedBufferSubDataNVX = NULL;\r\n\r\nPFNGLSTEREOPARAMETERFNVPROC __glewStereoParameterfNV = NULL;\r\nPFNGLSTEREOPARAMETERINVPROC __glewStereoParameteriNV = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC __glewMultiDrawArraysIndirectBindlessNV = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC __glewMultiDrawElementsIndirectBindlessNV = NULL;\r\n\r\nPFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawArraysIndirectBindlessCountNV = NULL;\r\nPFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC __glewMultiDrawElementsIndirectBindlessCountNV = NULL;\r\n\r\nPFNGLGETIMAGEHANDLENVPROC __glewGetImageHandleNV = NULL;\r\nPFNGLGETTEXTUREHANDLENVPROC __glewGetTextureHandleNV = NULL;\r\nPFNGLGETTEXTURESAMPLERHANDLENVPROC __glewGetTextureSamplerHandleNV = NULL;\r\nPFNGLISIMAGEHANDLERESIDENTNVPROC __glewIsImageHandleResidentNV = NULL;\r\nPFNGLISTEXTUREHANDLERESIDENTNVPROC __glewIsTextureHandleResidentNV = NULL;\r\nPFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC __glewMakeImageHandleNonResidentNV = NULL;\r\nPFNGLMAKEIMAGEHANDLERESIDENTNVPROC __glewMakeImageHandleResidentNV = NULL;\r\nPFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC __glewMakeTextureHandleNonResidentNV = NULL;\r\nPFNGLMAKETEXTUREHANDLERESIDENTNVPROC __glewMakeTextureHandleResidentNV = NULL;\r\nPFNGLPROGRAMUNIFORMHANDLEUI64NVPROC __glewProgramUniformHandleui64NV = NULL;\r\nPFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC __glewProgramUniformHandleui64vNV = NULL;\r\nPFNGLUNIFORMHANDLEUI64NVPROC __glewUniformHandleui64NV = NULL;\r\nPFNGLUNIFORMHANDLEUI64VNVPROC __glewUniformHandleui64vNV = NULL;\r\n\r\nPFNGLBLENDBARRIERNVPROC __glewBlendBarrierNV = NULL;\r\nPFNGLBLENDPARAMETERINVPROC __glewBlendParameteriNV = NULL;\r\n\r\nPFNGLVIEWPORTPOSITIONWSCALENVPROC __glewViewportPositionWScaleNV = NULL;\r\n\r\nPFNGLCALLCOMMANDLISTNVPROC __glewCallCommandListNV = NULL;\r\nPFNGLCOMMANDLISTSEGMENTSNVPROC __glewCommandListSegmentsNV = NULL;\r\nPFNGLCOMPILECOMMANDLISTNVPROC __glewCompileCommandListNV = NULL;\r\nPFNGLCREATECOMMANDLISTSNVPROC __glewCreateCommandListsNV = NULL;\r\nPFNGLCREATESTATESNVPROC __glewCreateStatesNV = NULL;\r\nPFNGLDELETECOMMANDLISTSNVPROC __glewDeleteCommandListsNV = NULL;\r\nPFNGLDELETESTATESNVPROC __glewDeleteStatesNV = NULL;\r\nPFNGLDRAWCOMMANDSADDRESSNVPROC __glewDrawCommandsAddressNV = NULL;\r\nPFNGLDRAWCOMMANDSNVPROC __glewDrawCommandsNV = NULL;\r\nPFNGLDRAWCOMMANDSSTATESADDRESSNVPROC __glewDrawCommandsStatesAddressNV = NULL;\r\nPFNGLDRAWCOMMANDSSTATESNVPROC __glewDrawCommandsStatesNV = NULL;\r\nPFNGLGETCOMMANDHEADERNVPROC __glewGetCommandHeaderNV = NULL;\r\nPFNGLGETSTAGEINDEXNVPROC __glewGetStageIndexNV = NULL;\r\nPFNGLISCOMMANDLISTNVPROC __glewIsCommandListNV = NULL;\r\nPFNGLISSTATENVPROC __glewIsStateNV = NULL;\r\nPFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC __glewListDrawCommandsStatesClientNV = NULL;\r\nPFNGLSTATECAPTURENVPROC __glewStateCaptureNV = NULL;\r\n\r\nPFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV = NULL;\r\nPFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV = NULL;\r\n\r\nPFNGLSUBPIXELPRECISIONBIASNVPROC __glewSubpixelPrecisionBiasNV = NULL;\r\n\r\nPFNGLCONSERVATIVERASTERPARAMETERFNVPROC __glewConservativeRasterParameterfNV = NULL;\r\n\r\nPFNGLCONSERVATIVERASTERPARAMETERINVPROC __glewConservativeRasterParameteriNV = NULL;\r\n\r\nPFNGLCOPYBUFFERSUBDATANVPROC __glewCopyBufferSubDataNV = NULL;\r\n\r\nPFNGLCOPYIMAGESUBDATANVPROC __glewCopyImageSubDataNV = NULL;\r\n\r\nPFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV = NULL;\r\nPFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV = NULL;\r\nPFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV = NULL;\r\n\r\nPFNGLDRAWBUFFERSNVPROC __glewDrawBuffersNV = NULL;\r\n\r\nPFNGLDRAWARRAYSINSTANCEDNVPROC __glewDrawArraysInstancedNV = NULL;\r\nPFNGLDRAWELEMENTSINSTANCEDNVPROC __glewDrawElementsInstancedNV = NULL;\r\n\r\nPFNGLDRAWTEXTURENVPROC __glewDrawTextureNV = NULL;\r\n\r\nPFNGLDRAWVKIMAGENVPROC __glewDrawVkImageNV = NULL;\r\nPFNGLGETVKPROCADDRNVPROC __glewGetVkProcAddrNV = NULL;\r\nPFNGLSIGNALVKFENCENVPROC __glewSignalVkFenceNV = NULL;\r\nPFNGLSIGNALVKSEMAPHORENVPROC __glewSignalVkSemaphoreNV = NULL;\r\nPFNGLWAITVKSEMAPHORENVPROC __glewWaitVkSemaphoreNV = NULL;\r\n\r\nPFNGLEVALMAPSNVPROC __glewEvalMapsNV = NULL;\r\nPFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV = NULL;\r\nPFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV = NULL;\r\nPFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV = NULL;\r\nPFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV = NULL;\r\nPFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV = NULL;\r\nPFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV = NULL;\r\nPFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV = NULL;\r\nPFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV = NULL;\r\n\r\nPFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV = NULL;\r\nPFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV = NULL;\r\nPFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV = NULL;\r\n\r\nPFNGLDELETEFENCESNVPROC __glewDeleteFencesNV = NULL;\r\nPFNGLFINISHFENCENVPROC __glewFinishFenceNV = NULL;\r\nPFNGLGENFENCESNVPROC __glewGenFencesNV = NULL;\r\nPFNGLGETFENCEIVNVPROC __glewGetFenceivNV = NULL;\r\nPFNGLISFENCENVPROC __glewIsFenceNV = NULL;\r\nPFNGLSETFENCENVPROC __glewSetFenceNV = NULL;\r\nPFNGLTESTFENCENVPROC __glewTestFenceNV = NULL;\r\n\r\nPFNGLFRAGMENTCOVERAGECOLORNVPROC __glewFragmentCoverageColorNV = NULL;\r\n\r\nPFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV = NULL;\r\nPFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV = NULL;\r\nPFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV = NULL;\r\nPFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV = NULL;\r\nPFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV = NULL;\r\nPFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV = NULL;\r\n\r\nPFNGLBLITFRAMEBUFFERNVPROC __glewBlitFramebufferNV = NULL;\r\n\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC __glewRenderbufferStorageMultisampleNV = NULL;\r\n\r\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV = NULL;\r\n\r\nPFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV = NULL;\r\n\r\nPFNGLMULTICASTBARRIERNVPROC __glewMulticastBarrierNV = NULL;\r\nPFNGLMULTICASTBLITFRAMEBUFFERNVPROC __glewMulticastBlitFramebufferNV = NULL;\r\nPFNGLMULTICASTBUFFERSUBDATANVPROC __glewMulticastBufferSubDataNV = NULL;\r\nPFNGLMULTICASTCOPYBUFFERSUBDATANVPROC __glewMulticastCopyBufferSubDataNV = NULL;\r\nPFNGLMULTICASTCOPYIMAGESUBDATANVPROC __glewMulticastCopyImageSubDataNV = NULL;\r\nPFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewMulticastFramebufferSampleLocationsfvNV = NULL;\r\nPFNGLMULTICASTGETQUERYOBJECTI64VNVPROC __glewMulticastGetQueryObjecti64vNV = NULL;\r\nPFNGLMULTICASTGETQUERYOBJECTIVNVPROC __glewMulticastGetQueryObjectivNV = NULL;\r\nPFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC __glewMulticastGetQueryObjectui64vNV = NULL;\r\nPFNGLMULTICASTGETQUERYOBJECTUIVNVPROC __glewMulticastGetQueryObjectuivNV = NULL;\r\nPFNGLMULTICASTWAITSYNCNVPROC __glewMulticastWaitSyncNV = NULL;\r\nPFNGLRENDERGPUMASKNVPROC __glewRenderGpuMaskNV = NULL;\r\n\r\nPFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV = NULL;\r\nPFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV = NULL;\r\nPFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV = NULL;\r\nPFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV = NULL;\r\nPFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV = NULL;\r\nPFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV = NULL;\r\nPFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV = NULL;\r\n\r\nPFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV = NULL;\r\nPFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV = NULL;\r\nPFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV = NULL;\r\nPFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV = NULL;\r\nPFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV = NULL;\r\nPFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV = NULL;\r\nPFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV = NULL;\r\nPFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV = NULL;\r\nPFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV = NULL;\r\nPFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV = NULL;\r\nPFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV = NULL;\r\nPFNGLUNIFORM1I64NVPROC __glewUniform1i64NV = NULL;\r\nPFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV = NULL;\r\nPFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV = NULL;\r\nPFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV = NULL;\r\nPFNGLUNIFORM2I64NVPROC __glewUniform2i64NV = NULL;\r\nPFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV = NULL;\r\nPFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV = NULL;\r\nPFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV = NULL;\r\nPFNGLUNIFORM3I64NVPROC __glewUniform3i64NV = NULL;\r\nPFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV = NULL;\r\nPFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV = NULL;\r\nPFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV = NULL;\r\nPFNGLUNIFORM4I64NVPROC __glewUniform4i64NV = NULL;\r\nPFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV = NULL;\r\nPFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV = NULL;\r\nPFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV = NULL;\r\n\r\nPFNGLCOLOR3HNVPROC __glewColor3hNV = NULL;\r\nPFNGLCOLOR3HVNVPROC __glewColor3hvNV = NULL;\r\nPFNGLCOLOR4HNVPROC __glewColor4hNV = NULL;\r\nPFNGLCOLOR4HVNVPROC __glewColor4hvNV = NULL;\r\nPFNGLFOGCOORDHNVPROC __glewFogCoordhNV = NULL;\r\nPFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV = NULL;\r\nPFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV = NULL;\r\nPFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV = NULL;\r\nPFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV = NULL;\r\nPFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV = NULL;\r\nPFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV = NULL;\r\nPFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV = NULL;\r\nPFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV = NULL;\r\nPFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV = NULL;\r\nPFNGLNORMAL3HNVPROC __glewNormal3hNV = NULL;\r\nPFNGLNORMAL3HVNVPROC __glewNormal3hvNV = NULL;\r\nPFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV = NULL;\r\nPFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV = NULL;\r\nPFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV = NULL;\r\nPFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV = NULL;\r\nPFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV = NULL;\r\nPFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV = NULL;\r\nPFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV = NULL;\r\nPFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV = NULL;\r\nPFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV = NULL;\r\nPFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV = NULL;\r\nPFNGLVERTEX2HNVPROC __glewVertex2hNV = NULL;\r\nPFNGLVERTEX2HVNVPROC __glewVertex2hvNV = NULL;\r\nPFNGLVERTEX3HNVPROC __glewVertex3hNV = NULL;\r\nPFNGLVERTEX3HVNVPROC __glewVertex3hvNV = NULL;\r\nPFNGLVERTEX4HNVPROC __glewVertex4hNV = NULL;\r\nPFNGLVERTEX4HVNVPROC __glewVertex4hvNV = NULL;\r\nPFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV = NULL;\r\nPFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV = NULL;\r\nPFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV = NULL;\r\nPFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV = NULL;\r\nPFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV = NULL;\r\nPFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV = NULL;\r\nPFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV = NULL;\r\nPFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV = NULL;\r\nPFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV = NULL;\r\nPFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV = NULL;\r\nPFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV = NULL;\r\nPFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV = NULL;\r\nPFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV = NULL;\r\nPFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV = NULL;\r\n\r\nPFNGLVERTEXATTRIBDIVISORNVPROC __glewVertexAttribDivisorNV = NULL;\r\n\r\nPFNGLGETINTERNALFORMATSAMPLEIVNVPROC __glewGetInternalformatSampleivNV = NULL;\r\n\r\nPFNGLUNIFORMMATRIX2X3FVNVPROC __glewUniformMatrix2x3fvNV = NULL;\r\nPFNGLUNIFORMMATRIX2X4FVNVPROC __glewUniformMatrix2x4fvNV = NULL;\r\nPFNGLUNIFORMMATRIX3X2FVNVPROC __glewUniformMatrix3x2fvNV = NULL;\r\nPFNGLUNIFORMMATRIX3X4FVNVPROC __glewUniformMatrix3x4fvNV = NULL;\r\nPFNGLUNIFORMMATRIX4X2FVNVPROC __glewUniformMatrix4x2fvNV = NULL;\r\nPFNGLUNIFORMMATRIX4X3FVNVPROC __glewUniformMatrix4x3fvNV = NULL;\r\n\r\nPFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV = NULL;\r\nPFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV = NULL;\r\nPFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV = NULL;\r\nPFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV = NULL;\r\nPFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV = NULL;\r\nPFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV = NULL;\r\nPFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV = NULL;\r\n\r\nPFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV = NULL;\r\nPFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV = NULL;\r\nPFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV = NULL;\r\n\r\nPFNGLCOPYPATHNVPROC __glewCopyPathNV = NULL;\r\nPFNGLCOVERFILLPATHINSTANCEDNVPROC __glewCoverFillPathInstancedNV = NULL;\r\nPFNGLCOVERFILLPATHNVPROC __glewCoverFillPathNV = NULL;\r\nPFNGLCOVERSTROKEPATHINSTANCEDNVPROC __glewCoverStrokePathInstancedNV = NULL;\r\nPFNGLCOVERSTROKEPATHNVPROC __glewCoverStrokePathNV = NULL;\r\nPFNGLDELETEPATHSNVPROC __glewDeletePathsNV = NULL;\r\nPFNGLGENPATHSNVPROC __glewGenPathsNV = NULL;\r\nPFNGLGETPATHCOLORGENFVNVPROC __glewGetPathColorGenfvNV = NULL;\r\nPFNGLGETPATHCOLORGENIVNVPROC __glewGetPathColorGenivNV = NULL;\r\nPFNGLGETPATHCOMMANDSNVPROC __glewGetPathCommandsNV = NULL;\r\nPFNGLGETPATHCOORDSNVPROC __glewGetPathCoordsNV = NULL;\r\nPFNGLGETPATHDASHARRAYNVPROC __glewGetPathDashArrayNV = NULL;\r\nPFNGLGETPATHLENGTHNVPROC __glewGetPathLengthNV = NULL;\r\nPFNGLGETPATHMETRICRANGENVPROC __glewGetPathMetricRangeNV = NULL;\r\nPFNGLGETPATHMETRICSNVPROC __glewGetPathMetricsNV = NULL;\r\nPFNGLGETPATHPARAMETERFVNVPROC __glewGetPathParameterfvNV = NULL;\r\nPFNGLGETPATHPARAMETERIVNVPROC __glewGetPathParameterivNV = NULL;\r\nPFNGLGETPATHSPACINGNVPROC __glewGetPathSpacingNV = NULL;\r\nPFNGLGETPATHTEXGENFVNVPROC __glewGetPathTexGenfvNV = NULL;\r\nPFNGLGETPATHTEXGENIVNVPROC __glewGetPathTexGenivNV = NULL;\r\nPFNGLGETPROGRAMRESOURCEFVNVPROC __glewGetProgramResourcefvNV = NULL;\r\nPFNGLINTERPOLATEPATHSNVPROC __glewInterpolatePathsNV = NULL;\r\nPFNGLISPATHNVPROC __glewIsPathNV = NULL;\r\nPFNGLISPOINTINFILLPATHNVPROC __glewIsPointInFillPathNV = NULL;\r\nPFNGLISPOINTINSTROKEPATHNVPROC __glewIsPointInStrokePathNV = NULL;\r\nPFNGLMATRIXLOAD3X2FNVPROC __glewMatrixLoad3x2fNV = NULL;\r\nPFNGLMATRIXLOAD3X3FNVPROC __glewMatrixLoad3x3fNV = NULL;\r\nPFNGLMATRIXLOADTRANSPOSE3X3FNVPROC __glewMatrixLoadTranspose3x3fNV = NULL;\r\nPFNGLMATRIXMULT3X2FNVPROC __glewMatrixMult3x2fNV = NULL;\r\nPFNGLMATRIXMULT3X3FNVPROC __glewMatrixMult3x3fNV = NULL;\r\nPFNGLMATRIXMULTTRANSPOSE3X3FNVPROC __glewMatrixMultTranspose3x3fNV = NULL;\r\nPFNGLPATHCOLORGENNVPROC __glewPathColorGenNV = NULL;\r\nPFNGLPATHCOMMANDSNVPROC __glewPathCommandsNV = NULL;\r\nPFNGLPATHCOORDSNVPROC __glewPathCoordsNV = NULL;\r\nPFNGLPATHCOVERDEPTHFUNCNVPROC __glewPathCoverDepthFuncNV = NULL;\r\nPFNGLPATHDASHARRAYNVPROC __glewPathDashArrayNV = NULL;\r\nPFNGLPATHFOGGENNVPROC __glewPathFogGenNV = NULL;\r\nPFNGLPATHGLYPHINDEXARRAYNVPROC __glewPathGlyphIndexArrayNV = NULL;\r\nPFNGLPATHGLYPHINDEXRANGENVPROC __glewPathGlyphIndexRangeNV = NULL;\r\nPFNGLPATHGLYPHRANGENVPROC __glewPathGlyphRangeNV = NULL;\r\nPFNGLPATHGLYPHSNVPROC __glewPathGlyphsNV = NULL;\r\nPFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC __glewPathMemoryGlyphIndexArrayNV = NULL;\r\nPFNGLPATHPARAMETERFNVPROC __glewPathParameterfNV = NULL;\r\nPFNGLPATHPARAMETERFVNVPROC __glewPathParameterfvNV = NULL;\r\nPFNGLPATHPARAMETERINVPROC __glewPathParameteriNV = NULL;\r\nPFNGLPATHPARAMETERIVNVPROC __glewPathParameterivNV = NULL;\r\nPFNGLPATHSTENCILDEPTHOFFSETNVPROC __glewPathStencilDepthOffsetNV = NULL;\r\nPFNGLPATHSTENCILFUNCNVPROC __glewPathStencilFuncNV = NULL;\r\nPFNGLPATHSTRINGNVPROC __glewPathStringNV = NULL;\r\nPFNGLPATHSUBCOMMANDSNVPROC __glewPathSubCommandsNV = NULL;\r\nPFNGLPATHSUBCOORDSNVPROC __glewPathSubCoordsNV = NULL;\r\nPFNGLPATHTEXGENNVPROC __glewPathTexGenNV = NULL;\r\nPFNGLPOINTALONGPATHNVPROC __glewPointAlongPathNV = NULL;\r\nPFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC __glewProgramPathFragmentInputGenNV = NULL;\r\nPFNGLSTENCILFILLPATHINSTANCEDNVPROC __glewStencilFillPathInstancedNV = NULL;\r\nPFNGLSTENCILFILLPATHNVPROC __glewStencilFillPathNV = NULL;\r\nPFNGLSTENCILSTROKEPATHINSTANCEDNVPROC __glewStencilStrokePathInstancedNV = NULL;\r\nPFNGLSTENCILSTROKEPATHNVPROC __glewStencilStrokePathNV = NULL;\r\nPFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC __glewStencilThenCoverFillPathInstancedNV = NULL;\r\nPFNGLSTENCILTHENCOVERFILLPATHNVPROC __glewStencilThenCoverFillPathNV = NULL;\r\nPFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC __glewStencilThenCoverStrokePathInstancedNV = NULL;\r\nPFNGLSTENCILTHENCOVERSTROKEPATHNVPROC __glewStencilThenCoverStrokePathNV = NULL;\r\nPFNGLTRANSFORMPATHNVPROC __glewTransformPathNV = NULL;\r\nPFNGLWEIGHTPATHSNVPROC __glewWeightPathsNV = NULL;\r\n\r\nPFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV = NULL;\r\nPFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV = NULL;\r\n\r\nPFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV = NULL;\r\nPFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV = NULL;\r\n\r\nPFNGLPOLYGONMODENVPROC __glewPolygonModeNV = NULL;\r\n\r\nPFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV = NULL;\r\nPFNGLGETVIDEOIVNVPROC __glewGetVideoivNV = NULL;\r\nPFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV = NULL;\r\nPFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV = NULL;\r\nPFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV = NULL;\r\nPFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV = NULL;\r\n\r\nPFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV = NULL;\r\nPFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV = NULL;\r\n\r\nPFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV = NULL;\r\nPFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV = NULL;\r\nPFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV = NULL;\r\nPFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV = NULL;\r\nPFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV = NULL;\r\nPFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV = NULL;\r\nPFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV = NULL;\r\nPFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV = NULL;\r\nPFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV = NULL;\r\nPFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV = NULL;\r\nPFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV = NULL;\r\nPFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV = NULL;\r\nPFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV = NULL;\r\n\r\nPFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV = NULL;\r\nPFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV = NULL;\r\n\r\nPFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewFramebufferSampleLocationsfvNV = NULL;\r\nPFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC __glewNamedFramebufferSampleLocationsfvNV = NULL;\r\n\r\nPFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV = NULL;\r\nPFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV = NULL;\r\nPFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV = NULL;\r\nPFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV = NULL;\r\nPFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV = NULL;\r\nPFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV = NULL;\r\nPFNGLMAKEBUFFERRESIDENTNVPROC __glewMakeBufferResidentNV = NULL;\r\nPFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC __glewMakeNamedBufferNonResidentNV = NULL;\r\nPFNGLMAKENAMEDBUFFERRESIDENTNVPROC __glewMakeNamedBufferResidentNV = NULL;\r\nPFNGLPROGRAMUNIFORMUI64NVPROC __glewProgramUniformui64NV = NULL;\r\nPFNGLPROGRAMUNIFORMUI64VNVPROC __glewProgramUniformui64vNV = NULL;\r\nPFNGLUNIFORMUI64NVPROC __glewUniformui64NV = NULL;\r\nPFNGLUNIFORMUI64VNVPROC __glewUniformui64vNV = NULL;\r\n\r\nPFNGLCOMPRESSEDTEXIMAGE3DNVPROC __glewCompressedTexImage3DNV = NULL;\r\nPFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC __glewCompressedTexSubImage3DNV = NULL;\r\nPFNGLCOPYTEXSUBIMAGE3DNVPROC __glewCopyTexSubImage3DNV = NULL;\r\nPFNGLFRAMEBUFFERTEXTURELAYERNVPROC __glewFramebufferTextureLayerNV = NULL;\r\nPFNGLTEXIMAGE3DNVPROC __glewTexImage3DNV = NULL;\r\nPFNGLTEXSUBIMAGE3DNVPROC __glewTexSubImage3DNV = NULL;\r\n\r\nPFNGLTEXTUREBARRIERNVPROC __glewTextureBarrierNV = NULL;\r\n\r\nPFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTexImage2DMultisampleCoverageNV = NULL;\r\nPFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTexImage3DMultisampleCoverageNV = NULL;\r\nPFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC __glewTextureImage2DMultisampleCoverageNV = NULL;\r\nPFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC __glewTextureImage2DMultisampleNV = NULL;\r\nPFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC __glewTextureImage3DMultisampleCoverageNV = NULL;\r\nPFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC __glewTextureImage3DMultisampleNV = NULL;\r\n\r\nPFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV = NULL;\r\nPFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV = NULL;\r\nPFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV = NULL;\r\nPFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV = NULL;\r\nPFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV = NULL;\r\nPFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV = NULL;\r\nPFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV = NULL;\r\nPFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV = NULL;\r\nPFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV = NULL;\r\nPFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV = NULL;\r\nPFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV = NULL;\r\n\r\nPFNGLBINDTRANSFORMFEEDBACKNVPROC __glewBindTransformFeedbackNV = NULL;\r\nPFNGLDELETETRANSFORMFEEDBACKSNVPROC __glewDeleteTransformFeedbacksNV = NULL;\r\nPFNGLDRAWTRANSFORMFEEDBACKNVPROC __glewDrawTransformFeedbackNV = NULL;\r\nPFNGLGENTRANSFORMFEEDBACKSNVPROC __glewGenTransformFeedbacksNV = NULL;\r\nPFNGLISTRANSFORMFEEDBACKNVPROC __glewIsTransformFeedbackNV = NULL;\r\nPFNGLPAUSETRANSFORMFEEDBACKNVPROC __glewPauseTransformFeedbackNV = NULL;\r\nPFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV = NULL;\r\n\r\nPFNGLVDPAUFININVPROC __glewVDPAUFiniNV = NULL;\r\nPFNGLVDPAUGETSURFACEIVNVPROC __glewVDPAUGetSurfaceivNV = NULL;\r\nPFNGLVDPAUINITNVPROC __glewVDPAUInitNV = NULL;\r\nPFNGLVDPAUISSURFACENVPROC __glewVDPAUIsSurfaceNV = NULL;\r\nPFNGLVDPAUMAPSURFACESNVPROC __glewVDPAUMapSurfacesNV = NULL;\r\nPFNGLVDPAUREGISTEROUTPUTSURFACENVPROC __glewVDPAURegisterOutputSurfaceNV = NULL;\r\nPFNGLVDPAUREGISTERVIDEOSURFACENVPROC __glewVDPAURegisterVideoSurfaceNV = NULL;\r\nPFNGLVDPAUSURFACEACCESSNVPROC __glewVDPAUSurfaceAccessNV = NULL;\r\nPFNGLVDPAUUNMAPSURFACESNVPROC __glewVDPAUUnmapSurfacesNV = NULL;\r\nPFNGLVDPAUUNREGISTERSURFACENVPROC __glewVDPAUUnregisterSurfaceNV = NULL;\r\n\r\nPFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV = NULL;\r\nPFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV = NULL;\r\n\r\nPFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV = NULL;\r\nPFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV = NULL;\r\nPFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV = NULL;\r\nPFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV = NULL;\r\nPFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV = NULL;\r\nPFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV = NULL;\r\nPFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV = NULL;\r\nPFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV = NULL;\r\nPFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV = NULL;\r\nPFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV = NULL;\r\nPFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV = NULL;\r\nPFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV = NULL;\r\nPFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV = NULL;\r\nPFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV = NULL;\r\nPFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV = NULL;\r\nPFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV = NULL;\r\nPFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV = NULL;\r\nPFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV = NULL;\r\nPFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV = NULL;\r\n\r\nPFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV = NULL;\r\nPFNGLCOLORFORMATNVPROC __glewColorFormatNV = NULL;\r\nPFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV = NULL;\r\nPFNGLFOGCOORDFORMATNVPROC __glewFogCoordFormatNV = NULL;\r\nPFNGLGETINTEGERUI64I_VNVPROC __glewGetIntegerui64i_vNV = NULL;\r\nPFNGLINDEXFORMATNVPROC __glewIndexFormatNV = NULL;\r\nPFNGLNORMALFORMATNVPROC __glewNormalFormatNV = NULL;\r\nPFNGLSECONDARYCOLORFORMATNVPROC __glewSecondaryColorFormatNV = NULL;\r\nPFNGLTEXCOORDFORMATNVPROC __glewTexCoordFormatNV = NULL;\r\nPFNGLVERTEXATTRIBFORMATNVPROC __glewVertexAttribFormatNV = NULL;\r\nPFNGLVERTEXATTRIBIFORMATNVPROC __glewVertexAttribIFormatNV = NULL;\r\nPFNGLVERTEXFORMATNVPROC __glewVertexFormatNV = NULL;\r\n\r\nPFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV = NULL;\r\nPFNGLBINDPROGRAMNVPROC __glewBindProgramNV = NULL;\r\nPFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV = NULL;\r\nPFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV = NULL;\r\nPFNGLGENPROGRAMSNVPROC __glewGenProgramsNV = NULL;\r\nPFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV = NULL;\r\nPFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV = NULL;\r\nPFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV = NULL;\r\nPFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV = NULL;\r\nPFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV = NULL;\r\nPFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV = NULL;\r\nPFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV = NULL;\r\nPFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV = NULL;\r\nPFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV = NULL;\r\nPFNGLISPROGRAMNVPROC __glewIsProgramNV = NULL;\r\nPFNGLLOADPROGRAMNVPROC __glewLoadProgramNV = NULL;\r\nPFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV = NULL;\r\nPFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV = NULL;\r\nPFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV = NULL;\r\nPFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV = NULL;\r\nPFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV = NULL;\r\nPFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV = NULL;\r\nPFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV = NULL;\r\nPFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV = NULL;\r\nPFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV = NULL;\r\nPFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV = NULL;\r\nPFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV = NULL;\r\nPFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV = NULL;\r\nPFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV = NULL;\r\nPFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV = NULL;\r\nPFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV = NULL;\r\nPFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV = NULL;\r\nPFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV = NULL;\r\nPFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV = NULL;\r\nPFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV = NULL;\r\nPFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV = NULL;\r\nPFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV = NULL;\r\nPFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV = NULL;\r\nPFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV = NULL;\r\nPFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV = NULL;\r\nPFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV = NULL;\r\nPFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV = NULL;\r\nPFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV = NULL;\r\nPFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV = NULL;\r\nPFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV = NULL;\r\nPFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV = NULL;\r\nPFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV = NULL;\r\nPFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV = NULL;\r\nPFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV = NULL;\r\nPFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV = NULL;\r\nPFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV = NULL;\r\nPFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV = NULL;\r\nPFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV = NULL;\r\nPFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV = NULL;\r\nPFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV = NULL;\r\nPFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV = NULL;\r\nPFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV = NULL;\r\nPFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV = NULL;\r\nPFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV = NULL;\r\nPFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV = NULL;\r\nPFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV = NULL;\r\nPFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV = NULL;\r\nPFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV = NULL;\r\nPFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV = NULL;\r\n\r\nPFNGLBEGINVIDEOCAPTURENVPROC __glewBeginVideoCaptureNV = NULL;\r\nPFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC __glewBindVideoCaptureStreamBufferNV = NULL;\r\nPFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC __glewBindVideoCaptureStreamTextureNV = NULL;\r\nPFNGLENDVIDEOCAPTURENVPROC __glewEndVideoCaptureNV = NULL;\r\nPFNGLGETVIDEOCAPTURESTREAMDVNVPROC __glewGetVideoCaptureStreamdvNV = NULL;\r\nPFNGLGETVIDEOCAPTURESTREAMFVNVPROC __glewGetVideoCaptureStreamfvNV = NULL;\r\nPFNGLGETVIDEOCAPTURESTREAMIVNVPROC __glewGetVideoCaptureStreamivNV = NULL;\r\nPFNGLGETVIDEOCAPTUREIVNVPROC __glewGetVideoCaptureivNV = NULL;\r\nPFNGLVIDEOCAPTURENVPROC __glewVideoCaptureNV = NULL;\r\nPFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC __glewVideoCaptureStreamParameterdvNV = NULL;\r\nPFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC __glewVideoCaptureStreamParameterfvNV = NULL;\r\nPFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC __glewVideoCaptureStreamParameterivNV = NULL;\r\n\r\nPFNGLDEPTHRANGEARRAYFVNVPROC __glewDepthRangeArrayfvNV = NULL;\r\nPFNGLDEPTHRANGEINDEXEDFNVPROC __glewDepthRangeIndexedfNV = NULL;\r\nPFNGLDISABLEINVPROC __glewDisableiNV = NULL;\r\nPFNGLENABLEINVPROC __glewEnableiNV = NULL;\r\nPFNGLGETFLOATI_VNVPROC __glewGetFloati_vNV = NULL;\r\nPFNGLISENABLEDINVPROC __glewIsEnablediNV = NULL;\r\nPFNGLSCISSORARRAYVNVPROC __glewScissorArrayvNV = NULL;\r\nPFNGLSCISSORINDEXEDNVPROC __glewScissorIndexedNV = NULL;\r\nPFNGLSCISSORINDEXEDVNVPROC __glewScissorIndexedvNV = NULL;\r\nPFNGLVIEWPORTARRAYVNVPROC __glewViewportArrayvNV = NULL;\r\nPFNGLVIEWPORTINDEXEDFNVPROC __glewViewportIndexedfNV = NULL;\r\nPFNGLVIEWPORTINDEXEDFVNVPROC __glewViewportIndexedfvNV = NULL;\r\n\r\nPFNGLVIEWPORTSWIZZLENVPROC __glewViewportSwizzleNV = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC __glewFramebufferTextureMultiviewOVR = NULL;\r\n\r\nPFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC __glewFramebufferTextureMultisampleMultiviewOVR = NULL;\r\n\r\nPFNGLALPHAFUNCQCOMPROC __glewAlphaFuncQCOM = NULL;\r\n\r\nPFNGLDISABLEDRIVERCONTROLQCOMPROC __glewDisableDriverControlQCOM = NULL;\r\nPFNGLENABLEDRIVERCONTROLQCOMPROC __glewEnableDriverControlQCOM = NULL;\r\nPFNGLGETDRIVERCONTROLSTRINGQCOMPROC __glewGetDriverControlStringQCOM = NULL;\r\nPFNGLGETDRIVERCONTROLSQCOMPROC __glewGetDriverControlsQCOM = NULL;\r\n\r\nPFNGLEXTGETBUFFERPOINTERVQCOMPROC __glewExtGetBufferPointervQCOM = NULL;\r\nPFNGLEXTGETBUFFERSQCOMPROC __glewExtGetBuffersQCOM = NULL;\r\nPFNGLEXTGETFRAMEBUFFERSQCOMPROC __glewExtGetFramebuffersQCOM = NULL;\r\nPFNGLEXTGETRENDERBUFFERSQCOMPROC __glewExtGetRenderbuffersQCOM = NULL;\r\nPFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC __glewExtGetTexLevelParameterivQCOM = NULL;\r\nPFNGLEXTGETTEXSUBIMAGEQCOMPROC __glewExtGetTexSubImageQCOM = NULL;\r\nPFNGLEXTGETTEXTURESQCOMPROC __glewExtGetTexturesQCOM = NULL;\r\nPFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC __glewExtTexObjectStateOverrideiQCOM = NULL;\r\n\r\nPFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC __glewExtGetProgramBinarySourceQCOM = NULL;\r\nPFNGLEXTGETPROGRAMSQCOMPROC __glewExtGetProgramsQCOM = NULL;\r\nPFNGLEXTGETSHADERSQCOMPROC __glewExtGetShadersQCOM = NULL;\r\nPFNGLEXTISPROGRAMBINARYQCOMPROC __glewExtIsProgramBinaryQCOM = NULL;\r\n\r\nPFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC __glewFramebufferFoveationConfigQCOM = NULL;\r\nPFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC __glewFramebufferFoveationParametersQCOM = NULL;\r\n\r\nPFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC __glewFramebufferFetchBarrierQCOM = NULL;\r\n\r\nPFNGLENDTILINGQCOMPROC __glewEndTilingQCOM = NULL;\r\nPFNGLSTARTTILINGQCOMPROC __glewStartTilingQCOM = NULL;\r\n\r\nPFNGLALPHAFUNCXPROC __glewAlphaFuncx = NULL;\r\nPFNGLCLEARCOLORXPROC __glewClearColorx = NULL;\r\nPFNGLCLEARDEPTHXPROC __glewClearDepthx = NULL;\r\nPFNGLCOLOR4XPROC __glewColor4x = NULL;\r\nPFNGLDEPTHRANGEXPROC __glewDepthRangex = NULL;\r\nPFNGLFOGXPROC __glewFogx = NULL;\r\nPFNGLFOGXVPROC __glewFogxv = NULL;\r\nPFNGLFRUSTUMFPROC __glewFrustumf = NULL;\r\nPFNGLFRUSTUMXPROC __glewFrustumx = NULL;\r\nPFNGLLIGHTMODELXPROC __glewLightModelx = NULL;\r\nPFNGLLIGHTMODELXVPROC __glewLightModelxv = NULL;\r\nPFNGLLIGHTXPROC __glewLightx = NULL;\r\nPFNGLLIGHTXVPROC __glewLightxv = NULL;\r\nPFNGLLINEWIDTHXPROC __glewLineWidthx = NULL;\r\nPFNGLLOADMATRIXXPROC __glewLoadMatrixx = NULL;\r\nPFNGLMATERIALXPROC __glewMaterialx = NULL;\r\nPFNGLMATERIALXVPROC __glewMaterialxv = NULL;\r\nPFNGLMULTMATRIXXPROC __glewMultMatrixx = NULL;\r\nPFNGLMULTITEXCOORD4XPROC __glewMultiTexCoord4x = NULL;\r\nPFNGLNORMAL3XPROC __glewNormal3x = NULL;\r\nPFNGLORTHOFPROC __glewOrthof = NULL;\r\nPFNGLORTHOXPROC __glewOrthox = NULL;\r\nPFNGLPOINTSIZEXPROC __glewPointSizex = NULL;\r\nPFNGLPOLYGONOFFSETXPROC __glewPolygonOffsetx = NULL;\r\nPFNGLROTATEXPROC __glewRotatex = NULL;\r\nPFNGLSAMPLECOVERAGEXPROC __glewSampleCoveragex = NULL;\r\nPFNGLSCALEXPROC __glewScalex = NULL;\r\nPFNGLTEXENVXPROC __glewTexEnvx = NULL;\r\nPFNGLTEXENVXVPROC __glewTexEnvxv = NULL;\r\nPFNGLTEXPARAMETERXPROC __glewTexParameterx = NULL;\r\nPFNGLTRANSLATEXPROC __glewTranslatex = NULL;\r\n\r\nPFNGLCLIPPLANEFPROC __glewClipPlanef = NULL;\r\nPFNGLCLIPPLANEXPROC __glewClipPlanex = NULL;\r\nPFNGLGETCLIPPLANEFPROC __glewGetClipPlanef = NULL;\r\nPFNGLGETCLIPPLANEXPROC __glewGetClipPlanex = NULL;\r\nPFNGLGETFIXEDVPROC __glewGetFixedv = NULL;\r\nPFNGLGETLIGHTXVPROC __glewGetLightxv = NULL;\r\nPFNGLGETMATERIALXVPROC __glewGetMaterialxv = NULL;\r\nPFNGLGETTEXENVXVPROC __glewGetTexEnvxv = NULL;\r\nPFNGLGETTEXPARAMETERXVPROC __glewGetTexParameterxv = NULL;\r\nPFNGLPOINTPARAMETERXPROC __glewPointParameterx = NULL;\r\nPFNGLPOINTPARAMETERXVPROC __glewPointParameterxv = NULL;\r\nPFNGLPOINTSIZEPOINTEROESPROC __glewPointSizePointerOES = NULL;\r\nPFNGLTEXPARAMETERXVPROC __glewTexParameterxv = NULL;\r\n\r\nPFNGLERRORSTRINGREGALPROC __glewErrorStringREGAL = NULL;\r\n\r\nPFNGLGETEXTENSIONREGALPROC __glewGetExtensionREGAL = NULL;\r\nPFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL = NULL;\r\n\r\nPFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL = NULL;\r\n\r\nPFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL = NULL;\r\n\r\nPFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS = NULL;\r\nPFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS = NULL;\r\n\r\nPFNGLFOGFUNCSGISPROC __glewFogFuncSGIS = NULL;\r\nPFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS = NULL;\r\n\r\nPFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS = NULL;\r\nPFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS = NULL;\r\n\r\nPFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC __glewInterleavedTextureCoordSetsSGIS = NULL;\r\nPFNGLSELECTTEXTURECOORDSETSGISPROC __glewSelectTextureCoordSetSGIS = NULL;\r\nPFNGLSELECTTEXTURESGISPROC __glewSelectTextureSGIS = NULL;\r\nPFNGLSELECTTEXTURETRANSFORMSGISPROC __glewSelectTextureTransformSGIS = NULL;\r\n\r\nPFNGLMULTISAMPLESUBRECTPOSSGISPROC __glewMultisampleSubRectPosSGIS = NULL;\r\n\r\nPFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS = NULL;\r\nPFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS = NULL;\r\n\r\nPFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS = NULL;\r\nPFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS = NULL;\r\n\r\nPFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS = NULL;\r\nPFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS = NULL;\r\n\r\nPFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX = NULL;\r\nPFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX = NULL;\r\nPFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX = NULL;\r\nPFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX = NULL;\r\nPFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX = NULL;\r\nPFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX = NULL;\r\n\r\nPFNGLADDRESSSPACEPROC __glewAddressSpace = NULL;\r\nPFNGLDATAPIPEPROC __glewDataPipe = NULL;\r\n\r\nPFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX = NULL;\r\n\r\nPFNGLFOGLAYERSSGIXPROC __glewFogLayersSGIX = NULL;\r\nPFNGLGETFOGLAYERSSGIXPROC __glewGetFogLayersSGIX = NULL;\r\n\r\nPFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX = NULL;\r\n\r\nPFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX = NULL;\r\nPFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX = NULL;\r\nPFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX = NULL;\r\nPFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX = NULL;\r\nPFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX = NULL;\r\nPFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX = NULL;\r\nPFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX = NULL;\r\nPFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX = NULL;\r\nPFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX = NULL;\r\nPFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX = NULL;\r\n\r\nPFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX = NULL;\r\n\r\nPFNGLIGLOOINTERFACESGIXPROC __glewIglooInterfaceSGIX = NULL;\r\n\r\nPFNGLALLOCMPEGPREDICTORSSGIXPROC __glewAllocMPEGPredictorsSGIX = NULL;\r\nPFNGLDELETEMPEGPREDICTORSSGIXPROC __glewDeleteMPEGPredictorsSGIX = NULL;\r\nPFNGLGENMPEGPREDICTORSSGIXPROC __glewGenMPEGPredictorsSGIX = NULL;\r\nPFNGLGETMPEGPARAMETERFVSGIXPROC __glewGetMPEGParameterfvSGIX = NULL;\r\nPFNGLGETMPEGPARAMETERIVSGIXPROC __glewGetMPEGParameterivSGIX = NULL;\r\nPFNGLGETMPEGPREDICTORSGIXPROC __glewGetMPEGPredictorSGIX = NULL;\r\nPFNGLGETMPEGQUANTTABLEUBVPROC __glewGetMPEGQuantTableubv = NULL;\r\nPFNGLISMPEGPREDICTORSGIXPROC __glewIsMPEGPredictorSGIX = NULL;\r\nPFNGLMPEGPREDICTORSGIXPROC __glewMPEGPredictorSGIX = NULL;\r\nPFNGLMPEGQUANTTABLEUBVPROC __glewMPEGQuantTableubv = NULL;\r\nPFNGLSWAPMPEGPREDICTORSSGIXPROC __glewSwapMPEGPredictorsSGIX = NULL;\r\n\r\nPFNGLGETNONLINLIGHTFVSGIXPROC __glewGetNonlinLightfvSGIX = NULL;\r\nPFNGLGETNONLINMATERIALFVSGIXPROC __glewGetNonlinMaterialfvSGIX = NULL;\r\nPFNGLNONLINLIGHTFVSGIXPROC __glewNonlinLightfvSGIX = NULL;\r\nPFNGLNONLINMATERIALFVSGIXPROC __glewNonlinMaterialfvSGIX = NULL;\r\n\r\nPFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX = NULL;\r\n\r\nPFNGLDEFORMSGIXPROC __glewDeformSGIX = NULL;\r\nPFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC __glewLoadIdentityDeformationMapSGIX = NULL;\r\n\r\nPFNGLMESHBREADTHSGIXPROC __glewMeshBreadthSGIX = NULL;\r\nPFNGLMESHSTRIDESGIXPROC __glewMeshStrideSGIX = NULL;\r\n\r\nPFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX = NULL;\r\n\r\nPFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX = NULL;\r\nPFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX = NULL;\r\nPFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX = NULL;\r\nPFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX = NULL;\r\n\r\nPFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX = NULL;\r\n\r\nPFNGLGETVECTOROPERATIONSGIXPROC __glewGetVectorOperationSGIX = NULL;\r\nPFNGLVECTOROPERATIONSGIXPROC __glewVectorOperationSGIX = NULL;\r\n\r\nPFNGLAREVERTEXARRAYSRESIDENTSGIXPROC __glewAreVertexArraysResidentSGIX = NULL;\r\nPFNGLBINDVERTEXARRAYSGIXPROC __glewBindVertexArraySGIX = NULL;\r\nPFNGLDELETEVERTEXARRAYSSGIXPROC __glewDeleteVertexArraysSGIX = NULL;\r\nPFNGLGENVERTEXARRAYSSGIXPROC __glewGenVertexArraysSGIX = NULL;\r\nPFNGLISVERTEXARRAYSGIXPROC __glewIsVertexArraySGIX = NULL;\r\nPFNGLPRIORITIZEVERTEXARRAYSSGIXPROC __glewPrioritizeVertexArraysSGIX = NULL;\r\n\r\nPFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI = NULL;\r\nPFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI = NULL;\r\nPFNGLCOLORTABLESGIPROC __glewColorTableSGI = NULL;\r\nPFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI = NULL;\r\nPFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI = NULL;\r\nPFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI = NULL;\r\n\r\nPFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC __glewGetPixelTransformParameterfvSGI = NULL;\r\nPFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC __glewGetPixelTransformParameterivSGI = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERFSGIPROC __glewPixelTransformParameterfSGI = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERFVSGIPROC __glewPixelTransformParameterfvSGI = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERISGIPROC __glewPixelTransformParameteriSGI = NULL;\r\nPFNGLPIXELTRANSFORMPARAMETERIVSGIPROC __glewPixelTransformParameterivSGI = NULL;\r\nPFNGLPIXELTRANSFORMSGIPROC __glewPixelTransformSGI = NULL;\r\n\r\nPFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX = NULL;\r\n\r\nPFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN = NULL;\r\nPFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN = NULL;\r\n\r\nPFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN = NULL;\r\n\r\nPFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN = NULL;\r\nPFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN = NULL;\r\nPFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN = NULL;\r\nPFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN = NULL;\r\nPFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN = NULL;\r\nPFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN = NULL;\r\n\r\nPFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN = NULL;\r\nPFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN = NULL;\r\nPFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN = NULL;\r\nPFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN = NULL;\r\nPFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN = NULL;\r\nPFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN = NULL;\r\nPFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN = NULL;\r\nPFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN = NULL;\r\nPFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN = NULL;\r\nPFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN = NULL;\r\nPFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN = NULL;\r\nPFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN = NULL;\r\nPFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN = NULL;\r\nPFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN = NULL;\r\nPFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN = NULL;\r\nPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN = NULL;\r\nPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN = NULL;\r\nPFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN = NULL;\r\nPFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN = NULL;\r\n\r\nPFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN = NULL;\r\n\r\nGLboolean __GLEW_VERSION_1_1 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_1_2 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_1_2_1 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_1_3 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_1_4 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_1_5 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_2_0 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_2_1 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_3_0 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_3_1 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_3_2 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_3_3 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_0 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_1 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_2 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_3 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_4 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_5 = GL_FALSE;\r\nGLboolean __GLEW_VERSION_4_6 = GL_FALSE;\r\nGLboolean __GLEW_3DFX_multisample = GL_FALSE;\r\nGLboolean __GLEW_3DFX_tbuffer = GL_FALSE;\r\nGLboolean __GLEW_3DFX_texture_compression_FXT1 = GL_FALSE;\r\nGLboolean __GLEW_AMD_blend_minmax_factor = GL_FALSE;\r\nGLboolean __GLEW_AMD_compressed_3DC_texture = GL_FALSE;\r\nGLboolean __GLEW_AMD_compressed_ATC_texture = GL_FALSE;\r\nGLboolean __GLEW_AMD_conservative_depth = GL_FALSE;\r\nGLboolean __GLEW_AMD_debug_output = GL_FALSE;\r\nGLboolean __GLEW_AMD_depth_clamp_separate = GL_FALSE;\r\nGLboolean __GLEW_AMD_draw_buffers_blend = GL_FALSE;\r\nGLboolean __GLEW_AMD_framebuffer_sample_positions = GL_FALSE;\r\nGLboolean __GLEW_AMD_gcn_shader = GL_FALSE;\r\nGLboolean __GLEW_AMD_gpu_shader_half_float = GL_FALSE;\r\nGLboolean __GLEW_AMD_gpu_shader_int16 = GL_FALSE;\r\nGLboolean __GLEW_AMD_gpu_shader_int64 = GL_FALSE;\r\nGLboolean __GLEW_AMD_interleaved_elements = GL_FALSE;\r\nGLboolean __GLEW_AMD_multi_draw_indirect = GL_FALSE;\r\nGLboolean __GLEW_AMD_name_gen_delete = GL_FALSE;\r\nGLboolean __GLEW_AMD_occlusion_query_event = GL_FALSE;\r\nGLboolean __GLEW_AMD_performance_monitor = GL_FALSE;\r\nGLboolean __GLEW_AMD_pinned_memory = GL_FALSE;\r\nGLboolean __GLEW_AMD_program_binary_Z400 = GL_FALSE;\r\nGLboolean __GLEW_AMD_query_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_AMD_sample_positions = GL_FALSE;\r\nGLboolean __GLEW_AMD_seamless_cubemap_per_texture = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_atomic_counter_ops = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_ballot = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_explicit_vertex_parameter = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_stencil_export = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_stencil_value_export = GL_FALSE;\r\nGLboolean __GLEW_AMD_shader_trinary_minmax = GL_FALSE;\r\nGLboolean __GLEW_AMD_sparse_texture = GL_FALSE;\r\nGLboolean __GLEW_AMD_stencil_operation_extended = GL_FALSE;\r\nGLboolean __GLEW_AMD_texture_gather_bias_lod = GL_FALSE;\r\nGLboolean __GLEW_AMD_texture_texture4 = GL_FALSE;\r\nGLboolean __GLEW_AMD_transform_feedback3_lines_triangles = GL_FALSE;\r\nGLboolean __GLEW_AMD_transform_feedback4 = GL_FALSE;\r\nGLboolean __GLEW_AMD_vertex_shader_layer = GL_FALSE;\r\nGLboolean __GLEW_AMD_vertex_shader_tessellator = GL_FALSE;\r\nGLboolean __GLEW_AMD_vertex_shader_viewport_index = GL_FALSE;\r\nGLboolean __GLEW_ANDROID_extension_pack_es31a = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_depth_texture = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_framebuffer_blit = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_framebuffer_multisample = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_instanced_arrays = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_pack_reverse_row_order = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_program_binary = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_texture_compression_dxt1 = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_texture_compression_dxt3 = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_texture_compression_dxt5 = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_texture_usage = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_timer_query = GL_FALSE;\r\nGLboolean __GLEW_ANGLE_translated_shader_source = GL_FALSE;\r\nGLboolean __GLEW_APPLE_aux_depth_stencil = GL_FALSE;\r\nGLboolean __GLEW_APPLE_client_storage = GL_FALSE;\r\nGLboolean __GLEW_APPLE_clip_distance = GL_FALSE;\r\nGLboolean __GLEW_APPLE_color_buffer_packed_float = GL_FALSE;\r\nGLboolean __GLEW_APPLE_copy_texture_levels = GL_FALSE;\r\nGLboolean __GLEW_APPLE_element_array = GL_FALSE;\r\nGLboolean __GLEW_APPLE_fence = GL_FALSE;\r\nGLboolean __GLEW_APPLE_float_pixels = GL_FALSE;\r\nGLboolean __GLEW_APPLE_flush_buffer_range = GL_FALSE;\r\nGLboolean __GLEW_APPLE_framebuffer_multisample = GL_FALSE;\r\nGLboolean __GLEW_APPLE_object_purgeable = GL_FALSE;\r\nGLboolean __GLEW_APPLE_pixel_buffer = GL_FALSE;\r\nGLboolean __GLEW_APPLE_rgb_422 = GL_FALSE;\r\nGLboolean __GLEW_APPLE_row_bytes = GL_FALSE;\r\nGLboolean __GLEW_APPLE_specular_vector = GL_FALSE;\r\nGLboolean __GLEW_APPLE_sync = GL_FALSE;\r\nGLboolean __GLEW_APPLE_texture_2D_limited_npot = GL_FALSE;\r\nGLboolean __GLEW_APPLE_texture_format_BGRA8888 = GL_FALSE;\r\nGLboolean __GLEW_APPLE_texture_max_level = GL_FALSE;\r\nGLboolean __GLEW_APPLE_texture_packed_float = GL_FALSE;\r\nGLboolean __GLEW_APPLE_texture_range = GL_FALSE;\r\nGLboolean __GLEW_APPLE_transform_hint = GL_FALSE;\r\nGLboolean __GLEW_APPLE_vertex_array_object = GL_FALSE;\r\nGLboolean __GLEW_APPLE_vertex_array_range = GL_FALSE;\r\nGLboolean __GLEW_APPLE_vertex_program_evaluators = GL_FALSE;\r\nGLboolean __GLEW_APPLE_ycbcr_422 = GL_FALSE;\r\nGLboolean __GLEW_ARB_ES2_compatibility = GL_FALSE;\r\nGLboolean __GLEW_ARB_ES3_1_compatibility = GL_FALSE;\r\nGLboolean __GLEW_ARB_ES3_2_compatibility = GL_FALSE;\r\nGLboolean __GLEW_ARB_ES3_compatibility = GL_FALSE;\r\nGLboolean __GLEW_ARB_arrays_of_arrays = GL_FALSE;\r\nGLboolean __GLEW_ARB_base_instance = GL_FALSE;\r\nGLboolean __GLEW_ARB_bindless_texture = GL_FALSE;\r\nGLboolean __GLEW_ARB_blend_func_extended = GL_FALSE;\r\nGLboolean __GLEW_ARB_buffer_storage = GL_FALSE;\r\nGLboolean __GLEW_ARB_cl_event = GL_FALSE;\r\nGLboolean __GLEW_ARB_clear_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_clear_texture = GL_FALSE;\r\nGLboolean __GLEW_ARB_clip_control = GL_FALSE;\r\nGLboolean __GLEW_ARB_color_buffer_float = GL_FALSE;\r\nGLboolean __GLEW_ARB_compatibility = GL_FALSE;\r\nGLboolean __GLEW_ARB_compressed_texture_pixel_storage = GL_FALSE;\r\nGLboolean __GLEW_ARB_compute_shader = GL_FALSE;\r\nGLboolean __GLEW_ARB_compute_variable_group_size = GL_FALSE;\r\nGLboolean __GLEW_ARB_conditional_render_inverted = GL_FALSE;\r\nGLboolean __GLEW_ARB_conservative_depth = GL_FALSE;\r\nGLboolean __GLEW_ARB_copy_buffer = GL_FALSE;\r\nGLboolean __GLEW_ARB_copy_image = GL_FALSE;\r\nGLboolean __GLEW_ARB_cull_distance = GL_FALSE;\r\nGLboolean __GLEW_ARB_debug_output = GL_FALSE;\r\nGLboolean __GLEW_ARB_depth_buffer_float = GL_FALSE;\r\nGLboolean __GLEW_ARB_depth_clamp = GL_FALSE;\r\nGLboolean __GLEW_ARB_depth_texture = GL_FALSE;\r\nGLboolean __GLEW_ARB_derivative_control = GL_FALSE;\r\nGLboolean __GLEW_ARB_direct_state_access = GL_FALSE;\r\nGLboolean __GLEW_ARB_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_ARB_draw_buffers_blend = GL_FALSE;\r\nGLboolean __GLEW_ARB_draw_elements_base_vertex = GL_FALSE;\r\nGLboolean __GLEW_ARB_draw_indirect = GL_FALSE;\r\nGLboolean __GLEW_ARB_draw_instanced = GL_FALSE;\r\nGLboolean __GLEW_ARB_enhanced_layouts = GL_FALSE;\r\nGLboolean __GLEW_ARB_explicit_attrib_location = GL_FALSE;\r\nGLboolean __GLEW_ARB_explicit_uniform_location = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_coord_conventions = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_layer_viewport = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_program = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_program_shadow = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_shader = GL_FALSE;\r\nGLboolean __GLEW_ARB_fragment_shader_interlock = GL_FALSE;\r\nGLboolean __GLEW_ARB_framebuffer_no_attachments = GL_FALSE;\r\nGLboolean __GLEW_ARB_framebuffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __GLEW_ARB_geometry_shader4 = GL_FALSE;\r\nGLboolean __GLEW_ARB_get_program_binary = GL_FALSE;\r\nGLboolean __GLEW_ARB_get_texture_sub_image = GL_FALSE;\r\nGLboolean __GLEW_ARB_gl_spirv = GL_FALSE;\r\nGLboolean __GLEW_ARB_gpu_shader5 = GL_FALSE;\r\nGLboolean __GLEW_ARB_gpu_shader_fp64 = GL_FALSE;\r\nGLboolean __GLEW_ARB_gpu_shader_int64 = GL_FALSE;\r\nGLboolean __GLEW_ARB_half_float_pixel = GL_FALSE;\r\nGLboolean __GLEW_ARB_half_float_vertex = GL_FALSE;\r\nGLboolean __GLEW_ARB_imaging = GL_FALSE;\r\nGLboolean __GLEW_ARB_indirect_parameters = GL_FALSE;\r\nGLboolean __GLEW_ARB_instanced_arrays = GL_FALSE;\r\nGLboolean __GLEW_ARB_internalformat_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_internalformat_query2 = GL_FALSE;\r\nGLboolean __GLEW_ARB_invalidate_subdata = GL_FALSE;\r\nGLboolean __GLEW_ARB_map_buffer_alignment = GL_FALSE;\r\nGLboolean __GLEW_ARB_map_buffer_range = GL_FALSE;\r\nGLboolean __GLEW_ARB_matrix_palette = GL_FALSE;\r\nGLboolean __GLEW_ARB_multi_bind = GL_FALSE;\r\nGLboolean __GLEW_ARB_multi_draw_indirect = GL_FALSE;\r\nGLboolean __GLEW_ARB_multisample = GL_FALSE;\r\nGLboolean __GLEW_ARB_multitexture = GL_FALSE;\r\nGLboolean __GLEW_ARB_occlusion_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_occlusion_query2 = GL_FALSE;\r\nGLboolean __GLEW_ARB_parallel_shader_compile = GL_FALSE;\r\nGLboolean __GLEW_ARB_pipeline_statistics_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_pixel_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_point_parameters = GL_FALSE;\r\nGLboolean __GLEW_ARB_point_sprite = GL_FALSE;\r\nGLboolean __GLEW_ARB_polygon_offset_clamp = GL_FALSE;\r\nGLboolean __GLEW_ARB_post_depth_coverage = GL_FALSE;\r\nGLboolean __GLEW_ARB_program_interface_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_provoking_vertex = GL_FALSE;\r\nGLboolean __GLEW_ARB_query_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_robust_buffer_access_behavior = GL_FALSE;\r\nGLboolean __GLEW_ARB_robustness = GL_FALSE;\r\nGLboolean __GLEW_ARB_robustness_application_isolation = GL_FALSE;\r\nGLboolean __GLEW_ARB_robustness_share_group_isolation = GL_FALSE;\r\nGLboolean __GLEW_ARB_sample_locations = GL_FALSE;\r\nGLboolean __GLEW_ARB_sample_shading = GL_FALSE;\r\nGLboolean __GLEW_ARB_sampler_objects = GL_FALSE;\r\nGLboolean __GLEW_ARB_seamless_cube_map = GL_FALSE;\r\nGLboolean __GLEW_ARB_seamless_cubemap_per_texture = GL_FALSE;\r\nGLboolean __GLEW_ARB_separate_shader_objects = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_atomic_counter_ops = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_atomic_counters = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_ballot = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_bit_encoding = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_clock = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_draw_parameters = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_group_vote = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_image_load_store = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_image_size = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_objects = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_precision = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_stencil_export = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_storage_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_subroutine = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_texture_image_samples = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_texture_lod = GL_FALSE;\r\nGLboolean __GLEW_ARB_shader_viewport_layer_array = GL_FALSE;\r\nGLboolean __GLEW_ARB_shading_language_100 = GL_FALSE;\r\nGLboolean __GLEW_ARB_shading_language_420pack = GL_FALSE;\r\nGLboolean __GLEW_ARB_shading_language_include = GL_FALSE;\r\nGLboolean __GLEW_ARB_shading_language_packing = GL_FALSE;\r\nGLboolean __GLEW_ARB_shadow = GL_FALSE;\r\nGLboolean __GLEW_ARB_shadow_ambient = GL_FALSE;\r\nGLboolean __GLEW_ARB_sparse_buffer = GL_FALSE;\r\nGLboolean __GLEW_ARB_sparse_texture = GL_FALSE;\r\nGLboolean __GLEW_ARB_sparse_texture2 = GL_FALSE;\r\nGLboolean __GLEW_ARB_sparse_texture_clamp = GL_FALSE;\r\nGLboolean __GLEW_ARB_spirv_extensions = GL_FALSE;\r\nGLboolean __GLEW_ARB_stencil_texturing = GL_FALSE;\r\nGLboolean __GLEW_ARB_sync = GL_FALSE;\r\nGLboolean __GLEW_ARB_tessellation_shader = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_barrier = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_border_clamp = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_buffer_object_rgb32 = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_buffer_range = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_compression = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_compression_bptc = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_compression_rgtc = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_cube_map = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_cube_map_array = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_env_add = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_env_combine = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_env_crossbar = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_env_dot3 = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_filter_anisotropic = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_filter_minmax = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_float = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_gather = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_mirror_clamp_to_edge = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_mirrored_repeat = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_multisample = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_non_power_of_two = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_query_levels = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_query_lod = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_rectangle = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_rg = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_rgb10_a2ui = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_stencil8 = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_storage = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_storage_multisample = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_swizzle = GL_FALSE;\r\nGLboolean __GLEW_ARB_texture_view = GL_FALSE;\r\nGLboolean __GLEW_ARB_timer_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_transform_feedback2 = GL_FALSE;\r\nGLboolean __GLEW_ARB_transform_feedback3 = GL_FALSE;\r\nGLboolean __GLEW_ARB_transform_feedback_instanced = GL_FALSE;\r\nGLboolean __GLEW_ARB_transform_feedback_overflow_query = GL_FALSE;\r\nGLboolean __GLEW_ARB_transpose_matrix = GL_FALSE;\r\nGLboolean __GLEW_ARB_uniform_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_array_bgra = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_array_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_attrib_64bit = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_attrib_binding = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_blend = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_program = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_shader = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_type_10f_11f_11f_rev = GL_FALSE;\r\nGLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev = GL_FALSE;\r\nGLboolean __GLEW_ARB_viewport_array = GL_FALSE;\r\nGLboolean __GLEW_ARB_window_pos = GL_FALSE;\r\nGLboolean __GLEW_ARM_mali_program_binary = GL_FALSE;\r\nGLboolean __GLEW_ARM_mali_shader_binary = GL_FALSE;\r\nGLboolean __GLEW_ARM_rgba8 = GL_FALSE;\r\nGLboolean __GLEW_ARM_shader_framebuffer_fetch = GL_FALSE;\r\nGLboolean __GLEW_ARM_shader_framebuffer_fetch_depth_stencil = GL_FALSE;\r\nGLboolean __GLEW_ATIX_point_sprites = GL_FALSE;\r\nGLboolean __GLEW_ATIX_texture_env_combine3 = GL_FALSE;\r\nGLboolean __GLEW_ATIX_texture_env_route = GL_FALSE;\r\nGLboolean __GLEW_ATIX_vertex_shader_output_point_size = GL_FALSE;\r\nGLboolean __GLEW_ATI_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_ATI_element_array = GL_FALSE;\r\nGLboolean __GLEW_ATI_envmap_bumpmap = GL_FALSE;\r\nGLboolean __GLEW_ATI_fragment_shader = GL_FALSE;\r\nGLboolean __GLEW_ATI_map_object_buffer = GL_FALSE;\r\nGLboolean __GLEW_ATI_meminfo = GL_FALSE;\r\nGLboolean __GLEW_ATI_pn_triangles = GL_FALSE;\r\nGLboolean __GLEW_ATI_separate_stencil = GL_FALSE;\r\nGLboolean __GLEW_ATI_shader_texture_lod = GL_FALSE;\r\nGLboolean __GLEW_ATI_text_fragment_shader = GL_FALSE;\r\nGLboolean __GLEW_ATI_texture_compression_3dc = GL_FALSE;\r\nGLboolean __GLEW_ATI_texture_env_combine3 = GL_FALSE;\r\nGLboolean __GLEW_ATI_texture_float = GL_FALSE;\r\nGLboolean __GLEW_ATI_texture_mirror_once = GL_FALSE;\r\nGLboolean __GLEW_ATI_vertex_array_object = GL_FALSE;\r\nGLboolean __GLEW_ATI_vertex_attrib_array_object = GL_FALSE;\r\nGLboolean __GLEW_ATI_vertex_streams = GL_FALSE;\r\nGLboolean __GLEW_EGL_KHR_context_flush_control = GL_FALSE;\r\nGLboolean __GLEW_EGL_NV_robustness_video_memory_purge = GL_FALSE;\r\nGLboolean __GLEW_EXT_422_pixels = GL_FALSE;\r\nGLboolean __GLEW_EXT_Cg_shader = GL_FALSE;\r\nGLboolean __GLEW_EXT_EGL_image_array = GL_FALSE;\r\nGLboolean __GLEW_EXT_YUV_target = GL_FALSE;\r\nGLboolean __GLEW_EXT_abgr = GL_FALSE;\r\nGLboolean __GLEW_EXT_base_instance = GL_FALSE;\r\nGLboolean __GLEW_EXT_bgra = GL_FALSE;\r\nGLboolean __GLEW_EXT_bindable_uniform = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_color = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_equation_separate = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_func_extended = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_func_separate = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_logic_op = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_minmax = GL_FALSE;\r\nGLboolean __GLEW_EXT_blend_subtract = GL_FALSE;\r\nGLboolean __GLEW_EXT_buffer_storage = GL_FALSE;\r\nGLboolean __GLEW_EXT_clear_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_clip_cull_distance = GL_FALSE;\r\nGLboolean __GLEW_EXT_clip_volume_hint = GL_FALSE;\r\nGLboolean __GLEW_EXT_cmyka = GL_FALSE;\r\nGLboolean __GLEW_EXT_color_buffer_float = GL_FALSE;\r\nGLboolean __GLEW_EXT_color_buffer_half_float = GL_FALSE;\r\nGLboolean __GLEW_EXT_color_subtable = GL_FALSE;\r\nGLboolean __GLEW_EXT_compiled_vertex_array = GL_FALSE;\r\nGLboolean __GLEW_EXT_compressed_ETC1_RGB8_sub_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_conservative_depth = GL_FALSE;\r\nGLboolean __GLEW_EXT_convolution = GL_FALSE;\r\nGLboolean __GLEW_EXT_coordinate_frame = GL_FALSE;\r\nGLboolean __GLEW_EXT_copy_image = GL_FALSE;\r\nGLboolean __GLEW_EXT_copy_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_cull_vertex = GL_FALSE;\r\nGLboolean __GLEW_EXT_debug_label = GL_FALSE;\r\nGLboolean __GLEW_EXT_debug_marker = GL_FALSE;\r\nGLboolean __GLEW_EXT_depth_bounds_test = GL_FALSE;\r\nGLboolean __GLEW_EXT_direct_state_access = GL_FALSE;\r\nGLboolean __GLEW_EXT_discard_framebuffer = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_buffers2 = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_buffers_indexed = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_elements_base_vertex = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_instanced = GL_FALSE;\r\nGLboolean __GLEW_EXT_draw_range_elements = GL_FALSE;\r\nGLboolean __GLEW_EXT_external_buffer = GL_FALSE;\r\nGLboolean __GLEW_EXT_float_blend = GL_FALSE;\r\nGLboolean __GLEW_EXT_fog_coord = GL_FALSE;\r\nGLboolean __GLEW_EXT_frag_depth = GL_FALSE;\r\nGLboolean __GLEW_EXT_fragment_lighting = GL_FALSE;\r\nGLboolean __GLEW_EXT_framebuffer_blit = GL_FALSE;\r\nGLboolean __GLEW_EXT_framebuffer_multisample = GL_FALSE;\r\nGLboolean __GLEW_EXT_framebuffer_multisample_blit_scaled = GL_FALSE;\r\nGLboolean __GLEW_EXT_framebuffer_object = GL_FALSE;\r\nGLboolean __GLEW_EXT_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __GLEW_EXT_geometry_point_size = GL_FALSE;\r\nGLboolean __GLEW_EXT_geometry_shader = GL_FALSE;\r\nGLboolean __GLEW_EXT_geometry_shader4 = GL_FALSE;\r\nGLboolean __GLEW_EXT_gpu_program_parameters = GL_FALSE;\r\nGLboolean __GLEW_EXT_gpu_shader4 = GL_FALSE;\r\nGLboolean __GLEW_EXT_gpu_shader5 = GL_FALSE;\r\nGLboolean __GLEW_EXT_histogram = GL_FALSE;\r\nGLboolean __GLEW_EXT_index_array_formats = GL_FALSE;\r\nGLboolean __GLEW_EXT_index_func = GL_FALSE;\r\nGLboolean __GLEW_EXT_index_material = GL_FALSE;\r\nGLboolean __GLEW_EXT_index_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_instanced_arrays = GL_FALSE;\r\nGLboolean __GLEW_EXT_light_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_map_buffer_range = GL_FALSE;\r\nGLboolean __GLEW_EXT_memory_object = GL_FALSE;\r\nGLboolean __GLEW_EXT_memory_object_fd = GL_FALSE;\r\nGLboolean __GLEW_EXT_memory_object_win32 = GL_FALSE;\r\nGLboolean __GLEW_EXT_misc_attribute = GL_FALSE;\r\nGLboolean __GLEW_EXT_multi_draw_arrays = GL_FALSE;\r\nGLboolean __GLEW_EXT_multi_draw_indirect = GL_FALSE;\r\nGLboolean __GLEW_EXT_multiple_textures = GL_FALSE;\r\nGLboolean __GLEW_EXT_multisample = GL_FALSE;\r\nGLboolean __GLEW_EXT_multisample_compatibility = GL_FALSE;\r\nGLboolean __GLEW_EXT_multisampled_render_to_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_multisampled_render_to_texture2 = GL_FALSE;\r\nGLboolean __GLEW_EXT_multiview_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_EXT_packed_depth_stencil = GL_FALSE;\r\nGLboolean __GLEW_EXT_packed_float = GL_FALSE;\r\nGLboolean __GLEW_EXT_packed_pixels = GL_FALSE;\r\nGLboolean __GLEW_EXT_paletted_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_pixel_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_EXT_pixel_transform = GL_FALSE;\r\nGLboolean __GLEW_EXT_pixel_transform_color_table = GL_FALSE;\r\nGLboolean __GLEW_EXT_point_parameters = GL_FALSE;\r\nGLboolean __GLEW_EXT_polygon_offset = GL_FALSE;\r\nGLboolean __GLEW_EXT_polygon_offset_clamp = GL_FALSE;\r\nGLboolean __GLEW_EXT_post_depth_coverage = GL_FALSE;\r\nGLboolean __GLEW_EXT_provoking_vertex = GL_FALSE;\r\nGLboolean __GLEW_EXT_pvrtc_sRGB = GL_FALSE;\r\nGLboolean __GLEW_EXT_raster_multisample = GL_FALSE;\r\nGLboolean __GLEW_EXT_read_format_bgra = GL_FALSE;\r\nGLboolean __GLEW_EXT_render_snorm = GL_FALSE;\r\nGLboolean __GLEW_EXT_rescale_normal = GL_FALSE;\r\nGLboolean __GLEW_EXT_sRGB = GL_FALSE;\r\nGLboolean __GLEW_EXT_sRGB_write_control = GL_FALSE;\r\nGLboolean __GLEW_EXT_scene_marker = GL_FALSE;\r\nGLboolean __GLEW_EXT_secondary_color = GL_FALSE;\r\nGLboolean __GLEW_EXT_semaphore = GL_FALSE;\r\nGLboolean __GLEW_EXT_semaphore_fd = GL_FALSE;\r\nGLboolean __GLEW_EXT_semaphore_win32 = GL_FALSE;\r\nGLboolean __GLEW_EXT_separate_shader_objects = GL_FALSE;\r\nGLboolean __GLEW_EXT_separate_specular_color = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_framebuffer_fetch = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_group_vote = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_image_load_formatted = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_image_load_store = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_implicit_conversions = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_integer_mix = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_io_blocks = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_non_constant_global_initializers = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_pixel_local_storage = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_pixel_local_storage2 = GL_FALSE;\r\nGLboolean __GLEW_EXT_shader_texture_lod = GL_FALSE;\r\nGLboolean __GLEW_EXT_shadow_funcs = GL_FALSE;\r\nGLboolean __GLEW_EXT_shadow_samplers = GL_FALSE;\r\nGLboolean __GLEW_EXT_shared_texture_palette = GL_FALSE;\r\nGLboolean __GLEW_EXT_sparse_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_sparse_texture2 = GL_FALSE;\r\nGLboolean __GLEW_EXT_stencil_clear_tag = GL_FALSE;\r\nGLboolean __GLEW_EXT_stencil_two_side = GL_FALSE;\r\nGLboolean __GLEW_EXT_stencil_wrap = GL_FALSE;\r\nGLboolean __GLEW_EXT_subtexture = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture3D = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_array = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_astc_decode_mode = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_bptc = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_dxt1 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_latc = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_rgtc = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_compression_s3tc = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_cube_map = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_cube_map_array = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_edge_clamp = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_env = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_env_add = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_env_combine = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_env_dot3 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_filter_anisotropic = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_filter_minmax = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_format_BGRA8888 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_integer = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_lod_bias = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_mirror_clamp = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_norm16 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_object = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_perturb_normal = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_rectangle = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_rg = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_sRGB = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_sRGB_R8 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_sRGB_RG8 = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_sRGB_decode = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_shared_exponent = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_snorm = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_storage = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_swizzle = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_type_2_10_10_10_REV = GL_FALSE;\r\nGLboolean __GLEW_EXT_texture_view = GL_FALSE;\r\nGLboolean __GLEW_EXT_timer_query = GL_FALSE;\r\nGLboolean __GLEW_EXT_transform_feedback = GL_FALSE;\r\nGLboolean __GLEW_EXT_unpack_subimage = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_array = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_array_bgra = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_array_setXXX = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_attrib_64bit = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_shader = GL_FALSE;\r\nGLboolean __GLEW_EXT_vertex_weighting = GL_FALSE;\r\nGLboolean __GLEW_EXT_win32_keyed_mutex = GL_FALSE;\r\nGLboolean __GLEW_EXT_window_rectangles = GL_FALSE;\r\nGLboolean __GLEW_EXT_x11_sync_object = GL_FALSE;\r\nGLboolean __GLEW_GREMEDY_frame_terminator = GL_FALSE;\r\nGLboolean __GLEW_GREMEDY_string_marker = GL_FALSE;\r\nGLboolean __GLEW_HP_convolution_border_modes = GL_FALSE;\r\nGLboolean __GLEW_HP_image_transform = GL_FALSE;\r\nGLboolean __GLEW_HP_occlusion_test = GL_FALSE;\r\nGLboolean __GLEW_HP_texture_lighting = GL_FALSE;\r\nGLboolean __GLEW_IBM_cull_vertex = GL_FALSE;\r\nGLboolean __GLEW_IBM_multimode_draw_arrays = GL_FALSE;\r\nGLboolean __GLEW_IBM_rasterpos_clip = GL_FALSE;\r\nGLboolean __GLEW_IBM_static_data = GL_FALSE;\r\nGLboolean __GLEW_IBM_texture_mirrored_repeat = GL_FALSE;\r\nGLboolean __GLEW_IBM_vertex_array_lists = GL_FALSE;\r\nGLboolean __GLEW_INGR_color_clamp = GL_FALSE;\r\nGLboolean __GLEW_INGR_interlace_read = GL_FALSE;\r\nGLboolean __GLEW_INTEL_conservative_rasterization = GL_FALSE;\r\nGLboolean __GLEW_INTEL_fragment_shader_ordering = GL_FALSE;\r\nGLboolean __GLEW_INTEL_framebuffer_CMAA = GL_FALSE;\r\nGLboolean __GLEW_INTEL_map_texture = GL_FALSE;\r\nGLboolean __GLEW_INTEL_parallel_arrays = GL_FALSE;\r\nGLboolean __GLEW_INTEL_performance_query = GL_FALSE;\r\nGLboolean __GLEW_INTEL_texture_scissor = GL_FALSE;\r\nGLboolean __GLEW_KHR_blend_equation_advanced = GL_FALSE;\r\nGLboolean __GLEW_KHR_blend_equation_advanced_coherent = GL_FALSE;\r\nGLboolean __GLEW_KHR_context_flush_control = GL_FALSE;\r\nGLboolean __GLEW_KHR_debug = GL_FALSE;\r\nGLboolean __GLEW_KHR_no_error = GL_FALSE;\r\nGLboolean __GLEW_KHR_parallel_shader_compile = GL_FALSE;\r\nGLboolean __GLEW_KHR_robust_buffer_access_behavior = GL_FALSE;\r\nGLboolean __GLEW_KHR_robustness = GL_FALSE;\r\nGLboolean __GLEW_KHR_texture_compression_astc_hdr = GL_FALSE;\r\nGLboolean __GLEW_KHR_texture_compression_astc_ldr = GL_FALSE;\r\nGLboolean __GLEW_KHR_texture_compression_astc_sliced_3d = GL_FALSE;\r\nGLboolean __GLEW_KTX_buffer_region = GL_FALSE;\r\nGLboolean __GLEW_MESAX_texture_stack = GL_FALSE;\r\nGLboolean __GLEW_MESA_pack_invert = GL_FALSE;\r\nGLboolean __GLEW_MESA_resize_buffers = GL_FALSE;\r\nGLboolean __GLEW_MESA_shader_integer_functions = GL_FALSE;\r\nGLboolean __GLEW_MESA_window_pos = GL_FALSE;\r\nGLboolean __GLEW_MESA_ycbcr_texture = GL_FALSE;\r\nGLboolean __GLEW_NVX_blend_equation_advanced_multi_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_NVX_conditional_render = GL_FALSE;\r\nGLboolean __GLEW_NVX_gpu_memory_info = GL_FALSE;\r\nGLboolean __GLEW_NVX_linked_gpu_multicast = GL_FALSE;\r\nGLboolean __GLEW_NV_3dvision_settings = GL_FALSE;\r\nGLboolean __GLEW_NV_EGL_stream_consumer_external = GL_FALSE;\r\nGLboolean __GLEW_NV_alpha_to_coverage_dither_control = GL_FALSE;\r\nGLboolean __GLEW_NV_bgr = GL_FALSE;\r\nGLboolean __GLEW_NV_bindless_multi_draw_indirect = GL_FALSE;\r\nGLboolean __GLEW_NV_bindless_multi_draw_indirect_count = GL_FALSE;\r\nGLboolean __GLEW_NV_bindless_texture = GL_FALSE;\r\nGLboolean __GLEW_NV_blend_equation_advanced = GL_FALSE;\r\nGLboolean __GLEW_NV_blend_equation_advanced_coherent = GL_FALSE;\r\nGLboolean __GLEW_NV_blend_minmax_factor = GL_FALSE;\r\nGLboolean __GLEW_NV_blend_square = GL_FALSE;\r\nGLboolean __GLEW_NV_clip_space_w_scaling = GL_FALSE;\r\nGLboolean __GLEW_NV_command_list = GL_FALSE;\r\nGLboolean __GLEW_NV_compute_program5 = GL_FALSE;\r\nGLboolean __GLEW_NV_conditional_render = GL_FALSE;\r\nGLboolean __GLEW_NV_conservative_raster = GL_FALSE;\r\nGLboolean __GLEW_NV_conservative_raster_dilate = GL_FALSE;\r\nGLboolean __GLEW_NV_conservative_raster_pre_snap_triangles = GL_FALSE;\r\nGLboolean __GLEW_NV_copy_buffer = GL_FALSE;\r\nGLboolean __GLEW_NV_copy_depth_to_color = GL_FALSE;\r\nGLboolean __GLEW_NV_copy_image = GL_FALSE;\r\nGLboolean __GLEW_NV_deep_texture3D = GL_FALSE;\r\nGLboolean __GLEW_NV_depth_buffer_float = GL_FALSE;\r\nGLboolean __GLEW_NV_depth_clamp = GL_FALSE;\r\nGLboolean __GLEW_NV_depth_range_unclamped = GL_FALSE;\r\nGLboolean __GLEW_NV_draw_buffers = GL_FALSE;\r\nGLboolean __GLEW_NV_draw_instanced = GL_FALSE;\r\nGLboolean __GLEW_NV_draw_texture = GL_FALSE;\r\nGLboolean __GLEW_NV_draw_vulkan_image = GL_FALSE;\r\nGLboolean __GLEW_NV_evaluators = GL_FALSE;\r\nGLboolean __GLEW_NV_explicit_attrib_location = GL_FALSE;\r\nGLboolean __GLEW_NV_explicit_multisample = GL_FALSE;\r\nGLboolean __GLEW_NV_fbo_color_attachments = GL_FALSE;\r\nGLboolean __GLEW_NV_fence = GL_FALSE;\r\nGLboolean __GLEW_NV_fill_rectangle = GL_FALSE;\r\nGLboolean __GLEW_NV_float_buffer = GL_FALSE;\r\nGLboolean __GLEW_NV_fog_distance = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_coverage_to_color = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_program = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_program2 = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_program4 = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_program_option = GL_FALSE;\r\nGLboolean __GLEW_NV_fragment_shader_interlock = GL_FALSE;\r\nGLboolean __GLEW_NV_framebuffer_blit = GL_FALSE;\r\nGLboolean __GLEW_NV_framebuffer_mixed_samples = GL_FALSE;\r\nGLboolean __GLEW_NV_framebuffer_multisample = GL_FALSE;\r\nGLboolean __GLEW_NV_framebuffer_multisample_coverage = GL_FALSE;\r\nGLboolean __GLEW_NV_generate_mipmap_sRGB = GL_FALSE;\r\nGLboolean __GLEW_NV_geometry_program4 = GL_FALSE;\r\nGLboolean __GLEW_NV_geometry_shader4 = GL_FALSE;\r\nGLboolean __GLEW_NV_geometry_shader_passthrough = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_multicast = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_program4 = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_program5 = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_program5_mem_extended = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_program_fp64 = GL_FALSE;\r\nGLboolean __GLEW_NV_gpu_shader5 = GL_FALSE;\r\nGLboolean __GLEW_NV_half_float = GL_FALSE;\r\nGLboolean __GLEW_NV_image_formats = GL_FALSE;\r\nGLboolean __GLEW_NV_instanced_arrays = GL_FALSE;\r\nGLboolean __GLEW_NV_internalformat_sample_query = GL_FALSE;\r\nGLboolean __GLEW_NV_light_max_exponent = GL_FALSE;\r\nGLboolean __GLEW_NV_multisample_coverage = GL_FALSE;\r\nGLboolean __GLEW_NV_multisample_filter_hint = GL_FALSE;\r\nGLboolean __GLEW_NV_non_square_matrices = GL_FALSE;\r\nGLboolean __GLEW_NV_occlusion_query = GL_FALSE;\r\nGLboolean __GLEW_NV_pack_subimage = GL_FALSE;\r\nGLboolean __GLEW_NV_packed_depth_stencil = GL_FALSE;\r\nGLboolean __GLEW_NV_packed_float = GL_FALSE;\r\nGLboolean __GLEW_NV_packed_float_linear = GL_FALSE;\r\nGLboolean __GLEW_NV_parameter_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_NV_parameter_buffer_object2 = GL_FALSE;\r\nGLboolean __GLEW_NV_path_rendering = GL_FALSE;\r\nGLboolean __GLEW_NV_path_rendering_shared_edge = GL_FALSE;\r\nGLboolean __GLEW_NV_pixel_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_NV_pixel_data_range = GL_FALSE;\r\nGLboolean __GLEW_NV_platform_binary = GL_FALSE;\r\nGLboolean __GLEW_NV_point_sprite = GL_FALSE;\r\nGLboolean __GLEW_NV_polygon_mode = GL_FALSE;\r\nGLboolean __GLEW_NV_present_video = GL_FALSE;\r\nGLboolean __GLEW_NV_primitive_restart = GL_FALSE;\r\nGLboolean __GLEW_NV_read_depth = GL_FALSE;\r\nGLboolean __GLEW_NV_read_depth_stencil = GL_FALSE;\r\nGLboolean __GLEW_NV_read_stencil = GL_FALSE;\r\nGLboolean __GLEW_NV_register_combiners = GL_FALSE;\r\nGLboolean __GLEW_NV_register_combiners2 = GL_FALSE;\r\nGLboolean __GLEW_NV_robustness_video_memory_purge = GL_FALSE;\r\nGLboolean __GLEW_NV_sRGB_formats = GL_FALSE;\r\nGLboolean __GLEW_NV_sample_locations = GL_FALSE;\r\nGLboolean __GLEW_NV_sample_mask_override_coverage = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_atomic_counters = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_atomic_float = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_atomic_float64 = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_atomic_fp16_vector = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_atomic_int64 = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_buffer_load = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_noperspective_interpolation = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_storage_buffer_object = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_thread_group = GL_FALSE;\r\nGLboolean __GLEW_NV_shader_thread_shuffle = GL_FALSE;\r\nGLboolean __GLEW_NV_shadow_samplers_array = GL_FALSE;\r\nGLboolean __GLEW_NV_shadow_samplers_cube = GL_FALSE;\r\nGLboolean __GLEW_NV_stereo_view_rendering = GL_FALSE;\r\nGLboolean __GLEW_NV_tessellation_program5 = GL_FALSE;\r\nGLboolean __GLEW_NV_texgen_emboss = GL_FALSE;\r\nGLboolean __GLEW_NV_texgen_reflection = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_array = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_barrier = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_border_clamp = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_compression_latc = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_compression_s3tc = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_compression_s3tc_update = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_compression_vtc = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_env_combine4 = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_expand_normal = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_multisample = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_npot_2D_mipmap = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_rectangle = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_rectangle_compressed = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_shader = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_shader2 = GL_FALSE;\r\nGLboolean __GLEW_NV_texture_shader3 = GL_FALSE;\r\nGLboolean __GLEW_NV_transform_feedback = GL_FALSE;\r\nGLboolean __GLEW_NV_transform_feedback2 = GL_FALSE;\r\nGLboolean __GLEW_NV_uniform_buffer_unified_memory = GL_FALSE;\r\nGLboolean __GLEW_NV_vdpau_interop = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_array_range = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_array_range2 = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_attrib_integer_64bit = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_buffer_unified_memory = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program1_1 = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program2 = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program2_option = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program3 = GL_FALSE;\r\nGLboolean __GLEW_NV_vertex_program4 = GL_FALSE;\r\nGLboolean __GLEW_NV_video_capture = GL_FALSE;\r\nGLboolean __GLEW_NV_viewport_array = GL_FALSE;\r\nGLboolean __GLEW_NV_viewport_array2 = GL_FALSE;\r\nGLboolean __GLEW_NV_viewport_swizzle = GL_FALSE;\r\nGLboolean __GLEW_OES_byte_coordinates = GL_FALSE;\r\nGLboolean __GLEW_OML_interlace = GL_FALSE;\r\nGLboolean __GLEW_OML_resample = GL_FALSE;\r\nGLboolean __GLEW_OML_subsample = GL_FALSE;\r\nGLboolean __GLEW_OVR_multiview = GL_FALSE;\r\nGLboolean __GLEW_OVR_multiview2 = GL_FALSE;\r\nGLboolean __GLEW_OVR_multiview_multisampled_render_to_texture = GL_FALSE;\r\nGLboolean __GLEW_PGI_misc_hints = GL_FALSE;\r\nGLboolean __GLEW_PGI_vertex_hints = GL_FALSE;\r\nGLboolean __GLEW_QCOM_alpha_test = GL_FALSE;\r\nGLboolean __GLEW_QCOM_binning_control = GL_FALSE;\r\nGLboolean __GLEW_QCOM_driver_control = GL_FALSE;\r\nGLboolean __GLEW_QCOM_extended_get = GL_FALSE;\r\nGLboolean __GLEW_QCOM_extended_get2 = GL_FALSE;\r\nGLboolean __GLEW_QCOM_framebuffer_foveated = GL_FALSE;\r\nGLboolean __GLEW_QCOM_perfmon_global_mode = GL_FALSE;\r\nGLboolean __GLEW_QCOM_shader_framebuffer_fetch_noncoherent = GL_FALSE;\r\nGLboolean __GLEW_QCOM_tiled_rendering = GL_FALSE;\r\nGLboolean __GLEW_QCOM_writeonly_rendering = GL_FALSE;\r\nGLboolean __GLEW_REGAL_ES1_0_compatibility = GL_FALSE;\r\nGLboolean __GLEW_REGAL_ES1_1_compatibility = GL_FALSE;\r\nGLboolean __GLEW_REGAL_enable = GL_FALSE;\r\nGLboolean __GLEW_REGAL_error_string = GL_FALSE;\r\nGLboolean __GLEW_REGAL_extension_query = GL_FALSE;\r\nGLboolean __GLEW_REGAL_log = GL_FALSE;\r\nGLboolean __GLEW_REGAL_proc_address = GL_FALSE;\r\nGLboolean __GLEW_REND_screen_coordinates = GL_FALSE;\r\nGLboolean __GLEW_S3_s3tc = GL_FALSE;\r\nGLboolean __GLEW_SGIS_clip_band_hint = GL_FALSE;\r\nGLboolean __GLEW_SGIS_color_range = GL_FALSE;\r\nGLboolean __GLEW_SGIS_detail_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIS_fog_function = GL_FALSE;\r\nGLboolean __GLEW_SGIS_generate_mipmap = GL_FALSE;\r\nGLboolean __GLEW_SGIS_line_texgen = GL_FALSE;\r\nGLboolean __GLEW_SGIS_multisample = GL_FALSE;\r\nGLboolean __GLEW_SGIS_multitexture = GL_FALSE;\r\nGLboolean __GLEW_SGIS_pixel_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIS_point_line_texgen = GL_FALSE;\r\nGLboolean __GLEW_SGIS_shared_multisample = GL_FALSE;\r\nGLboolean __GLEW_SGIS_sharpen_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture4D = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture_border_clamp = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture_edge_clamp = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture_filter4 = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture_lod = GL_FALSE;\r\nGLboolean __GLEW_SGIS_texture_select = GL_FALSE;\r\nGLboolean __GLEW_SGIX_async = GL_FALSE;\r\nGLboolean __GLEW_SGIX_async_histogram = GL_FALSE;\r\nGLboolean __GLEW_SGIX_async_pixel = GL_FALSE;\r\nGLboolean __GLEW_SGIX_bali_g_instruments = GL_FALSE;\r\nGLboolean __GLEW_SGIX_bali_r_instruments = GL_FALSE;\r\nGLboolean __GLEW_SGIX_bali_timer_instruments = GL_FALSE;\r\nGLboolean __GLEW_SGIX_blend_alpha_minmax = GL_FALSE;\r\nGLboolean __GLEW_SGIX_blend_cadd = GL_FALSE;\r\nGLboolean __GLEW_SGIX_blend_cmultiply = GL_FALSE;\r\nGLboolean __GLEW_SGIX_calligraphic_fragment = GL_FALSE;\r\nGLboolean __GLEW_SGIX_clipmap = GL_FALSE;\r\nGLboolean __GLEW_SGIX_color_matrix_accuracy = GL_FALSE;\r\nGLboolean __GLEW_SGIX_color_table_index_mode = GL_FALSE;\r\nGLboolean __GLEW_SGIX_complex_polar = GL_FALSE;\r\nGLboolean __GLEW_SGIX_convolution_accuracy = GL_FALSE;\r\nGLboolean __GLEW_SGIX_cube_map = GL_FALSE;\r\nGLboolean __GLEW_SGIX_cylinder_texgen = GL_FALSE;\r\nGLboolean __GLEW_SGIX_datapipe = GL_FALSE;\r\nGLboolean __GLEW_SGIX_decimation = GL_FALSE;\r\nGLboolean __GLEW_SGIX_depth_pass_instrument = GL_FALSE;\r\nGLboolean __GLEW_SGIX_depth_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIX_dvc = GL_FALSE;\r\nGLboolean __GLEW_SGIX_flush_raster = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_blend = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_factor_to_alpha = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_layers = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_offset = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_patchy = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_scale = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fog_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fragment_lighting_space = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fragment_specular_lighting = GL_FALSE;\r\nGLboolean __GLEW_SGIX_fragments_instrument = GL_FALSE;\r\nGLboolean __GLEW_SGIX_framezoom = GL_FALSE;\r\nGLboolean __GLEW_SGIX_icc_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIX_igloo_interface = GL_FALSE;\r\nGLboolean __GLEW_SGIX_image_compression = GL_FALSE;\r\nGLboolean __GLEW_SGIX_impact_pixel_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIX_instrument_error = GL_FALSE;\r\nGLboolean __GLEW_SGIX_interlace = GL_FALSE;\r\nGLboolean __GLEW_SGIX_ir_instrument1 = GL_FALSE;\r\nGLboolean __GLEW_SGIX_line_quality_hint = GL_FALSE;\r\nGLboolean __GLEW_SGIX_list_priority = GL_FALSE;\r\nGLboolean __GLEW_SGIX_mpeg1 = GL_FALSE;\r\nGLboolean __GLEW_SGIX_mpeg2 = GL_FALSE;\r\nGLboolean __GLEW_SGIX_nonlinear_lighting_pervertex = GL_FALSE;\r\nGLboolean __GLEW_SGIX_nurbs_eval = GL_FALSE;\r\nGLboolean __GLEW_SGIX_occlusion_instrument = GL_FALSE;\r\nGLboolean __GLEW_SGIX_packed_6bytes = GL_FALSE;\r\nGLboolean __GLEW_SGIX_pixel_texture = GL_FALSE;\r\nGLboolean __GLEW_SGIX_pixel_texture_bits = GL_FALSE;\r\nGLboolean __GLEW_SGIX_pixel_texture_lod = GL_FALSE;\r\nGLboolean __GLEW_SGIX_pixel_tiles = GL_FALSE;\r\nGLboolean __GLEW_SGIX_polynomial_ffd = GL_FALSE;\r\nGLboolean __GLEW_SGIX_quad_mesh = GL_FALSE;\r\nGLboolean __GLEW_SGIX_reference_plane = GL_FALSE;\r\nGLboolean __GLEW_SGIX_resample = GL_FALSE;\r\nGLboolean __GLEW_SGIX_scalebias_hint = GL_FALSE;\r\nGLboolean __GLEW_SGIX_shadow = GL_FALSE;\r\nGLboolean __GLEW_SGIX_shadow_ambient = GL_FALSE;\r\nGLboolean __GLEW_SGIX_slim = GL_FALSE;\r\nGLboolean __GLEW_SGIX_spotlight_cutoff = GL_FALSE;\r\nGLboolean __GLEW_SGIX_sprite = GL_FALSE;\r\nGLboolean __GLEW_SGIX_subdiv_patch = GL_FALSE;\r\nGLboolean __GLEW_SGIX_subsample = GL_FALSE;\r\nGLboolean __GLEW_SGIX_tag_sample_buffer = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_add_env = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_coordinate_clamp = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_lod_bias = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_mipmap_anisotropic = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_multi_buffer = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_phase = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_range = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_scale_bias = GL_FALSE;\r\nGLboolean __GLEW_SGIX_texture_supersample = GL_FALSE;\r\nGLboolean __GLEW_SGIX_vector_ops = GL_FALSE;\r\nGLboolean __GLEW_SGIX_vertex_array_object = GL_FALSE;\r\nGLboolean __GLEW_SGIX_vertex_preclip = GL_FALSE;\r\nGLboolean __GLEW_SGIX_vertex_preclip_hint = GL_FALSE;\r\nGLboolean __GLEW_SGIX_ycrcb = GL_FALSE;\r\nGLboolean __GLEW_SGIX_ycrcb_subsample = GL_FALSE;\r\nGLboolean __GLEW_SGIX_ycrcba = GL_FALSE;\r\nGLboolean __GLEW_SGI_color_matrix = GL_FALSE;\r\nGLboolean __GLEW_SGI_color_table = GL_FALSE;\r\nGLboolean __GLEW_SGI_complex = GL_FALSE;\r\nGLboolean __GLEW_SGI_complex_type = GL_FALSE;\r\nGLboolean __GLEW_SGI_fft = GL_FALSE;\r\nGLboolean __GLEW_SGI_texture_color_table = GL_FALSE;\r\nGLboolean __GLEW_SUNX_constant_data = GL_FALSE;\r\nGLboolean __GLEW_SUN_convolution_border_modes = GL_FALSE;\r\nGLboolean __GLEW_SUN_global_alpha = GL_FALSE;\r\nGLboolean __GLEW_SUN_mesh_array = GL_FALSE;\r\nGLboolean __GLEW_SUN_read_video_pixels = GL_FALSE;\r\nGLboolean __GLEW_SUN_slice_accum = GL_FALSE;\r\nGLboolean __GLEW_SUN_triangle_list = GL_FALSE;\r\nGLboolean __GLEW_SUN_vertex = GL_FALSE;\r\nGLboolean __GLEW_WIN_phong_shading = GL_FALSE;\r\nGLboolean __GLEW_WIN_scene_markerXXX = GL_FALSE;\r\nGLboolean __GLEW_WIN_specular_fog = GL_FALSE;\r\nGLboolean __GLEW_WIN_swap_hint = GL_FALSE;\r\n\r\nstatic const char * _glewExtensionLookup[] = {\r\n#ifdef GL_VERSION_1_2\r\n  \"GL_VERSION_1_2\",\r\n#endif\r\n#ifdef GL_VERSION_1_2_1\r\n  \"GL_VERSION_1_2_1\",\r\n#endif\r\n#ifdef GL_VERSION_1_3\r\n  \"GL_VERSION_1_3\",\r\n#endif\r\n#ifdef GL_VERSION_1_4\r\n  \"GL_VERSION_1_4\",\r\n#endif\r\n#ifdef GL_VERSION_1_5\r\n  \"GL_VERSION_1_5\",\r\n#endif\r\n#ifdef GL_VERSION_2_0\r\n  \"GL_VERSION_2_0\",\r\n#endif\r\n#ifdef GL_VERSION_2_1\r\n  \"GL_VERSION_2_1\",\r\n#endif\r\n#ifdef GL_VERSION_3_0\r\n  \"GL_VERSION_3_0\",\r\n#endif\r\n#ifdef GL_VERSION_3_1\r\n  \"GL_VERSION_3_1\",\r\n#endif\r\n#ifdef GL_VERSION_3_2\r\n  \"GL_VERSION_3_2\",\r\n#endif\r\n#ifdef GL_VERSION_3_3\r\n  \"GL_VERSION_3_3\",\r\n#endif\r\n#ifdef GL_VERSION_4_0\r\n  \"GL_VERSION_4_0\",\r\n#endif\r\n#ifdef GL_VERSION_4_1\r\n  \"GL_VERSION_4_1\",\r\n#endif\r\n#ifdef GL_VERSION_4_2\r\n  \"GL_VERSION_4_2\",\r\n#endif\r\n#ifdef GL_VERSION_4_3\r\n  \"GL_VERSION_4_3\",\r\n#endif\r\n#ifdef GL_VERSION_4_4\r\n  \"GL_VERSION_4_4\",\r\n#endif\r\n#ifdef GL_VERSION_4_5\r\n  \"GL_VERSION_4_5\",\r\n#endif\r\n#ifdef GL_VERSION_4_6\r\n  \"GL_VERSION_4_6\",\r\n#endif\r\n#ifdef GL_3DFX_multisample\r\n  \"GL_3DFX_multisample\",\r\n#endif\r\n#ifdef GL_3DFX_tbuffer\r\n  \"GL_3DFX_tbuffer\",\r\n#endif\r\n#ifdef GL_3DFX_texture_compression_FXT1\r\n  \"GL_3DFX_texture_compression_FXT1\",\r\n#endif\r\n#ifdef GL_AMD_blend_minmax_factor\r\n  \"GL_AMD_blend_minmax_factor\",\r\n#endif\r\n#ifdef GL_AMD_compressed_3DC_texture\r\n  \"GL_AMD_compressed_3DC_texture\",\r\n#endif\r\n#ifdef GL_AMD_compressed_ATC_texture\r\n  \"GL_AMD_compressed_ATC_texture\",\r\n#endif\r\n#ifdef GL_AMD_conservative_depth\r\n  \"GL_AMD_conservative_depth\",\r\n#endif\r\n#ifdef GL_AMD_debug_output\r\n  \"GL_AMD_debug_output\",\r\n#endif\r\n#ifdef GL_AMD_depth_clamp_separate\r\n  \"GL_AMD_depth_clamp_separate\",\r\n#endif\r\n#ifdef GL_AMD_draw_buffers_blend\r\n  \"GL_AMD_draw_buffers_blend\",\r\n#endif\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n  \"GL_AMD_framebuffer_sample_positions\",\r\n#endif\r\n#ifdef GL_AMD_gcn_shader\r\n  \"GL_AMD_gcn_shader\",\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_half_float\r\n  \"GL_AMD_gpu_shader_half_float\",\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int16\r\n  \"GL_AMD_gpu_shader_int16\",\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int64\r\n  \"GL_AMD_gpu_shader_int64\",\r\n#endif\r\n#ifdef GL_AMD_interleaved_elements\r\n  \"GL_AMD_interleaved_elements\",\r\n#endif\r\n#ifdef GL_AMD_multi_draw_indirect\r\n  \"GL_AMD_multi_draw_indirect\",\r\n#endif\r\n#ifdef GL_AMD_name_gen_delete\r\n  \"GL_AMD_name_gen_delete\",\r\n#endif\r\n#ifdef GL_AMD_occlusion_query_event\r\n  \"GL_AMD_occlusion_query_event\",\r\n#endif\r\n#ifdef GL_AMD_performance_monitor\r\n  \"GL_AMD_performance_monitor\",\r\n#endif\r\n#ifdef GL_AMD_pinned_memory\r\n  \"GL_AMD_pinned_memory\",\r\n#endif\r\n#ifdef GL_AMD_program_binary_Z400\r\n  \"GL_AMD_program_binary_Z400\",\r\n#endif\r\n#ifdef GL_AMD_query_buffer_object\r\n  \"GL_AMD_query_buffer_object\",\r\n#endif\r\n#ifdef GL_AMD_sample_positions\r\n  \"GL_AMD_sample_positions\",\r\n#endif\r\n#ifdef GL_AMD_seamless_cubemap_per_texture\r\n  \"GL_AMD_seamless_cubemap_per_texture\",\r\n#endif\r\n#ifdef GL_AMD_shader_atomic_counter_ops\r\n  \"GL_AMD_shader_atomic_counter_ops\",\r\n#endif\r\n#ifdef GL_AMD_shader_ballot\r\n  \"GL_AMD_shader_ballot\",\r\n#endif\r\n#ifdef GL_AMD_shader_explicit_vertex_parameter\r\n  \"GL_AMD_shader_explicit_vertex_parameter\",\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_export\r\n  \"GL_AMD_shader_stencil_export\",\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_value_export\r\n  \"GL_AMD_shader_stencil_value_export\",\r\n#endif\r\n#ifdef GL_AMD_shader_trinary_minmax\r\n  \"GL_AMD_shader_trinary_minmax\",\r\n#endif\r\n#ifdef GL_AMD_sparse_texture\r\n  \"GL_AMD_sparse_texture\",\r\n#endif\r\n#ifdef GL_AMD_stencil_operation_extended\r\n  \"GL_AMD_stencil_operation_extended\",\r\n#endif\r\n#ifdef GL_AMD_texture_gather_bias_lod\r\n  \"GL_AMD_texture_gather_bias_lod\",\r\n#endif\r\n#ifdef GL_AMD_texture_texture4\r\n  \"GL_AMD_texture_texture4\",\r\n#endif\r\n#ifdef GL_AMD_transform_feedback3_lines_triangles\r\n  \"GL_AMD_transform_feedback3_lines_triangles\",\r\n#endif\r\n#ifdef GL_AMD_transform_feedback4\r\n  \"GL_AMD_transform_feedback4\",\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_layer\r\n  \"GL_AMD_vertex_shader_layer\",\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n  \"GL_AMD_vertex_shader_tessellator\",\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_viewport_index\r\n  \"GL_AMD_vertex_shader_viewport_index\",\r\n#endif\r\n#ifdef GL_ANDROID_extension_pack_es31a\r\n  \"GL_ANDROID_extension_pack_es31a\",\r\n#endif\r\n#ifdef GL_ANGLE_depth_texture\r\n  \"GL_ANGLE_depth_texture\",\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n  \"GL_ANGLE_framebuffer_blit\",\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n  \"GL_ANGLE_framebuffer_multisample\",\r\n#endif\r\n#ifdef GL_ANGLE_instanced_arrays\r\n  \"GL_ANGLE_instanced_arrays\",\r\n#endif\r\n#ifdef GL_ANGLE_pack_reverse_row_order\r\n  \"GL_ANGLE_pack_reverse_row_order\",\r\n#endif\r\n#ifdef GL_ANGLE_program_binary\r\n  \"GL_ANGLE_program_binary\",\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt1\r\n  \"GL_ANGLE_texture_compression_dxt1\",\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt3\r\n  \"GL_ANGLE_texture_compression_dxt3\",\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt5\r\n  \"GL_ANGLE_texture_compression_dxt5\",\r\n#endif\r\n#ifdef GL_ANGLE_texture_usage\r\n  \"GL_ANGLE_texture_usage\",\r\n#endif\r\n#ifdef GL_ANGLE_timer_query\r\n  \"GL_ANGLE_timer_query\",\r\n#endif\r\n#ifdef GL_ANGLE_translated_shader_source\r\n  \"GL_ANGLE_translated_shader_source\",\r\n#endif\r\n#ifdef GL_APPLE_aux_depth_stencil\r\n  \"GL_APPLE_aux_depth_stencil\",\r\n#endif\r\n#ifdef GL_APPLE_client_storage\r\n  \"GL_APPLE_client_storage\",\r\n#endif\r\n#ifdef GL_APPLE_clip_distance\r\n  \"GL_APPLE_clip_distance\",\r\n#endif\r\n#ifdef GL_APPLE_color_buffer_packed_float\r\n  \"GL_APPLE_color_buffer_packed_float\",\r\n#endif\r\n#ifdef GL_APPLE_copy_texture_levels\r\n  \"GL_APPLE_copy_texture_levels\",\r\n#endif\r\n#ifdef GL_APPLE_element_array\r\n  \"GL_APPLE_element_array\",\r\n#endif\r\n#ifdef GL_APPLE_fence\r\n  \"GL_APPLE_fence\",\r\n#endif\r\n#ifdef GL_APPLE_float_pixels\r\n  \"GL_APPLE_float_pixels\",\r\n#endif\r\n#ifdef GL_APPLE_flush_buffer_range\r\n  \"GL_APPLE_flush_buffer_range\",\r\n#endif\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n  \"GL_APPLE_framebuffer_multisample\",\r\n#endif\r\n#ifdef GL_APPLE_object_purgeable\r\n  \"GL_APPLE_object_purgeable\",\r\n#endif\r\n#ifdef GL_APPLE_pixel_buffer\r\n  \"GL_APPLE_pixel_buffer\",\r\n#endif\r\n#ifdef GL_APPLE_rgb_422\r\n  \"GL_APPLE_rgb_422\",\r\n#endif\r\n#ifdef GL_APPLE_row_bytes\r\n  \"GL_APPLE_row_bytes\",\r\n#endif\r\n#ifdef GL_APPLE_specular_vector\r\n  \"GL_APPLE_specular_vector\",\r\n#endif\r\n#ifdef GL_APPLE_sync\r\n  \"GL_APPLE_sync\",\r\n#endif\r\n#ifdef GL_APPLE_texture_2D_limited_npot\r\n  \"GL_APPLE_texture_2D_limited_npot\",\r\n#endif\r\n#ifdef GL_APPLE_texture_format_BGRA8888\r\n  \"GL_APPLE_texture_format_BGRA8888\",\r\n#endif\r\n#ifdef GL_APPLE_texture_max_level\r\n  \"GL_APPLE_texture_max_level\",\r\n#endif\r\n#ifdef GL_APPLE_texture_packed_float\r\n  \"GL_APPLE_texture_packed_float\",\r\n#endif\r\n#ifdef GL_APPLE_texture_range\r\n  \"GL_APPLE_texture_range\",\r\n#endif\r\n#ifdef GL_APPLE_transform_hint\r\n  \"GL_APPLE_transform_hint\",\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_object\r\n  \"GL_APPLE_vertex_array_object\",\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_range\r\n  \"GL_APPLE_vertex_array_range\",\r\n#endif\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n  \"GL_APPLE_vertex_program_evaluators\",\r\n#endif\r\n#ifdef GL_APPLE_ycbcr_422\r\n  \"GL_APPLE_ycbcr_422\",\r\n#endif\r\n#ifdef GL_ARB_ES2_compatibility\r\n  \"GL_ARB_ES2_compatibility\",\r\n#endif\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n  \"GL_ARB_ES3_1_compatibility\",\r\n#endif\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n  \"GL_ARB_ES3_2_compatibility\",\r\n#endif\r\n#ifdef GL_ARB_ES3_compatibility\r\n  \"GL_ARB_ES3_compatibility\",\r\n#endif\r\n#ifdef GL_ARB_arrays_of_arrays\r\n  \"GL_ARB_arrays_of_arrays\",\r\n#endif\r\n#ifdef GL_ARB_base_instance\r\n  \"GL_ARB_base_instance\",\r\n#endif\r\n#ifdef GL_ARB_bindless_texture\r\n  \"GL_ARB_bindless_texture\",\r\n#endif\r\n#ifdef GL_ARB_blend_func_extended\r\n  \"GL_ARB_blend_func_extended\",\r\n#endif\r\n#ifdef GL_ARB_buffer_storage\r\n  \"GL_ARB_buffer_storage\",\r\n#endif\r\n#ifdef GL_ARB_cl_event\r\n  \"GL_ARB_cl_event\",\r\n#endif\r\n#ifdef GL_ARB_clear_buffer_object\r\n  \"GL_ARB_clear_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_clear_texture\r\n  \"GL_ARB_clear_texture\",\r\n#endif\r\n#ifdef GL_ARB_clip_control\r\n  \"GL_ARB_clip_control\",\r\n#endif\r\n#ifdef GL_ARB_color_buffer_float\r\n  \"GL_ARB_color_buffer_float\",\r\n#endif\r\n#ifdef GL_ARB_compatibility\r\n  \"GL_ARB_compatibility\",\r\n#endif\r\n#ifdef GL_ARB_compressed_texture_pixel_storage\r\n  \"GL_ARB_compressed_texture_pixel_storage\",\r\n#endif\r\n#ifdef GL_ARB_compute_shader\r\n  \"GL_ARB_compute_shader\",\r\n#endif\r\n#ifdef GL_ARB_compute_variable_group_size\r\n  \"GL_ARB_compute_variable_group_size\",\r\n#endif\r\n#ifdef GL_ARB_conditional_render_inverted\r\n  \"GL_ARB_conditional_render_inverted\",\r\n#endif\r\n#ifdef GL_ARB_conservative_depth\r\n  \"GL_ARB_conservative_depth\",\r\n#endif\r\n#ifdef GL_ARB_copy_buffer\r\n  \"GL_ARB_copy_buffer\",\r\n#endif\r\n#ifdef GL_ARB_copy_image\r\n  \"GL_ARB_copy_image\",\r\n#endif\r\n#ifdef GL_ARB_cull_distance\r\n  \"GL_ARB_cull_distance\",\r\n#endif\r\n#ifdef GL_ARB_debug_output\r\n  \"GL_ARB_debug_output\",\r\n#endif\r\n#ifdef GL_ARB_depth_buffer_float\r\n  \"GL_ARB_depth_buffer_float\",\r\n#endif\r\n#ifdef GL_ARB_depth_clamp\r\n  \"GL_ARB_depth_clamp\",\r\n#endif\r\n#ifdef GL_ARB_depth_texture\r\n  \"GL_ARB_depth_texture\",\r\n#endif\r\n#ifdef GL_ARB_derivative_control\r\n  \"GL_ARB_derivative_control\",\r\n#endif\r\n#ifdef GL_ARB_direct_state_access\r\n  \"GL_ARB_direct_state_access\",\r\n#endif\r\n#ifdef GL_ARB_draw_buffers\r\n  \"GL_ARB_draw_buffers\",\r\n#endif\r\n#ifdef GL_ARB_draw_buffers_blend\r\n  \"GL_ARB_draw_buffers_blend\",\r\n#endif\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n  \"GL_ARB_draw_elements_base_vertex\",\r\n#endif\r\n#ifdef GL_ARB_draw_indirect\r\n  \"GL_ARB_draw_indirect\",\r\n#endif\r\n#ifdef GL_ARB_draw_instanced\r\n  \"GL_ARB_draw_instanced\",\r\n#endif\r\n#ifdef GL_ARB_enhanced_layouts\r\n  \"GL_ARB_enhanced_layouts\",\r\n#endif\r\n#ifdef GL_ARB_explicit_attrib_location\r\n  \"GL_ARB_explicit_attrib_location\",\r\n#endif\r\n#ifdef GL_ARB_explicit_uniform_location\r\n  \"GL_ARB_explicit_uniform_location\",\r\n#endif\r\n#ifdef GL_ARB_fragment_coord_conventions\r\n  \"GL_ARB_fragment_coord_conventions\",\r\n#endif\r\n#ifdef GL_ARB_fragment_layer_viewport\r\n  \"GL_ARB_fragment_layer_viewport\",\r\n#endif\r\n#ifdef GL_ARB_fragment_program\r\n  \"GL_ARB_fragment_program\",\r\n#endif\r\n#ifdef GL_ARB_fragment_program_shadow\r\n  \"GL_ARB_fragment_program_shadow\",\r\n#endif\r\n#ifdef GL_ARB_fragment_shader\r\n  \"GL_ARB_fragment_shader\",\r\n#endif\r\n#ifdef GL_ARB_fragment_shader_interlock\r\n  \"GL_ARB_fragment_shader_interlock\",\r\n#endif\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n  \"GL_ARB_framebuffer_no_attachments\",\r\n#endif\r\n#ifdef GL_ARB_framebuffer_object\r\n  \"GL_ARB_framebuffer_object\",\r\n#endif\r\n#ifdef GL_ARB_framebuffer_sRGB\r\n  \"GL_ARB_framebuffer_sRGB\",\r\n#endif\r\n#ifdef GL_ARB_geometry_shader4\r\n  \"GL_ARB_geometry_shader4\",\r\n#endif\r\n#ifdef GL_ARB_get_program_binary\r\n  \"GL_ARB_get_program_binary\",\r\n#endif\r\n#ifdef GL_ARB_get_texture_sub_image\r\n  \"GL_ARB_get_texture_sub_image\",\r\n#endif\r\n#ifdef GL_ARB_gl_spirv\r\n  \"GL_ARB_gl_spirv\",\r\n#endif\r\n#ifdef GL_ARB_gpu_shader5\r\n  \"GL_ARB_gpu_shader5\",\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n  \"GL_ARB_gpu_shader_fp64\",\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_int64\r\n  \"GL_ARB_gpu_shader_int64\",\r\n#endif\r\n#ifdef GL_ARB_half_float_pixel\r\n  \"GL_ARB_half_float_pixel\",\r\n#endif\r\n#ifdef GL_ARB_half_float_vertex\r\n  \"GL_ARB_half_float_vertex\",\r\n#endif\r\n#ifdef GL_ARB_imaging\r\n  \"GL_ARB_imaging\",\r\n#endif\r\n#ifdef GL_ARB_indirect_parameters\r\n  \"GL_ARB_indirect_parameters\",\r\n#endif\r\n#ifdef GL_ARB_instanced_arrays\r\n  \"GL_ARB_instanced_arrays\",\r\n#endif\r\n#ifdef GL_ARB_internalformat_query\r\n  \"GL_ARB_internalformat_query\",\r\n#endif\r\n#ifdef GL_ARB_internalformat_query2\r\n  \"GL_ARB_internalformat_query2\",\r\n#endif\r\n#ifdef GL_ARB_invalidate_subdata\r\n  \"GL_ARB_invalidate_subdata\",\r\n#endif\r\n#ifdef GL_ARB_map_buffer_alignment\r\n  \"GL_ARB_map_buffer_alignment\",\r\n#endif\r\n#ifdef GL_ARB_map_buffer_range\r\n  \"GL_ARB_map_buffer_range\",\r\n#endif\r\n#ifdef GL_ARB_matrix_palette\r\n  \"GL_ARB_matrix_palette\",\r\n#endif\r\n#ifdef GL_ARB_multi_bind\r\n  \"GL_ARB_multi_bind\",\r\n#endif\r\n#ifdef GL_ARB_multi_draw_indirect\r\n  \"GL_ARB_multi_draw_indirect\",\r\n#endif\r\n#ifdef GL_ARB_multisample\r\n  \"GL_ARB_multisample\",\r\n#endif\r\n#ifdef GL_ARB_multitexture\r\n  \"GL_ARB_multitexture\",\r\n#endif\r\n#ifdef GL_ARB_occlusion_query\r\n  \"GL_ARB_occlusion_query\",\r\n#endif\r\n#ifdef GL_ARB_occlusion_query2\r\n  \"GL_ARB_occlusion_query2\",\r\n#endif\r\n#ifdef GL_ARB_parallel_shader_compile\r\n  \"GL_ARB_parallel_shader_compile\",\r\n#endif\r\n#ifdef GL_ARB_pipeline_statistics_query\r\n  \"GL_ARB_pipeline_statistics_query\",\r\n#endif\r\n#ifdef GL_ARB_pixel_buffer_object\r\n  \"GL_ARB_pixel_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_point_parameters\r\n  \"GL_ARB_point_parameters\",\r\n#endif\r\n#ifdef GL_ARB_point_sprite\r\n  \"GL_ARB_point_sprite\",\r\n#endif\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n  \"GL_ARB_polygon_offset_clamp\",\r\n#endif\r\n#ifdef GL_ARB_post_depth_coverage\r\n  \"GL_ARB_post_depth_coverage\",\r\n#endif\r\n#ifdef GL_ARB_program_interface_query\r\n  \"GL_ARB_program_interface_query\",\r\n#endif\r\n#ifdef GL_ARB_provoking_vertex\r\n  \"GL_ARB_provoking_vertex\",\r\n#endif\r\n#ifdef GL_ARB_query_buffer_object\r\n  \"GL_ARB_query_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_robust_buffer_access_behavior\r\n  \"GL_ARB_robust_buffer_access_behavior\",\r\n#endif\r\n#ifdef GL_ARB_robustness\r\n  \"GL_ARB_robustness\",\r\n#endif\r\n#ifdef GL_ARB_robustness_application_isolation\r\n  \"GL_ARB_robustness_application_isolation\",\r\n#endif\r\n#ifdef GL_ARB_robustness_share_group_isolation\r\n  \"GL_ARB_robustness_share_group_isolation\",\r\n#endif\r\n#ifdef GL_ARB_sample_locations\r\n  \"GL_ARB_sample_locations\",\r\n#endif\r\n#ifdef GL_ARB_sample_shading\r\n  \"GL_ARB_sample_shading\",\r\n#endif\r\n#ifdef GL_ARB_sampler_objects\r\n  \"GL_ARB_sampler_objects\",\r\n#endif\r\n#ifdef GL_ARB_seamless_cube_map\r\n  \"GL_ARB_seamless_cube_map\",\r\n#endif\r\n#ifdef GL_ARB_seamless_cubemap_per_texture\r\n  \"GL_ARB_seamless_cubemap_per_texture\",\r\n#endif\r\n#ifdef GL_ARB_separate_shader_objects\r\n  \"GL_ARB_separate_shader_objects\",\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counter_ops\r\n  \"GL_ARB_shader_atomic_counter_ops\",\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counters\r\n  \"GL_ARB_shader_atomic_counters\",\r\n#endif\r\n#ifdef GL_ARB_shader_ballot\r\n  \"GL_ARB_shader_ballot\",\r\n#endif\r\n#ifdef GL_ARB_shader_bit_encoding\r\n  \"GL_ARB_shader_bit_encoding\",\r\n#endif\r\n#ifdef GL_ARB_shader_clock\r\n  \"GL_ARB_shader_clock\",\r\n#endif\r\n#ifdef GL_ARB_shader_draw_parameters\r\n  \"GL_ARB_shader_draw_parameters\",\r\n#endif\r\n#ifdef GL_ARB_shader_group_vote\r\n  \"GL_ARB_shader_group_vote\",\r\n#endif\r\n#ifdef GL_ARB_shader_image_load_store\r\n  \"GL_ARB_shader_image_load_store\",\r\n#endif\r\n#ifdef GL_ARB_shader_image_size\r\n  \"GL_ARB_shader_image_size\",\r\n#endif\r\n#ifdef GL_ARB_shader_objects\r\n  \"GL_ARB_shader_objects\",\r\n#endif\r\n#ifdef GL_ARB_shader_precision\r\n  \"GL_ARB_shader_precision\",\r\n#endif\r\n#ifdef GL_ARB_shader_stencil_export\r\n  \"GL_ARB_shader_stencil_export\",\r\n#endif\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n  \"GL_ARB_shader_storage_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_shader_subroutine\r\n  \"GL_ARB_shader_subroutine\",\r\n#endif\r\n#ifdef GL_ARB_shader_texture_image_samples\r\n  \"GL_ARB_shader_texture_image_samples\",\r\n#endif\r\n#ifdef GL_ARB_shader_texture_lod\r\n  \"GL_ARB_shader_texture_lod\",\r\n#endif\r\n#ifdef GL_ARB_shader_viewport_layer_array\r\n  \"GL_ARB_shader_viewport_layer_array\",\r\n#endif\r\n#ifdef GL_ARB_shading_language_100\r\n  \"GL_ARB_shading_language_100\",\r\n#endif\r\n#ifdef GL_ARB_shading_language_420pack\r\n  \"GL_ARB_shading_language_420pack\",\r\n#endif\r\n#ifdef GL_ARB_shading_language_include\r\n  \"GL_ARB_shading_language_include\",\r\n#endif\r\n#ifdef GL_ARB_shading_language_packing\r\n  \"GL_ARB_shading_language_packing\",\r\n#endif\r\n#ifdef GL_ARB_shadow\r\n  \"GL_ARB_shadow\",\r\n#endif\r\n#ifdef GL_ARB_shadow_ambient\r\n  \"GL_ARB_shadow_ambient\",\r\n#endif\r\n#ifdef GL_ARB_sparse_buffer\r\n  \"GL_ARB_sparse_buffer\",\r\n#endif\r\n#ifdef GL_ARB_sparse_texture\r\n  \"GL_ARB_sparse_texture\",\r\n#endif\r\n#ifdef GL_ARB_sparse_texture2\r\n  \"GL_ARB_sparse_texture2\",\r\n#endif\r\n#ifdef GL_ARB_sparse_texture_clamp\r\n  \"GL_ARB_sparse_texture_clamp\",\r\n#endif\r\n#ifdef GL_ARB_spirv_extensions\r\n  \"GL_ARB_spirv_extensions\",\r\n#endif\r\n#ifdef GL_ARB_stencil_texturing\r\n  \"GL_ARB_stencil_texturing\",\r\n#endif\r\n#ifdef GL_ARB_sync\r\n  \"GL_ARB_sync\",\r\n#endif\r\n#ifdef GL_ARB_tessellation_shader\r\n  \"GL_ARB_tessellation_shader\",\r\n#endif\r\n#ifdef GL_ARB_texture_barrier\r\n  \"GL_ARB_texture_barrier\",\r\n#endif\r\n#ifdef GL_ARB_texture_border_clamp\r\n  \"GL_ARB_texture_border_clamp\",\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object\r\n  \"GL_ARB_texture_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object_rgb32\r\n  \"GL_ARB_texture_buffer_object_rgb32\",\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_range\r\n  \"GL_ARB_texture_buffer_range\",\r\n#endif\r\n#ifdef GL_ARB_texture_compression\r\n  \"GL_ARB_texture_compression\",\r\n#endif\r\n#ifdef GL_ARB_texture_compression_bptc\r\n  \"GL_ARB_texture_compression_bptc\",\r\n#endif\r\n#ifdef GL_ARB_texture_compression_rgtc\r\n  \"GL_ARB_texture_compression_rgtc\",\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map\r\n  \"GL_ARB_texture_cube_map\",\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map_array\r\n  \"GL_ARB_texture_cube_map_array\",\r\n#endif\r\n#ifdef GL_ARB_texture_env_add\r\n  \"GL_ARB_texture_env_add\",\r\n#endif\r\n#ifdef GL_ARB_texture_env_combine\r\n  \"GL_ARB_texture_env_combine\",\r\n#endif\r\n#ifdef GL_ARB_texture_env_crossbar\r\n  \"GL_ARB_texture_env_crossbar\",\r\n#endif\r\n#ifdef GL_ARB_texture_env_dot3\r\n  \"GL_ARB_texture_env_dot3\",\r\n#endif\r\n#ifdef GL_ARB_texture_filter_anisotropic\r\n  \"GL_ARB_texture_filter_anisotropic\",\r\n#endif\r\n#ifdef GL_ARB_texture_filter_minmax\r\n  \"GL_ARB_texture_filter_minmax\",\r\n#endif\r\n#ifdef GL_ARB_texture_float\r\n  \"GL_ARB_texture_float\",\r\n#endif\r\n#ifdef GL_ARB_texture_gather\r\n  \"GL_ARB_texture_gather\",\r\n#endif\r\n#ifdef GL_ARB_texture_mirror_clamp_to_edge\r\n  \"GL_ARB_texture_mirror_clamp_to_edge\",\r\n#endif\r\n#ifdef GL_ARB_texture_mirrored_repeat\r\n  \"GL_ARB_texture_mirrored_repeat\",\r\n#endif\r\n#ifdef GL_ARB_texture_multisample\r\n  \"GL_ARB_texture_multisample\",\r\n#endif\r\n#ifdef GL_ARB_texture_non_power_of_two\r\n  \"GL_ARB_texture_non_power_of_two\",\r\n#endif\r\n#ifdef GL_ARB_texture_query_levels\r\n  \"GL_ARB_texture_query_levels\",\r\n#endif\r\n#ifdef GL_ARB_texture_query_lod\r\n  \"GL_ARB_texture_query_lod\",\r\n#endif\r\n#ifdef GL_ARB_texture_rectangle\r\n  \"GL_ARB_texture_rectangle\",\r\n#endif\r\n#ifdef GL_ARB_texture_rg\r\n  \"GL_ARB_texture_rg\",\r\n#endif\r\n#ifdef GL_ARB_texture_rgb10_a2ui\r\n  \"GL_ARB_texture_rgb10_a2ui\",\r\n#endif\r\n#ifdef GL_ARB_texture_stencil8\r\n  \"GL_ARB_texture_stencil8\",\r\n#endif\r\n#ifdef GL_ARB_texture_storage\r\n  \"GL_ARB_texture_storage\",\r\n#endif\r\n#ifdef GL_ARB_texture_storage_multisample\r\n  \"GL_ARB_texture_storage_multisample\",\r\n#endif\r\n#ifdef GL_ARB_texture_swizzle\r\n  \"GL_ARB_texture_swizzle\",\r\n#endif\r\n#ifdef GL_ARB_texture_view\r\n  \"GL_ARB_texture_view\",\r\n#endif\r\n#ifdef GL_ARB_timer_query\r\n  \"GL_ARB_timer_query\",\r\n#endif\r\n#ifdef GL_ARB_transform_feedback2\r\n  \"GL_ARB_transform_feedback2\",\r\n#endif\r\n#ifdef GL_ARB_transform_feedback3\r\n  \"GL_ARB_transform_feedback3\",\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n  \"GL_ARB_transform_feedback_instanced\",\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_overflow_query\r\n  \"GL_ARB_transform_feedback_overflow_query\",\r\n#endif\r\n#ifdef GL_ARB_transpose_matrix\r\n  \"GL_ARB_transpose_matrix\",\r\n#endif\r\n#ifdef GL_ARB_uniform_buffer_object\r\n  \"GL_ARB_uniform_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_vertex_array_bgra\r\n  \"GL_ARB_vertex_array_bgra\",\r\n#endif\r\n#ifdef GL_ARB_vertex_array_object\r\n  \"GL_ARB_vertex_array_object\",\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n  \"GL_ARB_vertex_attrib_64bit\",\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n  \"GL_ARB_vertex_attrib_binding\",\r\n#endif\r\n#ifdef GL_ARB_vertex_blend\r\n  \"GL_ARB_vertex_blend\",\r\n#endif\r\n#ifdef GL_ARB_vertex_buffer_object\r\n  \"GL_ARB_vertex_buffer_object\",\r\n#endif\r\n#ifdef GL_ARB_vertex_program\r\n  \"GL_ARB_vertex_program\",\r\n#endif\r\n#ifdef GL_ARB_vertex_shader\r\n  \"GL_ARB_vertex_shader\",\r\n#endif\r\n#ifdef GL_ARB_vertex_type_10f_11f_11f_rev\r\n  \"GL_ARB_vertex_type_10f_11f_11f_rev\",\r\n#endif\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n  \"GL_ARB_vertex_type_2_10_10_10_rev\",\r\n#endif\r\n#ifdef GL_ARB_viewport_array\r\n  \"GL_ARB_viewport_array\",\r\n#endif\r\n#ifdef GL_ARB_window_pos\r\n  \"GL_ARB_window_pos\",\r\n#endif\r\n#ifdef GL_ARM_mali_program_binary\r\n  \"GL_ARM_mali_program_binary\",\r\n#endif\r\n#ifdef GL_ARM_mali_shader_binary\r\n  \"GL_ARM_mali_shader_binary\",\r\n#endif\r\n#ifdef GL_ARM_rgba8\r\n  \"GL_ARM_rgba8\",\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch\r\n  \"GL_ARM_shader_framebuffer_fetch\",\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil\r\n  \"GL_ARM_shader_framebuffer_fetch_depth_stencil\",\r\n#endif\r\n#ifdef GL_ATIX_point_sprites\r\n  \"GL_ATIX_point_sprites\",\r\n#endif\r\n#ifdef GL_ATIX_texture_env_combine3\r\n  \"GL_ATIX_texture_env_combine3\",\r\n#endif\r\n#ifdef GL_ATIX_texture_env_route\r\n  \"GL_ATIX_texture_env_route\",\r\n#endif\r\n#ifdef GL_ATIX_vertex_shader_output_point_size\r\n  \"GL_ATIX_vertex_shader_output_point_size\",\r\n#endif\r\n#ifdef GL_ATI_draw_buffers\r\n  \"GL_ATI_draw_buffers\",\r\n#endif\r\n#ifdef GL_ATI_element_array\r\n  \"GL_ATI_element_array\",\r\n#endif\r\n#ifdef GL_ATI_envmap_bumpmap\r\n  \"GL_ATI_envmap_bumpmap\",\r\n#endif\r\n#ifdef GL_ATI_fragment_shader\r\n  \"GL_ATI_fragment_shader\",\r\n#endif\r\n#ifdef GL_ATI_map_object_buffer\r\n  \"GL_ATI_map_object_buffer\",\r\n#endif\r\n#ifdef GL_ATI_meminfo\r\n  \"GL_ATI_meminfo\",\r\n#endif\r\n#ifdef GL_ATI_pn_triangles\r\n  \"GL_ATI_pn_triangles\",\r\n#endif\r\n#ifdef GL_ATI_separate_stencil\r\n  \"GL_ATI_separate_stencil\",\r\n#endif\r\n#ifdef GL_ATI_shader_texture_lod\r\n  \"GL_ATI_shader_texture_lod\",\r\n#endif\r\n#ifdef GL_ATI_text_fragment_shader\r\n  \"GL_ATI_text_fragment_shader\",\r\n#endif\r\n#ifdef GL_ATI_texture_compression_3dc\r\n  \"GL_ATI_texture_compression_3dc\",\r\n#endif\r\n#ifdef GL_ATI_texture_env_combine3\r\n  \"GL_ATI_texture_env_combine3\",\r\n#endif\r\n#ifdef GL_ATI_texture_float\r\n  \"GL_ATI_texture_float\",\r\n#endif\r\n#ifdef GL_ATI_texture_mirror_once\r\n  \"GL_ATI_texture_mirror_once\",\r\n#endif\r\n#ifdef GL_ATI_vertex_array_object\r\n  \"GL_ATI_vertex_array_object\",\r\n#endif\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n  \"GL_ATI_vertex_attrib_array_object\",\r\n#endif\r\n#ifdef GL_ATI_vertex_streams\r\n  \"GL_ATI_vertex_streams\",\r\n#endif\r\n#ifdef GL_EGL_KHR_context_flush_control\r\n  \"GL_EGL_KHR_context_flush_control\",\r\n#endif\r\n#ifdef GL_EGL_NV_robustness_video_memory_purge\r\n  \"GL_EGL_NV_robustness_video_memory_purge\",\r\n#endif\r\n#ifdef GL_EXT_422_pixels\r\n  \"GL_EXT_422_pixels\",\r\n#endif\r\n#ifdef GL_EXT_Cg_shader\r\n  \"GL_EXT_Cg_shader\",\r\n#endif\r\n#ifdef GL_EXT_EGL_image_array\r\n  \"GL_EXT_EGL_image_array\",\r\n#endif\r\n#ifdef GL_EXT_YUV_target\r\n  \"GL_EXT_YUV_target\",\r\n#endif\r\n#ifdef GL_EXT_abgr\r\n  \"GL_EXT_abgr\",\r\n#endif\r\n#ifdef GL_EXT_base_instance\r\n  \"GL_EXT_base_instance\",\r\n#endif\r\n#ifdef GL_EXT_bgra\r\n  \"GL_EXT_bgra\",\r\n#endif\r\n#ifdef GL_EXT_bindable_uniform\r\n  \"GL_EXT_bindable_uniform\",\r\n#endif\r\n#ifdef GL_EXT_blend_color\r\n  \"GL_EXT_blend_color\",\r\n#endif\r\n#ifdef GL_EXT_blend_equation_separate\r\n  \"GL_EXT_blend_equation_separate\",\r\n#endif\r\n#ifdef GL_EXT_blend_func_extended\r\n  \"GL_EXT_blend_func_extended\",\r\n#endif\r\n#ifdef GL_EXT_blend_func_separate\r\n  \"GL_EXT_blend_func_separate\",\r\n#endif\r\n#ifdef GL_EXT_blend_logic_op\r\n  \"GL_EXT_blend_logic_op\",\r\n#endif\r\n#ifdef GL_EXT_blend_minmax\r\n  \"GL_EXT_blend_minmax\",\r\n#endif\r\n#ifdef GL_EXT_blend_subtract\r\n  \"GL_EXT_blend_subtract\",\r\n#endif\r\n#ifdef GL_EXT_buffer_storage\r\n  \"GL_EXT_buffer_storage\",\r\n#endif\r\n#ifdef GL_EXT_clear_texture\r\n  \"GL_EXT_clear_texture\",\r\n#endif\r\n#ifdef GL_EXT_clip_cull_distance\r\n  \"GL_EXT_clip_cull_distance\",\r\n#endif\r\n#ifdef GL_EXT_clip_volume_hint\r\n  \"GL_EXT_clip_volume_hint\",\r\n#endif\r\n#ifdef GL_EXT_cmyka\r\n  \"GL_EXT_cmyka\",\r\n#endif\r\n#ifdef GL_EXT_color_buffer_float\r\n  \"GL_EXT_color_buffer_float\",\r\n#endif\r\n#ifdef GL_EXT_color_buffer_half_float\r\n  \"GL_EXT_color_buffer_half_float\",\r\n#endif\r\n#ifdef GL_EXT_color_subtable\r\n  \"GL_EXT_color_subtable\",\r\n#endif\r\n#ifdef GL_EXT_compiled_vertex_array\r\n  \"GL_EXT_compiled_vertex_array\",\r\n#endif\r\n#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture\r\n  \"GL_EXT_compressed_ETC1_RGB8_sub_texture\",\r\n#endif\r\n#ifdef GL_EXT_conservative_depth\r\n  \"GL_EXT_conservative_depth\",\r\n#endif\r\n#ifdef GL_EXT_convolution\r\n  \"GL_EXT_convolution\",\r\n#endif\r\n#ifdef GL_EXT_coordinate_frame\r\n  \"GL_EXT_coordinate_frame\",\r\n#endif\r\n#ifdef GL_EXT_copy_image\r\n  \"GL_EXT_copy_image\",\r\n#endif\r\n#ifdef GL_EXT_copy_texture\r\n  \"GL_EXT_copy_texture\",\r\n#endif\r\n#ifdef GL_EXT_cull_vertex\r\n  \"GL_EXT_cull_vertex\",\r\n#endif\r\n#ifdef GL_EXT_debug_label\r\n  \"GL_EXT_debug_label\",\r\n#endif\r\n#ifdef GL_EXT_debug_marker\r\n  \"GL_EXT_debug_marker\",\r\n#endif\r\n#ifdef GL_EXT_depth_bounds_test\r\n  \"GL_EXT_depth_bounds_test\",\r\n#endif\r\n#ifdef GL_EXT_direct_state_access\r\n  \"GL_EXT_direct_state_access\",\r\n#endif\r\n#ifdef GL_EXT_discard_framebuffer\r\n  \"GL_EXT_discard_framebuffer\",\r\n#endif\r\n#ifdef GL_EXT_draw_buffers\r\n  \"GL_EXT_draw_buffers\",\r\n#endif\r\n#ifdef GL_EXT_draw_buffers2\r\n  \"GL_EXT_draw_buffers2\",\r\n#endif\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n  \"GL_EXT_draw_buffers_indexed\",\r\n#endif\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n  \"GL_EXT_draw_elements_base_vertex\",\r\n#endif\r\n#ifdef GL_EXT_draw_instanced\r\n  \"GL_EXT_draw_instanced\",\r\n#endif\r\n#ifdef GL_EXT_draw_range_elements\r\n  \"GL_EXT_draw_range_elements\",\r\n#endif\r\n#ifdef GL_EXT_external_buffer\r\n  \"GL_EXT_external_buffer\",\r\n#endif\r\n#ifdef GL_EXT_float_blend\r\n  \"GL_EXT_float_blend\",\r\n#endif\r\n#ifdef GL_EXT_fog_coord\r\n  \"GL_EXT_fog_coord\",\r\n#endif\r\n#ifdef GL_EXT_frag_depth\r\n  \"GL_EXT_frag_depth\",\r\n#endif\r\n#ifdef GL_EXT_fragment_lighting\r\n  \"GL_EXT_fragment_lighting\",\r\n#endif\r\n#ifdef GL_EXT_framebuffer_blit\r\n  \"GL_EXT_framebuffer_blit\",\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample\r\n  \"GL_EXT_framebuffer_multisample\",\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample_blit_scaled\r\n  \"GL_EXT_framebuffer_multisample_blit_scaled\",\r\n#endif\r\n#ifdef GL_EXT_framebuffer_object\r\n  \"GL_EXT_framebuffer_object\",\r\n#endif\r\n#ifdef GL_EXT_framebuffer_sRGB\r\n  \"GL_EXT_framebuffer_sRGB\",\r\n#endif\r\n#ifdef GL_EXT_geometry_point_size\r\n  \"GL_EXT_geometry_point_size\",\r\n#endif\r\n#ifdef GL_EXT_geometry_shader\r\n  \"GL_EXT_geometry_shader\",\r\n#endif\r\n#ifdef GL_EXT_geometry_shader4\r\n  \"GL_EXT_geometry_shader4\",\r\n#endif\r\n#ifdef GL_EXT_gpu_program_parameters\r\n  \"GL_EXT_gpu_program_parameters\",\r\n#endif\r\n#ifdef GL_EXT_gpu_shader4\r\n  \"GL_EXT_gpu_shader4\",\r\n#endif\r\n#ifdef GL_EXT_gpu_shader5\r\n  \"GL_EXT_gpu_shader5\",\r\n#endif\r\n#ifdef GL_EXT_histogram\r\n  \"GL_EXT_histogram\",\r\n#endif\r\n#ifdef GL_EXT_index_array_formats\r\n  \"GL_EXT_index_array_formats\",\r\n#endif\r\n#ifdef GL_EXT_index_func\r\n  \"GL_EXT_index_func\",\r\n#endif\r\n#ifdef GL_EXT_index_material\r\n  \"GL_EXT_index_material\",\r\n#endif\r\n#ifdef GL_EXT_index_texture\r\n  \"GL_EXT_index_texture\",\r\n#endif\r\n#ifdef GL_EXT_instanced_arrays\r\n  \"GL_EXT_instanced_arrays\",\r\n#endif\r\n#ifdef GL_EXT_light_texture\r\n  \"GL_EXT_light_texture\",\r\n#endif\r\n#ifdef GL_EXT_map_buffer_range\r\n  \"GL_EXT_map_buffer_range\",\r\n#endif\r\n#ifdef GL_EXT_memory_object\r\n  \"GL_EXT_memory_object\",\r\n#endif\r\n#ifdef GL_EXT_memory_object_fd\r\n  \"GL_EXT_memory_object_fd\",\r\n#endif\r\n#ifdef GL_EXT_memory_object_win32\r\n  \"GL_EXT_memory_object_win32\",\r\n#endif\r\n#ifdef GL_EXT_misc_attribute\r\n  \"GL_EXT_misc_attribute\",\r\n#endif\r\n#ifdef GL_EXT_multi_draw_arrays\r\n  \"GL_EXT_multi_draw_arrays\",\r\n#endif\r\n#ifdef GL_EXT_multi_draw_indirect\r\n  \"GL_EXT_multi_draw_indirect\",\r\n#endif\r\n#ifdef GL_EXT_multiple_textures\r\n  \"GL_EXT_multiple_textures\",\r\n#endif\r\n#ifdef GL_EXT_multisample\r\n  \"GL_EXT_multisample\",\r\n#endif\r\n#ifdef GL_EXT_multisample_compatibility\r\n  \"GL_EXT_multisample_compatibility\",\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n  \"GL_EXT_multisampled_render_to_texture\",\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture2\r\n  \"GL_EXT_multisampled_render_to_texture2\",\r\n#endif\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n  \"GL_EXT_multiview_draw_buffers\",\r\n#endif\r\n#ifdef GL_EXT_packed_depth_stencil\r\n  \"GL_EXT_packed_depth_stencil\",\r\n#endif\r\n#ifdef GL_EXT_packed_float\r\n  \"GL_EXT_packed_float\",\r\n#endif\r\n#ifdef GL_EXT_packed_pixels\r\n  \"GL_EXT_packed_pixels\",\r\n#endif\r\n#ifdef GL_EXT_paletted_texture\r\n  \"GL_EXT_paletted_texture\",\r\n#endif\r\n#ifdef GL_EXT_pixel_buffer_object\r\n  \"GL_EXT_pixel_buffer_object\",\r\n#endif\r\n#ifdef GL_EXT_pixel_transform\r\n  \"GL_EXT_pixel_transform\",\r\n#endif\r\n#ifdef GL_EXT_pixel_transform_color_table\r\n  \"GL_EXT_pixel_transform_color_table\",\r\n#endif\r\n#ifdef GL_EXT_point_parameters\r\n  \"GL_EXT_point_parameters\",\r\n#endif\r\n#ifdef GL_EXT_polygon_offset\r\n  \"GL_EXT_polygon_offset\",\r\n#endif\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n  \"GL_EXT_polygon_offset_clamp\",\r\n#endif\r\n#ifdef GL_EXT_post_depth_coverage\r\n  \"GL_EXT_post_depth_coverage\",\r\n#endif\r\n#ifdef GL_EXT_provoking_vertex\r\n  \"GL_EXT_provoking_vertex\",\r\n#endif\r\n#ifdef GL_EXT_pvrtc_sRGB\r\n  \"GL_EXT_pvrtc_sRGB\",\r\n#endif\r\n#ifdef GL_EXT_raster_multisample\r\n  \"GL_EXT_raster_multisample\",\r\n#endif\r\n#ifdef GL_EXT_read_format_bgra\r\n  \"GL_EXT_read_format_bgra\",\r\n#endif\r\n#ifdef GL_EXT_render_snorm\r\n  \"GL_EXT_render_snorm\",\r\n#endif\r\n#ifdef GL_EXT_rescale_normal\r\n  \"GL_EXT_rescale_normal\",\r\n#endif\r\n#ifdef GL_EXT_sRGB\r\n  \"GL_EXT_sRGB\",\r\n#endif\r\n#ifdef GL_EXT_sRGB_write_control\r\n  \"GL_EXT_sRGB_write_control\",\r\n#endif\r\n#ifdef GL_EXT_scene_marker\r\n  \"GL_EXT_scene_marker\",\r\n#endif\r\n#ifdef GL_EXT_secondary_color\r\n  \"GL_EXT_secondary_color\",\r\n#endif\r\n#ifdef GL_EXT_semaphore\r\n  \"GL_EXT_semaphore\",\r\n#endif\r\n#ifdef GL_EXT_semaphore_fd\r\n  \"GL_EXT_semaphore_fd\",\r\n#endif\r\n#ifdef GL_EXT_semaphore_win32\r\n  \"GL_EXT_semaphore_win32\",\r\n#endif\r\n#ifdef GL_EXT_separate_shader_objects\r\n  \"GL_EXT_separate_shader_objects\",\r\n#endif\r\n#ifdef GL_EXT_separate_specular_color\r\n  \"GL_EXT_separate_specular_color\",\r\n#endif\r\n#ifdef GL_EXT_shader_framebuffer_fetch\r\n  \"GL_EXT_shader_framebuffer_fetch\",\r\n#endif\r\n#ifdef GL_EXT_shader_group_vote\r\n  \"GL_EXT_shader_group_vote\",\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_formatted\r\n  \"GL_EXT_shader_image_load_formatted\",\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_store\r\n  \"GL_EXT_shader_image_load_store\",\r\n#endif\r\n#ifdef GL_EXT_shader_implicit_conversions\r\n  \"GL_EXT_shader_implicit_conversions\",\r\n#endif\r\n#ifdef GL_EXT_shader_integer_mix\r\n  \"GL_EXT_shader_integer_mix\",\r\n#endif\r\n#ifdef GL_EXT_shader_io_blocks\r\n  \"GL_EXT_shader_io_blocks\",\r\n#endif\r\n#ifdef GL_EXT_shader_non_constant_global_initializers\r\n  \"GL_EXT_shader_non_constant_global_initializers\",\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage\r\n  \"GL_EXT_shader_pixel_local_storage\",\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n  \"GL_EXT_shader_pixel_local_storage2\",\r\n#endif\r\n#ifdef GL_EXT_shader_texture_lod\r\n  \"GL_EXT_shader_texture_lod\",\r\n#endif\r\n#ifdef GL_EXT_shadow_funcs\r\n  \"GL_EXT_shadow_funcs\",\r\n#endif\r\n#ifdef GL_EXT_shadow_samplers\r\n  \"GL_EXT_shadow_samplers\",\r\n#endif\r\n#ifdef GL_EXT_shared_texture_palette\r\n  \"GL_EXT_shared_texture_palette\",\r\n#endif\r\n#ifdef GL_EXT_sparse_texture\r\n  \"GL_EXT_sparse_texture\",\r\n#endif\r\n#ifdef GL_EXT_sparse_texture2\r\n  \"GL_EXT_sparse_texture2\",\r\n#endif\r\n#ifdef GL_EXT_stencil_clear_tag\r\n  \"GL_EXT_stencil_clear_tag\",\r\n#endif\r\n#ifdef GL_EXT_stencil_two_side\r\n  \"GL_EXT_stencil_two_side\",\r\n#endif\r\n#ifdef GL_EXT_stencil_wrap\r\n  \"GL_EXT_stencil_wrap\",\r\n#endif\r\n#ifdef GL_EXT_subtexture\r\n  \"GL_EXT_subtexture\",\r\n#endif\r\n#ifdef GL_EXT_texture\r\n  \"GL_EXT_texture\",\r\n#endif\r\n#ifdef GL_EXT_texture3D\r\n  \"GL_EXT_texture3D\",\r\n#endif\r\n#ifdef GL_EXT_texture_array\r\n  \"GL_EXT_texture_array\",\r\n#endif\r\n#ifdef GL_EXT_texture_buffer_object\r\n  \"GL_EXT_texture_buffer_object\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode\r\n  \"GL_EXT_texture_compression_astc_decode_mode\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5\r\n  \"GL_EXT_texture_compression_astc_decode_mode_rgb9e5\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_bptc\r\n  \"GL_EXT_texture_compression_bptc\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_dxt1\r\n  \"GL_EXT_texture_compression_dxt1\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_latc\r\n  \"GL_EXT_texture_compression_latc\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_rgtc\r\n  \"GL_EXT_texture_compression_rgtc\",\r\n#endif\r\n#ifdef GL_EXT_texture_compression_s3tc\r\n  \"GL_EXT_texture_compression_s3tc\",\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map\r\n  \"GL_EXT_texture_cube_map\",\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map_array\r\n  \"GL_EXT_texture_cube_map_array\",\r\n#endif\r\n#ifdef GL_EXT_texture_edge_clamp\r\n  \"GL_EXT_texture_edge_clamp\",\r\n#endif\r\n#ifdef GL_EXT_texture_env\r\n  \"GL_EXT_texture_env\",\r\n#endif\r\n#ifdef GL_EXT_texture_env_add\r\n  \"GL_EXT_texture_env_add\",\r\n#endif\r\n#ifdef GL_EXT_texture_env_combine\r\n  \"GL_EXT_texture_env_combine\",\r\n#endif\r\n#ifdef GL_EXT_texture_env_dot3\r\n  \"GL_EXT_texture_env_dot3\",\r\n#endif\r\n#ifdef GL_EXT_texture_filter_anisotropic\r\n  \"GL_EXT_texture_filter_anisotropic\",\r\n#endif\r\n#ifdef GL_EXT_texture_filter_minmax\r\n  \"GL_EXT_texture_filter_minmax\",\r\n#endif\r\n#ifdef GL_EXT_texture_format_BGRA8888\r\n  \"GL_EXT_texture_format_BGRA8888\",\r\n#endif\r\n#ifdef GL_EXT_texture_integer\r\n  \"GL_EXT_texture_integer\",\r\n#endif\r\n#ifdef GL_EXT_texture_lod_bias\r\n  \"GL_EXT_texture_lod_bias\",\r\n#endif\r\n#ifdef GL_EXT_texture_mirror_clamp\r\n  \"GL_EXT_texture_mirror_clamp\",\r\n#endif\r\n#ifdef GL_EXT_texture_norm16\r\n  \"GL_EXT_texture_norm16\",\r\n#endif\r\n#ifdef GL_EXT_texture_object\r\n  \"GL_EXT_texture_object\",\r\n#endif\r\n#ifdef GL_EXT_texture_perturb_normal\r\n  \"GL_EXT_texture_perturb_normal\",\r\n#endif\r\n#ifdef GL_EXT_texture_rectangle\r\n  \"GL_EXT_texture_rectangle\",\r\n#endif\r\n#ifdef GL_EXT_texture_rg\r\n  \"GL_EXT_texture_rg\",\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB\r\n  \"GL_EXT_texture_sRGB\",\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_R8\r\n  \"GL_EXT_texture_sRGB_R8\",\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_RG8\r\n  \"GL_EXT_texture_sRGB_RG8\",\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_decode\r\n  \"GL_EXT_texture_sRGB_decode\",\r\n#endif\r\n#ifdef GL_EXT_texture_shared_exponent\r\n  \"GL_EXT_texture_shared_exponent\",\r\n#endif\r\n#ifdef GL_EXT_texture_snorm\r\n  \"GL_EXT_texture_snorm\",\r\n#endif\r\n#ifdef GL_EXT_texture_storage\r\n  \"GL_EXT_texture_storage\",\r\n#endif\r\n#ifdef GL_EXT_texture_swizzle\r\n  \"GL_EXT_texture_swizzle\",\r\n#endif\r\n#ifdef GL_EXT_texture_type_2_10_10_10_REV\r\n  \"GL_EXT_texture_type_2_10_10_10_REV\",\r\n#endif\r\n#ifdef GL_EXT_texture_view\r\n  \"GL_EXT_texture_view\",\r\n#endif\r\n#ifdef GL_EXT_timer_query\r\n  \"GL_EXT_timer_query\",\r\n#endif\r\n#ifdef GL_EXT_transform_feedback\r\n  \"GL_EXT_transform_feedback\",\r\n#endif\r\n#ifdef GL_EXT_unpack_subimage\r\n  \"GL_EXT_unpack_subimage\",\r\n#endif\r\n#ifdef GL_EXT_vertex_array\r\n  \"GL_EXT_vertex_array\",\r\n#endif\r\n#ifdef GL_EXT_vertex_array_bgra\r\n  \"GL_EXT_vertex_array_bgra\",\r\n#endif\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n  \"GL_EXT_vertex_array_setXXX\",\r\n#endif\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n  \"GL_EXT_vertex_attrib_64bit\",\r\n#endif\r\n#ifdef GL_EXT_vertex_shader\r\n  \"GL_EXT_vertex_shader\",\r\n#endif\r\n#ifdef GL_EXT_vertex_weighting\r\n  \"GL_EXT_vertex_weighting\",\r\n#endif\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n  \"GL_EXT_win32_keyed_mutex\",\r\n#endif\r\n#ifdef GL_EXT_window_rectangles\r\n  \"GL_EXT_window_rectangles\",\r\n#endif\r\n#ifdef GL_EXT_x11_sync_object\r\n  \"GL_EXT_x11_sync_object\",\r\n#endif\r\n#ifdef GL_GREMEDY_frame_terminator\r\n  \"GL_GREMEDY_frame_terminator\",\r\n#endif\r\n#ifdef GL_GREMEDY_string_marker\r\n  \"GL_GREMEDY_string_marker\",\r\n#endif\r\n#ifdef GL_HP_convolution_border_modes\r\n  \"GL_HP_convolution_border_modes\",\r\n#endif\r\n#ifdef GL_HP_image_transform\r\n  \"GL_HP_image_transform\",\r\n#endif\r\n#ifdef GL_HP_occlusion_test\r\n  \"GL_HP_occlusion_test\",\r\n#endif\r\n#ifdef GL_HP_texture_lighting\r\n  \"GL_HP_texture_lighting\",\r\n#endif\r\n#ifdef GL_IBM_cull_vertex\r\n  \"GL_IBM_cull_vertex\",\r\n#endif\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n  \"GL_IBM_multimode_draw_arrays\",\r\n#endif\r\n#ifdef GL_IBM_rasterpos_clip\r\n  \"GL_IBM_rasterpos_clip\",\r\n#endif\r\n#ifdef GL_IBM_static_data\r\n  \"GL_IBM_static_data\",\r\n#endif\r\n#ifdef GL_IBM_texture_mirrored_repeat\r\n  \"GL_IBM_texture_mirrored_repeat\",\r\n#endif\r\n#ifdef GL_IBM_vertex_array_lists\r\n  \"GL_IBM_vertex_array_lists\",\r\n#endif\r\n#ifdef GL_INGR_color_clamp\r\n  \"GL_INGR_color_clamp\",\r\n#endif\r\n#ifdef GL_INGR_interlace_read\r\n  \"GL_INGR_interlace_read\",\r\n#endif\r\n#ifdef GL_INTEL_conservative_rasterization\r\n  \"GL_INTEL_conservative_rasterization\",\r\n#endif\r\n#ifdef GL_INTEL_fragment_shader_ordering\r\n  \"GL_INTEL_fragment_shader_ordering\",\r\n#endif\r\n#ifdef GL_INTEL_framebuffer_CMAA\r\n  \"GL_INTEL_framebuffer_CMAA\",\r\n#endif\r\n#ifdef GL_INTEL_map_texture\r\n  \"GL_INTEL_map_texture\",\r\n#endif\r\n#ifdef GL_INTEL_parallel_arrays\r\n  \"GL_INTEL_parallel_arrays\",\r\n#endif\r\n#ifdef GL_INTEL_performance_query\r\n  \"GL_INTEL_performance_query\",\r\n#endif\r\n#ifdef GL_INTEL_texture_scissor\r\n  \"GL_INTEL_texture_scissor\",\r\n#endif\r\n#ifdef GL_KHR_blend_equation_advanced\r\n  \"GL_KHR_blend_equation_advanced\",\r\n#endif\r\n#ifdef GL_KHR_blend_equation_advanced_coherent\r\n  \"GL_KHR_blend_equation_advanced_coherent\",\r\n#endif\r\n#ifdef GL_KHR_context_flush_control\r\n  \"GL_KHR_context_flush_control\",\r\n#endif\r\n#ifdef GL_KHR_debug\r\n  \"GL_KHR_debug\",\r\n#endif\r\n#ifdef GL_KHR_no_error\r\n  \"GL_KHR_no_error\",\r\n#endif\r\n#ifdef GL_KHR_parallel_shader_compile\r\n  \"GL_KHR_parallel_shader_compile\",\r\n#endif\r\n#ifdef GL_KHR_robust_buffer_access_behavior\r\n  \"GL_KHR_robust_buffer_access_behavior\",\r\n#endif\r\n#ifdef GL_KHR_robustness\r\n  \"GL_KHR_robustness\",\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_hdr\r\n  \"GL_KHR_texture_compression_astc_hdr\",\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_ldr\r\n  \"GL_KHR_texture_compression_astc_ldr\",\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_sliced_3d\r\n  \"GL_KHR_texture_compression_astc_sliced_3d\",\r\n#endif\r\n#ifdef GL_KTX_buffer_region\r\n  \"GL_KTX_buffer_region\",\r\n#endif\r\n#ifdef GL_MESAX_texture_stack\r\n  \"GL_MESAX_texture_stack\",\r\n#endif\r\n#ifdef GL_MESA_pack_invert\r\n  \"GL_MESA_pack_invert\",\r\n#endif\r\n#ifdef GL_MESA_resize_buffers\r\n  \"GL_MESA_resize_buffers\",\r\n#endif\r\n#ifdef GL_MESA_shader_integer_functions\r\n  \"GL_MESA_shader_integer_functions\",\r\n#endif\r\n#ifdef GL_MESA_window_pos\r\n  \"GL_MESA_window_pos\",\r\n#endif\r\n#ifdef GL_MESA_ycbcr_texture\r\n  \"GL_MESA_ycbcr_texture\",\r\n#endif\r\n#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers\r\n  \"GL_NVX_blend_equation_advanced_multi_draw_buffers\",\r\n#endif\r\n#ifdef GL_NVX_conditional_render\r\n  \"GL_NVX_conditional_render\",\r\n#endif\r\n#ifdef GL_NVX_gpu_memory_info\r\n  \"GL_NVX_gpu_memory_info\",\r\n#endif\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n  \"GL_NVX_linked_gpu_multicast\",\r\n#endif\r\n#ifdef GL_NV_3dvision_settings\r\n  \"GL_NV_3dvision_settings\",\r\n#endif\r\n#ifdef GL_NV_EGL_stream_consumer_external\r\n  \"GL_NV_EGL_stream_consumer_external\",\r\n#endif\r\n#ifdef GL_NV_alpha_to_coverage_dither_control\r\n  \"GL_NV_alpha_to_coverage_dither_control\",\r\n#endif\r\n#ifdef GL_NV_bgr\r\n  \"GL_NV_bgr\",\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n  \"GL_NV_bindless_multi_draw_indirect\",\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n  \"GL_NV_bindless_multi_draw_indirect_count\",\r\n#endif\r\n#ifdef GL_NV_bindless_texture\r\n  \"GL_NV_bindless_texture\",\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced\r\n  \"GL_NV_blend_equation_advanced\",\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced_coherent\r\n  \"GL_NV_blend_equation_advanced_coherent\",\r\n#endif\r\n#ifdef GL_NV_blend_minmax_factor\r\n  \"GL_NV_blend_minmax_factor\",\r\n#endif\r\n#ifdef GL_NV_blend_square\r\n  \"GL_NV_blend_square\",\r\n#endif\r\n#ifdef GL_NV_clip_space_w_scaling\r\n  \"GL_NV_clip_space_w_scaling\",\r\n#endif\r\n#ifdef GL_NV_command_list\r\n  \"GL_NV_command_list\",\r\n#endif\r\n#ifdef GL_NV_compute_program5\r\n  \"GL_NV_compute_program5\",\r\n#endif\r\n#ifdef GL_NV_conditional_render\r\n  \"GL_NV_conditional_render\",\r\n#endif\r\n#ifdef GL_NV_conservative_raster\r\n  \"GL_NV_conservative_raster\",\r\n#endif\r\n#ifdef GL_NV_conservative_raster_dilate\r\n  \"GL_NV_conservative_raster_dilate\",\r\n#endif\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n  \"GL_NV_conservative_raster_pre_snap_triangles\",\r\n#endif\r\n#ifdef GL_NV_copy_buffer\r\n  \"GL_NV_copy_buffer\",\r\n#endif\r\n#ifdef GL_NV_copy_depth_to_color\r\n  \"GL_NV_copy_depth_to_color\",\r\n#endif\r\n#ifdef GL_NV_copy_image\r\n  \"GL_NV_copy_image\",\r\n#endif\r\n#ifdef GL_NV_deep_texture3D\r\n  \"GL_NV_deep_texture3D\",\r\n#endif\r\n#ifdef GL_NV_depth_buffer_float\r\n  \"GL_NV_depth_buffer_float\",\r\n#endif\r\n#ifdef GL_NV_depth_clamp\r\n  \"GL_NV_depth_clamp\",\r\n#endif\r\n#ifdef GL_NV_depth_range_unclamped\r\n  \"GL_NV_depth_range_unclamped\",\r\n#endif\r\n#ifdef GL_NV_draw_buffers\r\n  \"GL_NV_draw_buffers\",\r\n#endif\r\n#ifdef GL_NV_draw_instanced\r\n  \"GL_NV_draw_instanced\",\r\n#endif\r\n#ifdef GL_NV_draw_texture\r\n  \"GL_NV_draw_texture\",\r\n#endif\r\n#ifdef GL_NV_draw_vulkan_image\r\n  \"GL_NV_draw_vulkan_image\",\r\n#endif\r\n#ifdef GL_NV_evaluators\r\n  \"GL_NV_evaluators\",\r\n#endif\r\n#ifdef GL_NV_explicit_attrib_location\r\n  \"GL_NV_explicit_attrib_location\",\r\n#endif\r\n#ifdef GL_NV_explicit_multisample\r\n  \"GL_NV_explicit_multisample\",\r\n#endif\r\n#ifdef GL_NV_fbo_color_attachments\r\n  \"GL_NV_fbo_color_attachments\",\r\n#endif\r\n#ifdef GL_NV_fence\r\n  \"GL_NV_fence\",\r\n#endif\r\n#ifdef GL_NV_fill_rectangle\r\n  \"GL_NV_fill_rectangle\",\r\n#endif\r\n#ifdef GL_NV_float_buffer\r\n  \"GL_NV_float_buffer\",\r\n#endif\r\n#ifdef GL_NV_fog_distance\r\n  \"GL_NV_fog_distance\",\r\n#endif\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n  \"GL_NV_fragment_coverage_to_color\",\r\n#endif\r\n#ifdef GL_NV_fragment_program\r\n  \"GL_NV_fragment_program\",\r\n#endif\r\n#ifdef GL_NV_fragment_program2\r\n  \"GL_NV_fragment_program2\",\r\n#endif\r\n#ifdef GL_NV_fragment_program4\r\n  \"GL_NV_fragment_program4\",\r\n#endif\r\n#ifdef GL_NV_fragment_program_option\r\n  \"GL_NV_fragment_program_option\",\r\n#endif\r\n#ifdef GL_NV_fragment_shader_interlock\r\n  \"GL_NV_fragment_shader_interlock\",\r\n#endif\r\n#ifdef GL_NV_framebuffer_blit\r\n  \"GL_NV_framebuffer_blit\",\r\n#endif\r\n#ifdef GL_NV_framebuffer_mixed_samples\r\n  \"GL_NV_framebuffer_mixed_samples\",\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample\r\n  \"GL_NV_framebuffer_multisample\",\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n  \"GL_NV_framebuffer_multisample_coverage\",\r\n#endif\r\n#ifdef GL_NV_generate_mipmap_sRGB\r\n  \"GL_NV_generate_mipmap_sRGB\",\r\n#endif\r\n#ifdef GL_NV_geometry_program4\r\n  \"GL_NV_geometry_program4\",\r\n#endif\r\n#ifdef GL_NV_geometry_shader4\r\n  \"GL_NV_geometry_shader4\",\r\n#endif\r\n#ifdef GL_NV_geometry_shader_passthrough\r\n  \"GL_NV_geometry_shader_passthrough\",\r\n#endif\r\n#ifdef GL_NV_gpu_multicast\r\n  \"GL_NV_gpu_multicast\",\r\n#endif\r\n#ifdef GL_NV_gpu_program4\r\n  \"GL_NV_gpu_program4\",\r\n#endif\r\n#ifdef GL_NV_gpu_program5\r\n  \"GL_NV_gpu_program5\",\r\n#endif\r\n#ifdef GL_NV_gpu_program5_mem_extended\r\n  \"GL_NV_gpu_program5_mem_extended\",\r\n#endif\r\n#ifdef GL_NV_gpu_program_fp64\r\n  \"GL_NV_gpu_program_fp64\",\r\n#endif\r\n#ifdef GL_NV_gpu_shader5\r\n  \"GL_NV_gpu_shader5\",\r\n#endif\r\n#ifdef GL_NV_half_float\r\n  \"GL_NV_half_float\",\r\n#endif\r\n#ifdef GL_NV_image_formats\r\n  \"GL_NV_image_formats\",\r\n#endif\r\n#ifdef GL_NV_instanced_arrays\r\n  \"GL_NV_instanced_arrays\",\r\n#endif\r\n#ifdef GL_NV_internalformat_sample_query\r\n  \"GL_NV_internalformat_sample_query\",\r\n#endif\r\n#ifdef GL_NV_light_max_exponent\r\n  \"GL_NV_light_max_exponent\",\r\n#endif\r\n#ifdef GL_NV_multisample_coverage\r\n  \"GL_NV_multisample_coverage\",\r\n#endif\r\n#ifdef GL_NV_multisample_filter_hint\r\n  \"GL_NV_multisample_filter_hint\",\r\n#endif\r\n#ifdef GL_NV_non_square_matrices\r\n  \"GL_NV_non_square_matrices\",\r\n#endif\r\n#ifdef GL_NV_occlusion_query\r\n  \"GL_NV_occlusion_query\",\r\n#endif\r\n#ifdef GL_NV_pack_subimage\r\n  \"GL_NV_pack_subimage\",\r\n#endif\r\n#ifdef GL_NV_packed_depth_stencil\r\n  \"GL_NV_packed_depth_stencil\",\r\n#endif\r\n#ifdef GL_NV_packed_float\r\n  \"GL_NV_packed_float\",\r\n#endif\r\n#ifdef GL_NV_packed_float_linear\r\n  \"GL_NV_packed_float_linear\",\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object\r\n  \"GL_NV_parameter_buffer_object\",\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object2\r\n  \"GL_NV_parameter_buffer_object2\",\r\n#endif\r\n#ifdef GL_NV_path_rendering\r\n  \"GL_NV_path_rendering\",\r\n#endif\r\n#ifdef GL_NV_path_rendering_shared_edge\r\n  \"GL_NV_path_rendering_shared_edge\",\r\n#endif\r\n#ifdef GL_NV_pixel_buffer_object\r\n  \"GL_NV_pixel_buffer_object\",\r\n#endif\r\n#ifdef GL_NV_pixel_data_range\r\n  \"GL_NV_pixel_data_range\",\r\n#endif\r\n#ifdef GL_NV_platform_binary\r\n  \"GL_NV_platform_binary\",\r\n#endif\r\n#ifdef GL_NV_point_sprite\r\n  \"GL_NV_point_sprite\",\r\n#endif\r\n#ifdef GL_NV_polygon_mode\r\n  \"GL_NV_polygon_mode\",\r\n#endif\r\n#ifdef GL_NV_present_video\r\n  \"GL_NV_present_video\",\r\n#endif\r\n#ifdef GL_NV_primitive_restart\r\n  \"GL_NV_primitive_restart\",\r\n#endif\r\n#ifdef GL_NV_read_depth\r\n  \"GL_NV_read_depth\",\r\n#endif\r\n#ifdef GL_NV_read_depth_stencil\r\n  \"GL_NV_read_depth_stencil\",\r\n#endif\r\n#ifdef GL_NV_read_stencil\r\n  \"GL_NV_read_stencil\",\r\n#endif\r\n#ifdef GL_NV_register_combiners\r\n  \"GL_NV_register_combiners\",\r\n#endif\r\n#ifdef GL_NV_register_combiners2\r\n  \"GL_NV_register_combiners2\",\r\n#endif\r\n#ifdef GL_NV_robustness_video_memory_purge\r\n  \"GL_NV_robustness_video_memory_purge\",\r\n#endif\r\n#ifdef GL_NV_sRGB_formats\r\n  \"GL_NV_sRGB_formats\",\r\n#endif\r\n#ifdef GL_NV_sample_locations\r\n  \"GL_NV_sample_locations\",\r\n#endif\r\n#ifdef GL_NV_sample_mask_override_coverage\r\n  \"GL_NV_sample_mask_override_coverage\",\r\n#endif\r\n#ifdef GL_NV_shader_atomic_counters\r\n  \"GL_NV_shader_atomic_counters\",\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float\r\n  \"GL_NV_shader_atomic_float\",\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float64\r\n  \"GL_NV_shader_atomic_float64\",\r\n#endif\r\n#ifdef GL_NV_shader_atomic_fp16_vector\r\n  \"GL_NV_shader_atomic_fp16_vector\",\r\n#endif\r\n#ifdef GL_NV_shader_atomic_int64\r\n  \"GL_NV_shader_atomic_int64\",\r\n#endif\r\n#ifdef GL_NV_shader_buffer_load\r\n  \"GL_NV_shader_buffer_load\",\r\n#endif\r\n#ifdef GL_NV_shader_noperspective_interpolation\r\n  \"GL_NV_shader_noperspective_interpolation\",\r\n#endif\r\n#ifdef GL_NV_shader_storage_buffer_object\r\n  \"GL_NV_shader_storage_buffer_object\",\r\n#endif\r\n#ifdef GL_NV_shader_thread_group\r\n  \"GL_NV_shader_thread_group\",\r\n#endif\r\n#ifdef GL_NV_shader_thread_shuffle\r\n  \"GL_NV_shader_thread_shuffle\",\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_array\r\n  \"GL_NV_shadow_samplers_array\",\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_cube\r\n  \"GL_NV_shadow_samplers_cube\",\r\n#endif\r\n#ifdef GL_NV_stereo_view_rendering\r\n  \"GL_NV_stereo_view_rendering\",\r\n#endif\r\n#ifdef GL_NV_tessellation_program5\r\n  \"GL_NV_tessellation_program5\",\r\n#endif\r\n#ifdef GL_NV_texgen_emboss\r\n  \"GL_NV_texgen_emboss\",\r\n#endif\r\n#ifdef GL_NV_texgen_reflection\r\n  \"GL_NV_texgen_reflection\",\r\n#endif\r\n#ifdef GL_NV_texture_array\r\n  \"GL_NV_texture_array\",\r\n#endif\r\n#ifdef GL_NV_texture_barrier\r\n  \"GL_NV_texture_barrier\",\r\n#endif\r\n#ifdef GL_NV_texture_border_clamp\r\n  \"GL_NV_texture_border_clamp\",\r\n#endif\r\n#ifdef GL_NV_texture_compression_latc\r\n  \"GL_NV_texture_compression_latc\",\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc\r\n  \"GL_NV_texture_compression_s3tc\",\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc_update\r\n  \"GL_NV_texture_compression_s3tc_update\",\r\n#endif\r\n#ifdef GL_NV_texture_compression_vtc\r\n  \"GL_NV_texture_compression_vtc\",\r\n#endif\r\n#ifdef GL_NV_texture_env_combine4\r\n  \"GL_NV_texture_env_combine4\",\r\n#endif\r\n#ifdef GL_NV_texture_expand_normal\r\n  \"GL_NV_texture_expand_normal\",\r\n#endif\r\n#ifdef GL_NV_texture_multisample\r\n  \"GL_NV_texture_multisample\",\r\n#endif\r\n#ifdef GL_NV_texture_npot_2D_mipmap\r\n  \"GL_NV_texture_npot_2D_mipmap\",\r\n#endif\r\n#ifdef GL_NV_texture_rectangle\r\n  \"GL_NV_texture_rectangle\",\r\n#endif\r\n#ifdef GL_NV_texture_rectangle_compressed\r\n  \"GL_NV_texture_rectangle_compressed\",\r\n#endif\r\n#ifdef GL_NV_texture_shader\r\n  \"GL_NV_texture_shader\",\r\n#endif\r\n#ifdef GL_NV_texture_shader2\r\n  \"GL_NV_texture_shader2\",\r\n#endif\r\n#ifdef GL_NV_texture_shader3\r\n  \"GL_NV_texture_shader3\",\r\n#endif\r\n#ifdef GL_NV_transform_feedback\r\n  \"GL_NV_transform_feedback\",\r\n#endif\r\n#ifdef GL_NV_transform_feedback2\r\n  \"GL_NV_transform_feedback2\",\r\n#endif\r\n#ifdef GL_NV_uniform_buffer_unified_memory\r\n  \"GL_NV_uniform_buffer_unified_memory\",\r\n#endif\r\n#ifdef GL_NV_vdpau_interop\r\n  \"GL_NV_vdpau_interop\",\r\n#endif\r\n#ifdef GL_NV_vertex_array_range\r\n  \"GL_NV_vertex_array_range\",\r\n#endif\r\n#ifdef GL_NV_vertex_array_range2\r\n  \"GL_NV_vertex_array_range2\",\r\n#endif\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n  \"GL_NV_vertex_attrib_integer_64bit\",\r\n#endif\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n  \"GL_NV_vertex_buffer_unified_memory\",\r\n#endif\r\n#ifdef GL_NV_vertex_program\r\n  \"GL_NV_vertex_program\",\r\n#endif\r\n#ifdef GL_NV_vertex_program1_1\r\n  \"GL_NV_vertex_program1_1\",\r\n#endif\r\n#ifdef GL_NV_vertex_program2\r\n  \"GL_NV_vertex_program2\",\r\n#endif\r\n#ifdef GL_NV_vertex_program2_option\r\n  \"GL_NV_vertex_program2_option\",\r\n#endif\r\n#ifdef GL_NV_vertex_program3\r\n  \"GL_NV_vertex_program3\",\r\n#endif\r\n#ifdef GL_NV_vertex_program4\r\n  \"GL_NV_vertex_program4\",\r\n#endif\r\n#ifdef GL_NV_video_capture\r\n  \"GL_NV_video_capture\",\r\n#endif\r\n#ifdef GL_NV_viewport_array\r\n  \"GL_NV_viewport_array\",\r\n#endif\r\n#ifdef GL_NV_viewport_array2\r\n  \"GL_NV_viewport_array2\",\r\n#endif\r\n#ifdef GL_NV_viewport_swizzle\r\n  \"GL_NV_viewport_swizzle\",\r\n#endif\r\n#ifdef GL_OES_byte_coordinates\r\n  \"GL_OES_byte_coordinates\",\r\n#endif\r\n#ifdef GL_OML_interlace\r\n  \"GL_OML_interlace\",\r\n#endif\r\n#ifdef GL_OML_resample\r\n  \"GL_OML_resample\",\r\n#endif\r\n#ifdef GL_OML_subsample\r\n  \"GL_OML_subsample\",\r\n#endif\r\n#ifdef GL_OVR_multiview\r\n  \"GL_OVR_multiview\",\r\n#endif\r\n#ifdef GL_OVR_multiview2\r\n  \"GL_OVR_multiview2\",\r\n#endif\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n  \"GL_OVR_multiview_multisampled_render_to_texture\",\r\n#endif\r\n#ifdef GL_PGI_misc_hints\r\n  \"GL_PGI_misc_hints\",\r\n#endif\r\n#ifdef GL_PGI_vertex_hints\r\n  \"GL_PGI_vertex_hints\",\r\n#endif\r\n#ifdef GL_QCOM_alpha_test\r\n  \"GL_QCOM_alpha_test\",\r\n#endif\r\n#ifdef GL_QCOM_binning_control\r\n  \"GL_QCOM_binning_control\",\r\n#endif\r\n#ifdef GL_QCOM_driver_control\r\n  \"GL_QCOM_driver_control\",\r\n#endif\r\n#ifdef GL_QCOM_extended_get\r\n  \"GL_QCOM_extended_get\",\r\n#endif\r\n#ifdef GL_QCOM_extended_get2\r\n  \"GL_QCOM_extended_get2\",\r\n#endif\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n  \"GL_QCOM_framebuffer_foveated\",\r\n#endif\r\n#ifdef GL_QCOM_perfmon_global_mode\r\n  \"GL_QCOM_perfmon_global_mode\",\r\n#endif\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n  \"GL_QCOM_shader_framebuffer_fetch_noncoherent\",\r\n#endif\r\n#ifdef GL_QCOM_tiled_rendering\r\n  \"GL_QCOM_tiled_rendering\",\r\n#endif\r\n#ifdef GL_QCOM_writeonly_rendering\r\n  \"GL_QCOM_writeonly_rendering\",\r\n#endif\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n  \"GL_REGAL_ES1_0_compatibility\",\r\n#endif\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n  \"GL_REGAL_ES1_1_compatibility\",\r\n#endif\r\n#ifdef GL_REGAL_enable\r\n  \"GL_REGAL_enable\",\r\n#endif\r\n#ifdef GL_REGAL_error_string\r\n  \"GL_REGAL_error_string\",\r\n#endif\r\n#ifdef GL_REGAL_extension_query\r\n  \"GL_REGAL_extension_query\",\r\n#endif\r\n#ifdef GL_REGAL_log\r\n  \"GL_REGAL_log\",\r\n#endif\r\n#ifdef GL_REGAL_proc_address\r\n  \"GL_REGAL_proc_address\",\r\n#endif\r\n#ifdef GL_REND_screen_coordinates\r\n  \"GL_REND_screen_coordinates\",\r\n#endif\r\n#ifdef GL_S3_s3tc\r\n  \"GL_S3_s3tc\",\r\n#endif\r\n#ifdef GL_SGIS_clip_band_hint\r\n  \"GL_SGIS_clip_band_hint\",\r\n#endif\r\n#ifdef GL_SGIS_color_range\r\n  \"GL_SGIS_color_range\",\r\n#endif\r\n#ifdef GL_SGIS_detail_texture\r\n  \"GL_SGIS_detail_texture\",\r\n#endif\r\n#ifdef GL_SGIS_fog_function\r\n  \"GL_SGIS_fog_function\",\r\n#endif\r\n#ifdef GL_SGIS_generate_mipmap\r\n  \"GL_SGIS_generate_mipmap\",\r\n#endif\r\n#ifdef GL_SGIS_line_texgen\r\n  \"GL_SGIS_line_texgen\",\r\n#endif\r\n#ifdef GL_SGIS_multisample\r\n  \"GL_SGIS_multisample\",\r\n#endif\r\n#ifdef GL_SGIS_multitexture\r\n  \"GL_SGIS_multitexture\",\r\n#endif\r\n#ifdef GL_SGIS_pixel_texture\r\n  \"GL_SGIS_pixel_texture\",\r\n#endif\r\n#ifdef GL_SGIS_point_line_texgen\r\n  \"GL_SGIS_point_line_texgen\",\r\n#endif\r\n#ifdef GL_SGIS_shared_multisample\r\n  \"GL_SGIS_shared_multisample\",\r\n#endif\r\n#ifdef GL_SGIS_sharpen_texture\r\n  \"GL_SGIS_sharpen_texture\",\r\n#endif\r\n#ifdef GL_SGIS_texture4D\r\n  \"GL_SGIS_texture4D\",\r\n#endif\r\n#ifdef GL_SGIS_texture_border_clamp\r\n  \"GL_SGIS_texture_border_clamp\",\r\n#endif\r\n#ifdef GL_SGIS_texture_edge_clamp\r\n  \"GL_SGIS_texture_edge_clamp\",\r\n#endif\r\n#ifdef GL_SGIS_texture_filter4\r\n  \"GL_SGIS_texture_filter4\",\r\n#endif\r\n#ifdef GL_SGIS_texture_lod\r\n  \"GL_SGIS_texture_lod\",\r\n#endif\r\n#ifdef GL_SGIS_texture_select\r\n  \"GL_SGIS_texture_select\",\r\n#endif\r\n#ifdef GL_SGIX_async\r\n  \"GL_SGIX_async\",\r\n#endif\r\n#ifdef GL_SGIX_async_histogram\r\n  \"GL_SGIX_async_histogram\",\r\n#endif\r\n#ifdef GL_SGIX_async_pixel\r\n  \"GL_SGIX_async_pixel\",\r\n#endif\r\n#ifdef GL_SGIX_bali_g_instruments\r\n  \"GL_SGIX_bali_g_instruments\",\r\n#endif\r\n#ifdef GL_SGIX_bali_r_instruments\r\n  \"GL_SGIX_bali_r_instruments\",\r\n#endif\r\n#ifdef GL_SGIX_bali_timer_instruments\r\n  \"GL_SGIX_bali_timer_instruments\",\r\n#endif\r\n#ifdef GL_SGIX_blend_alpha_minmax\r\n  \"GL_SGIX_blend_alpha_minmax\",\r\n#endif\r\n#ifdef GL_SGIX_blend_cadd\r\n  \"GL_SGIX_blend_cadd\",\r\n#endif\r\n#ifdef GL_SGIX_blend_cmultiply\r\n  \"GL_SGIX_blend_cmultiply\",\r\n#endif\r\n#ifdef GL_SGIX_calligraphic_fragment\r\n  \"GL_SGIX_calligraphic_fragment\",\r\n#endif\r\n#ifdef GL_SGIX_clipmap\r\n  \"GL_SGIX_clipmap\",\r\n#endif\r\n#ifdef GL_SGIX_color_matrix_accuracy\r\n  \"GL_SGIX_color_matrix_accuracy\",\r\n#endif\r\n#ifdef GL_SGIX_color_table_index_mode\r\n  \"GL_SGIX_color_table_index_mode\",\r\n#endif\r\n#ifdef GL_SGIX_complex_polar\r\n  \"GL_SGIX_complex_polar\",\r\n#endif\r\n#ifdef GL_SGIX_convolution_accuracy\r\n  \"GL_SGIX_convolution_accuracy\",\r\n#endif\r\n#ifdef GL_SGIX_cube_map\r\n  \"GL_SGIX_cube_map\",\r\n#endif\r\n#ifdef GL_SGIX_cylinder_texgen\r\n  \"GL_SGIX_cylinder_texgen\",\r\n#endif\r\n#ifdef GL_SGIX_datapipe\r\n  \"GL_SGIX_datapipe\",\r\n#endif\r\n#ifdef GL_SGIX_decimation\r\n  \"GL_SGIX_decimation\",\r\n#endif\r\n#ifdef GL_SGIX_depth_pass_instrument\r\n  \"GL_SGIX_depth_pass_instrument\",\r\n#endif\r\n#ifdef GL_SGIX_depth_texture\r\n  \"GL_SGIX_depth_texture\",\r\n#endif\r\n#ifdef GL_SGIX_dvc\r\n  \"GL_SGIX_dvc\",\r\n#endif\r\n#ifdef GL_SGIX_flush_raster\r\n  \"GL_SGIX_flush_raster\",\r\n#endif\r\n#ifdef GL_SGIX_fog_blend\r\n  \"GL_SGIX_fog_blend\",\r\n#endif\r\n#ifdef GL_SGIX_fog_factor_to_alpha\r\n  \"GL_SGIX_fog_factor_to_alpha\",\r\n#endif\r\n#ifdef GL_SGIX_fog_layers\r\n  \"GL_SGIX_fog_layers\",\r\n#endif\r\n#ifdef GL_SGIX_fog_offset\r\n  \"GL_SGIX_fog_offset\",\r\n#endif\r\n#ifdef GL_SGIX_fog_patchy\r\n  \"GL_SGIX_fog_patchy\",\r\n#endif\r\n#ifdef GL_SGIX_fog_scale\r\n  \"GL_SGIX_fog_scale\",\r\n#endif\r\n#ifdef GL_SGIX_fog_texture\r\n  \"GL_SGIX_fog_texture\",\r\n#endif\r\n#ifdef GL_SGIX_fragment_lighting_space\r\n  \"GL_SGIX_fragment_lighting_space\",\r\n#endif\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n  \"GL_SGIX_fragment_specular_lighting\",\r\n#endif\r\n#ifdef GL_SGIX_fragments_instrument\r\n  \"GL_SGIX_fragments_instrument\",\r\n#endif\r\n#ifdef GL_SGIX_framezoom\r\n  \"GL_SGIX_framezoom\",\r\n#endif\r\n#ifdef GL_SGIX_icc_texture\r\n  \"GL_SGIX_icc_texture\",\r\n#endif\r\n#ifdef GL_SGIX_igloo_interface\r\n  \"GL_SGIX_igloo_interface\",\r\n#endif\r\n#ifdef GL_SGIX_image_compression\r\n  \"GL_SGIX_image_compression\",\r\n#endif\r\n#ifdef GL_SGIX_impact_pixel_texture\r\n  \"GL_SGIX_impact_pixel_texture\",\r\n#endif\r\n#ifdef GL_SGIX_instrument_error\r\n  \"GL_SGIX_instrument_error\",\r\n#endif\r\n#ifdef GL_SGIX_interlace\r\n  \"GL_SGIX_interlace\",\r\n#endif\r\n#ifdef GL_SGIX_ir_instrument1\r\n  \"GL_SGIX_ir_instrument1\",\r\n#endif\r\n#ifdef GL_SGIX_line_quality_hint\r\n  \"GL_SGIX_line_quality_hint\",\r\n#endif\r\n#ifdef GL_SGIX_list_priority\r\n  \"GL_SGIX_list_priority\",\r\n#endif\r\n#ifdef GL_SGIX_mpeg1\r\n  \"GL_SGIX_mpeg1\",\r\n#endif\r\n#ifdef GL_SGIX_mpeg2\r\n  \"GL_SGIX_mpeg2\",\r\n#endif\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n  \"GL_SGIX_nonlinear_lighting_pervertex\",\r\n#endif\r\n#ifdef GL_SGIX_nurbs_eval\r\n  \"GL_SGIX_nurbs_eval\",\r\n#endif\r\n#ifdef GL_SGIX_occlusion_instrument\r\n  \"GL_SGIX_occlusion_instrument\",\r\n#endif\r\n#ifdef GL_SGIX_packed_6bytes\r\n  \"GL_SGIX_packed_6bytes\",\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture\r\n  \"GL_SGIX_pixel_texture\",\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_bits\r\n  \"GL_SGIX_pixel_texture_bits\",\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_lod\r\n  \"GL_SGIX_pixel_texture_lod\",\r\n#endif\r\n#ifdef GL_SGIX_pixel_tiles\r\n  \"GL_SGIX_pixel_tiles\",\r\n#endif\r\n#ifdef GL_SGIX_polynomial_ffd\r\n  \"GL_SGIX_polynomial_ffd\",\r\n#endif\r\n#ifdef GL_SGIX_quad_mesh\r\n  \"GL_SGIX_quad_mesh\",\r\n#endif\r\n#ifdef GL_SGIX_reference_plane\r\n  \"GL_SGIX_reference_plane\",\r\n#endif\r\n#ifdef GL_SGIX_resample\r\n  \"GL_SGIX_resample\",\r\n#endif\r\n#ifdef GL_SGIX_scalebias_hint\r\n  \"GL_SGIX_scalebias_hint\",\r\n#endif\r\n#ifdef GL_SGIX_shadow\r\n  \"GL_SGIX_shadow\",\r\n#endif\r\n#ifdef GL_SGIX_shadow_ambient\r\n  \"GL_SGIX_shadow_ambient\",\r\n#endif\r\n#ifdef GL_SGIX_slim\r\n  \"GL_SGIX_slim\",\r\n#endif\r\n#ifdef GL_SGIX_spotlight_cutoff\r\n  \"GL_SGIX_spotlight_cutoff\",\r\n#endif\r\n#ifdef GL_SGIX_sprite\r\n  \"GL_SGIX_sprite\",\r\n#endif\r\n#ifdef GL_SGIX_subdiv_patch\r\n  \"GL_SGIX_subdiv_patch\",\r\n#endif\r\n#ifdef GL_SGIX_subsample\r\n  \"GL_SGIX_subsample\",\r\n#endif\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n  \"GL_SGIX_tag_sample_buffer\",\r\n#endif\r\n#ifdef GL_SGIX_texture_add_env\r\n  \"GL_SGIX_texture_add_env\",\r\n#endif\r\n#ifdef GL_SGIX_texture_coordinate_clamp\r\n  \"GL_SGIX_texture_coordinate_clamp\",\r\n#endif\r\n#ifdef GL_SGIX_texture_lod_bias\r\n  \"GL_SGIX_texture_lod_bias\",\r\n#endif\r\n#ifdef GL_SGIX_texture_mipmap_anisotropic\r\n  \"GL_SGIX_texture_mipmap_anisotropic\",\r\n#endif\r\n#ifdef GL_SGIX_texture_multi_buffer\r\n  \"GL_SGIX_texture_multi_buffer\",\r\n#endif\r\n#ifdef GL_SGIX_texture_phase\r\n  \"GL_SGIX_texture_phase\",\r\n#endif\r\n#ifdef GL_SGIX_texture_range\r\n  \"GL_SGIX_texture_range\",\r\n#endif\r\n#ifdef GL_SGIX_texture_scale_bias\r\n  \"GL_SGIX_texture_scale_bias\",\r\n#endif\r\n#ifdef GL_SGIX_texture_supersample\r\n  \"GL_SGIX_texture_supersample\",\r\n#endif\r\n#ifdef GL_SGIX_vector_ops\r\n  \"GL_SGIX_vector_ops\",\r\n#endif\r\n#ifdef GL_SGIX_vertex_array_object\r\n  \"GL_SGIX_vertex_array_object\",\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip\r\n  \"GL_SGIX_vertex_preclip\",\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip_hint\r\n  \"GL_SGIX_vertex_preclip_hint\",\r\n#endif\r\n#ifdef GL_SGIX_ycrcb\r\n  \"GL_SGIX_ycrcb\",\r\n#endif\r\n#ifdef GL_SGIX_ycrcb_subsample\r\n  \"GL_SGIX_ycrcb_subsample\",\r\n#endif\r\n#ifdef GL_SGIX_ycrcba\r\n  \"GL_SGIX_ycrcba\",\r\n#endif\r\n#ifdef GL_SGI_color_matrix\r\n  \"GL_SGI_color_matrix\",\r\n#endif\r\n#ifdef GL_SGI_color_table\r\n  \"GL_SGI_color_table\",\r\n#endif\r\n#ifdef GL_SGI_complex\r\n  \"GL_SGI_complex\",\r\n#endif\r\n#ifdef GL_SGI_complex_type\r\n  \"GL_SGI_complex_type\",\r\n#endif\r\n#ifdef GL_SGI_fft\r\n  \"GL_SGI_fft\",\r\n#endif\r\n#ifdef GL_SGI_texture_color_table\r\n  \"GL_SGI_texture_color_table\",\r\n#endif\r\n#ifdef GL_SUNX_constant_data\r\n  \"GL_SUNX_constant_data\",\r\n#endif\r\n#ifdef GL_SUN_convolution_border_modes\r\n  \"GL_SUN_convolution_border_modes\",\r\n#endif\r\n#ifdef GL_SUN_global_alpha\r\n  \"GL_SUN_global_alpha\",\r\n#endif\r\n#ifdef GL_SUN_mesh_array\r\n  \"GL_SUN_mesh_array\",\r\n#endif\r\n#ifdef GL_SUN_read_video_pixels\r\n  \"GL_SUN_read_video_pixels\",\r\n#endif\r\n#ifdef GL_SUN_slice_accum\r\n  \"GL_SUN_slice_accum\",\r\n#endif\r\n#ifdef GL_SUN_triangle_list\r\n  \"GL_SUN_triangle_list\",\r\n#endif\r\n#ifdef GL_SUN_vertex\r\n  \"GL_SUN_vertex\",\r\n#endif\r\n#ifdef GL_WIN_phong_shading\r\n  \"GL_WIN_phong_shading\",\r\n#endif\r\n#ifdef GL_WIN_scene_markerXXX\r\n  \"GL_WIN_scene_markerXXX\",\r\n#endif\r\n#ifdef GL_WIN_specular_fog\r\n  \"GL_WIN_specular_fog\",\r\n#endif\r\n#ifdef GL_WIN_swap_hint\r\n  \"GL_WIN_swap_hint\",\r\n#endif\r\n  NULL\r\n};\r\n\r\n/* Detected in the extension string or strings */\r\nstatic GLboolean  _glewExtensionString[801];\r\n/* Detected via extension string or experimental mode */\r\nstatic GLboolean* _glewExtensionEnabled[] = {\r\n#ifdef GL_VERSION_1_2\r\n  &__GLEW_VERSION_1_2,\r\n#endif\r\n#ifdef GL_VERSION_1_2_1\r\n  &__GLEW_VERSION_1_2_1,\r\n#endif\r\n#ifdef GL_VERSION_1_3\r\n  &__GLEW_VERSION_1_3,\r\n#endif\r\n#ifdef GL_VERSION_1_4\r\n  &__GLEW_VERSION_1_4,\r\n#endif\r\n#ifdef GL_VERSION_1_5\r\n  &__GLEW_VERSION_1_5,\r\n#endif\r\n#ifdef GL_VERSION_2_0\r\n  &__GLEW_VERSION_2_0,\r\n#endif\r\n#ifdef GL_VERSION_2_1\r\n  &__GLEW_VERSION_2_1,\r\n#endif\r\n#ifdef GL_VERSION_3_0\r\n  &__GLEW_VERSION_3_0,\r\n#endif\r\n#ifdef GL_VERSION_3_1\r\n  &__GLEW_VERSION_3_1,\r\n#endif\r\n#ifdef GL_VERSION_3_2\r\n  &__GLEW_VERSION_3_2,\r\n#endif\r\n#ifdef GL_VERSION_3_3\r\n  &__GLEW_VERSION_3_3,\r\n#endif\r\n#ifdef GL_VERSION_4_0\r\n  &__GLEW_VERSION_4_0,\r\n#endif\r\n#ifdef GL_VERSION_4_1\r\n  &__GLEW_VERSION_4_1,\r\n#endif\r\n#ifdef GL_VERSION_4_2\r\n  &__GLEW_VERSION_4_2,\r\n#endif\r\n#ifdef GL_VERSION_4_3\r\n  &__GLEW_VERSION_4_3,\r\n#endif\r\n#ifdef GL_VERSION_4_4\r\n  &__GLEW_VERSION_4_4,\r\n#endif\r\n#ifdef GL_VERSION_4_5\r\n  &__GLEW_VERSION_4_5,\r\n#endif\r\n#ifdef GL_VERSION_4_6\r\n  &__GLEW_VERSION_4_6,\r\n#endif\r\n#ifdef GL_3DFX_multisample\r\n  &__GLEW_3DFX_multisample,\r\n#endif\r\n#ifdef GL_3DFX_tbuffer\r\n  &__GLEW_3DFX_tbuffer,\r\n#endif\r\n#ifdef GL_3DFX_texture_compression_FXT1\r\n  &__GLEW_3DFX_texture_compression_FXT1,\r\n#endif\r\n#ifdef GL_AMD_blend_minmax_factor\r\n  &__GLEW_AMD_blend_minmax_factor,\r\n#endif\r\n#ifdef GL_AMD_compressed_3DC_texture\r\n  &__GLEW_AMD_compressed_3DC_texture,\r\n#endif\r\n#ifdef GL_AMD_compressed_ATC_texture\r\n  &__GLEW_AMD_compressed_ATC_texture,\r\n#endif\r\n#ifdef GL_AMD_conservative_depth\r\n  &__GLEW_AMD_conservative_depth,\r\n#endif\r\n#ifdef GL_AMD_debug_output\r\n  &__GLEW_AMD_debug_output,\r\n#endif\r\n#ifdef GL_AMD_depth_clamp_separate\r\n  &__GLEW_AMD_depth_clamp_separate,\r\n#endif\r\n#ifdef GL_AMD_draw_buffers_blend\r\n  &__GLEW_AMD_draw_buffers_blend,\r\n#endif\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n  &__GLEW_AMD_framebuffer_sample_positions,\r\n#endif\r\n#ifdef GL_AMD_gcn_shader\r\n  &__GLEW_AMD_gcn_shader,\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_half_float\r\n  &__GLEW_AMD_gpu_shader_half_float,\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int16\r\n  &__GLEW_AMD_gpu_shader_int16,\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int64\r\n  &__GLEW_AMD_gpu_shader_int64,\r\n#endif\r\n#ifdef GL_AMD_interleaved_elements\r\n  &__GLEW_AMD_interleaved_elements,\r\n#endif\r\n#ifdef GL_AMD_multi_draw_indirect\r\n  &__GLEW_AMD_multi_draw_indirect,\r\n#endif\r\n#ifdef GL_AMD_name_gen_delete\r\n  &__GLEW_AMD_name_gen_delete,\r\n#endif\r\n#ifdef GL_AMD_occlusion_query_event\r\n  &__GLEW_AMD_occlusion_query_event,\r\n#endif\r\n#ifdef GL_AMD_performance_monitor\r\n  &__GLEW_AMD_performance_monitor,\r\n#endif\r\n#ifdef GL_AMD_pinned_memory\r\n  &__GLEW_AMD_pinned_memory,\r\n#endif\r\n#ifdef GL_AMD_program_binary_Z400\r\n  &__GLEW_AMD_program_binary_Z400,\r\n#endif\r\n#ifdef GL_AMD_query_buffer_object\r\n  &__GLEW_AMD_query_buffer_object,\r\n#endif\r\n#ifdef GL_AMD_sample_positions\r\n  &__GLEW_AMD_sample_positions,\r\n#endif\r\n#ifdef GL_AMD_seamless_cubemap_per_texture\r\n  &__GLEW_AMD_seamless_cubemap_per_texture,\r\n#endif\r\n#ifdef GL_AMD_shader_atomic_counter_ops\r\n  &__GLEW_AMD_shader_atomic_counter_ops,\r\n#endif\r\n#ifdef GL_AMD_shader_ballot\r\n  &__GLEW_AMD_shader_ballot,\r\n#endif\r\n#ifdef GL_AMD_shader_explicit_vertex_parameter\r\n  &__GLEW_AMD_shader_explicit_vertex_parameter,\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_export\r\n  &__GLEW_AMD_shader_stencil_export,\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_value_export\r\n  &__GLEW_AMD_shader_stencil_value_export,\r\n#endif\r\n#ifdef GL_AMD_shader_trinary_minmax\r\n  &__GLEW_AMD_shader_trinary_minmax,\r\n#endif\r\n#ifdef GL_AMD_sparse_texture\r\n  &__GLEW_AMD_sparse_texture,\r\n#endif\r\n#ifdef GL_AMD_stencil_operation_extended\r\n  &__GLEW_AMD_stencil_operation_extended,\r\n#endif\r\n#ifdef GL_AMD_texture_gather_bias_lod\r\n  &__GLEW_AMD_texture_gather_bias_lod,\r\n#endif\r\n#ifdef GL_AMD_texture_texture4\r\n  &__GLEW_AMD_texture_texture4,\r\n#endif\r\n#ifdef GL_AMD_transform_feedback3_lines_triangles\r\n  &__GLEW_AMD_transform_feedback3_lines_triangles,\r\n#endif\r\n#ifdef GL_AMD_transform_feedback4\r\n  &__GLEW_AMD_transform_feedback4,\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_layer\r\n  &__GLEW_AMD_vertex_shader_layer,\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n  &__GLEW_AMD_vertex_shader_tessellator,\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_viewport_index\r\n  &__GLEW_AMD_vertex_shader_viewport_index,\r\n#endif\r\n#ifdef GL_ANDROID_extension_pack_es31a\r\n  &__GLEW_ANDROID_extension_pack_es31a,\r\n#endif\r\n#ifdef GL_ANGLE_depth_texture\r\n  &__GLEW_ANGLE_depth_texture,\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n  &__GLEW_ANGLE_framebuffer_blit,\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n  &__GLEW_ANGLE_framebuffer_multisample,\r\n#endif\r\n#ifdef GL_ANGLE_instanced_arrays\r\n  &__GLEW_ANGLE_instanced_arrays,\r\n#endif\r\n#ifdef GL_ANGLE_pack_reverse_row_order\r\n  &__GLEW_ANGLE_pack_reverse_row_order,\r\n#endif\r\n#ifdef GL_ANGLE_program_binary\r\n  &__GLEW_ANGLE_program_binary,\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt1\r\n  &__GLEW_ANGLE_texture_compression_dxt1,\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt3\r\n  &__GLEW_ANGLE_texture_compression_dxt3,\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt5\r\n  &__GLEW_ANGLE_texture_compression_dxt5,\r\n#endif\r\n#ifdef GL_ANGLE_texture_usage\r\n  &__GLEW_ANGLE_texture_usage,\r\n#endif\r\n#ifdef GL_ANGLE_timer_query\r\n  &__GLEW_ANGLE_timer_query,\r\n#endif\r\n#ifdef GL_ANGLE_translated_shader_source\r\n  &__GLEW_ANGLE_translated_shader_source,\r\n#endif\r\n#ifdef GL_APPLE_aux_depth_stencil\r\n  &__GLEW_APPLE_aux_depth_stencil,\r\n#endif\r\n#ifdef GL_APPLE_client_storage\r\n  &__GLEW_APPLE_client_storage,\r\n#endif\r\n#ifdef GL_APPLE_clip_distance\r\n  &__GLEW_APPLE_clip_distance,\r\n#endif\r\n#ifdef GL_APPLE_color_buffer_packed_float\r\n  &__GLEW_APPLE_color_buffer_packed_float,\r\n#endif\r\n#ifdef GL_APPLE_copy_texture_levels\r\n  &__GLEW_APPLE_copy_texture_levels,\r\n#endif\r\n#ifdef GL_APPLE_element_array\r\n  &__GLEW_APPLE_element_array,\r\n#endif\r\n#ifdef GL_APPLE_fence\r\n  &__GLEW_APPLE_fence,\r\n#endif\r\n#ifdef GL_APPLE_float_pixels\r\n  &__GLEW_APPLE_float_pixels,\r\n#endif\r\n#ifdef GL_APPLE_flush_buffer_range\r\n  &__GLEW_APPLE_flush_buffer_range,\r\n#endif\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n  &__GLEW_APPLE_framebuffer_multisample,\r\n#endif\r\n#ifdef GL_APPLE_object_purgeable\r\n  &__GLEW_APPLE_object_purgeable,\r\n#endif\r\n#ifdef GL_APPLE_pixel_buffer\r\n  &__GLEW_APPLE_pixel_buffer,\r\n#endif\r\n#ifdef GL_APPLE_rgb_422\r\n  &__GLEW_APPLE_rgb_422,\r\n#endif\r\n#ifdef GL_APPLE_row_bytes\r\n  &__GLEW_APPLE_row_bytes,\r\n#endif\r\n#ifdef GL_APPLE_specular_vector\r\n  &__GLEW_APPLE_specular_vector,\r\n#endif\r\n#ifdef GL_APPLE_sync\r\n  &__GLEW_APPLE_sync,\r\n#endif\r\n#ifdef GL_APPLE_texture_2D_limited_npot\r\n  &__GLEW_APPLE_texture_2D_limited_npot,\r\n#endif\r\n#ifdef GL_APPLE_texture_format_BGRA8888\r\n  &__GLEW_APPLE_texture_format_BGRA8888,\r\n#endif\r\n#ifdef GL_APPLE_texture_max_level\r\n  &__GLEW_APPLE_texture_max_level,\r\n#endif\r\n#ifdef GL_APPLE_texture_packed_float\r\n  &__GLEW_APPLE_texture_packed_float,\r\n#endif\r\n#ifdef GL_APPLE_texture_range\r\n  &__GLEW_APPLE_texture_range,\r\n#endif\r\n#ifdef GL_APPLE_transform_hint\r\n  &__GLEW_APPLE_transform_hint,\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_object\r\n  &__GLEW_APPLE_vertex_array_object,\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_range\r\n  &__GLEW_APPLE_vertex_array_range,\r\n#endif\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n  &__GLEW_APPLE_vertex_program_evaluators,\r\n#endif\r\n#ifdef GL_APPLE_ycbcr_422\r\n  &__GLEW_APPLE_ycbcr_422,\r\n#endif\r\n#ifdef GL_ARB_ES2_compatibility\r\n  &__GLEW_ARB_ES2_compatibility,\r\n#endif\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n  &__GLEW_ARB_ES3_1_compatibility,\r\n#endif\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n  &__GLEW_ARB_ES3_2_compatibility,\r\n#endif\r\n#ifdef GL_ARB_ES3_compatibility\r\n  &__GLEW_ARB_ES3_compatibility,\r\n#endif\r\n#ifdef GL_ARB_arrays_of_arrays\r\n  &__GLEW_ARB_arrays_of_arrays,\r\n#endif\r\n#ifdef GL_ARB_base_instance\r\n  &__GLEW_ARB_base_instance,\r\n#endif\r\n#ifdef GL_ARB_bindless_texture\r\n  &__GLEW_ARB_bindless_texture,\r\n#endif\r\n#ifdef GL_ARB_blend_func_extended\r\n  &__GLEW_ARB_blend_func_extended,\r\n#endif\r\n#ifdef GL_ARB_buffer_storage\r\n  &__GLEW_ARB_buffer_storage,\r\n#endif\r\n#ifdef GL_ARB_cl_event\r\n  &__GLEW_ARB_cl_event,\r\n#endif\r\n#ifdef GL_ARB_clear_buffer_object\r\n  &__GLEW_ARB_clear_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_clear_texture\r\n  &__GLEW_ARB_clear_texture,\r\n#endif\r\n#ifdef GL_ARB_clip_control\r\n  &__GLEW_ARB_clip_control,\r\n#endif\r\n#ifdef GL_ARB_color_buffer_float\r\n  &__GLEW_ARB_color_buffer_float,\r\n#endif\r\n#ifdef GL_ARB_compatibility\r\n  &__GLEW_ARB_compatibility,\r\n#endif\r\n#ifdef GL_ARB_compressed_texture_pixel_storage\r\n  &__GLEW_ARB_compressed_texture_pixel_storage,\r\n#endif\r\n#ifdef GL_ARB_compute_shader\r\n  &__GLEW_ARB_compute_shader,\r\n#endif\r\n#ifdef GL_ARB_compute_variable_group_size\r\n  &__GLEW_ARB_compute_variable_group_size,\r\n#endif\r\n#ifdef GL_ARB_conditional_render_inverted\r\n  &__GLEW_ARB_conditional_render_inverted,\r\n#endif\r\n#ifdef GL_ARB_conservative_depth\r\n  &__GLEW_ARB_conservative_depth,\r\n#endif\r\n#ifdef GL_ARB_copy_buffer\r\n  &__GLEW_ARB_copy_buffer,\r\n#endif\r\n#ifdef GL_ARB_copy_image\r\n  &__GLEW_ARB_copy_image,\r\n#endif\r\n#ifdef GL_ARB_cull_distance\r\n  &__GLEW_ARB_cull_distance,\r\n#endif\r\n#ifdef GL_ARB_debug_output\r\n  &__GLEW_ARB_debug_output,\r\n#endif\r\n#ifdef GL_ARB_depth_buffer_float\r\n  &__GLEW_ARB_depth_buffer_float,\r\n#endif\r\n#ifdef GL_ARB_depth_clamp\r\n  &__GLEW_ARB_depth_clamp,\r\n#endif\r\n#ifdef GL_ARB_depth_texture\r\n  &__GLEW_ARB_depth_texture,\r\n#endif\r\n#ifdef GL_ARB_derivative_control\r\n  &__GLEW_ARB_derivative_control,\r\n#endif\r\n#ifdef GL_ARB_direct_state_access\r\n  &__GLEW_ARB_direct_state_access,\r\n#endif\r\n#ifdef GL_ARB_draw_buffers\r\n  &__GLEW_ARB_draw_buffers,\r\n#endif\r\n#ifdef GL_ARB_draw_buffers_blend\r\n  &__GLEW_ARB_draw_buffers_blend,\r\n#endif\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n  &__GLEW_ARB_draw_elements_base_vertex,\r\n#endif\r\n#ifdef GL_ARB_draw_indirect\r\n  &__GLEW_ARB_draw_indirect,\r\n#endif\r\n#ifdef GL_ARB_draw_instanced\r\n  &__GLEW_ARB_draw_instanced,\r\n#endif\r\n#ifdef GL_ARB_enhanced_layouts\r\n  &__GLEW_ARB_enhanced_layouts,\r\n#endif\r\n#ifdef GL_ARB_explicit_attrib_location\r\n  &__GLEW_ARB_explicit_attrib_location,\r\n#endif\r\n#ifdef GL_ARB_explicit_uniform_location\r\n  &__GLEW_ARB_explicit_uniform_location,\r\n#endif\r\n#ifdef GL_ARB_fragment_coord_conventions\r\n  &__GLEW_ARB_fragment_coord_conventions,\r\n#endif\r\n#ifdef GL_ARB_fragment_layer_viewport\r\n  &__GLEW_ARB_fragment_layer_viewport,\r\n#endif\r\n#ifdef GL_ARB_fragment_program\r\n  &__GLEW_ARB_fragment_program,\r\n#endif\r\n#ifdef GL_ARB_fragment_program_shadow\r\n  &__GLEW_ARB_fragment_program_shadow,\r\n#endif\r\n#ifdef GL_ARB_fragment_shader\r\n  &__GLEW_ARB_fragment_shader,\r\n#endif\r\n#ifdef GL_ARB_fragment_shader_interlock\r\n  &__GLEW_ARB_fragment_shader_interlock,\r\n#endif\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n  &__GLEW_ARB_framebuffer_no_attachments,\r\n#endif\r\n#ifdef GL_ARB_framebuffer_object\r\n  &__GLEW_ARB_framebuffer_object,\r\n#endif\r\n#ifdef GL_ARB_framebuffer_sRGB\r\n  &__GLEW_ARB_framebuffer_sRGB,\r\n#endif\r\n#ifdef GL_ARB_geometry_shader4\r\n  &__GLEW_ARB_geometry_shader4,\r\n#endif\r\n#ifdef GL_ARB_get_program_binary\r\n  &__GLEW_ARB_get_program_binary,\r\n#endif\r\n#ifdef GL_ARB_get_texture_sub_image\r\n  &__GLEW_ARB_get_texture_sub_image,\r\n#endif\r\n#ifdef GL_ARB_gl_spirv\r\n  &__GLEW_ARB_gl_spirv,\r\n#endif\r\n#ifdef GL_ARB_gpu_shader5\r\n  &__GLEW_ARB_gpu_shader5,\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n  &__GLEW_ARB_gpu_shader_fp64,\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_int64\r\n  &__GLEW_ARB_gpu_shader_int64,\r\n#endif\r\n#ifdef GL_ARB_half_float_pixel\r\n  &__GLEW_ARB_half_float_pixel,\r\n#endif\r\n#ifdef GL_ARB_half_float_vertex\r\n  &__GLEW_ARB_half_float_vertex,\r\n#endif\r\n#ifdef GL_ARB_imaging\r\n  &__GLEW_ARB_imaging,\r\n#endif\r\n#ifdef GL_ARB_indirect_parameters\r\n  &__GLEW_ARB_indirect_parameters,\r\n#endif\r\n#ifdef GL_ARB_instanced_arrays\r\n  &__GLEW_ARB_instanced_arrays,\r\n#endif\r\n#ifdef GL_ARB_internalformat_query\r\n  &__GLEW_ARB_internalformat_query,\r\n#endif\r\n#ifdef GL_ARB_internalformat_query2\r\n  &__GLEW_ARB_internalformat_query2,\r\n#endif\r\n#ifdef GL_ARB_invalidate_subdata\r\n  &__GLEW_ARB_invalidate_subdata,\r\n#endif\r\n#ifdef GL_ARB_map_buffer_alignment\r\n  &__GLEW_ARB_map_buffer_alignment,\r\n#endif\r\n#ifdef GL_ARB_map_buffer_range\r\n  &__GLEW_ARB_map_buffer_range,\r\n#endif\r\n#ifdef GL_ARB_matrix_palette\r\n  &__GLEW_ARB_matrix_palette,\r\n#endif\r\n#ifdef GL_ARB_multi_bind\r\n  &__GLEW_ARB_multi_bind,\r\n#endif\r\n#ifdef GL_ARB_multi_draw_indirect\r\n  &__GLEW_ARB_multi_draw_indirect,\r\n#endif\r\n#ifdef GL_ARB_multisample\r\n  &__GLEW_ARB_multisample,\r\n#endif\r\n#ifdef GL_ARB_multitexture\r\n  &__GLEW_ARB_multitexture,\r\n#endif\r\n#ifdef GL_ARB_occlusion_query\r\n  &__GLEW_ARB_occlusion_query,\r\n#endif\r\n#ifdef GL_ARB_occlusion_query2\r\n  &__GLEW_ARB_occlusion_query2,\r\n#endif\r\n#ifdef GL_ARB_parallel_shader_compile\r\n  &__GLEW_ARB_parallel_shader_compile,\r\n#endif\r\n#ifdef GL_ARB_pipeline_statistics_query\r\n  &__GLEW_ARB_pipeline_statistics_query,\r\n#endif\r\n#ifdef GL_ARB_pixel_buffer_object\r\n  &__GLEW_ARB_pixel_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_point_parameters\r\n  &__GLEW_ARB_point_parameters,\r\n#endif\r\n#ifdef GL_ARB_point_sprite\r\n  &__GLEW_ARB_point_sprite,\r\n#endif\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n  &__GLEW_ARB_polygon_offset_clamp,\r\n#endif\r\n#ifdef GL_ARB_post_depth_coverage\r\n  &__GLEW_ARB_post_depth_coverage,\r\n#endif\r\n#ifdef GL_ARB_program_interface_query\r\n  &__GLEW_ARB_program_interface_query,\r\n#endif\r\n#ifdef GL_ARB_provoking_vertex\r\n  &__GLEW_ARB_provoking_vertex,\r\n#endif\r\n#ifdef GL_ARB_query_buffer_object\r\n  &__GLEW_ARB_query_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_robust_buffer_access_behavior\r\n  &__GLEW_ARB_robust_buffer_access_behavior,\r\n#endif\r\n#ifdef GL_ARB_robustness\r\n  &__GLEW_ARB_robustness,\r\n#endif\r\n#ifdef GL_ARB_robustness_application_isolation\r\n  &__GLEW_ARB_robustness_application_isolation,\r\n#endif\r\n#ifdef GL_ARB_robustness_share_group_isolation\r\n  &__GLEW_ARB_robustness_share_group_isolation,\r\n#endif\r\n#ifdef GL_ARB_sample_locations\r\n  &__GLEW_ARB_sample_locations,\r\n#endif\r\n#ifdef GL_ARB_sample_shading\r\n  &__GLEW_ARB_sample_shading,\r\n#endif\r\n#ifdef GL_ARB_sampler_objects\r\n  &__GLEW_ARB_sampler_objects,\r\n#endif\r\n#ifdef GL_ARB_seamless_cube_map\r\n  &__GLEW_ARB_seamless_cube_map,\r\n#endif\r\n#ifdef GL_ARB_seamless_cubemap_per_texture\r\n  &__GLEW_ARB_seamless_cubemap_per_texture,\r\n#endif\r\n#ifdef GL_ARB_separate_shader_objects\r\n  &__GLEW_ARB_separate_shader_objects,\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counter_ops\r\n  &__GLEW_ARB_shader_atomic_counter_ops,\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counters\r\n  &__GLEW_ARB_shader_atomic_counters,\r\n#endif\r\n#ifdef GL_ARB_shader_ballot\r\n  &__GLEW_ARB_shader_ballot,\r\n#endif\r\n#ifdef GL_ARB_shader_bit_encoding\r\n  &__GLEW_ARB_shader_bit_encoding,\r\n#endif\r\n#ifdef GL_ARB_shader_clock\r\n  &__GLEW_ARB_shader_clock,\r\n#endif\r\n#ifdef GL_ARB_shader_draw_parameters\r\n  &__GLEW_ARB_shader_draw_parameters,\r\n#endif\r\n#ifdef GL_ARB_shader_group_vote\r\n  &__GLEW_ARB_shader_group_vote,\r\n#endif\r\n#ifdef GL_ARB_shader_image_load_store\r\n  &__GLEW_ARB_shader_image_load_store,\r\n#endif\r\n#ifdef GL_ARB_shader_image_size\r\n  &__GLEW_ARB_shader_image_size,\r\n#endif\r\n#ifdef GL_ARB_shader_objects\r\n  &__GLEW_ARB_shader_objects,\r\n#endif\r\n#ifdef GL_ARB_shader_precision\r\n  &__GLEW_ARB_shader_precision,\r\n#endif\r\n#ifdef GL_ARB_shader_stencil_export\r\n  &__GLEW_ARB_shader_stencil_export,\r\n#endif\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n  &__GLEW_ARB_shader_storage_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_shader_subroutine\r\n  &__GLEW_ARB_shader_subroutine,\r\n#endif\r\n#ifdef GL_ARB_shader_texture_image_samples\r\n  &__GLEW_ARB_shader_texture_image_samples,\r\n#endif\r\n#ifdef GL_ARB_shader_texture_lod\r\n  &__GLEW_ARB_shader_texture_lod,\r\n#endif\r\n#ifdef GL_ARB_shader_viewport_layer_array\r\n  &__GLEW_ARB_shader_viewport_layer_array,\r\n#endif\r\n#ifdef GL_ARB_shading_language_100\r\n  &__GLEW_ARB_shading_language_100,\r\n#endif\r\n#ifdef GL_ARB_shading_language_420pack\r\n  &__GLEW_ARB_shading_language_420pack,\r\n#endif\r\n#ifdef GL_ARB_shading_language_include\r\n  &__GLEW_ARB_shading_language_include,\r\n#endif\r\n#ifdef GL_ARB_shading_language_packing\r\n  &__GLEW_ARB_shading_language_packing,\r\n#endif\r\n#ifdef GL_ARB_shadow\r\n  &__GLEW_ARB_shadow,\r\n#endif\r\n#ifdef GL_ARB_shadow_ambient\r\n  &__GLEW_ARB_shadow_ambient,\r\n#endif\r\n#ifdef GL_ARB_sparse_buffer\r\n  &__GLEW_ARB_sparse_buffer,\r\n#endif\r\n#ifdef GL_ARB_sparse_texture\r\n  &__GLEW_ARB_sparse_texture,\r\n#endif\r\n#ifdef GL_ARB_sparse_texture2\r\n  &__GLEW_ARB_sparse_texture2,\r\n#endif\r\n#ifdef GL_ARB_sparse_texture_clamp\r\n  &__GLEW_ARB_sparse_texture_clamp,\r\n#endif\r\n#ifdef GL_ARB_spirv_extensions\r\n  &__GLEW_ARB_spirv_extensions,\r\n#endif\r\n#ifdef GL_ARB_stencil_texturing\r\n  &__GLEW_ARB_stencil_texturing,\r\n#endif\r\n#ifdef GL_ARB_sync\r\n  &__GLEW_ARB_sync,\r\n#endif\r\n#ifdef GL_ARB_tessellation_shader\r\n  &__GLEW_ARB_tessellation_shader,\r\n#endif\r\n#ifdef GL_ARB_texture_barrier\r\n  &__GLEW_ARB_texture_barrier,\r\n#endif\r\n#ifdef GL_ARB_texture_border_clamp\r\n  &__GLEW_ARB_texture_border_clamp,\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object\r\n  &__GLEW_ARB_texture_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object_rgb32\r\n  &__GLEW_ARB_texture_buffer_object_rgb32,\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_range\r\n  &__GLEW_ARB_texture_buffer_range,\r\n#endif\r\n#ifdef GL_ARB_texture_compression\r\n  &__GLEW_ARB_texture_compression,\r\n#endif\r\n#ifdef GL_ARB_texture_compression_bptc\r\n  &__GLEW_ARB_texture_compression_bptc,\r\n#endif\r\n#ifdef GL_ARB_texture_compression_rgtc\r\n  &__GLEW_ARB_texture_compression_rgtc,\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map\r\n  &__GLEW_ARB_texture_cube_map,\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map_array\r\n  &__GLEW_ARB_texture_cube_map_array,\r\n#endif\r\n#ifdef GL_ARB_texture_env_add\r\n  &__GLEW_ARB_texture_env_add,\r\n#endif\r\n#ifdef GL_ARB_texture_env_combine\r\n  &__GLEW_ARB_texture_env_combine,\r\n#endif\r\n#ifdef GL_ARB_texture_env_crossbar\r\n  &__GLEW_ARB_texture_env_crossbar,\r\n#endif\r\n#ifdef GL_ARB_texture_env_dot3\r\n  &__GLEW_ARB_texture_env_dot3,\r\n#endif\r\n#ifdef GL_ARB_texture_filter_anisotropic\r\n  &__GLEW_ARB_texture_filter_anisotropic,\r\n#endif\r\n#ifdef GL_ARB_texture_filter_minmax\r\n  &__GLEW_ARB_texture_filter_minmax,\r\n#endif\r\n#ifdef GL_ARB_texture_float\r\n  &__GLEW_ARB_texture_float,\r\n#endif\r\n#ifdef GL_ARB_texture_gather\r\n  &__GLEW_ARB_texture_gather,\r\n#endif\r\n#ifdef GL_ARB_texture_mirror_clamp_to_edge\r\n  &__GLEW_ARB_texture_mirror_clamp_to_edge,\r\n#endif\r\n#ifdef GL_ARB_texture_mirrored_repeat\r\n  &__GLEW_ARB_texture_mirrored_repeat,\r\n#endif\r\n#ifdef GL_ARB_texture_multisample\r\n  &__GLEW_ARB_texture_multisample,\r\n#endif\r\n#ifdef GL_ARB_texture_non_power_of_two\r\n  &__GLEW_ARB_texture_non_power_of_two,\r\n#endif\r\n#ifdef GL_ARB_texture_query_levels\r\n  &__GLEW_ARB_texture_query_levels,\r\n#endif\r\n#ifdef GL_ARB_texture_query_lod\r\n  &__GLEW_ARB_texture_query_lod,\r\n#endif\r\n#ifdef GL_ARB_texture_rectangle\r\n  &__GLEW_ARB_texture_rectangle,\r\n#endif\r\n#ifdef GL_ARB_texture_rg\r\n  &__GLEW_ARB_texture_rg,\r\n#endif\r\n#ifdef GL_ARB_texture_rgb10_a2ui\r\n  &__GLEW_ARB_texture_rgb10_a2ui,\r\n#endif\r\n#ifdef GL_ARB_texture_stencil8\r\n  &__GLEW_ARB_texture_stencil8,\r\n#endif\r\n#ifdef GL_ARB_texture_storage\r\n  &__GLEW_ARB_texture_storage,\r\n#endif\r\n#ifdef GL_ARB_texture_storage_multisample\r\n  &__GLEW_ARB_texture_storage_multisample,\r\n#endif\r\n#ifdef GL_ARB_texture_swizzle\r\n  &__GLEW_ARB_texture_swizzle,\r\n#endif\r\n#ifdef GL_ARB_texture_view\r\n  &__GLEW_ARB_texture_view,\r\n#endif\r\n#ifdef GL_ARB_timer_query\r\n  &__GLEW_ARB_timer_query,\r\n#endif\r\n#ifdef GL_ARB_transform_feedback2\r\n  &__GLEW_ARB_transform_feedback2,\r\n#endif\r\n#ifdef GL_ARB_transform_feedback3\r\n  &__GLEW_ARB_transform_feedback3,\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n  &__GLEW_ARB_transform_feedback_instanced,\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_overflow_query\r\n  &__GLEW_ARB_transform_feedback_overflow_query,\r\n#endif\r\n#ifdef GL_ARB_transpose_matrix\r\n  &__GLEW_ARB_transpose_matrix,\r\n#endif\r\n#ifdef GL_ARB_uniform_buffer_object\r\n  &__GLEW_ARB_uniform_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_vertex_array_bgra\r\n  &__GLEW_ARB_vertex_array_bgra,\r\n#endif\r\n#ifdef GL_ARB_vertex_array_object\r\n  &__GLEW_ARB_vertex_array_object,\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n  &__GLEW_ARB_vertex_attrib_64bit,\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n  &__GLEW_ARB_vertex_attrib_binding,\r\n#endif\r\n#ifdef GL_ARB_vertex_blend\r\n  &__GLEW_ARB_vertex_blend,\r\n#endif\r\n#ifdef GL_ARB_vertex_buffer_object\r\n  &__GLEW_ARB_vertex_buffer_object,\r\n#endif\r\n#ifdef GL_ARB_vertex_program\r\n  &__GLEW_ARB_vertex_program,\r\n#endif\r\n#ifdef GL_ARB_vertex_shader\r\n  &__GLEW_ARB_vertex_shader,\r\n#endif\r\n#ifdef GL_ARB_vertex_type_10f_11f_11f_rev\r\n  &__GLEW_ARB_vertex_type_10f_11f_11f_rev,\r\n#endif\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n  &__GLEW_ARB_vertex_type_2_10_10_10_rev,\r\n#endif\r\n#ifdef GL_ARB_viewport_array\r\n  &__GLEW_ARB_viewport_array,\r\n#endif\r\n#ifdef GL_ARB_window_pos\r\n  &__GLEW_ARB_window_pos,\r\n#endif\r\n#ifdef GL_ARM_mali_program_binary\r\n  &__GLEW_ARM_mali_program_binary,\r\n#endif\r\n#ifdef GL_ARM_mali_shader_binary\r\n  &__GLEW_ARM_mali_shader_binary,\r\n#endif\r\n#ifdef GL_ARM_rgba8\r\n  &__GLEW_ARM_rgba8,\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch\r\n  &__GLEW_ARM_shader_framebuffer_fetch,\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil\r\n  &__GLEW_ARM_shader_framebuffer_fetch_depth_stencil,\r\n#endif\r\n#ifdef GL_ATIX_point_sprites\r\n  &__GLEW_ATIX_point_sprites,\r\n#endif\r\n#ifdef GL_ATIX_texture_env_combine3\r\n  &__GLEW_ATIX_texture_env_combine3,\r\n#endif\r\n#ifdef GL_ATIX_texture_env_route\r\n  &__GLEW_ATIX_texture_env_route,\r\n#endif\r\n#ifdef GL_ATIX_vertex_shader_output_point_size\r\n  &__GLEW_ATIX_vertex_shader_output_point_size,\r\n#endif\r\n#ifdef GL_ATI_draw_buffers\r\n  &__GLEW_ATI_draw_buffers,\r\n#endif\r\n#ifdef GL_ATI_element_array\r\n  &__GLEW_ATI_element_array,\r\n#endif\r\n#ifdef GL_ATI_envmap_bumpmap\r\n  &__GLEW_ATI_envmap_bumpmap,\r\n#endif\r\n#ifdef GL_ATI_fragment_shader\r\n  &__GLEW_ATI_fragment_shader,\r\n#endif\r\n#ifdef GL_ATI_map_object_buffer\r\n  &__GLEW_ATI_map_object_buffer,\r\n#endif\r\n#ifdef GL_ATI_meminfo\r\n  &__GLEW_ATI_meminfo,\r\n#endif\r\n#ifdef GL_ATI_pn_triangles\r\n  &__GLEW_ATI_pn_triangles,\r\n#endif\r\n#ifdef GL_ATI_separate_stencil\r\n  &__GLEW_ATI_separate_stencil,\r\n#endif\r\n#ifdef GL_ATI_shader_texture_lod\r\n  &__GLEW_ATI_shader_texture_lod,\r\n#endif\r\n#ifdef GL_ATI_text_fragment_shader\r\n  &__GLEW_ATI_text_fragment_shader,\r\n#endif\r\n#ifdef GL_ATI_texture_compression_3dc\r\n  &__GLEW_ATI_texture_compression_3dc,\r\n#endif\r\n#ifdef GL_ATI_texture_env_combine3\r\n  &__GLEW_ATI_texture_env_combine3,\r\n#endif\r\n#ifdef GL_ATI_texture_float\r\n  &__GLEW_ATI_texture_float,\r\n#endif\r\n#ifdef GL_ATI_texture_mirror_once\r\n  &__GLEW_ATI_texture_mirror_once,\r\n#endif\r\n#ifdef GL_ATI_vertex_array_object\r\n  &__GLEW_ATI_vertex_array_object,\r\n#endif\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n  &__GLEW_ATI_vertex_attrib_array_object,\r\n#endif\r\n#ifdef GL_ATI_vertex_streams\r\n  &__GLEW_ATI_vertex_streams,\r\n#endif\r\n#ifdef GL_EGL_KHR_context_flush_control\r\n  &__GLEW_EGL_KHR_context_flush_control,\r\n#endif\r\n#ifdef GL_EGL_NV_robustness_video_memory_purge\r\n  &__GLEW_EGL_NV_robustness_video_memory_purge,\r\n#endif\r\n#ifdef GL_EXT_422_pixels\r\n  &__GLEW_EXT_422_pixels,\r\n#endif\r\n#ifdef GL_EXT_Cg_shader\r\n  &__GLEW_EXT_Cg_shader,\r\n#endif\r\n#ifdef GL_EXT_EGL_image_array\r\n  &__GLEW_EXT_EGL_image_array,\r\n#endif\r\n#ifdef GL_EXT_YUV_target\r\n  &__GLEW_EXT_YUV_target,\r\n#endif\r\n#ifdef GL_EXT_abgr\r\n  &__GLEW_EXT_abgr,\r\n#endif\r\n#ifdef GL_EXT_base_instance\r\n  &__GLEW_EXT_base_instance,\r\n#endif\r\n#ifdef GL_EXT_bgra\r\n  &__GLEW_EXT_bgra,\r\n#endif\r\n#ifdef GL_EXT_bindable_uniform\r\n  &__GLEW_EXT_bindable_uniform,\r\n#endif\r\n#ifdef GL_EXT_blend_color\r\n  &__GLEW_EXT_blend_color,\r\n#endif\r\n#ifdef GL_EXT_blend_equation_separate\r\n  &__GLEW_EXT_blend_equation_separate,\r\n#endif\r\n#ifdef GL_EXT_blend_func_extended\r\n  &__GLEW_EXT_blend_func_extended,\r\n#endif\r\n#ifdef GL_EXT_blend_func_separate\r\n  &__GLEW_EXT_blend_func_separate,\r\n#endif\r\n#ifdef GL_EXT_blend_logic_op\r\n  &__GLEW_EXT_blend_logic_op,\r\n#endif\r\n#ifdef GL_EXT_blend_minmax\r\n  &__GLEW_EXT_blend_minmax,\r\n#endif\r\n#ifdef GL_EXT_blend_subtract\r\n  &__GLEW_EXT_blend_subtract,\r\n#endif\r\n#ifdef GL_EXT_buffer_storage\r\n  &__GLEW_EXT_buffer_storage,\r\n#endif\r\n#ifdef GL_EXT_clear_texture\r\n  &__GLEW_EXT_clear_texture,\r\n#endif\r\n#ifdef GL_EXT_clip_cull_distance\r\n  &__GLEW_EXT_clip_cull_distance,\r\n#endif\r\n#ifdef GL_EXT_clip_volume_hint\r\n  &__GLEW_EXT_clip_volume_hint,\r\n#endif\r\n#ifdef GL_EXT_cmyka\r\n  &__GLEW_EXT_cmyka,\r\n#endif\r\n#ifdef GL_EXT_color_buffer_float\r\n  &__GLEW_EXT_color_buffer_float,\r\n#endif\r\n#ifdef GL_EXT_color_buffer_half_float\r\n  &__GLEW_EXT_color_buffer_half_float,\r\n#endif\r\n#ifdef GL_EXT_color_subtable\r\n  &__GLEW_EXT_color_subtable,\r\n#endif\r\n#ifdef GL_EXT_compiled_vertex_array\r\n  &__GLEW_EXT_compiled_vertex_array,\r\n#endif\r\n#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture\r\n  &__GLEW_EXT_compressed_ETC1_RGB8_sub_texture,\r\n#endif\r\n#ifdef GL_EXT_conservative_depth\r\n  &__GLEW_EXT_conservative_depth,\r\n#endif\r\n#ifdef GL_EXT_convolution\r\n  &__GLEW_EXT_convolution,\r\n#endif\r\n#ifdef GL_EXT_coordinate_frame\r\n  &__GLEW_EXT_coordinate_frame,\r\n#endif\r\n#ifdef GL_EXT_copy_image\r\n  &__GLEW_EXT_copy_image,\r\n#endif\r\n#ifdef GL_EXT_copy_texture\r\n  &__GLEW_EXT_copy_texture,\r\n#endif\r\n#ifdef GL_EXT_cull_vertex\r\n  &__GLEW_EXT_cull_vertex,\r\n#endif\r\n#ifdef GL_EXT_debug_label\r\n  &__GLEW_EXT_debug_label,\r\n#endif\r\n#ifdef GL_EXT_debug_marker\r\n  &__GLEW_EXT_debug_marker,\r\n#endif\r\n#ifdef GL_EXT_depth_bounds_test\r\n  &__GLEW_EXT_depth_bounds_test,\r\n#endif\r\n#ifdef GL_EXT_direct_state_access\r\n  &__GLEW_EXT_direct_state_access,\r\n#endif\r\n#ifdef GL_EXT_discard_framebuffer\r\n  &__GLEW_EXT_discard_framebuffer,\r\n#endif\r\n#ifdef GL_EXT_draw_buffers\r\n  &__GLEW_EXT_draw_buffers,\r\n#endif\r\n#ifdef GL_EXT_draw_buffers2\r\n  &__GLEW_EXT_draw_buffers2,\r\n#endif\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n  &__GLEW_EXT_draw_buffers_indexed,\r\n#endif\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n  &__GLEW_EXT_draw_elements_base_vertex,\r\n#endif\r\n#ifdef GL_EXT_draw_instanced\r\n  &__GLEW_EXT_draw_instanced,\r\n#endif\r\n#ifdef GL_EXT_draw_range_elements\r\n  &__GLEW_EXT_draw_range_elements,\r\n#endif\r\n#ifdef GL_EXT_external_buffer\r\n  &__GLEW_EXT_external_buffer,\r\n#endif\r\n#ifdef GL_EXT_float_blend\r\n  &__GLEW_EXT_float_blend,\r\n#endif\r\n#ifdef GL_EXT_fog_coord\r\n  &__GLEW_EXT_fog_coord,\r\n#endif\r\n#ifdef GL_EXT_frag_depth\r\n  &__GLEW_EXT_frag_depth,\r\n#endif\r\n#ifdef GL_EXT_fragment_lighting\r\n  &__GLEW_EXT_fragment_lighting,\r\n#endif\r\n#ifdef GL_EXT_framebuffer_blit\r\n  &__GLEW_EXT_framebuffer_blit,\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample\r\n  &__GLEW_EXT_framebuffer_multisample,\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample_blit_scaled\r\n  &__GLEW_EXT_framebuffer_multisample_blit_scaled,\r\n#endif\r\n#ifdef GL_EXT_framebuffer_object\r\n  &__GLEW_EXT_framebuffer_object,\r\n#endif\r\n#ifdef GL_EXT_framebuffer_sRGB\r\n  &__GLEW_EXT_framebuffer_sRGB,\r\n#endif\r\n#ifdef GL_EXT_geometry_point_size\r\n  &__GLEW_EXT_geometry_point_size,\r\n#endif\r\n#ifdef GL_EXT_geometry_shader\r\n  &__GLEW_EXT_geometry_shader,\r\n#endif\r\n#ifdef GL_EXT_geometry_shader4\r\n  &__GLEW_EXT_geometry_shader4,\r\n#endif\r\n#ifdef GL_EXT_gpu_program_parameters\r\n  &__GLEW_EXT_gpu_program_parameters,\r\n#endif\r\n#ifdef GL_EXT_gpu_shader4\r\n  &__GLEW_EXT_gpu_shader4,\r\n#endif\r\n#ifdef GL_EXT_gpu_shader5\r\n  &__GLEW_EXT_gpu_shader5,\r\n#endif\r\n#ifdef GL_EXT_histogram\r\n  &__GLEW_EXT_histogram,\r\n#endif\r\n#ifdef GL_EXT_index_array_formats\r\n  &__GLEW_EXT_index_array_formats,\r\n#endif\r\n#ifdef GL_EXT_index_func\r\n  &__GLEW_EXT_index_func,\r\n#endif\r\n#ifdef GL_EXT_index_material\r\n  &__GLEW_EXT_index_material,\r\n#endif\r\n#ifdef GL_EXT_index_texture\r\n  &__GLEW_EXT_index_texture,\r\n#endif\r\n#ifdef GL_EXT_instanced_arrays\r\n  &__GLEW_EXT_instanced_arrays,\r\n#endif\r\n#ifdef GL_EXT_light_texture\r\n  &__GLEW_EXT_light_texture,\r\n#endif\r\n#ifdef GL_EXT_map_buffer_range\r\n  &__GLEW_EXT_map_buffer_range,\r\n#endif\r\n#ifdef GL_EXT_memory_object\r\n  &__GLEW_EXT_memory_object,\r\n#endif\r\n#ifdef GL_EXT_memory_object_fd\r\n  &__GLEW_EXT_memory_object_fd,\r\n#endif\r\n#ifdef GL_EXT_memory_object_win32\r\n  &__GLEW_EXT_memory_object_win32,\r\n#endif\r\n#ifdef GL_EXT_misc_attribute\r\n  &__GLEW_EXT_misc_attribute,\r\n#endif\r\n#ifdef GL_EXT_multi_draw_arrays\r\n  &__GLEW_EXT_multi_draw_arrays,\r\n#endif\r\n#ifdef GL_EXT_multi_draw_indirect\r\n  &__GLEW_EXT_multi_draw_indirect,\r\n#endif\r\n#ifdef GL_EXT_multiple_textures\r\n  &__GLEW_EXT_multiple_textures,\r\n#endif\r\n#ifdef GL_EXT_multisample\r\n  &__GLEW_EXT_multisample,\r\n#endif\r\n#ifdef GL_EXT_multisample_compatibility\r\n  &__GLEW_EXT_multisample_compatibility,\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n  &__GLEW_EXT_multisampled_render_to_texture,\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture2\r\n  &__GLEW_EXT_multisampled_render_to_texture2,\r\n#endif\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n  &__GLEW_EXT_multiview_draw_buffers,\r\n#endif\r\n#ifdef GL_EXT_packed_depth_stencil\r\n  &__GLEW_EXT_packed_depth_stencil,\r\n#endif\r\n#ifdef GL_EXT_packed_float\r\n  &__GLEW_EXT_packed_float,\r\n#endif\r\n#ifdef GL_EXT_packed_pixels\r\n  &__GLEW_EXT_packed_pixels,\r\n#endif\r\n#ifdef GL_EXT_paletted_texture\r\n  &__GLEW_EXT_paletted_texture,\r\n#endif\r\n#ifdef GL_EXT_pixel_buffer_object\r\n  &__GLEW_EXT_pixel_buffer_object,\r\n#endif\r\n#ifdef GL_EXT_pixel_transform\r\n  &__GLEW_EXT_pixel_transform,\r\n#endif\r\n#ifdef GL_EXT_pixel_transform_color_table\r\n  &__GLEW_EXT_pixel_transform_color_table,\r\n#endif\r\n#ifdef GL_EXT_point_parameters\r\n  &__GLEW_EXT_point_parameters,\r\n#endif\r\n#ifdef GL_EXT_polygon_offset\r\n  &__GLEW_EXT_polygon_offset,\r\n#endif\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n  &__GLEW_EXT_polygon_offset_clamp,\r\n#endif\r\n#ifdef GL_EXT_post_depth_coverage\r\n  &__GLEW_EXT_post_depth_coverage,\r\n#endif\r\n#ifdef GL_EXT_provoking_vertex\r\n  &__GLEW_EXT_provoking_vertex,\r\n#endif\r\n#ifdef GL_EXT_pvrtc_sRGB\r\n  &__GLEW_EXT_pvrtc_sRGB,\r\n#endif\r\n#ifdef GL_EXT_raster_multisample\r\n  &__GLEW_EXT_raster_multisample,\r\n#endif\r\n#ifdef GL_EXT_read_format_bgra\r\n  &__GLEW_EXT_read_format_bgra,\r\n#endif\r\n#ifdef GL_EXT_render_snorm\r\n  &__GLEW_EXT_render_snorm,\r\n#endif\r\n#ifdef GL_EXT_rescale_normal\r\n  &__GLEW_EXT_rescale_normal,\r\n#endif\r\n#ifdef GL_EXT_sRGB\r\n  &__GLEW_EXT_sRGB,\r\n#endif\r\n#ifdef GL_EXT_sRGB_write_control\r\n  &__GLEW_EXT_sRGB_write_control,\r\n#endif\r\n#ifdef GL_EXT_scene_marker\r\n  &__GLEW_EXT_scene_marker,\r\n#endif\r\n#ifdef GL_EXT_secondary_color\r\n  &__GLEW_EXT_secondary_color,\r\n#endif\r\n#ifdef GL_EXT_semaphore\r\n  &__GLEW_EXT_semaphore,\r\n#endif\r\n#ifdef GL_EXT_semaphore_fd\r\n  &__GLEW_EXT_semaphore_fd,\r\n#endif\r\n#ifdef GL_EXT_semaphore_win32\r\n  &__GLEW_EXT_semaphore_win32,\r\n#endif\r\n#ifdef GL_EXT_separate_shader_objects\r\n  &__GLEW_EXT_separate_shader_objects,\r\n#endif\r\n#ifdef GL_EXT_separate_specular_color\r\n  &__GLEW_EXT_separate_specular_color,\r\n#endif\r\n#ifdef GL_EXT_shader_framebuffer_fetch\r\n  &__GLEW_EXT_shader_framebuffer_fetch,\r\n#endif\r\n#ifdef GL_EXT_shader_group_vote\r\n  &__GLEW_EXT_shader_group_vote,\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_formatted\r\n  &__GLEW_EXT_shader_image_load_formatted,\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_store\r\n  &__GLEW_EXT_shader_image_load_store,\r\n#endif\r\n#ifdef GL_EXT_shader_implicit_conversions\r\n  &__GLEW_EXT_shader_implicit_conversions,\r\n#endif\r\n#ifdef GL_EXT_shader_integer_mix\r\n  &__GLEW_EXT_shader_integer_mix,\r\n#endif\r\n#ifdef GL_EXT_shader_io_blocks\r\n  &__GLEW_EXT_shader_io_blocks,\r\n#endif\r\n#ifdef GL_EXT_shader_non_constant_global_initializers\r\n  &__GLEW_EXT_shader_non_constant_global_initializers,\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage\r\n  &__GLEW_EXT_shader_pixel_local_storage,\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n  &__GLEW_EXT_shader_pixel_local_storage2,\r\n#endif\r\n#ifdef GL_EXT_shader_texture_lod\r\n  &__GLEW_EXT_shader_texture_lod,\r\n#endif\r\n#ifdef GL_EXT_shadow_funcs\r\n  &__GLEW_EXT_shadow_funcs,\r\n#endif\r\n#ifdef GL_EXT_shadow_samplers\r\n  &__GLEW_EXT_shadow_samplers,\r\n#endif\r\n#ifdef GL_EXT_shared_texture_palette\r\n  &__GLEW_EXT_shared_texture_palette,\r\n#endif\r\n#ifdef GL_EXT_sparse_texture\r\n  &__GLEW_EXT_sparse_texture,\r\n#endif\r\n#ifdef GL_EXT_sparse_texture2\r\n  &__GLEW_EXT_sparse_texture2,\r\n#endif\r\n#ifdef GL_EXT_stencil_clear_tag\r\n  &__GLEW_EXT_stencil_clear_tag,\r\n#endif\r\n#ifdef GL_EXT_stencil_two_side\r\n  &__GLEW_EXT_stencil_two_side,\r\n#endif\r\n#ifdef GL_EXT_stencil_wrap\r\n  &__GLEW_EXT_stencil_wrap,\r\n#endif\r\n#ifdef GL_EXT_subtexture\r\n  &__GLEW_EXT_subtexture,\r\n#endif\r\n#ifdef GL_EXT_texture\r\n  &__GLEW_EXT_texture,\r\n#endif\r\n#ifdef GL_EXT_texture3D\r\n  &__GLEW_EXT_texture3D,\r\n#endif\r\n#ifdef GL_EXT_texture_array\r\n  &__GLEW_EXT_texture_array,\r\n#endif\r\n#ifdef GL_EXT_texture_buffer_object\r\n  &__GLEW_EXT_texture_buffer_object,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode\r\n  &__GLEW_EXT_texture_compression_astc_decode_mode,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5\r\n  &__GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_bptc\r\n  &__GLEW_EXT_texture_compression_bptc,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_dxt1\r\n  &__GLEW_EXT_texture_compression_dxt1,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_latc\r\n  &__GLEW_EXT_texture_compression_latc,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_rgtc\r\n  &__GLEW_EXT_texture_compression_rgtc,\r\n#endif\r\n#ifdef GL_EXT_texture_compression_s3tc\r\n  &__GLEW_EXT_texture_compression_s3tc,\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map\r\n  &__GLEW_EXT_texture_cube_map,\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map_array\r\n  &__GLEW_EXT_texture_cube_map_array,\r\n#endif\r\n#ifdef GL_EXT_texture_edge_clamp\r\n  &__GLEW_EXT_texture_edge_clamp,\r\n#endif\r\n#ifdef GL_EXT_texture_env\r\n  &__GLEW_EXT_texture_env,\r\n#endif\r\n#ifdef GL_EXT_texture_env_add\r\n  &__GLEW_EXT_texture_env_add,\r\n#endif\r\n#ifdef GL_EXT_texture_env_combine\r\n  &__GLEW_EXT_texture_env_combine,\r\n#endif\r\n#ifdef GL_EXT_texture_env_dot3\r\n  &__GLEW_EXT_texture_env_dot3,\r\n#endif\r\n#ifdef GL_EXT_texture_filter_anisotropic\r\n  &__GLEW_EXT_texture_filter_anisotropic,\r\n#endif\r\n#ifdef GL_EXT_texture_filter_minmax\r\n  &__GLEW_EXT_texture_filter_minmax,\r\n#endif\r\n#ifdef GL_EXT_texture_format_BGRA8888\r\n  &__GLEW_EXT_texture_format_BGRA8888,\r\n#endif\r\n#ifdef GL_EXT_texture_integer\r\n  &__GLEW_EXT_texture_integer,\r\n#endif\r\n#ifdef GL_EXT_texture_lod_bias\r\n  &__GLEW_EXT_texture_lod_bias,\r\n#endif\r\n#ifdef GL_EXT_texture_mirror_clamp\r\n  &__GLEW_EXT_texture_mirror_clamp,\r\n#endif\r\n#ifdef GL_EXT_texture_norm16\r\n  &__GLEW_EXT_texture_norm16,\r\n#endif\r\n#ifdef GL_EXT_texture_object\r\n  &__GLEW_EXT_texture_object,\r\n#endif\r\n#ifdef GL_EXT_texture_perturb_normal\r\n  &__GLEW_EXT_texture_perturb_normal,\r\n#endif\r\n#ifdef GL_EXT_texture_rectangle\r\n  &__GLEW_EXT_texture_rectangle,\r\n#endif\r\n#ifdef GL_EXT_texture_rg\r\n  &__GLEW_EXT_texture_rg,\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB\r\n  &__GLEW_EXT_texture_sRGB,\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_R8\r\n  &__GLEW_EXT_texture_sRGB_R8,\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_RG8\r\n  &__GLEW_EXT_texture_sRGB_RG8,\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_decode\r\n  &__GLEW_EXT_texture_sRGB_decode,\r\n#endif\r\n#ifdef GL_EXT_texture_shared_exponent\r\n  &__GLEW_EXT_texture_shared_exponent,\r\n#endif\r\n#ifdef GL_EXT_texture_snorm\r\n  &__GLEW_EXT_texture_snorm,\r\n#endif\r\n#ifdef GL_EXT_texture_storage\r\n  &__GLEW_EXT_texture_storage,\r\n#endif\r\n#ifdef GL_EXT_texture_swizzle\r\n  &__GLEW_EXT_texture_swizzle,\r\n#endif\r\n#ifdef GL_EXT_texture_type_2_10_10_10_REV\r\n  &__GLEW_EXT_texture_type_2_10_10_10_REV,\r\n#endif\r\n#ifdef GL_EXT_texture_view\r\n  &__GLEW_EXT_texture_view,\r\n#endif\r\n#ifdef GL_EXT_timer_query\r\n  &__GLEW_EXT_timer_query,\r\n#endif\r\n#ifdef GL_EXT_transform_feedback\r\n  &__GLEW_EXT_transform_feedback,\r\n#endif\r\n#ifdef GL_EXT_unpack_subimage\r\n  &__GLEW_EXT_unpack_subimage,\r\n#endif\r\n#ifdef GL_EXT_vertex_array\r\n  &__GLEW_EXT_vertex_array,\r\n#endif\r\n#ifdef GL_EXT_vertex_array_bgra\r\n  &__GLEW_EXT_vertex_array_bgra,\r\n#endif\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n  &__GLEW_EXT_vertex_array_setXXX,\r\n#endif\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n  &__GLEW_EXT_vertex_attrib_64bit,\r\n#endif\r\n#ifdef GL_EXT_vertex_shader\r\n  &__GLEW_EXT_vertex_shader,\r\n#endif\r\n#ifdef GL_EXT_vertex_weighting\r\n  &__GLEW_EXT_vertex_weighting,\r\n#endif\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n  &__GLEW_EXT_win32_keyed_mutex,\r\n#endif\r\n#ifdef GL_EXT_window_rectangles\r\n  &__GLEW_EXT_window_rectangles,\r\n#endif\r\n#ifdef GL_EXT_x11_sync_object\r\n  &__GLEW_EXT_x11_sync_object,\r\n#endif\r\n#ifdef GL_GREMEDY_frame_terminator\r\n  &__GLEW_GREMEDY_frame_terminator,\r\n#endif\r\n#ifdef GL_GREMEDY_string_marker\r\n  &__GLEW_GREMEDY_string_marker,\r\n#endif\r\n#ifdef GL_HP_convolution_border_modes\r\n  &__GLEW_HP_convolution_border_modes,\r\n#endif\r\n#ifdef GL_HP_image_transform\r\n  &__GLEW_HP_image_transform,\r\n#endif\r\n#ifdef GL_HP_occlusion_test\r\n  &__GLEW_HP_occlusion_test,\r\n#endif\r\n#ifdef GL_HP_texture_lighting\r\n  &__GLEW_HP_texture_lighting,\r\n#endif\r\n#ifdef GL_IBM_cull_vertex\r\n  &__GLEW_IBM_cull_vertex,\r\n#endif\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n  &__GLEW_IBM_multimode_draw_arrays,\r\n#endif\r\n#ifdef GL_IBM_rasterpos_clip\r\n  &__GLEW_IBM_rasterpos_clip,\r\n#endif\r\n#ifdef GL_IBM_static_data\r\n  &__GLEW_IBM_static_data,\r\n#endif\r\n#ifdef GL_IBM_texture_mirrored_repeat\r\n  &__GLEW_IBM_texture_mirrored_repeat,\r\n#endif\r\n#ifdef GL_IBM_vertex_array_lists\r\n  &__GLEW_IBM_vertex_array_lists,\r\n#endif\r\n#ifdef GL_INGR_color_clamp\r\n  &__GLEW_INGR_color_clamp,\r\n#endif\r\n#ifdef GL_INGR_interlace_read\r\n  &__GLEW_INGR_interlace_read,\r\n#endif\r\n#ifdef GL_INTEL_conservative_rasterization\r\n  &__GLEW_INTEL_conservative_rasterization,\r\n#endif\r\n#ifdef GL_INTEL_fragment_shader_ordering\r\n  &__GLEW_INTEL_fragment_shader_ordering,\r\n#endif\r\n#ifdef GL_INTEL_framebuffer_CMAA\r\n  &__GLEW_INTEL_framebuffer_CMAA,\r\n#endif\r\n#ifdef GL_INTEL_map_texture\r\n  &__GLEW_INTEL_map_texture,\r\n#endif\r\n#ifdef GL_INTEL_parallel_arrays\r\n  &__GLEW_INTEL_parallel_arrays,\r\n#endif\r\n#ifdef GL_INTEL_performance_query\r\n  &__GLEW_INTEL_performance_query,\r\n#endif\r\n#ifdef GL_INTEL_texture_scissor\r\n  &__GLEW_INTEL_texture_scissor,\r\n#endif\r\n#ifdef GL_KHR_blend_equation_advanced\r\n  &__GLEW_KHR_blend_equation_advanced,\r\n#endif\r\n#ifdef GL_KHR_blend_equation_advanced_coherent\r\n  &__GLEW_KHR_blend_equation_advanced_coherent,\r\n#endif\r\n#ifdef GL_KHR_context_flush_control\r\n  &__GLEW_KHR_context_flush_control,\r\n#endif\r\n#ifdef GL_KHR_debug\r\n  &__GLEW_KHR_debug,\r\n#endif\r\n#ifdef GL_KHR_no_error\r\n  &__GLEW_KHR_no_error,\r\n#endif\r\n#ifdef GL_KHR_parallel_shader_compile\r\n  &__GLEW_KHR_parallel_shader_compile,\r\n#endif\r\n#ifdef GL_KHR_robust_buffer_access_behavior\r\n  &__GLEW_KHR_robust_buffer_access_behavior,\r\n#endif\r\n#ifdef GL_KHR_robustness\r\n  &__GLEW_KHR_robustness,\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_hdr\r\n  &__GLEW_KHR_texture_compression_astc_hdr,\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_ldr\r\n  &__GLEW_KHR_texture_compression_astc_ldr,\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_sliced_3d\r\n  &__GLEW_KHR_texture_compression_astc_sliced_3d,\r\n#endif\r\n#ifdef GL_KTX_buffer_region\r\n  &__GLEW_KTX_buffer_region,\r\n#endif\r\n#ifdef GL_MESAX_texture_stack\r\n  &__GLEW_MESAX_texture_stack,\r\n#endif\r\n#ifdef GL_MESA_pack_invert\r\n  &__GLEW_MESA_pack_invert,\r\n#endif\r\n#ifdef GL_MESA_resize_buffers\r\n  &__GLEW_MESA_resize_buffers,\r\n#endif\r\n#ifdef GL_MESA_shader_integer_functions\r\n  &__GLEW_MESA_shader_integer_functions,\r\n#endif\r\n#ifdef GL_MESA_window_pos\r\n  &__GLEW_MESA_window_pos,\r\n#endif\r\n#ifdef GL_MESA_ycbcr_texture\r\n  &__GLEW_MESA_ycbcr_texture,\r\n#endif\r\n#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers\r\n  &__GLEW_NVX_blend_equation_advanced_multi_draw_buffers,\r\n#endif\r\n#ifdef GL_NVX_conditional_render\r\n  &__GLEW_NVX_conditional_render,\r\n#endif\r\n#ifdef GL_NVX_gpu_memory_info\r\n  &__GLEW_NVX_gpu_memory_info,\r\n#endif\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n  &__GLEW_NVX_linked_gpu_multicast,\r\n#endif\r\n#ifdef GL_NV_3dvision_settings\r\n  &__GLEW_NV_3dvision_settings,\r\n#endif\r\n#ifdef GL_NV_EGL_stream_consumer_external\r\n  &__GLEW_NV_EGL_stream_consumer_external,\r\n#endif\r\n#ifdef GL_NV_alpha_to_coverage_dither_control\r\n  &__GLEW_NV_alpha_to_coverage_dither_control,\r\n#endif\r\n#ifdef GL_NV_bgr\r\n  &__GLEW_NV_bgr,\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n  &__GLEW_NV_bindless_multi_draw_indirect,\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n  &__GLEW_NV_bindless_multi_draw_indirect_count,\r\n#endif\r\n#ifdef GL_NV_bindless_texture\r\n  &__GLEW_NV_bindless_texture,\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced\r\n  &__GLEW_NV_blend_equation_advanced,\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced_coherent\r\n  &__GLEW_NV_blend_equation_advanced_coherent,\r\n#endif\r\n#ifdef GL_NV_blend_minmax_factor\r\n  &__GLEW_NV_blend_minmax_factor,\r\n#endif\r\n#ifdef GL_NV_blend_square\r\n  &__GLEW_NV_blend_square,\r\n#endif\r\n#ifdef GL_NV_clip_space_w_scaling\r\n  &__GLEW_NV_clip_space_w_scaling,\r\n#endif\r\n#ifdef GL_NV_command_list\r\n  &__GLEW_NV_command_list,\r\n#endif\r\n#ifdef GL_NV_compute_program5\r\n  &__GLEW_NV_compute_program5,\r\n#endif\r\n#ifdef GL_NV_conditional_render\r\n  &__GLEW_NV_conditional_render,\r\n#endif\r\n#ifdef GL_NV_conservative_raster\r\n  &__GLEW_NV_conservative_raster,\r\n#endif\r\n#ifdef GL_NV_conservative_raster_dilate\r\n  &__GLEW_NV_conservative_raster_dilate,\r\n#endif\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n  &__GLEW_NV_conservative_raster_pre_snap_triangles,\r\n#endif\r\n#ifdef GL_NV_copy_buffer\r\n  &__GLEW_NV_copy_buffer,\r\n#endif\r\n#ifdef GL_NV_copy_depth_to_color\r\n  &__GLEW_NV_copy_depth_to_color,\r\n#endif\r\n#ifdef GL_NV_copy_image\r\n  &__GLEW_NV_copy_image,\r\n#endif\r\n#ifdef GL_NV_deep_texture3D\r\n  &__GLEW_NV_deep_texture3D,\r\n#endif\r\n#ifdef GL_NV_depth_buffer_float\r\n  &__GLEW_NV_depth_buffer_float,\r\n#endif\r\n#ifdef GL_NV_depth_clamp\r\n  &__GLEW_NV_depth_clamp,\r\n#endif\r\n#ifdef GL_NV_depth_range_unclamped\r\n  &__GLEW_NV_depth_range_unclamped,\r\n#endif\r\n#ifdef GL_NV_draw_buffers\r\n  &__GLEW_NV_draw_buffers,\r\n#endif\r\n#ifdef GL_NV_draw_instanced\r\n  &__GLEW_NV_draw_instanced,\r\n#endif\r\n#ifdef GL_NV_draw_texture\r\n  &__GLEW_NV_draw_texture,\r\n#endif\r\n#ifdef GL_NV_draw_vulkan_image\r\n  &__GLEW_NV_draw_vulkan_image,\r\n#endif\r\n#ifdef GL_NV_evaluators\r\n  &__GLEW_NV_evaluators,\r\n#endif\r\n#ifdef GL_NV_explicit_attrib_location\r\n  &__GLEW_NV_explicit_attrib_location,\r\n#endif\r\n#ifdef GL_NV_explicit_multisample\r\n  &__GLEW_NV_explicit_multisample,\r\n#endif\r\n#ifdef GL_NV_fbo_color_attachments\r\n  &__GLEW_NV_fbo_color_attachments,\r\n#endif\r\n#ifdef GL_NV_fence\r\n  &__GLEW_NV_fence,\r\n#endif\r\n#ifdef GL_NV_fill_rectangle\r\n  &__GLEW_NV_fill_rectangle,\r\n#endif\r\n#ifdef GL_NV_float_buffer\r\n  &__GLEW_NV_float_buffer,\r\n#endif\r\n#ifdef GL_NV_fog_distance\r\n  &__GLEW_NV_fog_distance,\r\n#endif\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n  &__GLEW_NV_fragment_coverage_to_color,\r\n#endif\r\n#ifdef GL_NV_fragment_program\r\n  &__GLEW_NV_fragment_program,\r\n#endif\r\n#ifdef GL_NV_fragment_program2\r\n  &__GLEW_NV_fragment_program2,\r\n#endif\r\n#ifdef GL_NV_fragment_program4\r\n  &__GLEW_NV_fragment_program4,\r\n#endif\r\n#ifdef GL_NV_fragment_program_option\r\n  &__GLEW_NV_fragment_program_option,\r\n#endif\r\n#ifdef GL_NV_fragment_shader_interlock\r\n  &__GLEW_NV_fragment_shader_interlock,\r\n#endif\r\n#ifdef GL_NV_framebuffer_blit\r\n  &__GLEW_NV_framebuffer_blit,\r\n#endif\r\n#ifdef GL_NV_framebuffer_mixed_samples\r\n  &__GLEW_NV_framebuffer_mixed_samples,\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample\r\n  &__GLEW_NV_framebuffer_multisample,\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n  &__GLEW_NV_framebuffer_multisample_coverage,\r\n#endif\r\n#ifdef GL_NV_generate_mipmap_sRGB\r\n  &__GLEW_NV_generate_mipmap_sRGB,\r\n#endif\r\n#ifdef GL_NV_geometry_program4\r\n  &__GLEW_NV_geometry_program4,\r\n#endif\r\n#ifdef GL_NV_geometry_shader4\r\n  &__GLEW_NV_geometry_shader4,\r\n#endif\r\n#ifdef GL_NV_geometry_shader_passthrough\r\n  &__GLEW_NV_geometry_shader_passthrough,\r\n#endif\r\n#ifdef GL_NV_gpu_multicast\r\n  &__GLEW_NV_gpu_multicast,\r\n#endif\r\n#ifdef GL_NV_gpu_program4\r\n  &__GLEW_NV_gpu_program4,\r\n#endif\r\n#ifdef GL_NV_gpu_program5\r\n  &__GLEW_NV_gpu_program5,\r\n#endif\r\n#ifdef GL_NV_gpu_program5_mem_extended\r\n  &__GLEW_NV_gpu_program5_mem_extended,\r\n#endif\r\n#ifdef GL_NV_gpu_program_fp64\r\n  &__GLEW_NV_gpu_program_fp64,\r\n#endif\r\n#ifdef GL_NV_gpu_shader5\r\n  &__GLEW_NV_gpu_shader5,\r\n#endif\r\n#ifdef GL_NV_half_float\r\n  &__GLEW_NV_half_float,\r\n#endif\r\n#ifdef GL_NV_image_formats\r\n  &__GLEW_NV_image_formats,\r\n#endif\r\n#ifdef GL_NV_instanced_arrays\r\n  &__GLEW_NV_instanced_arrays,\r\n#endif\r\n#ifdef GL_NV_internalformat_sample_query\r\n  &__GLEW_NV_internalformat_sample_query,\r\n#endif\r\n#ifdef GL_NV_light_max_exponent\r\n  &__GLEW_NV_light_max_exponent,\r\n#endif\r\n#ifdef GL_NV_multisample_coverage\r\n  &__GLEW_NV_multisample_coverage,\r\n#endif\r\n#ifdef GL_NV_multisample_filter_hint\r\n  &__GLEW_NV_multisample_filter_hint,\r\n#endif\r\n#ifdef GL_NV_non_square_matrices\r\n  &__GLEW_NV_non_square_matrices,\r\n#endif\r\n#ifdef GL_NV_occlusion_query\r\n  &__GLEW_NV_occlusion_query,\r\n#endif\r\n#ifdef GL_NV_pack_subimage\r\n  &__GLEW_NV_pack_subimage,\r\n#endif\r\n#ifdef GL_NV_packed_depth_stencil\r\n  &__GLEW_NV_packed_depth_stencil,\r\n#endif\r\n#ifdef GL_NV_packed_float\r\n  &__GLEW_NV_packed_float,\r\n#endif\r\n#ifdef GL_NV_packed_float_linear\r\n  &__GLEW_NV_packed_float_linear,\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object\r\n  &__GLEW_NV_parameter_buffer_object,\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object2\r\n  &__GLEW_NV_parameter_buffer_object2,\r\n#endif\r\n#ifdef GL_NV_path_rendering\r\n  &__GLEW_NV_path_rendering,\r\n#endif\r\n#ifdef GL_NV_path_rendering_shared_edge\r\n  &__GLEW_NV_path_rendering_shared_edge,\r\n#endif\r\n#ifdef GL_NV_pixel_buffer_object\r\n  &__GLEW_NV_pixel_buffer_object,\r\n#endif\r\n#ifdef GL_NV_pixel_data_range\r\n  &__GLEW_NV_pixel_data_range,\r\n#endif\r\n#ifdef GL_NV_platform_binary\r\n  &__GLEW_NV_platform_binary,\r\n#endif\r\n#ifdef GL_NV_point_sprite\r\n  &__GLEW_NV_point_sprite,\r\n#endif\r\n#ifdef GL_NV_polygon_mode\r\n  &__GLEW_NV_polygon_mode,\r\n#endif\r\n#ifdef GL_NV_present_video\r\n  &__GLEW_NV_present_video,\r\n#endif\r\n#ifdef GL_NV_primitive_restart\r\n  &__GLEW_NV_primitive_restart,\r\n#endif\r\n#ifdef GL_NV_read_depth\r\n  &__GLEW_NV_read_depth,\r\n#endif\r\n#ifdef GL_NV_read_depth_stencil\r\n  &__GLEW_NV_read_depth_stencil,\r\n#endif\r\n#ifdef GL_NV_read_stencil\r\n  &__GLEW_NV_read_stencil,\r\n#endif\r\n#ifdef GL_NV_register_combiners\r\n  &__GLEW_NV_register_combiners,\r\n#endif\r\n#ifdef GL_NV_register_combiners2\r\n  &__GLEW_NV_register_combiners2,\r\n#endif\r\n#ifdef GL_NV_robustness_video_memory_purge\r\n  &__GLEW_NV_robustness_video_memory_purge,\r\n#endif\r\n#ifdef GL_NV_sRGB_formats\r\n  &__GLEW_NV_sRGB_formats,\r\n#endif\r\n#ifdef GL_NV_sample_locations\r\n  &__GLEW_NV_sample_locations,\r\n#endif\r\n#ifdef GL_NV_sample_mask_override_coverage\r\n  &__GLEW_NV_sample_mask_override_coverage,\r\n#endif\r\n#ifdef GL_NV_shader_atomic_counters\r\n  &__GLEW_NV_shader_atomic_counters,\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float\r\n  &__GLEW_NV_shader_atomic_float,\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float64\r\n  &__GLEW_NV_shader_atomic_float64,\r\n#endif\r\n#ifdef GL_NV_shader_atomic_fp16_vector\r\n  &__GLEW_NV_shader_atomic_fp16_vector,\r\n#endif\r\n#ifdef GL_NV_shader_atomic_int64\r\n  &__GLEW_NV_shader_atomic_int64,\r\n#endif\r\n#ifdef GL_NV_shader_buffer_load\r\n  &__GLEW_NV_shader_buffer_load,\r\n#endif\r\n#ifdef GL_NV_shader_noperspective_interpolation\r\n  &__GLEW_NV_shader_noperspective_interpolation,\r\n#endif\r\n#ifdef GL_NV_shader_storage_buffer_object\r\n  &__GLEW_NV_shader_storage_buffer_object,\r\n#endif\r\n#ifdef GL_NV_shader_thread_group\r\n  &__GLEW_NV_shader_thread_group,\r\n#endif\r\n#ifdef GL_NV_shader_thread_shuffle\r\n  &__GLEW_NV_shader_thread_shuffle,\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_array\r\n  &__GLEW_NV_shadow_samplers_array,\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_cube\r\n  &__GLEW_NV_shadow_samplers_cube,\r\n#endif\r\n#ifdef GL_NV_stereo_view_rendering\r\n  &__GLEW_NV_stereo_view_rendering,\r\n#endif\r\n#ifdef GL_NV_tessellation_program5\r\n  &__GLEW_NV_tessellation_program5,\r\n#endif\r\n#ifdef GL_NV_texgen_emboss\r\n  &__GLEW_NV_texgen_emboss,\r\n#endif\r\n#ifdef GL_NV_texgen_reflection\r\n  &__GLEW_NV_texgen_reflection,\r\n#endif\r\n#ifdef GL_NV_texture_array\r\n  &__GLEW_NV_texture_array,\r\n#endif\r\n#ifdef GL_NV_texture_barrier\r\n  &__GLEW_NV_texture_barrier,\r\n#endif\r\n#ifdef GL_NV_texture_border_clamp\r\n  &__GLEW_NV_texture_border_clamp,\r\n#endif\r\n#ifdef GL_NV_texture_compression_latc\r\n  &__GLEW_NV_texture_compression_latc,\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc\r\n  &__GLEW_NV_texture_compression_s3tc,\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc_update\r\n  &__GLEW_NV_texture_compression_s3tc_update,\r\n#endif\r\n#ifdef GL_NV_texture_compression_vtc\r\n  &__GLEW_NV_texture_compression_vtc,\r\n#endif\r\n#ifdef GL_NV_texture_env_combine4\r\n  &__GLEW_NV_texture_env_combine4,\r\n#endif\r\n#ifdef GL_NV_texture_expand_normal\r\n  &__GLEW_NV_texture_expand_normal,\r\n#endif\r\n#ifdef GL_NV_texture_multisample\r\n  &__GLEW_NV_texture_multisample,\r\n#endif\r\n#ifdef GL_NV_texture_npot_2D_mipmap\r\n  &__GLEW_NV_texture_npot_2D_mipmap,\r\n#endif\r\n#ifdef GL_NV_texture_rectangle\r\n  &__GLEW_NV_texture_rectangle,\r\n#endif\r\n#ifdef GL_NV_texture_rectangle_compressed\r\n  &__GLEW_NV_texture_rectangle_compressed,\r\n#endif\r\n#ifdef GL_NV_texture_shader\r\n  &__GLEW_NV_texture_shader,\r\n#endif\r\n#ifdef GL_NV_texture_shader2\r\n  &__GLEW_NV_texture_shader2,\r\n#endif\r\n#ifdef GL_NV_texture_shader3\r\n  &__GLEW_NV_texture_shader3,\r\n#endif\r\n#ifdef GL_NV_transform_feedback\r\n  &__GLEW_NV_transform_feedback,\r\n#endif\r\n#ifdef GL_NV_transform_feedback2\r\n  &__GLEW_NV_transform_feedback2,\r\n#endif\r\n#ifdef GL_NV_uniform_buffer_unified_memory\r\n  &__GLEW_NV_uniform_buffer_unified_memory,\r\n#endif\r\n#ifdef GL_NV_vdpau_interop\r\n  &__GLEW_NV_vdpau_interop,\r\n#endif\r\n#ifdef GL_NV_vertex_array_range\r\n  &__GLEW_NV_vertex_array_range,\r\n#endif\r\n#ifdef GL_NV_vertex_array_range2\r\n  &__GLEW_NV_vertex_array_range2,\r\n#endif\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n  &__GLEW_NV_vertex_attrib_integer_64bit,\r\n#endif\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n  &__GLEW_NV_vertex_buffer_unified_memory,\r\n#endif\r\n#ifdef GL_NV_vertex_program\r\n  &__GLEW_NV_vertex_program,\r\n#endif\r\n#ifdef GL_NV_vertex_program1_1\r\n  &__GLEW_NV_vertex_program1_1,\r\n#endif\r\n#ifdef GL_NV_vertex_program2\r\n  &__GLEW_NV_vertex_program2,\r\n#endif\r\n#ifdef GL_NV_vertex_program2_option\r\n  &__GLEW_NV_vertex_program2_option,\r\n#endif\r\n#ifdef GL_NV_vertex_program3\r\n  &__GLEW_NV_vertex_program3,\r\n#endif\r\n#ifdef GL_NV_vertex_program4\r\n  &__GLEW_NV_vertex_program4,\r\n#endif\r\n#ifdef GL_NV_video_capture\r\n  &__GLEW_NV_video_capture,\r\n#endif\r\n#ifdef GL_NV_viewport_array\r\n  &__GLEW_NV_viewport_array,\r\n#endif\r\n#ifdef GL_NV_viewport_array2\r\n  &__GLEW_NV_viewport_array2,\r\n#endif\r\n#ifdef GL_NV_viewport_swizzle\r\n  &__GLEW_NV_viewport_swizzle,\r\n#endif\r\n#ifdef GL_OES_byte_coordinates\r\n  &__GLEW_OES_byte_coordinates,\r\n#endif\r\n#ifdef GL_OML_interlace\r\n  &__GLEW_OML_interlace,\r\n#endif\r\n#ifdef GL_OML_resample\r\n  &__GLEW_OML_resample,\r\n#endif\r\n#ifdef GL_OML_subsample\r\n  &__GLEW_OML_subsample,\r\n#endif\r\n#ifdef GL_OVR_multiview\r\n  &__GLEW_OVR_multiview,\r\n#endif\r\n#ifdef GL_OVR_multiview2\r\n  &__GLEW_OVR_multiview2,\r\n#endif\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n  &__GLEW_OVR_multiview_multisampled_render_to_texture,\r\n#endif\r\n#ifdef GL_PGI_misc_hints\r\n  &__GLEW_PGI_misc_hints,\r\n#endif\r\n#ifdef GL_PGI_vertex_hints\r\n  &__GLEW_PGI_vertex_hints,\r\n#endif\r\n#ifdef GL_QCOM_alpha_test\r\n  &__GLEW_QCOM_alpha_test,\r\n#endif\r\n#ifdef GL_QCOM_binning_control\r\n  &__GLEW_QCOM_binning_control,\r\n#endif\r\n#ifdef GL_QCOM_driver_control\r\n  &__GLEW_QCOM_driver_control,\r\n#endif\r\n#ifdef GL_QCOM_extended_get\r\n  &__GLEW_QCOM_extended_get,\r\n#endif\r\n#ifdef GL_QCOM_extended_get2\r\n  &__GLEW_QCOM_extended_get2,\r\n#endif\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n  &__GLEW_QCOM_framebuffer_foveated,\r\n#endif\r\n#ifdef GL_QCOM_perfmon_global_mode\r\n  &__GLEW_QCOM_perfmon_global_mode,\r\n#endif\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n  &__GLEW_QCOM_shader_framebuffer_fetch_noncoherent,\r\n#endif\r\n#ifdef GL_QCOM_tiled_rendering\r\n  &__GLEW_QCOM_tiled_rendering,\r\n#endif\r\n#ifdef GL_QCOM_writeonly_rendering\r\n  &__GLEW_QCOM_writeonly_rendering,\r\n#endif\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n  &__GLEW_REGAL_ES1_0_compatibility,\r\n#endif\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n  &__GLEW_REGAL_ES1_1_compatibility,\r\n#endif\r\n#ifdef GL_REGAL_enable\r\n  &__GLEW_REGAL_enable,\r\n#endif\r\n#ifdef GL_REGAL_error_string\r\n  &__GLEW_REGAL_error_string,\r\n#endif\r\n#ifdef GL_REGAL_extension_query\r\n  &__GLEW_REGAL_extension_query,\r\n#endif\r\n#ifdef GL_REGAL_log\r\n  &__GLEW_REGAL_log,\r\n#endif\r\n#ifdef GL_REGAL_proc_address\r\n  &__GLEW_REGAL_proc_address,\r\n#endif\r\n#ifdef GL_REND_screen_coordinates\r\n  &__GLEW_REND_screen_coordinates,\r\n#endif\r\n#ifdef GL_S3_s3tc\r\n  &__GLEW_S3_s3tc,\r\n#endif\r\n#ifdef GL_SGIS_clip_band_hint\r\n  &__GLEW_SGIS_clip_band_hint,\r\n#endif\r\n#ifdef GL_SGIS_color_range\r\n  &__GLEW_SGIS_color_range,\r\n#endif\r\n#ifdef GL_SGIS_detail_texture\r\n  &__GLEW_SGIS_detail_texture,\r\n#endif\r\n#ifdef GL_SGIS_fog_function\r\n  &__GLEW_SGIS_fog_function,\r\n#endif\r\n#ifdef GL_SGIS_generate_mipmap\r\n  &__GLEW_SGIS_generate_mipmap,\r\n#endif\r\n#ifdef GL_SGIS_line_texgen\r\n  &__GLEW_SGIS_line_texgen,\r\n#endif\r\n#ifdef GL_SGIS_multisample\r\n  &__GLEW_SGIS_multisample,\r\n#endif\r\n#ifdef GL_SGIS_multitexture\r\n  &__GLEW_SGIS_multitexture,\r\n#endif\r\n#ifdef GL_SGIS_pixel_texture\r\n  &__GLEW_SGIS_pixel_texture,\r\n#endif\r\n#ifdef GL_SGIS_point_line_texgen\r\n  &__GLEW_SGIS_point_line_texgen,\r\n#endif\r\n#ifdef GL_SGIS_shared_multisample\r\n  &__GLEW_SGIS_shared_multisample,\r\n#endif\r\n#ifdef GL_SGIS_sharpen_texture\r\n  &__GLEW_SGIS_sharpen_texture,\r\n#endif\r\n#ifdef GL_SGIS_texture4D\r\n  &__GLEW_SGIS_texture4D,\r\n#endif\r\n#ifdef GL_SGIS_texture_border_clamp\r\n  &__GLEW_SGIS_texture_border_clamp,\r\n#endif\r\n#ifdef GL_SGIS_texture_edge_clamp\r\n  &__GLEW_SGIS_texture_edge_clamp,\r\n#endif\r\n#ifdef GL_SGIS_texture_filter4\r\n  &__GLEW_SGIS_texture_filter4,\r\n#endif\r\n#ifdef GL_SGIS_texture_lod\r\n  &__GLEW_SGIS_texture_lod,\r\n#endif\r\n#ifdef GL_SGIS_texture_select\r\n  &__GLEW_SGIS_texture_select,\r\n#endif\r\n#ifdef GL_SGIX_async\r\n  &__GLEW_SGIX_async,\r\n#endif\r\n#ifdef GL_SGIX_async_histogram\r\n  &__GLEW_SGIX_async_histogram,\r\n#endif\r\n#ifdef GL_SGIX_async_pixel\r\n  &__GLEW_SGIX_async_pixel,\r\n#endif\r\n#ifdef GL_SGIX_bali_g_instruments\r\n  &__GLEW_SGIX_bali_g_instruments,\r\n#endif\r\n#ifdef GL_SGIX_bali_r_instruments\r\n  &__GLEW_SGIX_bali_r_instruments,\r\n#endif\r\n#ifdef GL_SGIX_bali_timer_instruments\r\n  &__GLEW_SGIX_bali_timer_instruments,\r\n#endif\r\n#ifdef GL_SGIX_blend_alpha_minmax\r\n  &__GLEW_SGIX_blend_alpha_minmax,\r\n#endif\r\n#ifdef GL_SGIX_blend_cadd\r\n  &__GLEW_SGIX_blend_cadd,\r\n#endif\r\n#ifdef GL_SGIX_blend_cmultiply\r\n  &__GLEW_SGIX_blend_cmultiply,\r\n#endif\r\n#ifdef GL_SGIX_calligraphic_fragment\r\n  &__GLEW_SGIX_calligraphic_fragment,\r\n#endif\r\n#ifdef GL_SGIX_clipmap\r\n  &__GLEW_SGIX_clipmap,\r\n#endif\r\n#ifdef GL_SGIX_color_matrix_accuracy\r\n  &__GLEW_SGIX_color_matrix_accuracy,\r\n#endif\r\n#ifdef GL_SGIX_color_table_index_mode\r\n  &__GLEW_SGIX_color_table_index_mode,\r\n#endif\r\n#ifdef GL_SGIX_complex_polar\r\n  &__GLEW_SGIX_complex_polar,\r\n#endif\r\n#ifdef GL_SGIX_convolution_accuracy\r\n  &__GLEW_SGIX_convolution_accuracy,\r\n#endif\r\n#ifdef GL_SGIX_cube_map\r\n  &__GLEW_SGIX_cube_map,\r\n#endif\r\n#ifdef GL_SGIX_cylinder_texgen\r\n  &__GLEW_SGIX_cylinder_texgen,\r\n#endif\r\n#ifdef GL_SGIX_datapipe\r\n  &__GLEW_SGIX_datapipe,\r\n#endif\r\n#ifdef GL_SGIX_decimation\r\n  &__GLEW_SGIX_decimation,\r\n#endif\r\n#ifdef GL_SGIX_depth_pass_instrument\r\n  &__GLEW_SGIX_depth_pass_instrument,\r\n#endif\r\n#ifdef GL_SGIX_depth_texture\r\n  &__GLEW_SGIX_depth_texture,\r\n#endif\r\n#ifdef GL_SGIX_dvc\r\n  &__GLEW_SGIX_dvc,\r\n#endif\r\n#ifdef GL_SGIX_flush_raster\r\n  &__GLEW_SGIX_flush_raster,\r\n#endif\r\n#ifdef GL_SGIX_fog_blend\r\n  &__GLEW_SGIX_fog_blend,\r\n#endif\r\n#ifdef GL_SGIX_fog_factor_to_alpha\r\n  &__GLEW_SGIX_fog_factor_to_alpha,\r\n#endif\r\n#ifdef GL_SGIX_fog_layers\r\n  &__GLEW_SGIX_fog_layers,\r\n#endif\r\n#ifdef GL_SGIX_fog_offset\r\n  &__GLEW_SGIX_fog_offset,\r\n#endif\r\n#ifdef GL_SGIX_fog_patchy\r\n  &__GLEW_SGIX_fog_patchy,\r\n#endif\r\n#ifdef GL_SGIX_fog_scale\r\n  &__GLEW_SGIX_fog_scale,\r\n#endif\r\n#ifdef GL_SGIX_fog_texture\r\n  &__GLEW_SGIX_fog_texture,\r\n#endif\r\n#ifdef GL_SGIX_fragment_lighting_space\r\n  &__GLEW_SGIX_fragment_lighting_space,\r\n#endif\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n  &__GLEW_SGIX_fragment_specular_lighting,\r\n#endif\r\n#ifdef GL_SGIX_fragments_instrument\r\n  &__GLEW_SGIX_fragments_instrument,\r\n#endif\r\n#ifdef GL_SGIX_framezoom\r\n  &__GLEW_SGIX_framezoom,\r\n#endif\r\n#ifdef GL_SGIX_icc_texture\r\n  &__GLEW_SGIX_icc_texture,\r\n#endif\r\n#ifdef GL_SGIX_igloo_interface\r\n  &__GLEW_SGIX_igloo_interface,\r\n#endif\r\n#ifdef GL_SGIX_image_compression\r\n  &__GLEW_SGIX_image_compression,\r\n#endif\r\n#ifdef GL_SGIX_impact_pixel_texture\r\n  &__GLEW_SGIX_impact_pixel_texture,\r\n#endif\r\n#ifdef GL_SGIX_instrument_error\r\n  &__GLEW_SGIX_instrument_error,\r\n#endif\r\n#ifdef GL_SGIX_interlace\r\n  &__GLEW_SGIX_interlace,\r\n#endif\r\n#ifdef GL_SGIX_ir_instrument1\r\n  &__GLEW_SGIX_ir_instrument1,\r\n#endif\r\n#ifdef GL_SGIX_line_quality_hint\r\n  &__GLEW_SGIX_line_quality_hint,\r\n#endif\r\n#ifdef GL_SGIX_list_priority\r\n  &__GLEW_SGIX_list_priority,\r\n#endif\r\n#ifdef GL_SGIX_mpeg1\r\n  &__GLEW_SGIX_mpeg1,\r\n#endif\r\n#ifdef GL_SGIX_mpeg2\r\n  &__GLEW_SGIX_mpeg2,\r\n#endif\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n  &__GLEW_SGIX_nonlinear_lighting_pervertex,\r\n#endif\r\n#ifdef GL_SGIX_nurbs_eval\r\n  &__GLEW_SGIX_nurbs_eval,\r\n#endif\r\n#ifdef GL_SGIX_occlusion_instrument\r\n  &__GLEW_SGIX_occlusion_instrument,\r\n#endif\r\n#ifdef GL_SGIX_packed_6bytes\r\n  &__GLEW_SGIX_packed_6bytes,\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture\r\n  &__GLEW_SGIX_pixel_texture,\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_bits\r\n  &__GLEW_SGIX_pixel_texture_bits,\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_lod\r\n  &__GLEW_SGIX_pixel_texture_lod,\r\n#endif\r\n#ifdef GL_SGIX_pixel_tiles\r\n  &__GLEW_SGIX_pixel_tiles,\r\n#endif\r\n#ifdef GL_SGIX_polynomial_ffd\r\n  &__GLEW_SGIX_polynomial_ffd,\r\n#endif\r\n#ifdef GL_SGIX_quad_mesh\r\n  &__GLEW_SGIX_quad_mesh,\r\n#endif\r\n#ifdef GL_SGIX_reference_plane\r\n  &__GLEW_SGIX_reference_plane,\r\n#endif\r\n#ifdef GL_SGIX_resample\r\n  &__GLEW_SGIX_resample,\r\n#endif\r\n#ifdef GL_SGIX_scalebias_hint\r\n  &__GLEW_SGIX_scalebias_hint,\r\n#endif\r\n#ifdef GL_SGIX_shadow\r\n  &__GLEW_SGIX_shadow,\r\n#endif\r\n#ifdef GL_SGIX_shadow_ambient\r\n  &__GLEW_SGIX_shadow_ambient,\r\n#endif\r\n#ifdef GL_SGIX_slim\r\n  &__GLEW_SGIX_slim,\r\n#endif\r\n#ifdef GL_SGIX_spotlight_cutoff\r\n  &__GLEW_SGIX_spotlight_cutoff,\r\n#endif\r\n#ifdef GL_SGIX_sprite\r\n  &__GLEW_SGIX_sprite,\r\n#endif\r\n#ifdef GL_SGIX_subdiv_patch\r\n  &__GLEW_SGIX_subdiv_patch,\r\n#endif\r\n#ifdef GL_SGIX_subsample\r\n  &__GLEW_SGIX_subsample,\r\n#endif\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n  &__GLEW_SGIX_tag_sample_buffer,\r\n#endif\r\n#ifdef GL_SGIX_texture_add_env\r\n  &__GLEW_SGIX_texture_add_env,\r\n#endif\r\n#ifdef GL_SGIX_texture_coordinate_clamp\r\n  &__GLEW_SGIX_texture_coordinate_clamp,\r\n#endif\r\n#ifdef GL_SGIX_texture_lod_bias\r\n  &__GLEW_SGIX_texture_lod_bias,\r\n#endif\r\n#ifdef GL_SGIX_texture_mipmap_anisotropic\r\n  &__GLEW_SGIX_texture_mipmap_anisotropic,\r\n#endif\r\n#ifdef GL_SGIX_texture_multi_buffer\r\n  &__GLEW_SGIX_texture_multi_buffer,\r\n#endif\r\n#ifdef GL_SGIX_texture_phase\r\n  &__GLEW_SGIX_texture_phase,\r\n#endif\r\n#ifdef GL_SGIX_texture_range\r\n  &__GLEW_SGIX_texture_range,\r\n#endif\r\n#ifdef GL_SGIX_texture_scale_bias\r\n  &__GLEW_SGIX_texture_scale_bias,\r\n#endif\r\n#ifdef GL_SGIX_texture_supersample\r\n  &__GLEW_SGIX_texture_supersample,\r\n#endif\r\n#ifdef GL_SGIX_vector_ops\r\n  &__GLEW_SGIX_vector_ops,\r\n#endif\r\n#ifdef GL_SGIX_vertex_array_object\r\n  &__GLEW_SGIX_vertex_array_object,\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip\r\n  &__GLEW_SGIX_vertex_preclip,\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip_hint\r\n  &__GLEW_SGIX_vertex_preclip_hint,\r\n#endif\r\n#ifdef GL_SGIX_ycrcb\r\n  &__GLEW_SGIX_ycrcb,\r\n#endif\r\n#ifdef GL_SGIX_ycrcb_subsample\r\n  &__GLEW_SGIX_ycrcb_subsample,\r\n#endif\r\n#ifdef GL_SGIX_ycrcba\r\n  &__GLEW_SGIX_ycrcba,\r\n#endif\r\n#ifdef GL_SGI_color_matrix\r\n  &__GLEW_SGI_color_matrix,\r\n#endif\r\n#ifdef GL_SGI_color_table\r\n  &__GLEW_SGI_color_table,\r\n#endif\r\n#ifdef GL_SGI_complex\r\n  &__GLEW_SGI_complex,\r\n#endif\r\n#ifdef GL_SGI_complex_type\r\n  &__GLEW_SGI_complex_type,\r\n#endif\r\n#ifdef GL_SGI_fft\r\n  &__GLEW_SGI_fft,\r\n#endif\r\n#ifdef GL_SGI_texture_color_table\r\n  &__GLEW_SGI_texture_color_table,\r\n#endif\r\n#ifdef GL_SUNX_constant_data\r\n  &__GLEW_SUNX_constant_data,\r\n#endif\r\n#ifdef GL_SUN_convolution_border_modes\r\n  &__GLEW_SUN_convolution_border_modes,\r\n#endif\r\n#ifdef GL_SUN_global_alpha\r\n  &__GLEW_SUN_global_alpha,\r\n#endif\r\n#ifdef GL_SUN_mesh_array\r\n  &__GLEW_SUN_mesh_array,\r\n#endif\r\n#ifdef GL_SUN_read_video_pixels\r\n  &__GLEW_SUN_read_video_pixels,\r\n#endif\r\n#ifdef GL_SUN_slice_accum\r\n  &__GLEW_SUN_slice_accum,\r\n#endif\r\n#ifdef GL_SUN_triangle_list\r\n  &__GLEW_SUN_triangle_list,\r\n#endif\r\n#ifdef GL_SUN_vertex\r\n  &__GLEW_SUN_vertex,\r\n#endif\r\n#ifdef GL_WIN_phong_shading\r\n  &__GLEW_WIN_phong_shading,\r\n#endif\r\n#ifdef GL_WIN_scene_markerXXX\r\n  &__GLEW_WIN_scene_markerXXX,\r\n#endif\r\n#ifdef GL_WIN_specular_fog\r\n  &__GLEW_WIN_specular_fog,\r\n#endif\r\n#ifdef GL_WIN_swap_hint\r\n  &__GLEW_WIN_swap_hint,\r\n#endif\r\n  NULL\r\n};\r\nstatic GLboolean _glewInit_GL_VERSION_1_2 ();\r\nstatic GLboolean _glewInit_GL_VERSION_1_3 ();\r\nstatic GLboolean _glewInit_GL_VERSION_1_4 ();\r\nstatic GLboolean _glewInit_GL_VERSION_1_5 ();\r\nstatic GLboolean _glewInit_GL_VERSION_2_0 ();\r\nstatic GLboolean _glewInit_GL_VERSION_2_1 ();\r\nstatic GLboolean _glewInit_GL_VERSION_3_0 ();\r\nstatic GLboolean _glewInit_GL_VERSION_3_1 ();\r\nstatic GLboolean _glewInit_GL_VERSION_3_2 ();\r\nstatic GLboolean _glewInit_GL_VERSION_3_3 ();\r\nstatic GLboolean _glewInit_GL_VERSION_4_0 ();\r\nstatic GLboolean _glewInit_GL_VERSION_4_5 ();\r\nstatic GLboolean _glewInit_GL_VERSION_4_6 ();\r\nstatic GLboolean _glewInit_GL_3DFX_tbuffer ();\r\nstatic GLboolean _glewInit_GL_AMD_debug_output ();\r\nstatic GLboolean _glewInit_GL_AMD_draw_buffers_blend ();\r\nstatic GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ();\r\nstatic GLboolean _glewInit_GL_AMD_interleaved_elements ();\r\nstatic GLboolean _glewInit_GL_AMD_multi_draw_indirect ();\r\nstatic GLboolean _glewInit_GL_AMD_name_gen_delete ();\r\nstatic GLboolean _glewInit_GL_AMD_occlusion_query_event ();\r\nstatic GLboolean _glewInit_GL_AMD_performance_monitor ();\r\nstatic GLboolean _glewInit_GL_AMD_sample_positions ();\r\nstatic GLboolean _glewInit_GL_AMD_sparse_texture ();\r\nstatic GLboolean _glewInit_GL_AMD_stencil_operation_extended ();\r\nstatic GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ();\r\nstatic GLboolean _glewInit_GL_ANGLE_framebuffer_blit ();\r\nstatic GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ();\r\nstatic GLboolean _glewInit_GL_ANGLE_instanced_arrays ();\r\nstatic GLboolean _glewInit_GL_ANGLE_timer_query ();\r\nstatic GLboolean _glewInit_GL_ANGLE_translated_shader_source ();\r\nstatic GLboolean _glewInit_GL_APPLE_copy_texture_levels ();\r\nstatic GLboolean _glewInit_GL_APPLE_element_array ();\r\nstatic GLboolean _glewInit_GL_APPLE_fence ();\r\nstatic GLboolean _glewInit_GL_APPLE_flush_buffer_range ();\r\nstatic GLboolean _glewInit_GL_APPLE_framebuffer_multisample ();\r\nstatic GLboolean _glewInit_GL_APPLE_object_purgeable ();\r\nstatic GLboolean _glewInit_GL_APPLE_sync ();\r\nstatic GLboolean _glewInit_GL_APPLE_texture_range ();\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_array_object ();\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_array_range ();\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ();\r\nstatic GLboolean _glewInit_GL_ARB_ES2_compatibility ();\r\nstatic GLboolean _glewInit_GL_ARB_ES3_1_compatibility ();\r\nstatic GLboolean _glewInit_GL_ARB_ES3_2_compatibility ();\r\nstatic GLboolean _glewInit_GL_ARB_base_instance ();\r\nstatic GLboolean _glewInit_GL_ARB_bindless_texture ();\r\nstatic GLboolean _glewInit_GL_ARB_blend_func_extended ();\r\nstatic GLboolean _glewInit_GL_ARB_buffer_storage ();\r\nstatic GLboolean _glewInit_GL_ARB_cl_event ();\r\nstatic GLboolean _glewInit_GL_ARB_clear_buffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_clear_texture ();\r\nstatic GLboolean _glewInit_GL_ARB_clip_control ();\r\nstatic GLboolean _glewInit_GL_ARB_color_buffer_float ();\r\nstatic GLboolean _glewInit_GL_ARB_compute_shader ();\r\nstatic GLboolean _glewInit_GL_ARB_compute_variable_group_size ();\r\nstatic GLboolean _glewInit_GL_ARB_copy_buffer ();\r\nstatic GLboolean _glewInit_GL_ARB_copy_image ();\r\nstatic GLboolean _glewInit_GL_ARB_debug_output ();\r\nstatic GLboolean _glewInit_GL_ARB_direct_state_access ();\r\nstatic GLboolean _glewInit_GL_ARB_draw_buffers ();\r\nstatic GLboolean _glewInit_GL_ARB_draw_buffers_blend ();\r\nstatic GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ();\r\nstatic GLboolean _glewInit_GL_ARB_draw_indirect ();\r\nstatic GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ();\r\nstatic GLboolean _glewInit_GL_ARB_framebuffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_geometry_shader4 ();\r\nstatic GLboolean _glewInit_GL_ARB_get_program_binary ();\r\nstatic GLboolean _glewInit_GL_ARB_get_texture_sub_image ();\r\nstatic GLboolean _glewInit_GL_ARB_gl_spirv ();\r\nstatic GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ();\r\nstatic GLboolean _glewInit_GL_ARB_gpu_shader_int64 ();\r\nstatic GLboolean _glewInit_GL_ARB_imaging ();\r\nstatic GLboolean _glewInit_GL_ARB_indirect_parameters ();\r\nstatic GLboolean _glewInit_GL_ARB_instanced_arrays ();\r\nstatic GLboolean _glewInit_GL_ARB_internalformat_query ();\r\nstatic GLboolean _glewInit_GL_ARB_internalformat_query2 ();\r\nstatic GLboolean _glewInit_GL_ARB_invalidate_subdata ();\r\nstatic GLboolean _glewInit_GL_ARB_map_buffer_range ();\r\nstatic GLboolean _glewInit_GL_ARB_matrix_palette ();\r\nstatic GLboolean _glewInit_GL_ARB_multi_bind ();\r\nstatic GLboolean _glewInit_GL_ARB_multi_draw_indirect ();\r\nstatic GLboolean _glewInit_GL_ARB_multisample ();\r\nstatic GLboolean _glewInit_GL_ARB_multitexture ();\r\nstatic GLboolean _glewInit_GL_ARB_occlusion_query ();\r\nstatic GLboolean _glewInit_GL_ARB_parallel_shader_compile ();\r\nstatic GLboolean _glewInit_GL_ARB_point_parameters ();\r\nstatic GLboolean _glewInit_GL_ARB_polygon_offset_clamp ();\r\nstatic GLboolean _glewInit_GL_ARB_program_interface_query ();\r\nstatic GLboolean _glewInit_GL_ARB_provoking_vertex ();\r\nstatic GLboolean _glewInit_GL_ARB_robustness ();\r\nstatic GLboolean _glewInit_GL_ARB_sample_locations ();\r\nstatic GLboolean _glewInit_GL_ARB_sample_shading ();\r\nstatic GLboolean _glewInit_GL_ARB_sampler_objects ();\r\nstatic GLboolean _glewInit_GL_ARB_separate_shader_objects ();\r\nstatic GLboolean _glewInit_GL_ARB_shader_atomic_counters ();\r\nstatic GLboolean _glewInit_GL_ARB_shader_image_load_store ();\r\nstatic GLboolean _glewInit_GL_ARB_shader_objects ();\r\nstatic GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_shader_subroutine ();\r\nstatic GLboolean _glewInit_GL_ARB_shading_language_include ();\r\nstatic GLboolean _glewInit_GL_ARB_sparse_buffer ();\r\nstatic GLboolean _glewInit_GL_ARB_sparse_texture ();\r\nstatic GLboolean _glewInit_GL_ARB_sync ();\r\nstatic GLboolean _glewInit_GL_ARB_tessellation_shader ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_barrier ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_buffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_buffer_range ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_compression ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_multisample ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_storage ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_storage_multisample ();\r\nstatic GLboolean _glewInit_GL_ARB_texture_view ();\r\nstatic GLboolean _glewInit_GL_ARB_timer_query ();\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback2 ();\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback3 ();\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback_instanced ();\r\nstatic GLboolean _glewInit_GL_ARB_transpose_matrix ();\r\nstatic GLboolean _glewInit_GL_ARB_uniform_buffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_array_object ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_attrib_binding ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_blend ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_buffer_object ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_program ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_shader ();\r\nstatic GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ();\r\nstatic GLboolean _glewInit_GL_ARB_viewport_array ();\r\nstatic GLboolean _glewInit_GL_ARB_window_pos ();\r\nstatic GLboolean _glewInit_GL_ATI_draw_buffers ();\r\nstatic GLboolean _glewInit_GL_ATI_element_array ();\r\nstatic GLboolean _glewInit_GL_ATI_envmap_bumpmap ();\r\nstatic GLboolean _glewInit_GL_ATI_fragment_shader ();\r\nstatic GLboolean _glewInit_GL_ATI_map_object_buffer ();\r\nstatic GLboolean _glewInit_GL_ATI_pn_triangles ();\r\nstatic GLboolean _glewInit_GL_ATI_separate_stencil ();\r\nstatic GLboolean _glewInit_GL_ATI_vertex_array_object ();\r\nstatic GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ();\r\nstatic GLboolean _glewInit_GL_ATI_vertex_streams ();\r\nstatic GLboolean _glewInit_GL_EXT_base_instance ();\r\nstatic GLboolean _glewInit_GL_EXT_bindable_uniform ();\r\nstatic GLboolean _glewInit_GL_EXT_blend_color ();\r\nstatic GLboolean _glewInit_GL_EXT_blend_equation_separate ();\r\nstatic GLboolean _glewInit_GL_EXT_blend_func_extended ();\r\nstatic GLboolean _glewInit_GL_EXT_blend_func_separate ();\r\nstatic GLboolean _glewInit_GL_EXT_blend_minmax ();\r\nstatic GLboolean _glewInit_GL_EXT_buffer_storage ();\r\nstatic GLboolean _glewInit_GL_EXT_clear_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_color_subtable ();\r\nstatic GLboolean _glewInit_GL_EXT_compiled_vertex_array ();\r\nstatic GLboolean _glewInit_GL_EXT_convolution ();\r\nstatic GLboolean _glewInit_GL_EXT_coordinate_frame ();\r\nstatic GLboolean _glewInit_GL_EXT_copy_image ();\r\nstatic GLboolean _glewInit_GL_EXT_copy_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_cull_vertex ();\r\nstatic GLboolean _glewInit_GL_EXT_debug_label ();\r\nstatic GLboolean _glewInit_GL_EXT_debug_marker ();\r\nstatic GLboolean _glewInit_GL_EXT_depth_bounds_test ();\r\nstatic GLboolean _glewInit_GL_EXT_direct_state_access ();\r\nstatic GLboolean _glewInit_GL_EXT_discard_framebuffer ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers2 ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers_indexed ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_instanced ();\r\nstatic GLboolean _glewInit_GL_EXT_draw_range_elements ();\r\nstatic GLboolean _glewInit_GL_EXT_external_buffer ();\r\nstatic GLboolean _glewInit_GL_EXT_fog_coord ();\r\nstatic GLboolean _glewInit_GL_EXT_fragment_lighting ();\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_blit ();\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_multisample ();\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_object ();\r\nstatic GLboolean _glewInit_GL_EXT_geometry_shader4 ();\r\nstatic GLboolean _glewInit_GL_EXT_gpu_program_parameters ();\r\nstatic GLboolean _glewInit_GL_EXT_gpu_shader4 ();\r\nstatic GLboolean _glewInit_GL_EXT_histogram ();\r\nstatic GLboolean _glewInit_GL_EXT_index_func ();\r\nstatic GLboolean _glewInit_GL_EXT_index_material ();\r\nstatic GLboolean _glewInit_GL_EXT_instanced_arrays ();\r\nstatic GLboolean _glewInit_GL_EXT_light_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_map_buffer_range ();\r\nstatic GLboolean _glewInit_GL_EXT_memory_object ();\r\nstatic GLboolean _glewInit_GL_EXT_memory_object_fd ();\r\nstatic GLboolean _glewInit_GL_EXT_memory_object_win32 ();\r\nstatic GLboolean _glewInit_GL_EXT_multi_draw_arrays ();\r\nstatic GLboolean _glewInit_GL_EXT_multi_draw_indirect ();\r\nstatic GLboolean _glewInit_GL_EXT_multisample ();\r\nstatic GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_multiview_draw_buffers ();\r\nstatic GLboolean _glewInit_GL_EXT_paletted_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_pixel_transform ();\r\nstatic GLboolean _glewInit_GL_EXT_point_parameters ();\r\nstatic GLboolean _glewInit_GL_EXT_polygon_offset ();\r\nstatic GLboolean _glewInit_GL_EXT_polygon_offset_clamp ();\r\nstatic GLboolean _glewInit_GL_EXT_provoking_vertex ();\r\nstatic GLboolean _glewInit_GL_EXT_raster_multisample ();\r\nstatic GLboolean _glewInit_GL_EXT_scene_marker ();\r\nstatic GLboolean _glewInit_GL_EXT_secondary_color ();\r\nstatic GLboolean _glewInit_GL_EXT_semaphore ();\r\nstatic GLboolean _glewInit_GL_EXT_semaphore_fd ();\r\nstatic GLboolean _glewInit_GL_EXT_semaphore_win32 ();\r\nstatic GLboolean _glewInit_GL_EXT_separate_shader_objects ();\r\nstatic GLboolean _glewInit_GL_EXT_shader_image_load_store ();\r\nstatic GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ();\r\nstatic GLboolean _glewInit_GL_EXT_sparse_texture ();\r\nstatic GLboolean _glewInit_GL_EXT_stencil_two_side ();\r\nstatic GLboolean _glewInit_GL_EXT_subtexture ();\r\nstatic GLboolean _glewInit_GL_EXT_texture3D ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_array ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_buffer_object ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_integer ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_object ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_perturb_normal ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_storage ();\r\nstatic GLboolean _glewInit_GL_EXT_texture_view ();\r\nstatic GLboolean _glewInit_GL_EXT_timer_query ();\r\nstatic GLboolean _glewInit_GL_EXT_transform_feedback ();\r\nstatic GLboolean _glewInit_GL_EXT_vertex_array ();\r\nstatic GLboolean _glewInit_GL_EXT_vertex_array_setXXX ();\r\nstatic GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ();\r\nstatic GLboolean _glewInit_GL_EXT_vertex_shader ();\r\nstatic GLboolean _glewInit_GL_EXT_vertex_weighting ();\r\nstatic GLboolean _glewInit_GL_EXT_win32_keyed_mutex ();\r\nstatic GLboolean _glewInit_GL_EXT_window_rectangles ();\r\nstatic GLboolean _glewInit_GL_EXT_x11_sync_object ();\r\nstatic GLboolean _glewInit_GL_GREMEDY_frame_terminator ();\r\nstatic GLboolean _glewInit_GL_GREMEDY_string_marker ();\r\nstatic GLboolean _glewInit_GL_HP_image_transform ();\r\nstatic GLboolean _glewInit_GL_IBM_multimode_draw_arrays ();\r\nstatic GLboolean _glewInit_GL_IBM_vertex_array_lists ();\r\nstatic GLboolean _glewInit_GL_INTEL_map_texture ();\r\nstatic GLboolean _glewInit_GL_INTEL_parallel_arrays ();\r\nstatic GLboolean _glewInit_GL_INTEL_performance_query ();\r\nstatic GLboolean _glewInit_GL_INTEL_texture_scissor ();\r\nstatic GLboolean _glewInit_GL_KHR_blend_equation_advanced ();\r\nstatic GLboolean _glewInit_GL_KHR_debug ();\r\nstatic GLboolean _glewInit_GL_KHR_parallel_shader_compile ();\r\nstatic GLboolean _glewInit_GL_KHR_robustness ();\r\nstatic GLboolean _glewInit_GL_KTX_buffer_region ();\r\nstatic GLboolean _glewInit_GL_MESA_resize_buffers ();\r\nstatic GLboolean _glewInit_GL_MESA_window_pos ();\r\nstatic GLboolean _glewInit_GL_NVX_conditional_render ();\r\nstatic GLboolean _glewInit_GL_NVX_linked_gpu_multicast ();\r\nstatic GLboolean _glewInit_GL_NV_3dvision_settings ();\r\nstatic GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ();\r\nstatic GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ();\r\nstatic GLboolean _glewInit_GL_NV_bindless_texture ();\r\nstatic GLboolean _glewInit_GL_NV_blend_equation_advanced ();\r\nstatic GLboolean _glewInit_GL_NV_clip_space_w_scaling ();\r\nstatic GLboolean _glewInit_GL_NV_command_list ();\r\nstatic GLboolean _glewInit_GL_NV_conditional_render ();\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster ();\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster_dilate ();\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ();\r\nstatic GLboolean _glewInit_GL_NV_copy_buffer ();\r\nstatic GLboolean _glewInit_GL_NV_copy_image ();\r\nstatic GLboolean _glewInit_GL_NV_depth_buffer_float ();\r\nstatic GLboolean _glewInit_GL_NV_draw_buffers ();\r\nstatic GLboolean _glewInit_GL_NV_draw_instanced ();\r\nstatic GLboolean _glewInit_GL_NV_draw_texture ();\r\nstatic GLboolean _glewInit_GL_NV_draw_vulkan_image ();\r\nstatic GLboolean _glewInit_GL_NV_evaluators ();\r\nstatic GLboolean _glewInit_GL_NV_explicit_multisample ();\r\nstatic GLboolean _glewInit_GL_NV_fence ();\r\nstatic GLboolean _glewInit_GL_NV_fragment_coverage_to_color ();\r\nstatic GLboolean _glewInit_GL_NV_fragment_program ();\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_blit ();\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_multisample ();\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ();\r\nstatic GLboolean _glewInit_GL_NV_geometry_program4 ();\r\nstatic GLboolean _glewInit_GL_NV_gpu_multicast ();\r\nstatic GLboolean _glewInit_GL_NV_gpu_program4 ();\r\nstatic GLboolean _glewInit_GL_NV_gpu_shader5 ();\r\nstatic GLboolean _glewInit_GL_NV_half_float ();\r\nstatic GLboolean _glewInit_GL_NV_instanced_arrays ();\r\nstatic GLboolean _glewInit_GL_NV_internalformat_sample_query ();\r\nstatic GLboolean _glewInit_GL_NV_non_square_matrices ();\r\nstatic GLboolean _glewInit_GL_NV_occlusion_query ();\r\nstatic GLboolean _glewInit_GL_NV_parameter_buffer_object ();\r\nstatic GLboolean _glewInit_GL_NV_path_rendering ();\r\nstatic GLboolean _glewInit_GL_NV_pixel_data_range ();\r\nstatic GLboolean _glewInit_GL_NV_point_sprite ();\r\nstatic GLboolean _glewInit_GL_NV_polygon_mode ();\r\nstatic GLboolean _glewInit_GL_NV_present_video ();\r\nstatic GLboolean _glewInit_GL_NV_primitive_restart ();\r\nstatic GLboolean _glewInit_GL_NV_register_combiners ();\r\nstatic GLboolean _glewInit_GL_NV_register_combiners2 ();\r\nstatic GLboolean _glewInit_GL_NV_sample_locations ();\r\nstatic GLboolean _glewInit_GL_NV_shader_buffer_load ();\r\nstatic GLboolean _glewInit_GL_NV_texture_array ();\r\nstatic GLboolean _glewInit_GL_NV_texture_barrier ();\r\nstatic GLboolean _glewInit_GL_NV_texture_multisample ();\r\nstatic GLboolean _glewInit_GL_NV_transform_feedback ();\r\nstatic GLboolean _glewInit_GL_NV_transform_feedback2 ();\r\nstatic GLboolean _glewInit_GL_NV_vdpau_interop ();\r\nstatic GLboolean _glewInit_GL_NV_vertex_array_range ();\r\nstatic GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ();\r\nstatic GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ();\r\nstatic GLboolean _glewInit_GL_NV_vertex_program ();\r\nstatic GLboolean _glewInit_GL_NV_video_capture ();\r\nstatic GLboolean _glewInit_GL_NV_viewport_array ();\r\nstatic GLboolean _glewInit_GL_NV_viewport_swizzle ();\r\nstatic GLboolean _glewInit_GL_OVR_multiview ();\r\nstatic GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ();\r\nstatic GLboolean _glewInit_GL_QCOM_alpha_test ();\r\nstatic GLboolean _glewInit_GL_QCOM_driver_control ();\r\nstatic GLboolean _glewInit_GL_QCOM_extended_get ();\r\nstatic GLboolean _glewInit_GL_QCOM_extended_get2 ();\r\nstatic GLboolean _glewInit_GL_QCOM_framebuffer_foveated ();\r\nstatic GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ();\r\nstatic GLboolean _glewInit_GL_QCOM_tiled_rendering ();\r\nstatic GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ();\r\nstatic GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ();\r\nstatic GLboolean _glewInit_GL_REGAL_error_string ();\r\nstatic GLboolean _glewInit_GL_REGAL_extension_query ();\r\nstatic GLboolean _glewInit_GL_REGAL_log ();\r\nstatic GLboolean _glewInit_GL_REGAL_proc_address ();\r\nstatic GLboolean _glewInit_GL_SGIS_detail_texture ();\r\nstatic GLboolean _glewInit_GL_SGIS_fog_function ();\r\nstatic GLboolean _glewInit_GL_SGIS_multisample ();\r\nstatic GLboolean _glewInit_GL_SGIS_multitexture ();\r\nstatic GLboolean _glewInit_GL_SGIS_shared_multisample ();\r\nstatic GLboolean _glewInit_GL_SGIS_sharpen_texture ();\r\nstatic GLboolean _glewInit_GL_SGIS_texture4D ();\r\nstatic GLboolean _glewInit_GL_SGIS_texture_filter4 ();\r\nstatic GLboolean _glewInit_GL_SGIX_async ();\r\nstatic GLboolean _glewInit_GL_SGIX_datapipe ();\r\nstatic GLboolean _glewInit_GL_SGIX_flush_raster ();\r\nstatic GLboolean _glewInit_GL_SGIX_fog_layers ();\r\nstatic GLboolean _glewInit_GL_SGIX_fog_texture ();\r\nstatic GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ();\r\nstatic GLboolean _glewInit_GL_SGIX_framezoom ();\r\nstatic GLboolean _glewInit_GL_SGIX_igloo_interface ();\r\nstatic GLboolean _glewInit_GL_SGIX_mpeg1 ();\r\nstatic GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ();\r\nstatic GLboolean _glewInit_GL_SGIX_pixel_texture ();\r\nstatic GLboolean _glewInit_GL_SGIX_polynomial_ffd ();\r\nstatic GLboolean _glewInit_GL_SGIX_quad_mesh ();\r\nstatic GLboolean _glewInit_GL_SGIX_reference_plane ();\r\nstatic GLboolean _glewInit_GL_SGIX_sprite ();\r\nstatic GLboolean _glewInit_GL_SGIX_tag_sample_buffer ();\r\nstatic GLboolean _glewInit_GL_SGIX_vector_ops ();\r\nstatic GLboolean _glewInit_GL_SGIX_vertex_array_object ();\r\nstatic GLboolean _glewInit_GL_SGI_color_table ();\r\nstatic GLboolean _glewInit_GL_SGI_fft ();\r\nstatic GLboolean _glewInit_GL_SUNX_constant_data ();\r\nstatic GLboolean _glewInit_GL_SUN_global_alpha ();\r\nstatic GLboolean _glewInit_GL_SUN_read_video_pixels ();\r\nstatic GLboolean _glewInit_GL_SUN_triangle_list ();\r\nstatic GLboolean _glewInit_GL_SUN_vertex ();\r\nstatic GLboolean _glewInit_GL_WIN_swap_hint ();\r\n\r\n#ifdef GL_VERSION_1_2\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_1_2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexSubImage3D\")) == NULL) || r;\r\n  r = ((glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElements\")) == NULL) || r;\r\n  r = ((glTexImage3D = (PFNGLTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glTexImage3D\")) == NULL) || r;\r\n  r = ((glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_1_2 */\r\n\r\n#ifdef GL_VERSION_1_3\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_1_3 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveTexture = (PFNGLACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)\"glActiveTexture\")) == NULL) || r;\r\n  r = ((glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)\"glClientActiveTexture\")) == NULL) || r;\r\n  r = ((glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage1D\")) == NULL) || r;\r\n  r = ((glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage2D\")) == NULL) || r;\r\n  r = ((glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage3D\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage1D\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage2D\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage3D\")) == NULL) || r;\r\n  r = ((glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedTexImage\")) == NULL) || r;\r\n  r = ((glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)\"glLoadTransposeMatrixd\")) == NULL) || r;\r\n  r = ((glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)\"glLoadTransposeMatrixf\")) == NULL) || r;\r\n  r = ((glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)\"glMultTransposeMatrixd\")) == NULL) || r;\r\n  r = ((glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)\"glMultTransposeMatrixf\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1d\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1dv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1f\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1fv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1i\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1iv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1s\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1sv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2d\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2dv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2f\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2fv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2i\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2iv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2s\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2sv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3d\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3dv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3f\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3fv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3i\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3iv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3s\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3sv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4d\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4dv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4f\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4fv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4i\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4iv\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4s\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4sv\")) == NULL) || r;\r\n  r = ((glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)glewGetProcAddress((const GLubyte*)\"glSampleCoverage\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_1_3 */\r\n\r\n#ifdef GL_VERSION_1_4\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_1_4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendColor = (PFNGLBLENDCOLORPROC)glewGetProcAddress((const GLubyte*)\"glBlendColor\")) == NULL) || r;\r\n  r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquation\")) == NULL) || r;\r\n  r = ((glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparate\")) == NULL) || r;\r\n  r = ((glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordPointer\")) == NULL) || r;\r\n  r = ((glFogCoordd = (PFNGLFOGCOORDDPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordd\")) == NULL) || r;\r\n  r = ((glFogCoorddv = (PFNGLFOGCOORDDVPROC)glewGetProcAddress((const GLubyte*)\"glFogCoorddv\")) == NULL) || r;\r\n  r = ((glFogCoordf = (PFNGLFOGCOORDFPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordf\")) == NULL) || r;\r\n  r = ((glFogCoordfv = (PFNGLFOGCOORDFVPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordfv\")) == NULL) || r;\r\n  r = ((glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArrays\")) == NULL) || r;\r\n  r = ((glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElements\")) == NULL) || r;\r\n  r = ((glPointParameterf = (PFNGLPOINTPARAMETERFPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterf\")) == NULL) || r;\r\n  r = ((glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterfv\")) == NULL) || r;\r\n  r = ((glPointParameteri = (PFNGLPOINTPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glPointParameteri\")) == NULL) || r;\r\n  r = ((glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glPointParameteriv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3b\")) == NULL) || r;\r\n  r = ((glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3bv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3d\")) == NULL) || r;\r\n  r = ((glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3dv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3f\")) == NULL) || r;\r\n  r = ((glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3fv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3i\")) == NULL) || r;\r\n  r = ((glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3iv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3s\")) == NULL) || r;\r\n  r = ((glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3sv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ub\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ubv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ui\")) == NULL) || r;\r\n  r = ((glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3uiv\")) == NULL) || r;\r\n  r = ((glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3us\")) == NULL) || r;\r\n  r = ((glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3usv\")) == NULL) || r;\r\n  r = ((glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorPointer\")) == NULL) || r;\r\n  r = ((glWindowPos2d = (PFNGLWINDOWPOS2DPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2d\")) == NULL) || r;\r\n  r = ((glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2dv\")) == NULL) || r;\r\n  r = ((glWindowPos2f = (PFNGLWINDOWPOS2FPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2f\")) == NULL) || r;\r\n  r = ((glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2fv\")) == NULL) || r;\r\n  r = ((glWindowPos2i = (PFNGLWINDOWPOS2IPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2i\")) == NULL) || r;\r\n  r = ((glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2iv\")) == NULL) || r;\r\n  r = ((glWindowPos2s = (PFNGLWINDOWPOS2SPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2s\")) == NULL) || r;\r\n  r = ((glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2sv\")) == NULL) || r;\r\n  r = ((glWindowPos3d = (PFNGLWINDOWPOS3DPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3d\")) == NULL) || r;\r\n  r = ((glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3dv\")) == NULL) || r;\r\n  r = ((glWindowPos3f = (PFNGLWINDOWPOS3FPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3f\")) == NULL) || r;\r\n  r = ((glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3fv\")) == NULL) || r;\r\n  r = ((glWindowPos3i = (PFNGLWINDOWPOS3IPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3i\")) == NULL) || r;\r\n  r = ((glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3iv\")) == NULL) || r;\r\n  r = ((glWindowPos3s = (PFNGLWINDOWPOS3SPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3s\")) == NULL) || r;\r\n  r = ((glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3sv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_1_4 */\r\n\r\n#ifdef GL_VERSION_1_5\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_1_5 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginQuery = (PFNGLBEGINQUERYPROC)glewGetProcAddress((const GLubyte*)\"glBeginQuery\")) == NULL) || r;\r\n  r = ((glBindBuffer = (PFNGLBINDBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBindBuffer\")) == NULL) || r;\r\n  r = ((glBufferData = (PFNGLBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glBufferData\")) == NULL) || r;\r\n  r = ((glBufferSubData = (PFNGLBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glBufferSubData\")) == NULL) || r;\r\n  r = ((glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteBuffers\")) == NULL) || r;\r\n  r = ((glDeleteQueries = (PFNGLDELETEQUERIESPROC)glewGetProcAddress((const GLubyte*)\"glDeleteQueries\")) == NULL) || r;\r\n  r = ((glEndQuery = (PFNGLENDQUERYPROC)glewGetProcAddress((const GLubyte*)\"glEndQuery\")) == NULL) || r;\r\n  r = ((glGenBuffers = (PFNGLGENBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glGenBuffers\")) == NULL) || r;\r\n  r = ((glGenQueries = (PFNGLGENQUERIESPROC)glewGetProcAddress((const GLubyte*)\"glGenQueries\")) == NULL) || r;\r\n  r = ((glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferParameteriv\")) == NULL) || r;\r\n  r = ((glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferPointerv\")) == NULL) || r;\r\n  r = ((glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferSubData\")) == NULL) || r;\r\n  r = ((glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectiv\")) == NULL) || r;\r\n  r = ((glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectuiv\")) == NULL) || r;\r\n  r = ((glGetQueryiv = (PFNGLGETQUERYIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryiv\")) == NULL) || r;\r\n  r = ((glIsBuffer = (PFNGLISBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glIsBuffer\")) == NULL) || r;\r\n  r = ((glIsQuery = (PFNGLISQUERYPROC)glewGetProcAddress((const GLubyte*)\"glIsQuery\")) == NULL) || r;\r\n  r = ((glMapBuffer = (PFNGLMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glMapBuffer\")) == NULL) || r;\r\n  r = ((glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glUnmapBuffer\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_1_5 */\r\n\r\n#ifdef GL_VERSION_2_0\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_2_0 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAttachShader = (PFNGLATTACHSHADERPROC)glewGetProcAddress((const GLubyte*)\"glAttachShader\")) == NULL) || r;\r\n  r = ((glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glBindAttribLocation\")) == NULL) || r;\r\n  r = ((glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparate\")) == NULL) || r;\r\n  r = ((glCompileShader = (PFNGLCOMPILESHADERPROC)glewGetProcAddress((const GLubyte*)\"glCompileShader\")) == NULL) || r;\r\n  r = ((glCreateProgram = (PFNGLCREATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glCreateProgram\")) == NULL) || r;\r\n  r = ((glCreateShader = (PFNGLCREATESHADERPROC)glewGetProcAddress((const GLubyte*)\"glCreateShader\")) == NULL) || r;\r\n  r = ((glDeleteProgram = (PFNGLDELETEPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glDeleteProgram\")) == NULL) || r;\r\n  r = ((glDeleteShader = (PFNGLDELETESHADERPROC)glewGetProcAddress((const GLubyte*)\"glDeleteShader\")) == NULL) || r;\r\n  r = ((glDetachShader = (PFNGLDETACHSHADERPROC)glewGetProcAddress((const GLubyte*)\"glDetachShader\")) == NULL) || r;\r\n  r = ((glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexAttribArray\")) == NULL) || r;\r\n  r = ((glDrawBuffers = (PFNGLDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffers\")) == NULL) || r;\r\n  r = ((glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexAttribArray\")) == NULL) || r;\r\n  r = ((glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveAttrib\")) == NULL) || r;\r\n  r = ((glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniform\")) == NULL) || r;\r\n  r = ((glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)glewGetProcAddress((const GLubyte*)\"glGetAttachedShaders\")) == NULL) || r;\r\n  r = ((glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glGetAttribLocation\")) == NULL) || r;\r\n  r = ((glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramInfoLog\")) == NULL) || r;\r\n  r = ((glGetProgramiv = (PFNGLGETPROGRAMIVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramiv\")) == NULL) || r;\r\n  r = ((glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)glewGetProcAddress((const GLubyte*)\"glGetShaderInfoLog\")) == NULL) || r;\r\n  r = ((glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)\"glGetShaderSource\")) == NULL) || r;\r\n  r = ((glGetShaderiv = (PFNGLGETSHADERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetShaderiv\")) == NULL) || r;\r\n  r = ((glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformLocation\")) == NULL) || r;\r\n  r = ((glGetUniformfv = (PFNGLGETUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformfv\")) == NULL) || r;\r\n  r = ((glGetUniformiv = (PFNGLGETUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformiv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribPointerv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribdv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribfv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribiv\")) == NULL) || r;\r\n  r = ((glIsProgram = (PFNGLISPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glIsProgram\")) == NULL) || r;\r\n  r = ((glIsShader = (PFNGLISSHADERPROC)glewGetProcAddress((const GLubyte*)\"glIsShader\")) == NULL) || r;\r\n  r = ((glLinkProgram = (PFNGLLINKPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glLinkProgram\")) == NULL) || r;\r\n  r = ((glShaderSource = (PFNGLSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)\"glShaderSource\")) == NULL) || r;\r\n  r = ((glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)\"glStencilFuncSeparate\")) == NULL) || r;\r\n  r = ((glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)glewGetProcAddress((const GLubyte*)\"glStencilMaskSeparate\")) == NULL) || r;\r\n  r = ((glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)glewGetProcAddress((const GLubyte*)\"glStencilOpSeparate\")) == NULL) || r;\r\n  r = ((glUniform1f = (PFNGLUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)\"glUniform1f\")) == NULL) || r;\r\n  r = ((glUniform1fv = (PFNGLUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1fv\")) == NULL) || r;\r\n  r = ((glUniform1i = (PFNGLUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)\"glUniform1i\")) == NULL) || r;\r\n  r = ((glUniform1iv = (PFNGLUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1iv\")) == NULL) || r;\r\n  r = ((glUniform2f = (PFNGLUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)\"glUniform2f\")) == NULL) || r;\r\n  r = ((glUniform2fv = (PFNGLUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2fv\")) == NULL) || r;\r\n  r = ((glUniform2i = (PFNGLUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)\"glUniform2i\")) == NULL) || r;\r\n  r = ((glUniform2iv = (PFNGLUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2iv\")) == NULL) || r;\r\n  r = ((glUniform3f = (PFNGLUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)\"glUniform3f\")) == NULL) || r;\r\n  r = ((glUniform3fv = (PFNGLUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3fv\")) == NULL) || r;\r\n  r = ((glUniform3i = (PFNGLUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)\"glUniform3i\")) == NULL) || r;\r\n  r = ((glUniform3iv = (PFNGLUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3iv\")) == NULL) || r;\r\n  r = ((glUniform4f = (PFNGLUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)\"glUniform4f\")) == NULL) || r;\r\n  r = ((glUniform4fv = (PFNGLUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4fv\")) == NULL) || r;\r\n  r = ((glUniform4i = (PFNGLUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)\"glUniform4i\")) == NULL) || r;\r\n  r = ((glUniform4iv = (PFNGLUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4iv\")) == NULL) || r;\r\n  r = ((glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4fv\")) == NULL) || r;\r\n  r = ((glUseProgram = (PFNGLUSEPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glUseProgram\")) == NULL) || r;\r\n  r = ((glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glValidateProgram\")) == NULL) || r;\r\n  r = ((glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1d\")) == NULL) || r;\r\n  r = ((glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1dv\")) == NULL) || r;\r\n  r = ((glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1f\")) == NULL) || r;\r\n  r = ((glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1fv\")) == NULL) || r;\r\n  r = ((glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1s\")) == NULL) || r;\r\n  r = ((glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1sv\")) == NULL) || r;\r\n  r = ((glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2d\")) == NULL) || r;\r\n  r = ((glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2dv\")) == NULL) || r;\r\n  r = ((glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2f\")) == NULL) || r;\r\n  r = ((glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2fv\")) == NULL) || r;\r\n  r = ((glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2s\")) == NULL) || r;\r\n  r = ((glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2sv\")) == NULL) || r;\r\n  r = ((glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3d\")) == NULL) || r;\r\n  r = ((glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3dv\")) == NULL) || r;\r\n  r = ((glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3f\")) == NULL) || r;\r\n  r = ((glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3fv\")) == NULL) || r;\r\n  r = ((glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3s\")) == NULL) || r;\r\n  r = ((glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3sv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nbv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Niv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nsv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nub\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nubv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nuiv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4Nusv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4bv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4d\")) == NULL) || r;\r\n  r = ((glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4dv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4f\")) == NULL) || r;\r\n  r = ((glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4fv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4iv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4s\")) == NULL) || r;\r\n  r = ((glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4sv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4ubv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4uiv\")) == NULL) || r;\r\n  r = ((glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4usv\")) == NULL) || r;\r\n  r = ((glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribPointer\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_2_0 */\r\n\r\n#ifdef GL_VERSION_2_1\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_2_1 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x3fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x4fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x2fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x4fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x2fv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x3fv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_2_1 */\r\n\r\n#ifdef GL_VERSION_3_0\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_3_0 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = _glewInit_GL_ARB_framebuffer_object() || r;\r\n  r = _glewInit_GL_ARB_map_buffer_range() || r;\r\n  r = _glewInit_GL_ARB_uniform_buffer_object() || r;\r\n  r = _glewInit_GL_ARB_vertex_array_object() || r;\r\n\r\n  r = ((glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)\"glBeginConditionalRender\")) == NULL) || r;\r\n  r = ((glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glBeginTransformFeedback\")) == NULL) || r;\r\n  r = ((glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glBindFragDataLocation\")) == NULL) || r;\r\n  r = ((glClampColor = (PFNGLCLAMPCOLORPROC)glewGetProcAddress((const GLubyte*)\"glClampColor\")) == NULL) || r;\r\n  r = ((glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferfi\")) == NULL) || r;\r\n  r = ((glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferfv\")) == NULL) || r;\r\n  r = ((glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferiv\")) == NULL) || r;\r\n  r = ((glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferuiv\")) == NULL) || r;\r\n  r = ((glColorMaski = (PFNGLCOLORMASKIPROC)glewGetProcAddress((const GLubyte*)\"glColorMaski\")) == NULL) || r;\r\n  r = ((glDisablei = (PFNGLDISABLEIPROC)glewGetProcAddress((const GLubyte*)\"glDisablei\")) == NULL) || r;\r\n  r = ((glEnablei = (PFNGLENABLEIPROC)glewGetProcAddress((const GLubyte*)\"glEnablei\")) == NULL) || r;\r\n  r = ((glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)\"glEndConditionalRender\")) == NULL) || r;\r\n  r = ((glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glEndTransformFeedback\")) == NULL) || r;\r\n  r = ((glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)glewGetProcAddress((const GLubyte*)\"glGetBooleani_v\")) == NULL) || r;\r\n  r = ((glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glGetFragDataLocation\")) == NULL) || r;\r\n  r = ((glGetStringi = (PFNGLGETSTRINGIPROC)glewGetProcAddress((const GLubyte*)\"glGetStringi\")) == NULL) || r;\r\n  r = ((glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterIiv\")) == NULL) || r;\r\n  r = ((glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterIuiv\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbackVarying\")) == NULL) || r;\r\n  r = ((glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformuiv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribIiv\")) == NULL) || r;\r\n  r = ((glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribIuiv\")) == NULL) || r;\r\n  r = ((glIsEnabledi = (PFNGLISENABLEDIPROC)glewGetProcAddress((const GLubyte*)\"glIsEnabledi\")) == NULL) || r;\r\n  r = ((glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterIiv\")) == NULL) || r;\r\n  r = ((glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterIuiv\")) == NULL) || r;\r\n  r = ((glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackVaryings\")) == NULL) || r;\r\n  r = ((glUniform1ui = (PFNGLUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ui\")) == NULL) || r;\r\n  r = ((glUniform1uiv = (PFNGLUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1uiv\")) == NULL) || r;\r\n  r = ((glUniform2ui = (PFNGLUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ui\")) == NULL) || r;\r\n  r = ((glUniform2uiv = (PFNGLUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2uiv\")) == NULL) || r;\r\n  r = ((glUniform3ui = (PFNGLUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ui\")) == NULL) || r;\r\n  r = ((glUniform3uiv = (PFNGLUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3uiv\")) == NULL) || r;\r\n  r = ((glUniform4ui = (PFNGLUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ui\")) == NULL) || r;\r\n  r = ((glUniform4uiv = (PFNGLUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1i\")) == NULL) || r;\r\n  r = ((glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1iv\")) == NULL) || r;\r\n  r = ((glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1ui\")) == NULL) || r;\r\n  r = ((glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2i\")) == NULL) || r;\r\n  r = ((glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2iv\")) == NULL) || r;\r\n  r = ((glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2ui\")) == NULL) || r;\r\n  r = ((glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3i\")) == NULL) || r;\r\n  r = ((glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3iv\")) == NULL) || r;\r\n  r = ((glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3ui\")) == NULL) || r;\r\n  r = ((glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4bv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4i\")) == NULL) || r;\r\n  r = ((glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4iv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4sv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4ubv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4ui\")) == NULL) || r;\r\n  r = ((glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4usv\")) == NULL) || r;\r\n  r = ((glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribIPointer\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_3_0 */\r\n\r\n#ifdef GL_VERSION_3_1\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_3_1 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = _glewInit_GL_ARB_copy_buffer() || r;\r\n\r\n  r = ((glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstanced\")) == NULL) || r;\r\n  r = ((glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstanced\")) == NULL) || r;\r\n  r = ((glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)glewGetProcAddress((const GLubyte*)\"glPrimitiveRestartIndex\")) == NULL) || r;\r\n  r = ((glTexBuffer = (PFNGLTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glTexBuffer\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_3_1 */\r\n\r\n#ifdef GL_VERSION_3_2\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_3_2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = _glewInit_GL_ARB_draw_elements_base_vertex() || r;\r\n  r = _glewInit_GL_ARB_provoking_vertex() || r;\r\n  r = _glewInit_GL_ARB_sync() || r;\r\n  r = _glewInit_GL_ARB_texture_multisample() || r;\r\n\r\n  r = ((glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture\")) == NULL) || r;\r\n  r = ((glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferParameteri64v\")) == NULL) || r;\r\n  r = ((glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)glewGetProcAddress((const GLubyte*)\"glGetInteger64i_v\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_3_2 */\r\n\r\n#ifdef GL_VERSION_3_3\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_3_3 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribDivisor\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_3_3 */\r\n\r\n#ifdef GL_VERSION_4_0\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_4_0 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparatei\")) == NULL) || r;\r\n  r = ((glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationi\")) == NULL) || r;\r\n  r = ((glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparatei\")) == NULL) || r;\r\n  r = ((glBlendFunci = (PFNGLBLENDFUNCIPROC)glewGetProcAddress((const GLubyte*)\"glBlendFunci\")) == NULL) || r;\r\n  r = ((glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)glewGetProcAddress((const GLubyte*)\"glMinSampleShading\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_4_0 */\r\n\r\n#ifdef GL_VERSION_4_5\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_4_5 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)glewGetProcAddress((const GLubyte*)\"glGetGraphicsResetStatus\")) == NULL) || r;\r\n  r = ((glGetnCompressedTexImage = (PFNGLGETNCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetnCompressedTexImage\")) == NULL) || r;\r\n  r = ((glGetnTexImage = (PFNGLGETNTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetnTexImage\")) == NULL) || r;\r\n  r = ((glGetnUniformdv = (PFNGLGETNUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformdv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_4_5 */\r\n\r\n#ifdef GL_VERSION_4_6\r\n\r\nstatic GLboolean _glewInit_GL_VERSION_4_6 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectCount = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectCount\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectCount = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectCount\")) == NULL) || r;\r\n  r = ((glSpecializeShader = (PFNGLSPECIALIZESHADERPROC)glewGetProcAddress((const GLubyte*)\"glSpecializeShader\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_VERSION_4_6 */\r\n\r\n#ifdef GL_3DFX_tbuffer\r\n\r\nstatic GLboolean _glewInit_GL_3DFX_tbuffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)glewGetProcAddress((const GLubyte*)\"glTbufferMask3DFX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_3DFX_tbuffer */\r\n\r\n#ifdef GL_AMD_debug_output\r\n\r\nstatic GLboolean _glewInit_GL_AMD_debug_output ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageCallbackAMD\")) == NULL) || r;\r\n  r = ((glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageEnableAMD\")) == NULL) || r;\r\n  r = ((glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageInsertAMD\")) == NULL) || r;\r\n  r = ((glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetDebugMessageLogAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_debug_output */\r\n\r\n#ifdef GL_AMD_draw_buffers_blend\r\n\r\nstatic GLboolean _glewInit_GL_AMD_draw_buffers_blend ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationIndexedAMD\")) == NULL) || r;\r\n  r = ((glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparateIndexedAMD\")) == NULL) || r;\r\n  r = ((glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncIndexedAMD\")) == NULL) || r;\r\n  r = ((glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparateIndexedAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_draw_buffers_blend */\r\n\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n\r\nstatic GLboolean _glewInit_GL_AMD_framebuffer_sample_positions ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferSamplePositionsfvAMD = (PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferSamplePositionsfvAMD\")) == NULL) || r;\r\n  r = ((glGetFramebufferParameterfvAMD = (PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferParameterfvAMD\")) == NULL) || r;\r\n  r = ((glGetNamedFramebufferParameterfvAMD = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedFramebufferParameterfvAMD\")) == NULL) || r;\r\n  r = ((glNamedFramebufferSamplePositionsfvAMD = (PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferSamplePositionsfvAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_framebuffer_sample_positions */\r\n\r\n#ifdef GL_AMD_interleaved_elements\r\n\r\nstatic GLboolean _glewInit_GL_AMD_interleaved_elements ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribParameteriAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_interleaved_elements */\r\n\r\n#ifdef GL_AMD_multi_draw_indirect\r\n\r\nstatic GLboolean _glewInit_GL_AMD_multi_draw_indirect ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectAMD\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_multi_draw_indirect */\r\n\r\n#ifdef GL_AMD_name_gen_delete\r\n\r\nstatic GLboolean _glewInit_GL_AMD_name_gen_delete ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)glewGetProcAddress((const GLubyte*)\"glDeleteNamesAMD\")) == NULL) || r;\r\n  r = ((glGenNamesAMD = (PFNGLGENNAMESAMDPROC)glewGetProcAddress((const GLubyte*)\"glGenNamesAMD\")) == NULL) || r;\r\n  r = ((glIsNameAMD = (PFNGLISNAMEAMDPROC)glewGetProcAddress((const GLubyte*)\"glIsNameAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_name_gen_delete */\r\n\r\n#ifdef GL_AMD_occlusion_query_event\r\n\r\nstatic GLboolean _glewInit_GL_AMD_occlusion_query_event ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)glewGetProcAddress((const GLubyte*)\"glQueryObjectParameteruiAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_occlusion_query_event */\r\n\r\n#ifdef GL_AMD_performance_monitor\r\n\r\nstatic GLboolean _glewInit_GL_AMD_performance_monitor ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)\"glBeginPerfMonitorAMD\")) == NULL) || r;\r\n  r = ((glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)\"glDeletePerfMonitorsAMD\")) == NULL) || r;\r\n  r = ((glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)glewGetProcAddress((const GLubyte*)\"glEndPerfMonitorAMD\")) == NULL) || r;\r\n  r = ((glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)glewGetProcAddress((const GLubyte*)\"glGenPerfMonitorsAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorCounterDataAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorCounterInfoAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorCounterStringAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorCountersAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorGroupStringAMD\")) == NULL) || r;\r\n  r = ((glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfMonitorGroupsAMD\")) == NULL) || r;\r\n  r = ((glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)glewGetProcAddress((const GLubyte*)\"glSelectPerfMonitorCountersAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_performance_monitor */\r\n\r\n#ifdef GL_AMD_sample_positions\r\n\r\nstatic GLboolean _glewInit_GL_AMD_sample_positions ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)glewGetProcAddress((const GLubyte*)\"glSetMultisamplefvAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_sample_positions */\r\n\r\n#ifdef GL_AMD_sparse_texture\r\n\r\nstatic GLboolean _glewInit_GL_AMD_sparse_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageSparseAMD\")) == NULL) || r;\r\n  r = ((glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageSparseAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_sparse_texture */\r\n\r\n#ifdef GL_AMD_stencil_operation_extended\r\n\r\nstatic GLboolean _glewInit_GL_AMD_stencil_operation_extended ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)glewGetProcAddress((const GLubyte*)\"glStencilOpValueAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_stencil_operation_extended */\r\n\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n\r\nstatic GLboolean _glewInit_GL_AMD_vertex_shader_tessellator ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)glewGetProcAddress((const GLubyte*)\"glTessellationFactorAMD\")) == NULL) || r;\r\n  r = ((glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)glewGetProcAddress((const GLubyte*)\"glTessellationModeAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_AMD_vertex_shader_tessellator */\r\n\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n\r\nstatic GLboolean _glewInit_GL_ANGLE_framebuffer_blit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlitFramebufferANGLE = (PFNGLBLITFRAMEBUFFERANGLEPROC)glewGetProcAddress((const GLubyte*)\"glBlitFramebufferANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ANGLE_framebuffer_blit */\r\n\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n\r\nstatic GLboolean _glewInit_GL_ANGLE_framebuffer_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glRenderbufferStorageMultisampleANGLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisampleANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ANGLE_framebuffer_multisample */\r\n\r\n#ifdef GL_ANGLE_instanced_arrays\r\n\r\nstatic GLboolean _glewInit_GL_ANGLE_instanced_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedANGLE = (PFNGLDRAWARRAYSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedANGLE\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedANGLE = (PFNGLDRAWELEMENTSINSTANCEDANGLEPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedANGLE\")) == NULL) || r;\r\n  r = ((glVertexAttribDivisorANGLE = (PFNGLVERTEXATTRIBDIVISORANGLEPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribDivisorANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ANGLE_instanced_arrays */\r\n\r\n#ifdef GL_ANGLE_timer_query\r\n\r\nstatic GLboolean _glewInit_GL_ANGLE_timer_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginQueryANGLE = (PFNGLBEGINQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)\"glBeginQueryANGLE\")) == NULL) || r;\r\n  r = ((glDeleteQueriesANGLE = (PFNGLDELETEQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)\"glDeleteQueriesANGLE\")) == NULL) || r;\r\n  r = ((glEndQueryANGLE = (PFNGLENDQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)\"glEndQueryANGLE\")) == NULL) || r;\r\n  r = ((glGenQueriesANGLE = (PFNGLGENQUERIESANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGenQueriesANGLE\")) == NULL) || r;\r\n  r = ((glGetQueryObjecti64vANGLE = (PFNGLGETQUERYOBJECTI64VANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjecti64vANGLE\")) == NULL) || r;\r\n  r = ((glGetQueryObjectivANGLE = (PFNGLGETQUERYOBJECTIVANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectivANGLE\")) == NULL) || r;\r\n  r = ((glGetQueryObjectui64vANGLE = (PFNGLGETQUERYOBJECTUI64VANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectui64vANGLE\")) == NULL) || r;\r\n  r = ((glGetQueryObjectuivANGLE = (PFNGLGETQUERYOBJECTUIVANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectuivANGLE\")) == NULL) || r;\r\n  r = ((glGetQueryivANGLE = (PFNGLGETQUERYIVANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryivANGLE\")) == NULL) || r;\r\n  r = ((glIsQueryANGLE = (PFNGLISQUERYANGLEPROC)glewGetProcAddress((const GLubyte*)\"glIsQueryANGLE\")) == NULL) || r;\r\n  r = ((glQueryCounterANGLE = (PFNGLQUERYCOUNTERANGLEPROC)glewGetProcAddress((const GLubyte*)\"glQueryCounterANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ANGLE_timer_query */\r\n\r\n#ifdef GL_ANGLE_translated_shader_source\r\n\r\nstatic GLboolean _glewInit_GL_ANGLE_translated_shader_source ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetTranslatedShaderSourceANGLE = (PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)glewGetProcAddress((const GLubyte*)\"glGetTranslatedShaderSourceANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ANGLE_translated_shader_source */\r\n\r\n#ifdef GL_APPLE_copy_texture_levels\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_copy_texture_levels ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyTextureLevelsAPPLE = (PFNGLCOPYTEXTURELEVELSAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureLevelsAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_copy_texture_levels */\r\n\r\n#ifdef GL_APPLE_element_array\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_element_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementArrayAPPLE\")) == NULL) || r;\r\n  r = ((glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElementArrayAPPLE\")) == NULL) || r;\r\n  r = ((glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glElementPointerAPPLE\")) == NULL) || r;\r\n  r = ((glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementArrayAPPLE\")) == NULL) || r;\r\n  r = ((glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawRangeElementArrayAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_element_array */\r\n\r\n#ifdef GL_APPLE_fence\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_fence ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDeleteFencesAPPLE\")) == NULL) || r;\r\n  r = ((glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glFinishFenceAPPLE\")) == NULL) || r;\r\n  r = ((glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glFinishObjectAPPLE\")) == NULL) || r;\r\n  r = ((glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGenFencesAPPLE\")) == NULL) || r;\r\n  r = ((glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glIsFenceAPPLE\")) == NULL) || r;\r\n  r = ((glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glSetFenceAPPLE\")) == NULL) || r;\r\n  r = ((glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glTestFenceAPPLE\")) == NULL) || r;\r\n  r = ((glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glTestObjectAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_fence */\r\n\r\n#ifdef GL_APPLE_flush_buffer_range\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_flush_buffer_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glBufferParameteriAPPLE\")) == NULL) || r;\r\n  r = ((glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glFlushMappedBufferRangeAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_flush_buffer_range */\r\n\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_framebuffer_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glRenderbufferStorageMultisampleAPPLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisampleAPPLE\")) == NULL) || r;\r\n  r = ((glResolveMultisampleFramebufferAPPLE = (PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glResolveMultisampleFramebufferAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_framebuffer_multisample */\r\n\r\n#ifdef GL_APPLE_object_purgeable\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_object_purgeable ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectParameterivAPPLE\")) == NULL) || r;\r\n  r = ((glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glObjectPurgeableAPPLE\")) == NULL) || r;\r\n  r = ((glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glObjectUnpurgeableAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_object_purgeable */\r\n\r\n#ifdef GL_APPLE_sync\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClientWaitSyncAPPLE = (PFNGLCLIENTWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glClientWaitSyncAPPLE\")) == NULL) || r;\r\n  r = ((glDeleteSyncAPPLE = (PFNGLDELETESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDeleteSyncAPPLE\")) == NULL) || r;\r\n  r = ((glFenceSyncAPPLE = (PFNGLFENCESYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glFenceSyncAPPLE\")) == NULL) || r;\r\n  r = ((glGetInteger64vAPPLE = (PFNGLGETINTEGER64VAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGetInteger64vAPPLE\")) == NULL) || r;\r\n  r = ((glGetSyncivAPPLE = (PFNGLGETSYNCIVAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGetSyncivAPPLE\")) == NULL) || r;\r\n  r = ((glIsSyncAPPLE = (PFNGLISSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glIsSyncAPPLE\")) == NULL) || r;\r\n  r = ((glWaitSyncAPPLE = (PFNGLWAITSYNCAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glWaitSyncAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_sync */\r\n\r\n#ifdef GL_APPLE_texture_range\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_texture_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterPointervAPPLE\")) == NULL) || r;\r\n  r = ((glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glTextureRangeAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_texture_range */\r\n\r\n#ifdef GL_APPLE_vertex_array_object\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_array_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexArrayAPPLE\")) == NULL) || r;\r\n  r = ((glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDeleteVertexArraysAPPLE\")) == NULL) || r;\r\n  r = ((glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glGenVertexArraysAPPLE\")) == NULL) || r;\r\n  r = ((glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glIsVertexArrayAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_array_object */\r\n\r\n#ifdef GL_APPLE_vertex_array_range\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_array_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glFlushVertexArrayRangeAPPLE\")) == NULL) || r;\r\n  r = ((glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayParameteriAPPLE\")) == NULL) || r;\r\n  r = ((glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayRangeAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_array_range */\r\n\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n\r\nstatic GLboolean _glewInit_GL_APPLE_vertex_program_evaluators ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexAttribAPPLE\")) == NULL) || r;\r\n  r = ((glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexAttribAPPLE\")) == NULL) || r;\r\n  r = ((glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glIsVertexAttribEnabledAPPLE\")) == NULL) || r;\r\n  r = ((glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMapVertexAttrib1dAPPLE\")) == NULL) || r;\r\n  r = ((glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMapVertexAttrib1fAPPLE\")) == NULL) || r;\r\n  r = ((glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMapVertexAttrib2dAPPLE\")) == NULL) || r;\r\n  r = ((glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)glewGetProcAddress((const GLubyte*)\"glMapVertexAttrib2fAPPLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_program_evaluators */\r\n\r\n#ifdef GL_ARB_ES2_compatibility\r\n\r\nstatic GLboolean _glewInit_GL_ARB_ES2_compatibility ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearDepthf = (PFNGLCLEARDEPTHFPROC)glewGetProcAddress((const GLubyte*)\"glClearDepthf\")) == NULL) || r;\r\n  r = ((glDepthRangef = (PFNGLDEPTHRANGEFPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangef\")) == NULL) || r;\r\n  r = ((glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)glewGetProcAddress((const GLubyte*)\"glGetShaderPrecisionFormat\")) == NULL) || r;\r\n  r = ((glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)glewGetProcAddress((const GLubyte*)\"glReleaseShaderCompiler\")) == NULL) || r;\r\n  r = ((glShaderBinary = (PFNGLSHADERBINARYPROC)glewGetProcAddress((const GLubyte*)\"glShaderBinary\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_ES2_compatibility */\r\n\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n\r\nstatic GLboolean _glewInit_GL_ARB_ES3_1_compatibility ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)glewGetProcAddress((const GLubyte*)\"glMemoryBarrierByRegion\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_ES3_1_compatibility */\r\n\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n\r\nstatic GLboolean _glewInit_GL_ARB_ES3_2_compatibility ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)glewGetProcAddress((const GLubyte*)\"glPrimitiveBoundingBoxARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_ES3_2_compatibility */\r\n\r\n#ifdef GL_ARB_base_instance\r\n\r\nstatic GLboolean _glewInit_GL_ARB_base_instance ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedBaseInstance\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseInstance\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseVertexBaseInstance\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_base_instance */\r\n\r\n#ifdef GL_ARB_bindless_texture\r\n\r\nstatic GLboolean _glewInit_GL_ARB_bindless_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetImageHandleARB\")) == NULL) || r;\r\n  r = ((glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureHandleARB\")) == NULL) || r;\r\n  r = ((glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureSamplerHandleARB\")) == NULL) || r;\r\n  r = ((glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribLui64vARB\")) == NULL) || r;\r\n  r = ((glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glIsImageHandleResidentARB\")) == NULL) || r;\r\n  r = ((glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glIsTextureHandleResidentARB\")) == NULL) || r;\r\n  r = ((glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glMakeImageHandleNonResidentARB\")) == NULL) || r;\r\n  r = ((glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glMakeImageHandleResidentARB\")) == NULL) || r;\r\n  r = ((glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glMakeTextureHandleNonResidentARB\")) == NULL) || r;\r\n  r = ((glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)glewGetProcAddress((const GLubyte*)\"glMakeTextureHandleResidentARB\")) == NULL) || r;\r\n  r = ((glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformHandleui64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformHandleui64vARB\")) == NULL) || r;\r\n  r = ((glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniformHandleui64ARB\")) == NULL) || r;\r\n  r = ((glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniformHandleui64vARB\")) == NULL) || r;\r\n  r = ((glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1ui64ARB\")) == NULL) || r;\r\n  r = ((glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1ui64vARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_bindless_texture */\r\n\r\n#ifdef GL_ARB_blend_func_extended\r\n\r\nstatic GLboolean _glewInit_GL_ARB_blend_func_extended ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)glewGetProcAddress((const GLubyte*)\"glBindFragDataLocationIndexed\")) == NULL) || r;\r\n  r = ((glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)glewGetProcAddress((const GLubyte*)\"glGetFragDataIndex\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_blend_func_extended */\r\n\r\n#ifdef GL_ARB_buffer_storage\r\n\r\nstatic GLboolean _glewInit_GL_ARB_buffer_storage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferStorage = (PFNGLBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)\"glBufferStorage\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_buffer_storage */\r\n\r\n#ifdef GL_ARB_cl_event\r\n\r\nstatic GLboolean _glewInit_GL_ARB_cl_event ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)glewGetProcAddress((const GLubyte*)\"glCreateSyncFromCLeventARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_cl_event */\r\n\r\n#ifdef GL_ARB_clear_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_clear_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferData\")) == NULL) || r;\r\n  r = ((glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glClearBufferSubData\")) == NULL) || r;\r\n  r = ((glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedBufferDataEXT\")) == NULL) || r;\r\n  r = ((glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedBufferSubDataEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_clear_buffer_object */\r\n\r\n#ifdef GL_ARB_clear_texture\r\n\r\nstatic GLboolean _glewInit_GL_ARB_clear_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glClearTexImage\")) == NULL) || r;\r\n  r = ((glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glClearTexSubImage\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_clear_texture */\r\n\r\n#ifdef GL_ARB_clip_control\r\n\r\nstatic GLboolean _glewInit_GL_ARB_clip_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClipControl = (PFNGLCLIPCONTROLPROC)glewGetProcAddress((const GLubyte*)\"glClipControl\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_clip_control */\r\n\r\n#ifdef GL_ARB_color_buffer_float\r\n\r\nstatic GLboolean _glewInit_GL_ARB_color_buffer_float ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClampColorARB = (PFNGLCLAMPCOLORARBPROC)glewGetProcAddress((const GLubyte*)\"glClampColorARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_color_buffer_float */\r\n\r\n#ifdef GL_ARB_compute_shader\r\n\r\nstatic GLboolean _glewInit_GL_ARB_compute_shader ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)glewGetProcAddress((const GLubyte*)\"glDispatchCompute\")) == NULL) || r;\r\n  r = ((glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)glewGetProcAddress((const GLubyte*)\"glDispatchComputeIndirect\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_compute_shader */\r\n\r\n#ifdef GL_ARB_compute_variable_group_size\r\n\r\nstatic GLboolean _glewInit_GL_ARB_compute_variable_group_size ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)glewGetProcAddress((const GLubyte*)\"glDispatchComputeGroupSizeARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_compute_variable_group_size */\r\n\r\n#ifdef GL_ARB_copy_buffer\r\n\r\nstatic GLboolean _glewInit_GL_ARB_copy_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glCopyBufferSubData\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_copy_buffer */\r\n\r\n#ifdef GL_ARB_copy_image\r\n\r\nstatic GLboolean _glewInit_GL_ARB_copy_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glCopyImageSubData\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_copy_image */\r\n\r\n#ifdef GL_ARB_debug_output\r\n\r\nstatic GLboolean _glewInit_GL_ARB_debug_output ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageCallbackARB\")) == NULL) || r;\r\n  r = ((glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageControlARB\")) == NULL) || r;\r\n  r = ((glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageInsertARB\")) == NULL) || r;\r\n  r = ((glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)glewGetProcAddress((const GLubyte*)\"glGetDebugMessageLogARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_debug_output */\r\n\r\n#ifdef GL_ARB_direct_state_access\r\n\r\nstatic GLboolean _glewInit_GL_ARB_direct_state_access ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)glewGetProcAddress((const GLubyte*)\"glBindTextureUnit\")) == NULL) || r;\r\n  r = ((glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBlitNamedFramebuffer\")) == NULL) || r;\r\n  r = ((glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)\"glCheckNamedFramebufferStatus\")) == NULL) || r;\r\n  r = ((glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedBufferData\")) == NULL) || r;\r\n  r = ((glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedBufferSubData\")) == NULL) || r;\r\n  r = ((glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedFramebufferfi\")) == NULL) || r;\r\n  r = ((glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedFramebufferfv\")) == NULL) || r;\r\n  r = ((glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedFramebufferiv\")) == NULL) || r;\r\n  r = ((glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)\"glClearNamedFramebufferuiv\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage1D\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage2D\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage3D\")) == NULL) || r;\r\n  r = ((glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glCopyNamedBufferSubData\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage1D\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage2D\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage3D\")) == NULL) || r;\r\n  r = ((glCreateBuffers = (PFNGLCREATEBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glCreateBuffers\")) == NULL) || r;\r\n  r = ((glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glCreateFramebuffers\")) == NULL) || r;\r\n  r = ((glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)\"glCreateProgramPipelines\")) == NULL) || r;\r\n  r = ((glCreateQueries = (PFNGLCREATEQUERIESPROC)glewGetProcAddress((const GLubyte*)\"glCreateQueries\")) == NULL) || r;\r\n  r = ((glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glCreateRenderbuffers\")) == NULL) || r;\r\n  r = ((glCreateSamplers = (PFNGLCREATESAMPLERSPROC)glewGetProcAddress((const GLubyte*)\"glCreateSamplers\")) == NULL) || r;\r\n  r = ((glCreateTextures = (PFNGLCREATETEXTURESPROC)glewGetProcAddress((const GLubyte*)\"glCreateTextures\")) == NULL) || r;\r\n  r = ((glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)\"glCreateTransformFeedbacks\")) == NULL) || r;\r\n  r = ((glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)\"glCreateVertexArrays\")) == NULL) || r;\r\n  r = ((glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexArrayAttrib\")) == NULL) || r;\r\n  r = ((glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexArrayAttrib\")) == NULL) || r;\r\n  r = ((glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glFlushMappedNamedBufferRange\")) == NULL) || r;\r\n  r = ((glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)glewGetProcAddress((const GLubyte*)\"glGenerateTextureMipmap\")) == NULL) || r;\r\n  r = ((glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedTextureImage\")) == NULL) || r;\r\n  r = ((glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferParameteri64v\")) == NULL) || r;\r\n  r = ((glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferParameteriv\")) == NULL) || r;\r\n  r = ((glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferPointerv\")) == NULL) || r;\r\n  r = ((glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferSubData\")) == NULL) || r;\r\n  r = ((glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedFramebufferAttachmentParameteriv\")) == NULL) || r;\r\n  r = ((glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedFramebufferParameteriv\")) == NULL) || r;\r\n  r = ((glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedRenderbufferParameteriv\")) == NULL) || r;\r\n  r = ((glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryBufferObjecti64v\")) == NULL) || r;\r\n  r = ((glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryBufferObjectiv\")) == NULL) || r;\r\n  r = ((glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryBufferObjectui64v\")) == NULL) || r;\r\n  r = ((glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryBufferObjectuiv\")) == NULL) || r;\r\n  r = ((glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureImage\")) == NULL) || r;\r\n  r = ((glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureLevelParameterfv\")) == NULL) || r;\r\n  r = ((glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureLevelParameteriv\")) == NULL) || r;\r\n  r = ((glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterIiv\")) == NULL) || r;\r\n  r = ((glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterIuiv\")) == NULL) || r;\r\n  r = ((glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterfv\")) == NULL) || r;\r\n  r = ((glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameteriv\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbacki64_v\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbacki_v\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbackiv\")) == NULL) || r;\r\n  r = ((glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayIndexed64iv\")) == NULL) || r;\r\n  r = ((glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayIndexediv\")) == NULL) || r;\r\n  r = ((glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayiv\")) == NULL) || r;\r\n  r = ((glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateNamedFramebufferData\")) == NULL) || r;\r\n  r = ((glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateNamedFramebufferSubData\")) == NULL) || r;\r\n  r = ((glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glMapNamedBuffer\")) == NULL) || r;\r\n  r = ((glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glMapNamedBufferRange\")) == NULL) || r;\r\n  r = ((glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferData\")) == NULL) || r;\r\n  r = ((glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferStorage\")) == NULL) || r;\r\n  r = ((glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferSubData\")) == NULL) || r;\r\n  r = ((glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferDrawBuffer\")) == NULL) || r;\r\n  r = ((glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferDrawBuffers\")) == NULL) || r;\r\n  r = ((glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferParameteri\")) == NULL) || r;\r\n  r = ((glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferReadBuffer\")) == NULL) || r;\r\n  r = ((glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferRenderbuffer\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTexture\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTextureLayer\")) == NULL) || r;\r\n  r = ((glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)\"glNamedRenderbufferStorage\")) == NULL) || r;\r\n  r = ((glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glNamedRenderbufferStorageMultisample\")) == NULL) || r;\r\n  r = ((glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glTextureBuffer\")) == NULL) || r;\r\n  r = ((glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glTextureBufferRange\")) == NULL) || r;\r\n  r = ((glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterIiv\")) == NULL) || r;\r\n  r = ((glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterIuiv\")) == NULL) || r;\r\n  r = ((glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterf\")) == NULL) || r;\r\n  r = ((glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterfv\")) == NULL) || r;\r\n  r = ((glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameteri\")) == NULL) || r;\r\n  r = ((glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameteriv\")) == NULL) || r;\r\n  r = ((glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage1D\")) == NULL) || r;\r\n  r = ((glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage2D\")) == NULL) || r;\r\n  r = ((glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage2DMultisample\")) == NULL) || r;\r\n  r = ((glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage3D\")) == NULL) || r;\r\n  r = ((glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage3DMultisample\")) == NULL) || r;\r\n  r = ((glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage1D\")) == NULL) || r;\r\n  r = ((glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage2D\")) == NULL) || r;\r\n  r = ((glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage3D\")) == NULL) || r;\r\n  r = ((glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackBufferBase\")) == NULL) || r;\r\n  r = ((glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackBufferRange\")) == NULL) || r;\r\n  r = ((glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glUnmapNamedBuffer\")) == NULL) || r;\r\n  r = ((glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayAttribBinding\")) == NULL) || r;\r\n  r = ((glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayAttribFormat\")) == NULL) || r;\r\n  r = ((glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayAttribIFormat\")) == NULL) || r;\r\n  r = ((glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayAttribLFormat\")) == NULL) || r;\r\n  r = ((glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayBindingDivisor\")) == NULL) || r;\r\n  r = ((glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayElementBuffer\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexBuffer\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexBuffers\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_direct_state_access */\r\n\r\n#ifdef GL_ARB_draw_buffers\r\n\r\nstatic GLboolean _glewInit_GL_ARB_draw_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffersARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_draw_buffers */\r\n\r\n#ifdef GL_ARB_draw_buffers_blend\r\n\r\nstatic GLboolean _glewInit_GL_ARB_draw_buffers_blend ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparateiARB\")) == NULL) || r;\r\n  r = ((glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationiARB\")) == NULL) || r;\r\n  r = ((glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparateiARB\")) == NULL) || r;\r\n  r = ((glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)glewGetProcAddress((const GLubyte*)\"glBlendFunciARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_draw_buffers_blend */\r\n\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n\r\nstatic GLboolean _glewInit_GL_ARB_draw_elements_base_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsBaseVertex\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseVertex\")) == NULL) || r;\r\n  r = ((glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElementsBaseVertex\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsBaseVertex\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_draw_elements_base_vertex */\r\n\r\n#ifdef GL_ARB_draw_indirect\r\n\r\nstatic GLboolean _glewInit_GL_ARB_draw_indirect ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysIndirect\")) == NULL) || r;\r\n  r = ((glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsIndirect\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_draw_indirect */\r\n\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n\r\nstatic GLboolean _glewInit_GL_ARB_framebuffer_no_attachments ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferParameteri\")) == NULL) || r;\r\n  r = ((glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferParameteriv\")) == NULL) || r;\r\n  r = ((glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedFramebufferParameterivEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferParameteriEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_framebuffer_no_attachments */\r\n\r\n#ifdef GL_ARB_framebuffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_framebuffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBindFramebuffer\")) == NULL) || r;\r\n  r = ((glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBindRenderbuffer\")) == NULL) || r;\r\n  r = ((glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBlitFramebuffer\")) == NULL) || r;\r\n  r = ((glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)\"glCheckFramebufferStatus\")) == NULL) || r;\r\n  r = ((glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteFramebuffers\")) == NULL) || r;\r\n  r = ((glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteRenderbuffers\")) == NULL) || r;\r\n  r = ((glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferRenderbuffer\")) == NULL) || r;\r\n  r = ((glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture1D\")) == NULL) || r;\r\n  r = ((glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture2D\")) == NULL) || r;\r\n  r = ((glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture3D\")) == NULL) || r;\r\n  r = ((glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureLayer\")) == NULL) || r;\r\n  r = ((glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glGenFramebuffers\")) == NULL) || r;\r\n  r = ((glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glGenRenderbuffers\")) == NULL) || r;\r\n  r = ((glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)glewGetProcAddress((const GLubyte*)\"glGenerateMipmap\")) == NULL) || r;\r\n  r = ((glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferAttachmentParameteriv\")) == NULL) || r;\r\n  r = ((glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetRenderbufferParameteriv\")) == NULL) || r;\r\n  r = ((glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glIsFramebuffer\")) == NULL) || r;\r\n  r = ((glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glIsRenderbuffer\")) == NULL) || r;\r\n  r = ((glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorage\")) == NULL) || r;\r\n  r = ((glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisample\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_framebuffer_object */\r\n\r\n#ifdef GL_ARB_geometry_shader4\r\n\r\nstatic GLboolean _glewInit_GL_ARB_geometry_shader4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureARB\")) == NULL) || r;\r\n  r = ((glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureFaceARB\")) == NULL) || r;\r\n  r = ((glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureLayerARB\")) == NULL) || r;\r\n  r = ((glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameteriARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_geometry_shader4 */\r\n\r\n#ifdef GL_ARB_get_program_binary\r\n\r\nstatic GLboolean _glewInit_GL_ARB_get_program_binary ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramBinary\")) == NULL) || r;\r\n  r = ((glProgramBinary = (PFNGLPROGRAMBINARYPROC)glewGetProcAddress((const GLubyte*)\"glProgramBinary\")) == NULL) || r;\r\n  r = ((glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameteri\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_get_program_binary */\r\n\r\n#ifdef GL_ARB_get_texture_sub_image\r\n\r\nstatic GLboolean _glewInit_GL_ARB_get_texture_sub_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedTextureSubImage\")) == NULL) || r;\r\n  r = ((glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureSubImage\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_get_texture_sub_image */\r\n\r\n#ifdef GL_ARB_gl_spirv\r\n\r\nstatic GLboolean _glewInit_GL_ARB_gl_spirv ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)glewGetProcAddress((const GLubyte*)\"glSpecializeShaderARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_gl_spirv */\r\n\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n\r\nstatic GLboolean _glewInit_GL_ARB_gpu_shader_fp64 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetUniformdv = (PFNGLGETUNIFORMDVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformdv\")) == NULL) || r;\r\n  r = ((glUniform1d = (PFNGLUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)\"glUniform1d\")) == NULL) || r;\r\n  r = ((glUniform1dv = (PFNGLUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1dv\")) == NULL) || r;\r\n  r = ((glUniform2d = (PFNGLUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)\"glUniform2d\")) == NULL) || r;\r\n  r = ((glUniform2dv = (PFNGLUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2dv\")) == NULL) || r;\r\n  r = ((glUniform3d = (PFNGLUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)\"glUniform3d\")) == NULL) || r;\r\n  r = ((glUniform3dv = (PFNGLUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3dv\")) == NULL) || r;\r\n  r = ((glUniform4d = (PFNGLUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)\"glUniform4d\")) == NULL) || r;\r\n  r = ((glUniform4dv = (PFNGLUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x3dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x4dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x2dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x4dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x2dv\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x3dv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_gpu_shader_fp64 */\r\n\r\n#ifdef GL_ARB_gpu_shader_int64\r\n\r\nstatic GLboolean _glewInit_GL_ARB_gpu_shader_int64 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformi64vARB\")) == NULL) || r;\r\n  r = ((glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformui64vARB\")) == NULL) || r;\r\n  r = ((glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformi64vARB\")) == NULL) || r;\r\n  r = ((glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformui64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1i64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1i64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ui64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ui64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2i64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2i64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ui64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ui64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3i64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3i64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ui64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ui64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4i64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4i64vARB\")) == NULL) || r;\r\n  r = ((glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ui64ARB\")) == NULL) || r;\r\n  r = ((glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ui64vARB\")) == NULL) || r;\r\n  r = ((glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1i64ARB\")) == NULL) || r;\r\n  r = ((glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1i64vARB\")) == NULL) || r;\r\n  r = ((glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ui64ARB\")) == NULL) || r;\r\n  r = ((glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ui64vARB\")) == NULL) || r;\r\n  r = ((glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2i64ARB\")) == NULL) || r;\r\n  r = ((glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2i64vARB\")) == NULL) || r;\r\n  r = ((glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ui64ARB\")) == NULL) || r;\r\n  r = ((glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ui64vARB\")) == NULL) || r;\r\n  r = ((glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3i64ARB\")) == NULL) || r;\r\n  r = ((glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3i64vARB\")) == NULL) || r;\r\n  r = ((glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ui64ARB\")) == NULL) || r;\r\n  r = ((glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ui64vARB\")) == NULL) || r;\r\n  r = ((glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4i64ARB\")) == NULL) || r;\r\n  r = ((glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4i64vARB\")) == NULL) || r;\r\n  r = ((glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ui64ARB\")) == NULL) || r;\r\n  r = ((glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ui64vARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_gpu_shader_int64 */\r\n\r\n#ifdef GL_ARB_imaging\r\n\r\nstatic GLboolean _glewInit_GL_ARB_imaging ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquation\")) == NULL) || r;\r\n  r = ((glColorSubTable = (PFNGLCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)\"glColorSubTable\")) == NULL) || r;\r\n  r = ((glColorTable = (PFNGLCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)\"glColorTable\")) == NULL) || r;\r\n  r = ((glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glColorTableParameterfv\")) == NULL) || r;\r\n  r = ((glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glColorTableParameteriv\")) == NULL) || r;\r\n  r = ((glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionFilter1D\")) == NULL) || r;\r\n  r = ((glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionFilter2D\")) == NULL) || r;\r\n  r = ((glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameterf\")) == NULL) || r;\r\n  r = ((glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameterfv\")) == NULL) || r;\r\n  r = ((glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameteri\")) == NULL) || r;\r\n  r = ((glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameteriv\")) == NULL) || r;\r\n  r = ((glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)\"glCopyColorSubTable\")) == NULL) || r;\r\n  r = ((glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)\"glCopyColorTable\")) == NULL) || r;\r\n  r = ((glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)\"glCopyConvolutionFilter1D\")) == NULL) || r;\r\n  r = ((glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)\"glCopyConvolutionFilter2D\")) == NULL) || r;\r\n  r = ((glGetColorTable = (PFNGLGETCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTable\")) == NULL) || r;\r\n  r = ((glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameterfv\")) == NULL) || r;\r\n  r = ((glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameteriv\")) == NULL) || r;\r\n  r = ((glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionFilter\")) == NULL) || r;\r\n  r = ((glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionParameterfv\")) == NULL) || r;\r\n  r = ((glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionParameteriv\")) == NULL) || r;\r\n  r = ((glGetHistogram = (PFNGLGETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogram\")) == NULL) || r;\r\n  r = ((glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogramParameterfv\")) == NULL) || r;\r\n  r = ((glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogramParameteriv\")) == NULL) || r;\r\n  r = ((glGetMinmax = (PFNGLGETMINMAXPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmax\")) == NULL) || r;\r\n  r = ((glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmaxParameterfv\")) == NULL) || r;\r\n  r = ((glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmaxParameteriv\")) == NULL) || r;\r\n  r = ((glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)glewGetProcAddress((const GLubyte*)\"glGetSeparableFilter\")) == NULL) || r;\r\n  r = ((glHistogram = (PFNGLHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)\"glHistogram\")) == NULL) || r;\r\n  r = ((glMinmax = (PFNGLMINMAXPROC)glewGetProcAddress((const GLubyte*)\"glMinmax\")) == NULL) || r;\r\n  r = ((glResetHistogram = (PFNGLRESETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)\"glResetHistogram\")) == NULL) || r;\r\n  r = ((glResetMinmax = (PFNGLRESETMINMAXPROC)glewGetProcAddress((const GLubyte*)\"glResetMinmax\")) == NULL) || r;\r\n  r = ((glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)glewGetProcAddress((const GLubyte*)\"glSeparableFilter2D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_imaging */\r\n\r\n#ifdef GL_ARB_indirect_parameters\r\n\r\nstatic GLboolean _glewInit_GL_ARB_indirect_parameters ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectCountARB\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectCountARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_indirect_parameters */\r\n\r\n#ifdef GL_ARB_instanced_arrays\r\n\r\nstatic GLboolean _glewInit_GL_ARB_instanced_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedARB\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedARB\")) == NULL) || r;\r\n  r = ((glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribDivisorARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_instanced_arrays */\r\n\r\n#ifdef GL_ARB_internalformat_query\r\n\r\nstatic GLboolean _glewInit_GL_ARB_internalformat_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)glewGetProcAddress((const GLubyte*)\"glGetInternalformativ\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_internalformat_query */\r\n\r\n#ifdef GL_ARB_internalformat_query2\r\n\r\nstatic GLboolean _glewInit_GL_ARB_internalformat_query2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetInternalformati64v\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_internalformat_query2 */\r\n\r\n#ifdef GL_ARB_invalidate_subdata\r\n\r\nstatic GLboolean _glewInit_GL_ARB_invalidate_subdata ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateBufferData\")) == NULL) || r;\r\n  r = ((glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateBufferSubData\")) == NULL) || r;\r\n  r = ((glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateFramebuffer\")) == NULL) || r;\r\n  r = ((glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateSubFramebuffer\")) == NULL) || r;\r\n  r = ((glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateTexImage\")) == NULL) || r;\r\n  r = ((glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)glewGetProcAddress((const GLubyte*)\"glInvalidateTexSubImage\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_invalidate_subdata */\r\n\r\n#ifdef GL_ARB_map_buffer_range\r\n\r\nstatic GLboolean _glewInit_GL_ARB_map_buffer_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glFlushMappedBufferRange\")) == NULL) || r;\r\n  r = ((glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glMapBufferRange\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_map_buffer_range */\r\n\r\n#ifdef GL_ARB_matrix_palette\r\n\r\nstatic GLboolean _glewInit_GL_ARB_matrix_palette ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)glewGetProcAddress((const GLubyte*)\"glCurrentPaletteMatrixARB\")) == NULL) || r;\r\n  r = ((glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)glewGetProcAddress((const GLubyte*)\"glMatrixIndexPointerARB\")) == NULL) || r;\r\n  r = ((glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)glewGetProcAddress((const GLubyte*)\"glMatrixIndexubvARB\")) == NULL) || r;\r\n  r = ((glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glMatrixIndexuivARB\")) == NULL) || r;\r\n  r = ((glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)glewGetProcAddress((const GLubyte*)\"glMatrixIndexusvARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_matrix_palette */\r\n\r\n#ifdef GL_ARB_multi_bind\r\n\r\nstatic GLboolean _glewInit_GL_ARB_multi_bind ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)glewGetProcAddress((const GLubyte*)\"glBindBuffersBase\")) == NULL) || r;\r\n  r = ((glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)glewGetProcAddress((const GLubyte*)\"glBindBuffersRange\")) == NULL) || r;\r\n  r = ((glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)glewGetProcAddress((const GLubyte*)\"glBindImageTextures\")) == NULL) || r;\r\n  r = ((glBindSamplers = (PFNGLBINDSAMPLERSPROC)glewGetProcAddress((const GLubyte*)\"glBindSamplers\")) == NULL) || r;\r\n  r = ((glBindTextures = (PFNGLBINDTEXTURESPROC)glewGetProcAddress((const GLubyte*)\"glBindTextures\")) == NULL) || r;\r\n  r = ((glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexBuffers\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_multi_bind */\r\n\r\n#ifdef GL_ARB_multi_draw_indirect\r\n\r\nstatic GLboolean _glewInit_GL_ARB_multi_draw_indirect ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirect\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirect\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_multi_draw_indirect */\r\n\r\n#ifdef GL_ARB_multisample\r\n\r\nstatic GLboolean _glewInit_GL_ARB_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)glewGetProcAddress((const GLubyte*)\"glSampleCoverageARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_multisample */\r\n\r\n#ifdef GL_ARB_multitexture\r\n\r\nstatic GLboolean _glewInit_GL_ARB_multitexture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)\"glActiveTextureARB\")) == NULL) || r;\r\n  r = ((glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)\"glClientActiveTextureARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1dARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1dvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1fARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1fvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1iARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1ivARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1sARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1svARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2dARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2dvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2fARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2fvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2iARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2ivARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2sARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2svARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3dARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3dvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3fARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3fvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3iARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3ivARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3sARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3svARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4dARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4dvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4fARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4fvARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4iARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4ivARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4sARB\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4svARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_multitexture */\r\n\r\n#ifdef GL_ARB_occlusion_query\r\n\r\nstatic GLboolean _glewInit_GL_ARB_occlusion_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)glewGetProcAddress((const GLubyte*)\"glBeginQueryARB\")) == NULL) || r;\r\n  r = ((glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)glewGetProcAddress((const GLubyte*)\"glDeleteQueriesARB\")) == NULL) || r;\r\n  r = ((glEndQueryARB = (PFNGLENDQUERYARBPROC)glewGetProcAddress((const GLubyte*)\"glEndQueryARB\")) == NULL) || r;\r\n  r = ((glGenQueriesARB = (PFNGLGENQUERIESARBPROC)glewGetProcAddress((const GLubyte*)\"glGenQueriesARB\")) == NULL) || r;\r\n  r = ((glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectivARB\")) == NULL) || r;\r\n  r = ((glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectuivARB\")) == NULL) || r;\r\n  r = ((glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryivARB\")) == NULL) || r;\r\n  r = ((glIsQueryARB = (PFNGLISQUERYARBPROC)glewGetProcAddress((const GLubyte*)\"glIsQueryARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_occlusion_query */\r\n\r\n#ifdef GL_ARB_parallel_shader_compile\r\n\r\nstatic GLboolean _glewInit_GL_ARB_parallel_shader_compile ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)glewGetProcAddress((const GLubyte*)\"glMaxShaderCompilerThreadsARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_parallel_shader_compile */\r\n\r\n#ifdef GL_ARB_point_parameters\r\n\r\nstatic GLboolean _glewInit_GL_ARB_point_parameters ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterfARB\")) == NULL) || r;\r\n  r = ((glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterfvARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_point_parameters */\r\n\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n\r\nstatic GLboolean _glewInit_GL_ARB_polygon_offset_clamp ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)glewGetProcAddress((const GLubyte*)\"glPolygonOffsetClamp\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_polygon_offset_clamp */\r\n\r\n#ifdef GL_ARB_program_interface_query\r\n\r\nstatic GLboolean _glewInit_GL_ARB_program_interface_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramInterfaceiv\")) == NULL) || r;\r\n  r = ((glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceIndex\")) == NULL) || r;\r\n  r = ((glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceLocation\")) == NULL) || r;\r\n  r = ((glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceLocationIndex\")) == NULL) || r;\r\n  r = ((glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceName\")) == NULL) || r;\r\n  r = ((glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceiv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_program_interface_query */\r\n\r\n#ifdef GL_ARB_provoking_vertex\r\n\r\nstatic GLboolean _glewInit_GL_ARB_provoking_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)glewGetProcAddress((const GLubyte*)\"glProvokingVertex\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_provoking_vertex */\r\n\r\n#ifdef GL_ARB_robustness\r\n\r\nstatic GLboolean _glewInit_GL_ARB_robustness ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)glewGetProcAddress((const GLubyte*)\"glGetGraphicsResetStatusARB\")) == NULL) || r;\r\n  r = ((glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnColorTableARB\")) == NULL) || r;\r\n  r = ((glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnCompressedTexImageARB\")) == NULL) || r;\r\n  r = ((glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnConvolutionFilterARB\")) == NULL) || r;\r\n  r = ((glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnHistogramARB\")) == NULL) || r;\r\n  r = ((glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnMapdvARB\")) == NULL) || r;\r\n  r = ((glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnMapfvARB\")) == NULL) || r;\r\n  r = ((glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnMapivARB\")) == NULL) || r;\r\n  r = ((glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnMinmaxARB\")) == NULL) || r;\r\n  r = ((glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnPixelMapfvARB\")) == NULL) || r;\r\n  r = ((glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnPixelMapuivARB\")) == NULL) || r;\r\n  r = ((glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnPixelMapusvARB\")) == NULL) || r;\r\n  r = ((glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnPolygonStippleARB\")) == NULL) || r;\r\n  r = ((glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnSeparableFilterARB\")) == NULL) || r;\r\n  r = ((glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnTexImageARB\")) == NULL) || r;\r\n  r = ((glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformdvARB\")) == NULL) || r;\r\n  r = ((glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformfvARB\")) == NULL) || r;\r\n  r = ((glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformivARB\")) == NULL) || r;\r\n  r = ((glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformuivARB\")) == NULL) || r;\r\n  r = ((glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)glewGetProcAddress((const GLubyte*)\"glReadnPixelsARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_robustness */\r\n\r\n#ifdef GL_ARB_sample_locations\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sample_locations ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferSampleLocationsfvARB\")) == NULL) || r;\r\n  r = ((glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferSampleLocationsfvARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sample_locations */\r\n\r\n#ifdef GL_ARB_sample_shading\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sample_shading ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)glewGetProcAddress((const GLubyte*)\"glMinSampleShadingARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sample_shading */\r\n\r\n#ifdef GL_ARB_sampler_objects\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sampler_objects ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindSampler = (PFNGLBINDSAMPLERPROC)glewGetProcAddress((const GLubyte*)\"glBindSampler\")) == NULL) || r;\r\n  r = ((glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteSamplers\")) == NULL) || r;\r\n  r = ((glGenSamplers = (PFNGLGENSAMPLERSPROC)glewGetProcAddress((const GLubyte*)\"glGenSamplers\")) == NULL) || r;\r\n  r = ((glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glGetSamplerParameterIiv\")) == NULL) || r;\r\n  r = ((glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetSamplerParameterIuiv\")) == NULL) || r;\r\n  r = ((glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glGetSamplerParameterfv\")) == NULL) || r;\r\n  r = ((glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetSamplerParameteriv\")) == NULL) || r;\r\n  r = ((glIsSampler = (PFNGLISSAMPLERPROC)glewGetProcAddress((const GLubyte*)\"glIsSampler\")) == NULL) || r;\r\n  r = ((glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameterIiv\")) == NULL) || r;\r\n  r = ((glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameterIuiv\")) == NULL) || r;\r\n  r = ((glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameterf\")) == NULL) || r;\r\n  r = ((glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameterfv\")) == NULL) || r;\r\n  r = ((glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameteri\")) == NULL) || r;\r\n  r = ((glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)\"glSamplerParameteriv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sampler_objects */\r\n\r\n#ifdef GL_ARB_separate_shader_objects\r\n\r\nstatic GLboolean _glewInit_GL_ARB_separate_shader_objects ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)glewGetProcAddress((const GLubyte*)\"glActiveShaderProgram\")) == NULL) || r;\r\n  r = ((glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)\"glBindProgramPipeline\")) == NULL) || r;\r\n  r = ((glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)glewGetProcAddress((const GLubyte*)\"glCreateShaderProgramv\")) == NULL) || r;\r\n  r = ((glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)\"glDeleteProgramPipelines\")) == NULL) || r;\r\n  r = ((glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)glewGetProcAddress((const GLubyte*)\"glGenProgramPipelines\")) == NULL) || r;\r\n  r = ((glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramPipelineInfoLog\")) == NULL) || r;\r\n  r = ((glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramPipelineiv\")) == NULL) || r;\r\n  r = ((glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)\"glIsProgramPipeline\")) == NULL) || r;\r\n  r = ((glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1d\")) == NULL) || r;\r\n  r = ((glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1dv\")) == NULL) || r;\r\n  r = ((glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1f\")) == NULL) || r;\r\n  r = ((glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1fv\")) == NULL) || r;\r\n  r = ((glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1i\")) == NULL) || r;\r\n  r = ((glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1iv\")) == NULL) || r;\r\n  r = ((glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ui\")) == NULL) || r;\r\n  r = ((glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1uiv\")) == NULL) || r;\r\n  r = ((glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2d\")) == NULL) || r;\r\n  r = ((glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2dv\")) == NULL) || r;\r\n  r = ((glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2f\")) == NULL) || r;\r\n  r = ((glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2fv\")) == NULL) || r;\r\n  r = ((glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2i\")) == NULL) || r;\r\n  r = ((glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2iv\")) == NULL) || r;\r\n  r = ((glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ui\")) == NULL) || r;\r\n  r = ((glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2uiv\")) == NULL) || r;\r\n  r = ((glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3d\")) == NULL) || r;\r\n  r = ((glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3dv\")) == NULL) || r;\r\n  r = ((glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3f\")) == NULL) || r;\r\n  r = ((glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3fv\")) == NULL) || r;\r\n  r = ((glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3i\")) == NULL) || r;\r\n  r = ((glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3iv\")) == NULL) || r;\r\n  r = ((glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ui\")) == NULL) || r;\r\n  r = ((glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3uiv\")) == NULL) || r;\r\n  r = ((glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4d\")) == NULL) || r;\r\n  r = ((glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4dv\")) == NULL) || r;\r\n  r = ((glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4f\")) == NULL) || r;\r\n  r = ((glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4fv\")) == NULL) || r;\r\n  r = ((glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4i\")) == NULL) || r;\r\n  r = ((glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4iv\")) == NULL) || r;\r\n  r = ((glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ui\")) == NULL) || r;\r\n  r = ((glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4uiv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x3dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x3fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x4dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x4fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x2dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x2fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x4dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x4fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x2dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x2fv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x3dv\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x3fv\")) == NULL) || r;\r\n  r = ((glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)glewGetProcAddress((const GLubyte*)\"glUseProgramStages\")) == NULL) || r;\r\n  r = ((glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)glewGetProcAddress((const GLubyte*)\"glValidateProgramPipeline\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_separate_shader_objects */\r\n\r\n#ifdef GL_ARB_shader_atomic_counters\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shader_atomic_counters ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveAtomicCounterBufferiv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shader_atomic_counters */\r\n\r\n#ifdef GL_ARB_shader_image_load_store\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shader_image_load_store ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)glewGetProcAddress((const GLubyte*)\"glBindImageTexture\")) == NULL) || r;\r\n  r = ((glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)glewGetProcAddress((const GLubyte*)\"glMemoryBarrier\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shader_image_load_store */\r\n\r\n#ifdef GL_ARB_shader_objects\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shader_objects ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glAttachObjectARB\")) == NULL) || r;\r\n  r = ((glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)glewGetProcAddress((const GLubyte*)\"glCompileShaderARB\")) == NULL) || r;\r\n  r = ((glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glCreateProgramObjectARB\")) == NULL) || r;\r\n  r = ((glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glCreateShaderObjectARB\")) == NULL) || r;\r\n  r = ((glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glDeleteObjectARB\")) == NULL) || r;\r\n  r = ((glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glDetachObjectARB\")) == NULL) || r;\r\n  r = ((glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniformARB\")) == NULL) || r;\r\n  r = ((glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)glewGetProcAddress((const GLubyte*)\"glGetAttachedObjectsARB\")) == NULL) || r;\r\n  r = ((glGetHandleARB = (PFNGLGETHANDLEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetHandleARB\")) == NULL) || r;\r\n  r = ((glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)glewGetProcAddress((const GLubyte*)\"glGetInfoLogARB\")) == NULL) || r;\r\n  r = ((glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectParameterfvARB\")) == NULL) || r;\r\n  r = ((glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectParameterivARB\")) == NULL) || r;\r\n  r = ((glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetShaderSourceARB\")) == NULL) || r;\r\n  r = ((glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformLocationARB\")) == NULL) || r;\r\n  r = ((glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformfvARB\")) == NULL) || r;\r\n  r = ((glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformivARB\")) == NULL) || r;\r\n  r = ((glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)\"glLinkProgramARB\")) == NULL) || r;\r\n  r = ((glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)\"glShaderSourceARB\")) == NULL) || r;\r\n  r = ((glUniform1fARB = (PFNGLUNIFORM1FARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1fARB\")) == NULL) || r;\r\n  r = ((glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1fvARB\")) == NULL) || r;\r\n  r = ((glUniform1iARB = (PFNGLUNIFORM1IARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1iARB\")) == NULL) || r;\r\n  r = ((glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ivARB\")) == NULL) || r;\r\n  r = ((glUniform2fARB = (PFNGLUNIFORM2FARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2fARB\")) == NULL) || r;\r\n  r = ((glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2fvARB\")) == NULL) || r;\r\n  r = ((glUniform2iARB = (PFNGLUNIFORM2IARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2iARB\")) == NULL) || r;\r\n  r = ((glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ivARB\")) == NULL) || r;\r\n  r = ((glUniform3fARB = (PFNGLUNIFORM3FARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3fARB\")) == NULL) || r;\r\n  r = ((glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3fvARB\")) == NULL) || r;\r\n  r = ((glUniform3iARB = (PFNGLUNIFORM3IARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3iARB\")) == NULL) || r;\r\n  r = ((glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ivARB\")) == NULL) || r;\r\n  r = ((glUniform4fARB = (PFNGLUNIFORM4FARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4fARB\")) == NULL) || r;\r\n  r = ((glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4fvARB\")) == NULL) || r;\r\n  r = ((glUniform4iARB = (PFNGLUNIFORM4IARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4iARB\")) == NULL) || r;\r\n  r = ((glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ivARB\")) == NULL) || r;\r\n  r = ((glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2fvARB\")) == NULL) || r;\r\n  r = ((glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3fvARB\")) == NULL) || r;\r\n  r = ((glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4fvARB\")) == NULL) || r;\r\n  r = ((glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)\"glUseProgramObjectARB\")) == NULL) || r;\r\n  r = ((glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)\"glValidateProgramARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shader_objects */\r\n\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shader_storage_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)\"glShaderStorageBlockBinding\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shader_storage_buffer_object */\r\n\r\n#ifdef GL_ARB_shader_subroutine\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shader_subroutine ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveSubroutineName\")) == NULL) || r;\r\n  r = ((glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveSubroutineUniformName\")) == NULL) || r;\r\n  r = ((glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveSubroutineUniformiv\")) == NULL) || r;\r\n  r = ((glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramStageiv\")) == NULL) || r;\r\n  r = ((glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)glewGetProcAddress((const GLubyte*)\"glGetSubroutineIndex\")) == NULL) || r;\r\n  r = ((glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)\"glGetSubroutineUniformLocation\")) == NULL) || r;\r\n  r = ((glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformSubroutineuiv\")) == NULL) || r;\r\n  r = ((glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)glewGetProcAddress((const GLubyte*)\"glUniformSubroutinesuiv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shader_subroutine */\r\n\r\n#ifdef GL_ARB_shading_language_include\r\n\r\nstatic GLboolean _glewInit_GL_ARB_shading_language_include ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)glewGetProcAddress((const GLubyte*)\"glCompileShaderIncludeARB\")) == NULL) || r;\r\n  r = ((glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glDeleteNamedStringARB\")) == NULL) || r;\r\n  r = ((glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedStringARB\")) == NULL) || r;\r\n  r = ((glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedStringivARB\")) == NULL) || r;\r\n  r = ((glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glIsNamedStringARB\")) == NULL) || r;\r\n  r = ((glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glNamedStringARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_shading_language_include */\r\n\r\n#ifdef GL_ARB_sparse_buffer\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sparse_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)\"glBufferPageCommitmentARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sparse_buffer */\r\n\r\n#ifdef GL_ARB_sparse_texture\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sparse_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)glewGetProcAddress((const GLubyte*)\"glTexPageCommitmentARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sparse_texture */\r\n\r\n#ifdef GL_ARB_sync\r\n\r\nstatic GLboolean _glewInit_GL_ARB_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)\"glClientWaitSync\")) == NULL) || r;\r\n  r = ((glDeleteSync = (PFNGLDELETESYNCPROC)glewGetProcAddress((const GLubyte*)\"glDeleteSync\")) == NULL) || r;\r\n  r = ((glFenceSync = (PFNGLFENCESYNCPROC)glewGetProcAddress((const GLubyte*)\"glFenceSync\")) == NULL) || r;\r\n  r = ((glGetInteger64v = (PFNGLGETINTEGER64VPROC)glewGetProcAddress((const GLubyte*)\"glGetInteger64v\")) == NULL) || r;\r\n  r = ((glGetSynciv = (PFNGLGETSYNCIVPROC)glewGetProcAddress((const GLubyte*)\"glGetSynciv\")) == NULL) || r;\r\n  r = ((glIsSync = (PFNGLISSYNCPROC)glewGetProcAddress((const GLubyte*)\"glIsSync\")) == NULL) || r;\r\n  r = ((glWaitSync = (PFNGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)\"glWaitSync\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_sync */\r\n\r\n#ifdef GL_ARB_tessellation_shader\r\n\r\nstatic GLboolean _glewInit_GL_ARB_tessellation_shader ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)\"glPatchParameterfv\")) == NULL) || r;\r\n  r = ((glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)glewGetProcAddress((const GLubyte*)\"glPatchParameteri\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_tessellation_shader */\r\n\r\n#ifdef GL_ARB_texture_barrier\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_barrier ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)glewGetProcAddress((const GLubyte*)\"glTextureBarrier\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_barrier */\r\n\r\n#ifdef GL_ARB_texture_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexBufferARB = (PFNGLTEXBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"glTexBufferARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_buffer_object */\r\n\r\n#ifdef GL_ARB_texture_buffer_range\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_buffer_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glTexBufferRange\")) == NULL) || r;\r\n  r = ((glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureBufferRangeEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_buffer_range */\r\n\r\n#ifdef GL_ARB_texture_compression\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_compression ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage1DARB\")) == NULL) || r;\r\n  r = ((glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage2DARB\")) == NULL) || r;\r\n  r = ((glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage3DARB\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage1DARB\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage2DARB\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage3DARB\")) == NULL) || r;\r\n  r = ((glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedTexImageARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_compression */\r\n\r\n#ifdef GL_ARB_texture_multisample\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)glewGetProcAddress((const GLubyte*)\"glGetMultisamplefv\")) == NULL) || r;\r\n  r = ((glSampleMaski = (PFNGLSAMPLEMASKIPROC)glewGetProcAddress((const GLubyte*)\"glSampleMaski\")) == NULL) || r;\r\n  r = ((glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTexImage2DMultisample\")) == NULL) || r;\r\n  r = ((glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTexImage3DMultisample\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_multisample */\r\n\r\n#ifdef GL_ARB_texture_storage\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_storage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage1D\")) == NULL) || r;\r\n  r = ((glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage2D\")) == NULL) || r;\r\n  r = ((glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_storage */\r\n\r\n#ifdef GL_ARB_texture_storage_multisample\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_storage_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage2DMultisample\")) == NULL) || r;\r\n  r = ((glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage3DMultisample\")) == NULL) || r;\r\n  r = ((glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage2DMultisampleEXT\")) == NULL) || r;\r\n  r = ((glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage3DMultisampleEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_storage_multisample */\r\n\r\n#ifdef GL_ARB_texture_view\r\n\r\nstatic GLboolean _glewInit_GL_ARB_texture_view ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureView = (PFNGLTEXTUREVIEWPROC)glewGetProcAddress((const GLubyte*)\"glTextureView\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_texture_view */\r\n\r\n#ifdef GL_ARB_timer_query\r\n\r\nstatic GLboolean _glewInit_GL_ARB_timer_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjecti64v\")) == NULL) || r;\r\n  r = ((glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectui64v\")) == NULL) || r;\r\n  r = ((glQueryCounter = (PFNGLQUERYCOUNTERPROC)glewGetProcAddress((const GLubyte*)\"glQueryCounter\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_timer_query */\r\n\r\n#ifdef GL_ARB_transform_feedback2\r\n\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glBindTransformFeedback\")) == NULL) || r;\r\n  r = ((glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteTransformFeedbacks\")) == NULL) || r;\r\n  r = ((glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glDrawTransformFeedback\")) == NULL) || r;\r\n  r = ((glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)\"glGenTransformFeedbacks\")) == NULL) || r;\r\n  r = ((glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glIsTransformFeedback\")) == NULL) || r;\r\n  r = ((glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glPauseTransformFeedback\")) == NULL) || r;\r\n  r = ((glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)\"glResumeTransformFeedback\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback2 */\r\n\r\n#ifdef GL_ARB_transform_feedback3\r\n\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback3 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)\"glBeginQueryIndexed\")) == NULL) || r;\r\n  r = ((glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)glewGetProcAddress((const GLubyte*)\"glDrawTransformFeedbackStream\")) == NULL) || r;\r\n  r = ((glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)\"glEndQueryIndexed\")) == NULL) || r;\r\n  r = ((glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryIndexediv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback3 */\r\n\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n\r\nstatic GLboolean _glewInit_GL_ARB_transform_feedback_instanced ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)glewGetProcAddress((const GLubyte*)\"glDrawTransformFeedbackInstanced\")) == NULL) || r;\r\n  r = ((glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)glewGetProcAddress((const GLubyte*)\"glDrawTransformFeedbackStreamInstanced\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback_instanced */\r\n\r\n#ifdef GL_ARB_transpose_matrix\r\n\r\nstatic GLboolean _glewInit_GL_ARB_transpose_matrix ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)\"glLoadTransposeMatrixdARB\")) == NULL) || r;\r\n  r = ((glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)\"glLoadTransposeMatrixfARB\")) == NULL) || r;\r\n  r = ((glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)\"glMultTransposeMatrixdARB\")) == NULL) || r;\r\n  r = ((glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)\"glMultTransposeMatrixfARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_transpose_matrix */\r\n\r\n#ifdef GL_ARB_uniform_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_uniform_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferBase\")) == NULL) || r;\r\n  r = ((glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferRange\")) == NULL) || r;\r\n  r = ((glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniformBlockName\")) == NULL) || r;\r\n  r = ((glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniformBlockiv\")) == NULL) || r;\r\n  r = ((glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniformName\")) == NULL) || r;\r\n  r = ((glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveUniformsiv\")) == NULL) || r;\r\n  r = ((glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)glewGetProcAddress((const GLubyte*)\"glGetIntegeri_v\")) == NULL) || r;\r\n  r = ((glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformBlockIndex\")) == NULL) || r;\r\n  r = ((glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformIndices\")) == NULL) || r;\r\n  r = ((glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)glewGetProcAddress((const GLubyte*)\"glUniformBlockBinding\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_uniform_buffer_object */\r\n\r\n#ifdef GL_ARB_vertex_array_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_array_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexArray\")) == NULL) || r;\r\n  r = ((glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)\"glDeleteVertexArrays\")) == NULL) || r;\r\n  r = ((glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)\"glGenVertexArrays\")) == NULL) || r;\r\n  r = ((glIsVertexArray = (PFNGLISVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)\"glIsVertexArray\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_array_object */\r\n\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_attrib_64bit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribLdv\")) == NULL) || r;\r\n  r = ((glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1d\")) == NULL) || r;\r\n  r = ((glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1dv\")) == NULL) || r;\r\n  r = ((glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2d\")) == NULL) || r;\r\n  r = ((glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2dv\")) == NULL) || r;\r\n  r = ((glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3d\")) == NULL) || r;\r\n  r = ((glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3dv\")) == NULL) || r;\r\n  r = ((glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4d\")) == NULL) || r;\r\n  r = ((glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4dv\")) == NULL) || r;\r\n  r = ((glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribLPointer\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_attrib_64bit */\r\n\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_attrib_binding ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexBuffer\")) == NULL) || r;\r\n  r = ((glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayBindVertexBufferEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribBindingEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribFormatEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribIFormatEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribLFormatEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexBindingDivisorEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribBinding\")) == NULL) || r;\r\n  r = ((glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribFormat\")) == NULL) || r;\r\n  r = ((glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribIFormat\")) == NULL) || r;\r\n  r = ((glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribLFormat\")) == NULL) || r;\r\n  r = ((glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)glewGetProcAddress((const GLubyte*)\"glVertexBindingDivisor\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_attrib_binding */\r\n\r\n#ifdef GL_ARB_vertex_blend\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_blend ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexBlendARB\")) == NULL) || r;\r\n  r = ((glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightPointerARB\")) == NULL) || r;\r\n  r = ((glWeightbvARB = (PFNGLWEIGHTBVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightbvARB\")) == NULL) || r;\r\n  r = ((glWeightdvARB = (PFNGLWEIGHTDVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightdvARB\")) == NULL) || r;\r\n  r = ((glWeightfvARB = (PFNGLWEIGHTFVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightfvARB\")) == NULL) || r;\r\n  r = ((glWeightivARB = (PFNGLWEIGHTIVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightivARB\")) == NULL) || r;\r\n  r = ((glWeightsvARB = (PFNGLWEIGHTSVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightsvARB\")) == NULL) || r;\r\n  r = ((glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightubvARB\")) == NULL) || r;\r\n  r = ((glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightuivARB\")) == NULL) || r;\r\n  r = ((glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)glewGetProcAddress((const GLubyte*)\"glWeightusvARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_blend */\r\n\r\n#ifdef GL_ARB_vertex_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindBufferARB = (PFNGLBINDBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferARB\")) == NULL) || r;\r\n  r = ((glBufferDataARB = (PFNGLBUFFERDATAARBPROC)glewGetProcAddress((const GLubyte*)\"glBufferDataARB\")) == NULL) || r;\r\n  r = ((glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)\"glBufferSubDataARB\")) == NULL) || r;\r\n  r = ((glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)\"glDeleteBuffersARB\")) == NULL) || r;\r\n  r = ((glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)\"glGenBuffersARB\")) == NULL) || r;\r\n  r = ((glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferParameterivARB\")) == NULL) || r;\r\n  r = ((glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferPointervARB\")) == NULL) || r;\r\n  r = ((glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferSubDataARB\")) == NULL) || r;\r\n  r = ((glIsBufferARB = (PFNGLISBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"glIsBufferARB\")) == NULL) || r;\r\n  r = ((glMapBufferARB = (PFNGLMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"glMapBufferARB\")) == NULL) || r;\r\n  r = ((glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"glUnmapBufferARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_buffer_object */\r\n\r\n#ifdef GL_ARB_vertex_program\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_program ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)\"glBindProgramARB\")) == NULL) || r;\r\n  r = ((glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)\"glDeleteProgramsARB\")) == NULL) || r;\r\n  r = ((glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexAttribArrayARB\")) == NULL) || r;\r\n  r = ((glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexAttribArrayARB\")) == NULL) || r;\r\n  r = ((glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)\"glGenProgramsARB\")) == NULL) || r;\r\n  r = ((glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramEnvParameterdvARB\")) == NULL) || r;\r\n  r = ((glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramEnvParameterfvARB\")) == NULL) || r;\r\n  r = ((glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramLocalParameterdvARB\")) == NULL) || r;\r\n  r = ((glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramLocalParameterfvARB\")) == NULL) || r;\r\n  r = ((glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramStringARB\")) == NULL) || r;\r\n  r = ((glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramivARB\")) == NULL) || r;\r\n  r = ((glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribPointervARB\")) == NULL) || r;\r\n  r = ((glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribdvARB\")) == NULL) || r;\r\n  r = ((glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribfvARB\")) == NULL) || r;\r\n  r = ((glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribivARB\")) == NULL) || r;\r\n  r = ((glIsProgramARB = (PFNGLISPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)\"glIsProgramARB\")) == NULL) || r;\r\n  r = ((glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameter4dARB\")) == NULL) || r;\r\n  r = ((glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameter4dvARB\")) == NULL) || r;\r\n  r = ((glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameter4fARB\")) == NULL) || r;\r\n  r = ((glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameter4fvARB\")) == NULL) || r;\r\n  r = ((glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameter4dARB\")) == NULL) || r;\r\n  r = ((glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameter4dvARB\")) == NULL) || r;\r\n  r = ((glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameter4fARB\")) == NULL) || r;\r\n  r = ((glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameter4fvARB\")) == NULL) || r;\r\n  r = ((glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"glProgramStringARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1dARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1dvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1fARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1fvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1sARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1svARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2dARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2dvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2fARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2fvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2sARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2svARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3dARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3dvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3fARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3fvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3sARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3svARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NbvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NivARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NsvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NubARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NubvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NuivARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4NusvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4bvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4dARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4dvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4fARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4fvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4ivARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4sARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4svARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4ubvARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4uivARB\")) == NULL) || r;\r\n  r = ((glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4usvARB\")) == NULL) || r;\r\n  r = ((glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribPointerARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_program */\r\n\r\n#ifdef GL_ARB_vertex_shader\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_shader ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)\"glBindAttribLocationARB\")) == NULL) || r;\r\n  r = ((glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveAttribARB\")) == NULL) || r;\r\n  r = ((glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)\"glGetAttribLocationARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_shader */\r\n\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n\r\nstatic GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorP3ui = (PFNGLCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)\"glColorP3ui\")) == NULL) || r;\r\n  r = ((glColorP3uiv = (PFNGLCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glColorP3uiv\")) == NULL) || r;\r\n  r = ((glColorP4ui = (PFNGLCOLORP4UIPROC)glewGetProcAddress((const GLubyte*)\"glColorP4ui\")) == NULL) || r;\r\n  r = ((glColorP4uiv = (PFNGLCOLORP4UIVPROC)glewGetProcAddress((const GLubyte*)\"glColorP4uiv\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP1ui\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP1uiv\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP2ui\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP2uiv\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP3ui\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP3uiv\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP4ui\")) == NULL) || r;\r\n  r = ((glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordP4uiv\")) == NULL) || r;\r\n  r = ((glNormalP3ui = (PFNGLNORMALP3UIPROC)glewGetProcAddress((const GLubyte*)\"glNormalP3ui\")) == NULL) || r;\r\n  r = ((glNormalP3uiv = (PFNGLNORMALP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glNormalP3uiv\")) == NULL) || r;\r\n  r = ((glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorP3ui\")) == NULL) || r;\r\n  r = ((glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorP3uiv\")) == NULL) || r;\r\n  r = ((glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP1ui\")) == NULL) || r;\r\n  r = ((glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP1uiv\")) == NULL) || r;\r\n  r = ((glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP2ui\")) == NULL) || r;\r\n  r = ((glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP2uiv\")) == NULL) || r;\r\n  r = ((glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP3ui\")) == NULL) || r;\r\n  r = ((glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP3uiv\")) == NULL) || r;\r\n  r = ((glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP4ui\")) == NULL) || r;\r\n  r = ((glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordP4uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP1ui\")) == NULL) || r;\r\n  r = ((glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP1uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP2ui\")) == NULL) || r;\r\n  r = ((glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP2uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP3ui\")) == NULL) || r;\r\n  r = ((glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP3uiv\")) == NULL) || r;\r\n  r = ((glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP4ui\")) == NULL) || r;\r\n  r = ((glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribP4uiv\")) == NULL) || r;\r\n  r = ((glVertexP2ui = (PFNGLVERTEXP2UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexP2ui\")) == NULL) || r;\r\n  r = ((glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexP2uiv\")) == NULL) || r;\r\n  r = ((glVertexP3ui = (PFNGLVERTEXP3UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexP3ui\")) == NULL) || r;\r\n  r = ((glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexP3uiv\")) == NULL) || r;\r\n  r = ((glVertexP4ui = (PFNGLVERTEXP4UIPROC)glewGetProcAddress((const GLubyte*)\"glVertexP4ui\")) == NULL) || r;\r\n  r = ((glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)glewGetProcAddress((const GLubyte*)\"glVertexP4uiv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_vertex_type_2_10_10_10_rev */\r\n\r\n#ifdef GL_ARB_viewport_array\r\n\r\nstatic GLboolean _glewInit_GL_ARB_viewport_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangeArrayv\")) == NULL) || r;\r\n  r = ((glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangeIndexed\")) == NULL) || r;\r\n  r = ((glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)glewGetProcAddress((const GLubyte*)\"glGetDoublei_v\")) == NULL) || r;\r\n  r = ((glGetFloati_v = (PFNGLGETFLOATI_VPROC)glewGetProcAddress((const GLubyte*)\"glGetFloati_v\")) == NULL) || r;\r\n  r = ((glScissorArrayv = (PFNGLSCISSORARRAYVPROC)glewGetProcAddress((const GLubyte*)\"glScissorArrayv\")) == NULL) || r;\r\n  r = ((glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)glewGetProcAddress((const GLubyte*)\"glScissorIndexed\")) == NULL) || r;\r\n  r = ((glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)glewGetProcAddress((const GLubyte*)\"glScissorIndexedv\")) == NULL) || r;\r\n  r = ((glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)glewGetProcAddress((const GLubyte*)\"glViewportArrayv\")) == NULL) || r;\r\n  r = ((glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)glewGetProcAddress((const GLubyte*)\"glViewportIndexedf\")) == NULL) || r;\r\n  r = ((glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)glewGetProcAddress((const GLubyte*)\"glViewportIndexedfv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_viewport_array */\r\n\r\n#ifdef GL_ARB_window_pos\r\n\r\nstatic GLboolean _glewInit_GL_ARB_window_pos ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2dARB\")) == NULL) || r;\r\n  r = ((glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2dvARB\")) == NULL) || r;\r\n  r = ((glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2fARB\")) == NULL) || r;\r\n  r = ((glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2fvARB\")) == NULL) || r;\r\n  r = ((glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2iARB\")) == NULL) || r;\r\n  r = ((glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2ivARB\")) == NULL) || r;\r\n  r = ((glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2sARB\")) == NULL) || r;\r\n  r = ((glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2svARB\")) == NULL) || r;\r\n  r = ((glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3dARB\")) == NULL) || r;\r\n  r = ((glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3dvARB\")) == NULL) || r;\r\n  r = ((glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3fARB\")) == NULL) || r;\r\n  r = ((glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3fvARB\")) == NULL) || r;\r\n  r = ((glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3iARB\")) == NULL) || r;\r\n  r = ((glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3ivARB\")) == NULL) || r;\r\n  r = ((glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3sARB\")) == NULL) || r;\r\n  r = ((glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3svARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ARB_window_pos */\r\n\r\n#ifdef GL_ATI_draw_buffers\r\n\r\nstatic GLboolean _glewInit_GL_ATI_draw_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffersATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_draw_buffers */\r\n\r\n#ifdef GL_ATI_element_array\r\n\r\nstatic GLboolean _glewInit_GL_ATI_element_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementArrayATI\")) == NULL) || r;\r\n  r = ((glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElementArrayATI\")) == NULL) || r;\r\n  r = ((glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)glewGetProcAddress((const GLubyte*)\"glElementPointerATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_element_array */\r\n\r\n#ifdef GL_ATI_envmap_bumpmap\r\n\r\nstatic GLboolean _glewInit_GL_ATI_envmap_bumpmap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetTexBumpParameterfvATI\")) == NULL) || r;\r\n  r = ((glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetTexBumpParameterivATI\")) == NULL) || r;\r\n  r = ((glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)\"glTexBumpParameterfvATI\")) == NULL) || r;\r\n  r = ((glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)\"glTexBumpParameterivATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_envmap_bumpmap */\r\n\r\n#ifdef GL_ATI_fragment_shader\r\n\r\nstatic GLboolean _glewInit_GL_ATI_fragment_shader ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)\"glAlphaFragmentOp1ATI\")) == NULL) || r;\r\n  r = ((glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)\"glAlphaFragmentOp2ATI\")) == NULL) || r;\r\n  r = ((glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)\"glAlphaFragmentOp3ATI\")) == NULL) || r;\r\n  r = ((glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)\"glBeginFragmentShaderATI\")) == NULL) || r;\r\n  r = ((glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)\"glBindFragmentShaderATI\")) == NULL) || r;\r\n  r = ((glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)\"glColorFragmentOp1ATI\")) == NULL) || r;\r\n  r = ((glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)\"glColorFragmentOp2ATI\")) == NULL) || r;\r\n  r = ((glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)\"glColorFragmentOp3ATI\")) == NULL) || r;\r\n  r = ((glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)\"glDeleteFragmentShaderATI\")) == NULL) || r;\r\n  r = ((glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)\"glEndFragmentShaderATI\")) == NULL) || r;\r\n  r = ((glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)glewGetProcAddress((const GLubyte*)\"glGenFragmentShadersATI\")) == NULL) || r;\r\n  r = ((glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)glewGetProcAddress((const GLubyte*)\"glPassTexCoordATI\")) == NULL) || r;\r\n  r = ((glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)glewGetProcAddress((const GLubyte*)\"glSampleMapATI\")) == NULL) || r;\r\n  r = ((glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)glewGetProcAddress((const GLubyte*)\"glSetFragmentShaderConstantATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_fragment_shader */\r\n\r\n#ifdef GL_ATI_map_object_buffer\r\n\r\nstatic GLboolean _glewInit_GL_ATI_map_object_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glMapObjectBufferATI\")) == NULL) || r;\r\n  r = ((glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glUnmapObjectBufferATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_map_object_buffer */\r\n\r\n#ifdef GL_ATI_pn_triangles\r\n\r\nstatic GLboolean _glewInit_GL_ATI_pn_triangles ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)glewGetProcAddress((const GLubyte*)\"glPNTrianglesfATI\")) == NULL) || r;\r\n  r = ((glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)glewGetProcAddress((const GLubyte*)\"glPNTrianglesiATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_pn_triangles */\r\n\r\n#ifdef GL_ATI_separate_stencil\r\n\r\nstatic GLboolean _glewInit_GL_ATI_separate_stencil ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)\"glStencilFuncSeparateATI\")) == NULL) || r;\r\n  r = ((glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)\"glStencilOpSeparateATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_separate_stencil */\r\n\r\n#ifdef GL_ATI_vertex_array_object\r\n\r\nstatic GLboolean _glewInit_GL_ATI_vertex_array_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)\"glArrayObjectATI\")) == NULL) || r;\r\n  r = ((glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glFreeObjectBufferATI\")) == NULL) || r;\r\n  r = ((glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetArrayObjectfvATI\")) == NULL) || r;\r\n  r = ((glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetArrayObjectivATI\")) == NULL) || r;\r\n  r = ((glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectBufferfvATI\")) == NULL) || r;\r\n  r = ((glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectBufferivATI\")) == NULL) || r;\r\n  r = ((glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantArrayObjectfvATI\")) == NULL) || r;\r\n  r = ((glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantArrayObjectivATI\")) == NULL) || r;\r\n  r = ((glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glIsObjectBufferATI\")) == NULL) || r;\r\n  r = ((glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glNewObjectBufferATI\")) == NULL) || r;\r\n  r = ((glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)\"glUpdateObjectBufferATI\")) == NULL) || r;\r\n  r = ((glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)\"glVariantArrayObjectATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_vertex_array_object */\r\n\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n\r\nstatic GLboolean _glewInit_GL_ATI_vertex_attrib_array_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribArrayObjectfvATI\")) == NULL) || r;\r\n  r = ((glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribArrayObjectivATI\")) == NULL) || r;\r\n  r = ((glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribArrayObjectATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_vertex_attrib_array_object */\r\n\r\n#ifdef GL_ATI_vertex_streams\r\n\r\nstatic GLboolean _glewInit_GL_ATI_vertex_streams ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)glewGetProcAddress((const GLubyte*)\"glClientActiveVertexStreamATI\")) == NULL) || r;\r\n  r = ((glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3bATI\")) == NULL) || r;\r\n  r = ((glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3bvATI\")) == NULL) || r;\r\n  r = ((glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3dATI\")) == NULL) || r;\r\n  r = ((glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3dvATI\")) == NULL) || r;\r\n  r = ((glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3fATI\")) == NULL) || r;\r\n  r = ((glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3fvATI\")) == NULL) || r;\r\n  r = ((glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3iATI\")) == NULL) || r;\r\n  r = ((glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3ivATI\")) == NULL) || r;\r\n  r = ((glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3sATI\")) == NULL) || r;\r\n  r = ((glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)\"glNormalStream3svATI\")) == NULL) || r;\r\n  r = ((glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexBlendEnvfATI\")) == NULL) || r;\r\n  r = ((glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexBlendEnviATI\")) == NULL) || r;\r\n  r = ((glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1dATI\")) == NULL) || r;\r\n  r = ((glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1dvATI\")) == NULL) || r;\r\n  r = ((glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1fATI\")) == NULL) || r;\r\n  r = ((glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1fvATI\")) == NULL) || r;\r\n  r = ((glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1iATI\")) == NULL) || r;\r\n  r = ((glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1ivATI\")) == NULL) || r;\r\n  r = ((glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1sATI\")) == NULL) || r;\r\n  r = ((glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream1svATI\")) == NULL) || r;\r\n  r = ((glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2dATI\")) == NULL) || r;\r\n  r = ((glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2dvATI\")) == NULL) || r;\r\n  r = ((glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2fATI\")) == NULL) || r;\r\n  r = ((glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2fvATI\")) == NULL) || r;\r\n  r = ((glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2iATI\")) == NULL) || r;\r\n  r = ((glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2ivATI\")) == NULL) || r;\r\n  r = ((glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2sATI\")) == NULL) || r;\r\n  r = ((glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream2svATI\")) == NULL) || r;\r\n  r = ((glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3dATI\")) == NULL) || r;\r\n  r = ((glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3dvATI\")) == NULL) || r;\r\n  r = ((glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3fATI\")) == NULL) || r;\r\n  r = ((glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3fvATI\")) == NULL) || r;\r\n  r = ((glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3iATI\")) == NULL) || r;\r\n  r = ((glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3ivATI\")) == NULL) || r;\r\n  r = ((glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3sATI\")) == NULL) || r;\r\n  r = ((glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream3svATI\")) == NULL) || r;\r\n  r = ((glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4dATI\")) == NULL) || r;\r\n  r = ((glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4dvATI\")) == NULL) || r;\r\n  r = ((glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4fATI\")) == NULL) || r;\r\n  r = ((glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4fvATI\")) == NULL) || r;\r\n  r = ((glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4iATI\")) == NULL) || r;\r\n  r = ((glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4ivATI\")) == NULL) || r;\r\n  r = ((glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4sATI\")) == NULL) || r;\r\n  r = ((glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)glewGetProcAddress((const GLubyte*)\"glVertexStream4svATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_ATI_vertex_streams */\r\n\r\n#ifdef GL_EXT_base_instance\r\n\r\nstatic GLboolean _glewInit_GL_EXT_base_instance ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedBaseInstanceEXT = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedBaseInstanceEXT\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseInstanceEXT\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseVertexBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseVertexBaseInstanceEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_base_instance */\r\n\r\n#ifdef GL_EXT_bindable_uniform\r\n\r\nstatic GLboolean _glewInit_GL_EXT_bindable_uniform ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformBufferSizeEXT\")) == NULL) || r;\r\n  r = ((glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformOffsetEXT\")) == NULL) || r;\r\n  r = ((glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glUniformBufferEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_bindable_uniform */\r\n\r\n#ifdef GL_EXT_blend_color\r\n\r\nstatic GLboolean _glewInit_GL_EXT_blend_color ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendColorEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_blend_color */\r\n\r\n#ifdef GL_EXT_blend_equation_separate\r\n\r\nstatic GLboolean _glewInit_GL_EXT_blend_equation_separate ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparateEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_blend_equation_separate */\r\n\r\n#ifdef GL_EXT_blend_func_extended\r\n\r\nstatic GLboolean _glewInit_GL_EXT_blend_func_extended ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindFragDataLocationIndexedEXT = (PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindFragDataLocationIndexedEXT\")) == NULL) || r;\r\n  r = ((glGetFragDataIndexEXT = (PFNGLGETFRAGDATAINDEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragDataIndexEXT\")) == NULL) || r;\r\n  r = ((glGetProgramResourceLocationIndexEXT = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourceLocationIndexEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_blend_func_extended */\r\n\r\n#ifdef GL_EXT_blend_func_separate\r\n\r\nstatic GLboolean _glewInit_GL_EXT_blend_func_separate ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparateEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_blend_func_separate */\r\n\r\n#ifdef GL_EXT_blend_minmax\r\n\r\nstatic GLboolean _glewInit_GL_EXT_blend_minmax ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_blend_minmax */\r\n\r\n#ifdef GL_EXT_buffer_storage\r\n\r\nstatic GLboolean _glewInit_GL_EXT_buffer_storage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBufferStorageEXT\")) == NULL) || r;\r\n  r = ((glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferStorageEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_buffer_storage */\r\n\r\n#ifdef GL_EXT_clear_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_clear_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearTexImageEXT = (PFNGLCLEARTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearTexImageEXT\")) == NULL) || r;\r\n  r = ((glClearTexSubImageEXT = (PFNGLCLEARTEXSUBIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearTexSubImageEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_clear_texture */\r\n\r\n#ifdef GL_EXT_color_subtable\r\n\r\nstatic GLboolean _glewInit_GL_EXT_color_subtable ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glColorSubTableEXT\")) == NULL) || r;\r\n  r = ((glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyColorSubTableEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_color_subtable */\r\n\r\n#ifdef GL_EXT_compiled_vertex_array\r\n\r\nstatic GLboolean _glewInit_GL_EXT_compiled_vertex_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)\"glLockArraysEXT\")) == NULL) || r;\r\n  r = ((glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)\"glUnlockArraysEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_compiled_vertex_array */\r\n\r\n#ifdef GL_EXT_convolution\r\n\r\nstatic GLboolean _glewInit_GL_EXT_convolution ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionFilter1DEXT\")) == NULL) || r;\r\n  r = ((glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionFilter2DEXT\")) == NULL) || r;\r\n  r = ((glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameterfEXT\")) == NULL) || r;\r\n  r = ((glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameterfvEXT\")) == NULL) || r;\r\n  r = ((glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameteriEXT\")) == NULL) || r;\r\n  r = ((glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glConvolutionParameterivEXT\")) == NULL) || r;\r\n  r = ((glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyConvolutionFilter1DEXT\")) == NULL) || r;\r\n  r = ((glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyConvolutionFilter2DEXT\")) == NULL) || r;\r\n  r = ((glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionFilterEXT\")) == NULL) || r;\r\n  r = ((glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetConvolutionParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glGetSeparableFilterEXT\")) == NULL) || r;\r\n  r = ((glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glSeparableFilter2DEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_convolution */\r\n\r\n#ifdef GL_EXT_coordinate_frame\r\n\r\nstatic GLboolean _glewInit_GL_EXT_coordinate_frame ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBinormalPointerEXT\")) == NULL) || r;\r\n  r = ((glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glTangentPointerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_coordinate_frame */\r\n\r\n#ifdef GL_EXT_copy_image\r\n\r\nstatic GLboolean _glewInit_GL_EXT_copy_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyImageSubDataEXT = (PFNGLCOPYIMAGESUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyImageSubDataEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_copy_image */\r\n\r\n#ifdef GL_EXT_copy_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_copy_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexSubImage3DEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_copy_texture */\r\n\r\n#ifdef GL_EXT_cull_vertex\r\n\r\nstatic GLboolean _glewInit_GL_EXT_cull_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glCullParameterdvEXT\")) == NULL) || r;\r\n  r = ((glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glCullParameterfvEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_cull_vertex */\r\n\r\n#ifdef GL_EXT_debug_label\r\n\r\nstatic GLboolean _glewInit_GL_EXT_debug_label ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectLabelEXT\")) == NULL) || r;\r\n  r = ((glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)\"glLabelObjectEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_debug_label */\r\n\r\n#ifdef GL_EXT_debug_marker\r\n\r\nstatic GLboolean _glewInit_GL_EXT_debug_marker ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)glewGetProcAddress((const GLubyte*)\"glInsertEventMarkerEXT\")) == NULL) || r;\r\n  r = ((glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)\"glPopGroupMarkerEXT\")) == NULL) || r;\r\n  r = ((glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)glewGetProcAddress((const GLubyte*)\"glPushGroupMarkerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_debug_marker */\r\n\r\n#ifdef GL_EXT_depth_bounds_test\r\n\r\nstatic GLboolean _glewInit_GL_EXT_depth_bounds_test ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDepthBoundsEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_depth_bounds_test */\r\n\r\n#ifdef GL_EXT_direct_state_access\r\n\r\nstatic GLboolean _glewInit_GL_EXT_direct_state_access ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindMultiTextureEXT\")) == NULL) || r;\r\n  r = ((glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)\"glCheckNamedFramebufferStatusEXT\")) == NULL) || r;\r\n  r = ((glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)\"glClientAttribDefaultEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexImage1DEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexImage2DEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexImage3DEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedMultiTexSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureImage1DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureImage2DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureImage3DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTextureSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyMultiTexImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyMultiTexImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyMultiTexSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyMultiTexSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyMultiTexSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glCopyTextureSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableClientStateIndexedEXT\")) == NULL) || r;\r\n  r = ((glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableClientStateiEXT\")) == NULL) || r;\r\n  r = ((glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexArrayAttribEXT\")) == NULL) || r;\r\n  r = ((glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableVertexArrayEXT\")) == NULL) || r;\r\n  r = ((glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableClientStateIndexedEXT\")) == NULL) || r;\r\n  r = ((glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableClientStateiEXT\")) == NULL) || r;\r\n  r = ((glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexArrayAttribEXT\")) == NULL) || r;\r\n  r = ((glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableVertexArrayEXT\")) == NULL) || r;\r\n  r = ((glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glFlushMappedNamedBufferRangeEXT\")) == NULL) || r;\r\n  r = ((glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferDrawBufferEXT\")) == NULL) || r;\r\n  r = ((glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferDrawBuffersEXT\")) == NULL) || r;\r\n  r = ((glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferReadBufferEXT\")) == NULL) || r;\r\n  r = ((glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenerateMultiTexMipmapEXT\")) == NULL) || r;\r\n  r = ((glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenerateTextureMipmapEXT\")) == NULL) || r;\r\n  r = ((glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedMultiTexImageEXT\")) == NULL) || r;\r\n  r = ((glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetCompressedTextureImageEXT\")) == NULL) || r;\r\n  r = ((glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetDoubleIndexedvEXT\")) == NULL) || r;\r\n  r = ((glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetDoublei_vEXT\")) == NULL) || r;\r\n  r = ((glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFloatIndexedvEXT\")) == NULL) || r;\r\n  r = ((glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFloati_vEXT\")) == NULL) || r;\r\n  r = ((glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexEnvfvEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexEnvivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexGendvEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexGenfvEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexGenivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexImageEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexLevelParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexLevelParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexParameterIivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMultiTexParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferPointervEXT\")) == NULL) || r;\r\n  r = ((glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferSubDataEXT\")) == NULL) || r;\r\n  r = ((glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedFramebufferAttachmentParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramLocalParameterIivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramLocalParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramLocalParameterdvEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramLocalParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramStringEXT\")) == NULL) || r;\r\n  r = ((glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedProgramivEXT\")) == NULL) || r;\r\n  r = ((glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedRenderbufferParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetPointerIndexedvEXT\")) == NULL) || r;\r\n  r = ((glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetPointeri_vEXT\")) == NULL) || r;\r\n  r = ((glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureImageEXT\")) == NULL) || r;\r\n  r = ((glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureLevelParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureLevelParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterIivEXT\")) == NULL) || r;\r\n  r = ((glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayIntegeri_vEXT\")) == NULL) || r;\r\n  r = ((glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayIntegervEXT\")) == NULL) || r;\r\n  r = ((glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayPointeri_vEXT\")) == NULL) || r;\r\n  r = ((glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexArrayPointervEXT\")) == NULL) || r;\r\n  r = ((glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glMapNamedBufferEXT\")) == NULL) || r;\r\n  r = ((glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glMapNamedBufferRangeEXT\")) == NULL) || r;\r\n  r = ((glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixFrustumEXT\")) == NULL) || r;\r\n  r = ((glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoadIdentityEXT\")) == NULL) || r;\r\n  r = ((glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoadTransposedEXT\")) == NULL) || r;\r\n  r = ((glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoadTransposefEXT\")) == NULL) || r;\r\n  r = ((glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoaddEXT\")) == NULL) || r;\r\n  r = ((glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoadfEXT\")) == NULL) || r;\r\n  r = ((glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMultTransposedEXT\")) == NULL) || r;\r\n  r = ((glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMultTransposefEXT\")) == NULL) || r;\r\n  r = ((glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMultdEXT\")) == NULL) || r;\r\n  r = ((glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMultfEXT\")) == NULL) || r;\r\n  r = ((glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixOrthoEXT\")) == NULL) || r;\r\n  r = ((glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixPopEXT\")) == NULL) || r;\r\n  r = ((glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixPushEXT\")) == NULL) || r;\r\n  r = ((glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixRotatedEXT\")) == NULL) || r;\r\n  r = ((glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixRotatefEXT\")) == NULL) || r;\r\n  r = ((glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixScaledEXT\")) == NULL) || r;\r\n  r = ((glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixScalefEXT\")) == NULL) || r;\r\n  r = ((glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixTranslatedEXT\")) == NULL) || r;\r\n  r = ((glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMatrixTranslatefEXT\")) == NULL) || r;\r\n  r = ((glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexBufferEXT\")) == NULL) || r;\r\n  r = ((glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoordPointerEXT\")) == NULL) || r;\r\n  r = ((glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexEnvfEXT\")) == NULL) || r;\r\n  r = ((glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexEnvfvEXT\")) == NULL) || r;\r\n  r = ((glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexEnviEXT\")) == NULL) || r;\r\n  r = ((glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexEnvivEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGendEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGendvEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGenfEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGenfvEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGeniEXT\")) == NULL) || r;\r\n  r = ((glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexGenivEXT\")) == NULL) || r;\r\n  r = ((glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexImage1DEXT\")) == NULL) || r;\r\n  r = ((glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexImage2DEXT\")) == NULL) || r;\r\n  r = ((glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexImage3DEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameterIivEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameterfEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameterfvEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameteriEXT\")) == NULL) || r;\r\n  r = ((glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexParameterivEXT\")) == NULL) || r;\r\n  r = ((glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferDataEXT\")) == NULL) || r;\r\n  r = ((glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferSubDataEXT\")) == NULL) || r;\r\n  r = ((glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedCopyBufferSubDataEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTexture1DEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTexture2DEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTexture3DEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTextureEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTextureFaceEXT\")) == NULL) || r;\r\n  r = ((glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferTextureLayerEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameter4dEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameter4dvEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameter4fEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameter4fvEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameterI4iEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameterI4ivEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameterI4uiEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameterI4uivEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParameters4fvEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParametersI4ivEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramLocalParametersI4uivEXT\")) == NULL) || r;\r\n  r = ((glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedProgramStringEXT\")) == NULL) || r;\r\n  r = ((glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedRenderbufferStorageEXT\")) == NULL) || r;\r\n  r = ((glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedRenderbufferStorageMultisampleCoverageEXT\")) == NULL) || r;\r\n  r = ((glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedRenderbufferStorageMultisampleEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1fEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1iEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1uiEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1uivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2fEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2iEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2uiEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2uivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3fEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3iEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3uiEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3uivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4fEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4iEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4uiEXT\")) == NULL) || r;\r\n  r = ((glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4uivEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x3fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix2x4fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x2fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix3x4fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x2fvEXT\")) == NULL) || r;\r\n  r = ((glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformMatrix4x3fvEXT\")) == NULL) || r;\r\n  r = ((glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)\"glPushClientAttribDefaultEXT\")) == NULL) || r;\r\n  r = ((glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureBufferEXT\")) == NULL) || r;\r\n  r = ((glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage1DEXT\")) == NULL) || r;\r\n  r = ((glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage2DEXT\")) == NULL) || r;\r\n  r = ((glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage3DEXT\")) == NULL) || r;\r\n  r = ((glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterIivEXT\")) == NULL) || r;\r\n  r = ((glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterfEXT\")) == NULL) || r;\r\n  r = ((glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterfvEXT\")) == NULL) || r;\r\n  r = ((glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameteriEXT\")) == NULL) || r;\r\n  r = ((glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureParameterivEXT\")) == NULL) || r;\r\n  r = ((glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureSubImage3DEXT\")) == NULL) || r;\r\n  r = ((glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glUnmapNamedBufferEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayColorOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayEdgeFlagOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayFogCoordOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayIndexOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayMultiTexCoordOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayNormalOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArraySecondaryColorOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayTexCoordOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribDivisorEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribIOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexOffsetEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_direct_state_access */\r\n\r\n#ifdef GL_EXT_discard_framebuffer\r\n\r\nstatic GLboolean _glewInit_GL_EXT_discard_framebuffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDiscardFramebufferEXT = (PFNGLDISCARDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glDiscardFramebufferEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_discard_framebuffer */\r\n\r\n#ifdef GL_EXT_draw_buffers\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawBuffersEXT = (PFNGLDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffersEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers */\r\n\r\n#ifdef GL_EXT_draw_buffers2\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glColorMaskIndexedEXT\")) == NULL) || r;\r\n  r = ((glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableIndexedEXT\")) == NULL) || r;\r\n  r = ((glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableIndexedEXT\")) == NULL) || r;\r\n  r = ((glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetBooleanIndexedvEXT\")) == NULL) || r;\r\n  r = ((glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetIntegerIndexedvEXT\")) == NULL) || r;\r\n  r = ((glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsEnabledIndexedEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers2 */\r\n\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_buffers_indexed ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendEquationSeparateiEXT = (PFNGLBLENDEQUATIONSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationSeparateiEXT\")) == NULL) || r;\r\n  r = ((glBlendEquationiEXT = (PFNGLBLENDEQUATIONIEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquationiEXT\")) == NULL) || r;\r\n  r = ((glBlendFuncSeparateiEXT = (PFNGLBLENDFUNCSEPARATEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendFuncSeparateiEXT\")) == NULL) || r;\r\n  r = ((glBlendFunciEXT = (PFNGLBLENDFUNCIEXTPROC)glewGetProcAddress((const GLubyte*)\"glBlendFunciEXT\")) == NULL) || r;\r\n  r = ((glColorMaskiEXT = (PFNGLCOLORMASKIEXTPROC)glewGetProcAddress((const GLubyte*)\"glColorMaskiEXT\")) == NULL) || r;\r\n  r = ((glDisableiEXT = (PFNGLDISABLEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableiEXT\")) == NULL) || r;\r\n  r = ((glEnableiEXT = (PFNGLENABLEIEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableiEXT\")) == NULL) || r;\r\n  r = ((glIsEnablediEXT = (PFNGLISENABLEDIEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsEnablediEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers_indexed */\r\n\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_elements_base_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawElementsBaseVertexEXT = (PFNGLDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsBaseVertexEXT\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedBaseVertexEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedBaseVertexEXT\")) == NULL) || r;\r\n  r = ((glDrawRangeElementsBaseVertexEXT = (PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElementsBaseVertexEXT\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsBaseVertexEXT = (PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsBaseVertexEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_elements_base_vertex */\r\n\r\n#ifdef GL_EXT_draw_instanced\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_instanced ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedEXT\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_instanced */\r\n\r\n#ifdef GL_EXT_draw_range_elements\r\n\r\nstatic GLboolean _glewInit_GL_EXT_draw_range_elements ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawRangeElementsEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_draw_range_elements */\r\n\r\n#ifdef GL_EXT_external_buffer\r\n\r\nstatic GLboolean _glewInit_GL_EXT_external_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)\"glBufferStorageExternalEXT\")) == NULL) || r;\r\n  r = ((glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferStorageExternalEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_external_buffer */\r\n\r\n#ifdef GL_EXT_fog_coord\r\n\r\nstatic GLboolean _glewInit_GL_EXT_fog_coord ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordPointerEXT\")) == NULL) || r;\r\n  r = ((glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)glewGetProcAddress((const GLubyte*)\"glFogCoorddEXT\")) == NULL) || r;\r\n  r = ((glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFogCoorddvEXT\")) == NULL) || r;\r\n  r = ((glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordfEXT\")) == NULL) || r;\r\n  r = ((glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordfvEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_fog_coord */\r\n\r\n#ifdef GL_EXT_fragment_lighting\r\n\r\nstatic GLboolean _glewInit_GL_EXT_fragment_lighting ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentColorMaterialEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelfEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelfvEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModeliEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelivEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightfEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightfvEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightiEXT\")) == NULL) || r;\r\n  r = ((glFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightivEXT\")) == NULL) || r;\r\n  r = ((glFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialfEXT\")) == NULL) || r;\r\n  r = ((glFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialfvEXT\")) == NULL) || r;\r\n  r = ((glFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialiEXT\")) == NULL) || r;\r\n  r = ((glFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialivEXT\")) == NULL) || r;\r\n  r = ((glGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentLightfvEXT\")) == NULL) || r;\r\n  r = ((glGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentLightivEXT\")) == NULL) || r;\r\n  r = ((glGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentMaterialfvEXT\")) == NULL) || r;\r\n  r = ((glGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentMaterialivEXT\")) == NULL) || r;\r\n  r = ((glLightEnviEXT = (PFNGLLIGHTENVIEXTPROC)glewGetProcAddress((const GLubyte*)\"glLightEnviEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_fragment_lighting */\r\n\r\n#ifdef GL_EXT_framebuffer_blit\r\n\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_blit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBlitFramebufferEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_blit */\r\n\r\n#ifdef GL_EXT_framebuffer_multisample\r\n\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisampleEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_multisample */\r\n\r\n#ifdef GL_EXT_framebuffer_object\r\n\r\nstatic GLboolean _glewInit_GL_EXT_framebuffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindFramebufferEXT\")) == NULL) || r;\r\n  r = ((glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)\"glCheckFramebufferStatusEXT\")) == NULL) || r;\r\n  r = ((glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteFramebuffersEXT\")) == NULL) || r;\r\n  r = ((glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteRenderbuffersEXT\")) == NULL) || r;\r\n  r = ((glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture1DEXT\")) == NULL) || r;\r\n  r = ((glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture2DEXT\")) == NULL) || r;\r\n  r = ((glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture3DEXT\")) == NULL) || r;\r\n  r = ((glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenFramebuffersEXT\")) == NULL) || r;\r\n  r = ((glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenRenderbuffersEXT\")) == NULL) || r;\r\n  r = ((glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenerateMipmapEXT\")) == NULL) || r;\r\n  r = ((glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferAttachmentParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetRenderbufferParameterivEXT\")) == NULL) || r;\r\n  r = ((glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glIsFramebufferEXT\")) == NULL) || r;\r\n  r = ((glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glIsRenderbufferEXT\")) == NULL) || r;\r\n  r = ((glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_object */\r\n\r\n#ifdef GL_EXT_geometry_shader4\r\n\r\nstatic GLboolean _glewInit_GL_EXT_geometry_shader4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureEXT\")) == NULL) || r;\r\n  r = ((glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureFaceEXT\")) == NULL) || r;\r\n  r = ((glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameteriEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_geometry_shader4 */\r\n\r\n#ifdef GL_EXT_gpu_program_parameters\r\n\r\nstatic GLboolean _glewInit_GL_EXT_gpu_program_parameters ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameters4fvEXT\")) == NULL) || r;\r\n  r = ((glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameters4fvEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_gpu_program_parameters */\r\n\r\n#ifdef GL_EXT_gpu_shader4\r\n\r\nstatic GLboolean _glewInit_GL_EXT_gpu_shader4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindFragDataLocationEXT\")) == NULL) || r;\r\n  r = ((glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFragDataLocationEXT\")) == NULL) || r;\r\n  r = ((glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformuivEXT\")) == NULL) || r;\r\n  r = ((glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribIivEXT\")) == NULL) || r;\r\n  r = ((glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribIuivEXT\")) == NULL) || r;\r\n  r = ((glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform1uiEXT\")) == NULL) || r;\r\n  r = ((glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform1uivEXT\")) == NULL) || r;\r\n  r = ((glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform2uiEXT\")) == NULL) || r;\r\n  r = ((glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform2uivEXT\")) == NULL) || r;\r\n  r = ((glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform3uiEXT\")) == NULL) || r;\r\n  r = ((glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform3uivEXT\")) == NULL) || r;\r\n  r = ((glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform4uiEXT\")) == NULL) || r;\r\n  r = ((glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glUniform4uivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1iEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1ivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1uiEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI1uivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2iEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2ivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2uiEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI2uivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3iEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3ivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3uiEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI3uivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4bvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4iEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4ivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4svEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4ubvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4uiEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4uivEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribI4usvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribIPointerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_gpu_shader4 */\r\n\r\n#ifdef GL_EXT_histogram\r\n\r\nstatic GLboolean _glewInit_GL_EXT_histogram ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogramEXT\")) == NULL) || r;\r\n  r = ((glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogramParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetHistogramParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmaxEXT\")) == NULL) || r;\r\n  r = ((glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmaxParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMinmaxParameterivEXT\")) == NULL) || r;\r\n  r = ((glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glHistogramEXT\")) == NULL) || r;\r\n  r = ((glMinmaxEXT = (PFNGLMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)\"glMinmaxEXT\")) == NULL) || r;\r\n  r = ((glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glResetHistogramEXT\")) == NULL) || r;\r\n  r = ((glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)\"glResetMinmaxEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_histogram */\r\n\r\n#ifdef GL_EXT_index_func\r\n\r\nstatic GLboolean _glewInit_GL_EXT_index_func ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)glewGetProcAddress((const GLubyte*)\"glIndexFuncEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_index_func */\r\n\r\n#ifdef GL_EXT_index_material\r\n\r\nstatic GLboolean _glewInit_GL_EXT_index_material ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)\"glIndexMaterialEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_index_material */\r\n\r\n#ifdef GL_EXT_instanced_arrays\r\n\r\nstatic GLboolean _glewInit_GL_EXT_instanced_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexAttribDivisorEXT = (PFNGLVERTEXATTRIBDIVISOREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribDivisorEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_instanced_arrays */\r\n\r\n#ifdef GL_EXT_light_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_light_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glApplyTextureEXT\")) == NULL) || r;\r\n  r = ((glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureLightEXT\")) == NULL) || r;\r\n  r = ((glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureMaterialEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_light_texture */\r\n\r\n#ifdef GL_EXT_map_buffer_range\r\n\r\nstatic GLboolean _glewInit_GL_EXT_map_buffer_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushMappedBufferRangeEXT = (PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glFlushMappedBufferRangeEXT\")) == NULL) || r;\r\n  r = ((glMapBufferRangeEXT = (PFNGLMAPBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glMapBufferRangeEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_map_buffer_range */\r\n\r\n#ifdef GL_EXT_memory_object\r\n\r\nstatic GLboolean _glewInit_GL_EXT_memory_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)\"glBufferStorageMemEXT\")) == NULL) || r;\r\n  r = ((glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)\"glCreateMemoryObjectsEXT\")) == NULL) || r;\r\n  r = ((glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteMemoryObjectsEXT\")) == NULL) || r;\r\n  r = ((glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetMemoryObjectParameterivEXT\")) == NULL) || r;\r\n  r = ((glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetUnsignedBytei_vEXT\")) == NULL) || r;\r\n  r = ((glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetUnsignedBytevEXT\")) == NULL) || r;\r\n  r = ((glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsMemoryObjectEXT\")) == NULL) || r;\r\n  r = ((glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glMemoryObjectParameterivEXT\")) == NULL) || r;\r\n  r = ((glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)glewGetProcAddress((const GLubyte*)\"glNamedBufferStorageMemEXT\")) == NULL) || r;\r\n  r = ((glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageMem1DEXT\")) == NULL) || r;\r\n  r = ((glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageMem2DEXT\")) == NULL) || r;\r\n  r = ((glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageMem2DMultisampleEXT\")) == NULL) || r;\r\n  r = ((glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageMem3DEXT\")) == NULL) || r;\r\n  r = ((glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorageMem3DMultisampleEXT\")) == NULL) || r;\r\n  r = ((glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageMem1DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageMem2DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageMem2DMultisampleEXT\")) == NULL) || r;\r\n  r = ((glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageMem3DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorageMem3DMultisampleEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_memory_object */\r\n\r\n#ifdef GL_EXT_memory_object_fd\r\n\r\nstatic GLboolean _glewInit_GL_EXT_memory_object_fd ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportMemoryFdEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_memory_object_fd */\r\n\r\n#ifdef GL_EXT_memory_object_win32\r\n\r\nstatic GLboolean _glewInit_GL_EXT_memory_object_win32 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportMemoryWin32HandleEXT\")) == NULL) || r;\r\n  r = ((glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportMemoryWin32NameEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_memory_object_win32 */\r\n\r\n#ifdef GL_EXT_multi_draw_arrays\r\n\r\nstatic GLboolean _glewInit_GL_EXT_multi_draw_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysEXT\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_multi_draw_arrays */\r\n\r\n#ifdef GL_EXT_multi_draw_indirect\r\n\r\nstatic GLboolean _glewInit_GL_EXT_multi_draw_indirect ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectEXT = (PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectEXT\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectEXT = (PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_multi_draw_indirect */\r\n\r\n#ifdef GL_EXT_multisample\r\n\r\nstatic GLboolean _glewInit_GL_EXT_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)glewGetProcAddress((const GLubyte*)\"glSampleMaskEXT\")) == NULL) || r;\r\n  r = ((glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)glewGetProcAddress((const GLubyte*)\"glSamplePatternEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_multisample */\r\n\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_multisampled_render_to_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTexture2DMultisampleEXT = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTexture2DMultisampleEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_multisampled_render_to_texture */\r\n\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n\r\nstatic GLboolean _glewInit_GL_EXT_multiview_draw_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawBuffersIndexedEXT = (PFNGLDRAWBUFFERSINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffersIndexedEXT\")) == NULL) || r;\r\n  r = ((glGetIntegeri_vEXT = (PFNGLGETINTEGERI_VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetIntegeri_vEXT\")) == NULL) || r;\r\n  r = ((glReadBufferIndexedEXT = (PFNGLREADBUFFERINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glReadBufferIndexedEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_multiview_draw_buffers */\r\n\r\n#ifdef GL_EXT_paletted_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_paletted_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glColorTableEXT\")) == NULL) || r;\r\n  r = ((glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableEXT\")) == NULL) || r;\r\n  r = ((glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameterivEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_paletted_texture */\r\n\r\n#ifdef GL_EXT_pixel_transform\r\n\r\nstatic GLboolean _glewInit_GL_EXT_pixel_transform ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetPixelTransformParameterfvEXT\")) == NULL) || r;\r\n  r = ((glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetPixelTransformParameterivEXT\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterfEXT\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterfvEXT\")) == NULL) || r;\r\n  r = ((glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameteriEXT\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterivEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_pixel_transform */\r\n\r\n#ifdef GL_EXT_point_parameters\r\n\r\nstatic GLboolean _glewInit_GL_EXT_point_parameters ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterfEXT\")) == NULL) || r;\r\n  r = ((glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterfvEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_point_parameters */\r\n\r\n#ifdef GL_EXT_polygon_offset\r\n\r\nstatic GLboolean _glewInit_GL_EXT_polygon_offset ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glPolygonOffsetEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_polygon_offset */\r\n\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n\r\nstatic GLboolean _glewInit_GL_EXT_polygon_offset_clamp ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)glewGetProcAddress((const GLubyte*)\"glPolygonOffsetClampEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_polygon_offset_clamp */\r\n\r\n#ifdef GL_EXT_provoking_vertex\r\n\r\nstatic GLboolean _glewInit_GL_EXT_provoking_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)glewGetProcAddress((const GLubyte*)\"glProvokingVertexEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_provoking_vertex */\r\n\r\n#ifdef GL_EXT_raster_multisample\r\n\r\nstatic GLboolean _glewInit_GL_EXT_raster_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)glewGetProcAddress((const GLubyte*)\"glCoverageModulationNV\")) == NULL) || r;\r\n  r = ((glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)\"glCoverageModulationTableNV\")) == NULL) || r;\r\n  r = ((glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)glewGetProcAddress((const GLubyte*)\"glGetCoverageModulationTableNV\")) == NULL) || r;\r\n  r = ((glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)glewGetProcAddress((const GLubyte*)\"glRasterSamplesEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_raster_multisample */\r\n\r\n#ifdef GL_EXT_scene_marker\r\n\r\nstatic GLboolean _glewInit_GL_EXT_scene_marker ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBeginSceneEXT\")) == NULL) || r;\r\n  r = ((glEndSceneEXT = (PFNGLENDSCENEEXTPROC)glewGetProcAddress((const GLubyte*)\"glEndSceneEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_scene_marker */\r\n\r\n#ifdef GL_EXT_secondary_color\r\n\r\nstatic GLboolean _glewInit_GL_EXT_secondary_color ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3bEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3bvEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3dEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3dvEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3fEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3fvEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3iEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ivEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3sEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3svEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ubEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3ubvEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3uiEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3uivEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3usEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3usvEXT\")) == NULL) || r;\r\n  r = ((glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorPointerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_secondary_color */\r\n\r\n#ifdef GL_EXT_semaphore\r\n\r\nstatic GLboolean _glewInit_GL_EXT_semaphore ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteSemaphoresEXT\")) == NULL) || r;\r\n  r = ((glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenSemaphoresEXT\")) == NULL) || r;\r\n  r = ((glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetSemaphoreParameterui64vEXT\")) == NULL) || r;\r\n  r = ((glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsSemaphoreEXT\")) == NULL) || r;\r\n  r = ((glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)glewGetProcAddress((const GLubyte*)\"glSemaphoreParameterui64vEXT\")) == NULL) || r;\r\n  r = ((glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)\"glSignalSemaphoreEXT\")) == NULL) || r;\r\n  r = ((glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)glewGetProcAddress((const GLubyte*)\"glWaitSemaphoreEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_semaphore */\r\n\r\n#ifdef GL_EXT_semaphore_fd\r\n\r\nstatic GLboolean _glewInit_GL_EXT_semaphore_fd ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportSemaphoreFdEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_semaphore_fd */\r\n\r\n#ifdef GL_EXT_semaphore_win32\r\n\r\nstatic GLboolean _glewInit_GL_EXT_semaphore_win32 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportSemaphoreWin32HandleEXT\")) == NULL) || r;\r\n  r = ((glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportSemaphoreWin32NameEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_semaphore_win32 */\r\n\r\n#ifdef GL_EXT_separate_shader_objects\r\n\r\nstatic GLboolean _glewInit_GL_EXT_separate_shader_objects ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glActiveProgramEXT\")) == NULL) || r;\r\n  r = ((glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glCreateShaderProgramEXT\")) == NULL) || r;\r\n  r = ((glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)glewGetProcAddress((const GLubyte*)\"glUseShaderProgramEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_separate_shader_objects */\r\n\r\n#ifdef GL_EXT_shader_image_load_store\r\n\r\nstatic GLboolean _glewInit_GL_EXT_shader_image_load_store ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindImageTextureEXT\")) == NULL) || r;\r\n  r = ((glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)\"glMemoryBarrierEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_shader_image_load_store */\r\n\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n\r\nstatic GLboolean _glewInit_GL_EXT_shader_pixel_local_storage2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearPixelLocalStorageuiEXT = (PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearPixelLocalStorageuiEXT\")) == NULL) || r;\r\n  r = ((glFramebufferPixelLocalStorageSizeEXT = (PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferPixelLocalStorageSizeEXT\")) == NULL) || r;\r\n  r = ((glGetFramebufferPixelLocalStorageSizeEXT = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetFramebufferPixelLocalStorageSizeEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_shader_pixel_local_storage2 */\r\n\r\n#ifdef GL_EXT_sparse_texture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_sparse_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexPageCommitmentEXT = (PFNGLTEXPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexPageCommitmentEXT\")) == NULL) || r;\r\n  r = ((glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexturePageCommitmentEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_sparse_texture */\r\n\r\n#ifdef GL_EXT_stencil_two_side\r\n\r\nstatic GLboolean _glewInit_GL_EXT_stencil_two_side ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)glewGetProcAddress((const GLubyte*)\"glActiveStencilFaceEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_stencil_two_side */\r\n\r\n#ifdef GL_EXT_subtexture\r\n\r\nstatic GLboolean _glewInit_GL_EXT_subtexture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage1DEXT\")) == NULL) || r;\r\n  r = ((glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage2DEXT\")) == NULL) || r;\r\n  r = ((glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage3DEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_subtexture */\r\n\r\n#ifdef GL_EXT_texture3D\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture3D ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexImage3DEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture3D */\r\n\r\n#ifdef GL_EXT_texture_array\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureLayerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_array */\r\n\r\n#ifdef GL_EXT_texture_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"glTexBufferEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_buffer_object */\r\n\r\n#ifdef GL_EXT_texture_integer\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_integer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearColorIiEXT\")) == NULL) || r;\r\n  r = ((glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)glewGetProcAddress((const GLubyte*)\"glClearColorIuiEXT\")) == NULL) || r;\r\n  r = ((glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterIivEXT\")) == NULL) || r;\r\n  r = ((glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterIuivEXT\")) == NULL) || r;\r\n  r = ((glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterIivEXT\")) == NULL) || r;\r\n  r = ((glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterIuivEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_integer */\r\n\r\n#ifdef GL_EXT_texture_object\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glAreTexturesResidentEXT\")) == NULL) || r;\r\n  r = ((glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindTextureEXT\")) == NULL) || r;\r\n  r = ((glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteTexturesEXT\")) == NULL) || r;\r\n  r = ((glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenTexturesEXT\")) == NULL) || r;\r\n  r = ((glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsTextureEXT\")) == NULL) || r;\r\n  r = ((glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)\"glPrioritizeTexturesEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_object */\r\n\r\n#ifdef GL_EXT_texture_perturb_normal\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_perturb_normal ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureNormalEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_perturb_normal */\r\n\r\n#ifdef GL_EXT_texture_storage\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_storage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexStorage1DEXT = (PFNGLTEXSTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage1DEXT\")) == NULL) || r;\r\n  r = ((glTexStorage2DEXT = (PFNGLTEXSTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage2DEXT\")) == NULL) || r;\r\n  r = ((glTexStorage3DEXT = (PFNGLTEXSTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTexStorage3DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage1DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage2DEXT\")) == NULL) || r;\r\n  r = ((glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureStorage3DEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_storage */\r\n\r\n#ifdef GL_EXT_texture_view\r\n\r\nstatic GLboolean _glewInit_GL_EXT_texture_view ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureViewEXT = (PFNGLTEXTUREVIEWEXTPROC)glewGetProcAddress((const GLubyte*)\"glTextureViewEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_texture_view */\r\n\r\n#ifdef GL_EXT_timer_query\r\n\r\nstatic GLboolean _glewInit_GL_EXT_timer_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjecti64vEXT\")) == NULL) || r;\r\n  r = ((glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetQueryObjectui64vEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_timer_query */\r\n\r\n#ifdef GL_EXT_transform_feedback\r\n\r\nstatic GLboolean _glewInit_GL_EXT_transform_feedback ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)\"glBeginTransformFeedbackEXT\")) == NULL) || r;\r\n  r = ((glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferBaseEXT\")) == NULL) || r;\r\n  r = ((glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferOffsetEXT\")) == NULL) || r;\r\n  r = ((glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferRangeEXT\")) == NULL) || r;\r\n  r = ((glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)\"glEndTransformFeedbackEXT\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbackVaryingEXT\")) == NULL) || r;\r\n  r = ((glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackVaryingsEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_transform_feedback */\r\n\r\n#ifdef GL_EXT_vertex_array\r\n\r\nstatic GLboolean _glewInit_GL_EXT_vertex_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glArrayElementEXT\")) == NULL) || r;\r\n  r = ((glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glColorPointerEXT\")) == NULL) || r;\r\n  r = ((glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysEXT\")) == NULL) || r;\r\n  r = ((glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glEdgeFlagPointerEXT\")) == NULL) || r;\r\n  r = ((glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glIndexPointerEXT\")) == NULL) || r;\r\n  r = ((glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glNormalPointerEXT\")) == NULL) || r;\r\n  r = ((glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordPointerEXT\")) == NULL) || r;\r\n  r = ((glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexPointerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_vertex_array */\r\n\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n\r\nstatic GLboolean _glewInit_GL_EXT_vertex_array_setXXX ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindArraySetEXT = (PFNGLBINDARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glBindArraySetEXT\")) == NULL) || r;\r\n  r = ((glCreateArraySetExt = (PFNGLCREATEARRAYSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glCreateArraySetExt\")) == NULL) || r;\r\n  r = ((glDeleteArraySetsEXT = (PFNGLDELETEARRAYSETSEXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteArraySetsEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_vertex_array_setXXX */\r\n\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n\r\nstatic GLboolean _glewInit_GL_EXT_vertex_attrib_64bit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribLdvEXT\")) == NULL) || r;\r\n  r = ((glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayVertexAttribLOffsetEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1dEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1dvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2dEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2dvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3dEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3dvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4dEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4dvEXT\")) == NULL) || r;\r\n  r = ((glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribLPointerEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_vertex_attrib_64bit */\r\n\r\n#ifdef GL_EXT_vertex_shader\r\n\r\nstatic GLboolean _glewInit_GL_EXT_vertex_shader ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBeginVertexShaderEXT\")) == NULL) || r;\r\n  r = ((glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindLightParameterEXT\")) == NULL) || r;\r\n  r = ((glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindMaterialParameterEXT\")) == NULL) || r;\r\n  r = ((glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindParameterEXT\")) == NULL) || r;\r\n  r = ((glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindTexGenParameterEXT\")) == NULL) || r;\r\n  r = ((glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindTextureUnitParameterEXT\")) == NULL) || r;\r\n  r = ((glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexShaderEXT\")) == NULL) || r;\r\n  r = ((glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)\"glDeleteVertexShaderEXT\")) == NULL) || r;\r\n  r = ((glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)\"glDisableVariantClientStateEXT\")) == NULL) || r;\r\n  r = ((glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)\"glEnableVariantClientStateEXT\")) == NULL) || r;\r\n  r = ((glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)\"glEndVertexShaderEXT\")) == NULL) || r;\r\n  r = ((glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glExtractComponentEXT\")) == NULL) || r;\r\n  r = ((glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenSymbolsEXT\")) == NULL) || r;\r\n  r = ((glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)glewGetProcAddress((const GLubyte*)\"glGenVertexShadersEXT\")) == NULL) || r;\r\n  r = ((glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetInvariantBooleanvEXT\")) == NULL) || r;\r\n  r = ((glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetInvariantFloatvEXT\")) == NULL) || r;\r\n  r = ((glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetInvariantIntegervEXT\")) == NULL) || r;\r\n  r = ((glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetLocalConstantBooleanvEXT\")) == NULL) || r;\r\n  r = ((glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetLocalConstantFloatvEXT\")) == NULL) || r;\r\n  r = ((glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetLocalConstantIntegervEXT\")) == NULL) || r;\r\n  r = ((glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantBooleanvEXT\")) == NULL) || r;\r\n  r = ((glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantFloatvEXT\")) == NULL) || r;\r\n  r = ((glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantIntegervEXT\")) == NULL) || r;\r\n  r = ((glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)\"glGetVariantPointervEXT\")) == NULL) || r;\r\n  r = ((glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)\"glInsertComponentEXT\")) == NULL) || r;\r\n  r = ((glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)glewGetProcAddress((const GLubyte*)\"glIsVariantEnabledEXT\")) == NULL) || r;\r\n  r = ((glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)glewGetProcAddress((const GLubyte*)\"glSetInvariantEXT\")) == NULL) || r;\r\n  r = ((glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)glewGetProcAddress((const GLubyte*)\"glSetLocalConstantEXT\")) == NULL) || r;\r\n  r = ((glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)glewGetProcAddress((const GLubyte*)\"glShaderOp1EXT\")) == NULL) || r;\r\n  r = ((glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)glewGetProcAddress((const GLubyte*)\"glShaderOp2EXT\")) == NULL) || r;\r\n  r = ((glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)glewGetProcAddress((const GLubyte*)\"glShaderOp3EXT\")) == NULL) || r;\r\n  r = ((glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)glewGetProcAddress((const GLubyte*)\"glSwizzleEXT\")) == NULL) || r;\r\n  r = ((glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantPointerEXT\")) == NULL) || r;\r\n  r = ((glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantbvEXT\")) == NULL) || r;\r\n  r = ((glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantdvEXT\")) == NULL) || r;\r\n  r = ((glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantfvEXT\")) == NULL) || r;\r\n  r = ((glVariantivEXT = (PFNGLVARIANTIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantivEXT\")) == NULL) || r;\r\n  r = ((glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantsvEXT\")) == NULL) || r;\r\n  r = ((glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantubvEXT\")) == NULL) || r;\r\n  r = ((glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantuivEXT\")) == NULL) || r;\r\n  r = ((glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVariantusvEXT\")) == NULL) || r;\r\n  r = ((glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)glewGetProcAddress((const GLubyte*)\"glWriteMaskEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_vertex_shader */\r\n\r\n#ifdef GL_EXT_vertex_weighting\r\n\r\nstatic GLboolean _glewInit_GL_EXT_vertex_weighting ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexWeightPointerEXT\")) == NULL) || r;\r\n  r = ((glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexWeightfEXT\")) == NULL) || r;\r\n  r = ((glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)\"glVertexWeightfvEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_vertex_weighting */\r\n\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n\r\nstatic GLboolean _glewInit_GL_EXT_win32_keyed_mutex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)\"glAcquireKeyedMutexWin32EXT\")) == NULL) || r;\r\n  r = ((glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)glewGetProcAddress((const GLubyte*)\"glReleaseKeyedMutexWin32EXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_win32_keyed_mutex */\r\n\r\n#ifdef GL_EXT_window_rectangles\r\n\r\nstatic GLboolean _glewInit_GL_EXT_window_rectangles ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)glewGetProcAddress((const GLubyte*)\"glWindowRectanglesEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_window_rectangles */\r\n\r\n#ifdef GL_EXT_x11_sync_object\r\n\r\nstatic GLboolean _glewInit_GL_EXT_x11_sync_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)glewGetProcAddress((const GLubyte*)\"glImportSyncEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_EXT_x11_sync_object */\r\n\r\n#ifdef GL_GREMEDY_frame_terminator\r\n\r\nstatic GLboolean _glewInit_GL_GREMEDY_frame_terminator ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)glewGetProcAddress((const GLubyte*)\"glFrameTerminatorGREMEDY\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_GREMEDY_frame_terminator */\r\n\r\n#ifdef GL_GREMEDY_string_marker\r\n\r\nstatic GLboolean _glewInit_GL_GREMEDY_string_marker ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)glewGetProcAddress((const GLubyte*)\"glStringMarkerGREMEDY\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_GREMEDY_string_marker */\r\n\r\n#ifdef GL_HP_image_transform\r\n\r\nstatic GLboolean _glewInit_GL_HP_image_transform ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)\"glGetImageTransformParameterfvHP\")) == NULL) || r;\r\n  r = ((glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)\"glGetImageTransformParameterivHP\")) == NULL) || r;\r\n  r = ((glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)glewGetProcAddress((const GLubyte*)\"glImageTransformParameterfHP\")) == NULL) || r;\r\n  r = ((glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)\"glImageTransformParameterfvHP\")) == NULL) || r;\r\n  r = ((glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)glewGetProcAddress((const GLubyte*)\"glImageTransformParameteriHP\")) == NULL) || r;\r\n  r = ((glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)\"glImageTransformParameterivHP\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_HP_image_transform */\r\n\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n\r\nstatic GLboolean _glewInit_GL_IBM_multimode_draw_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)glewGetProcAddress((const GLubyte*)\"glMultiModeDrawArraysIBM\")) == NULL) || r;\r\n  r = ((glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)glewGetProcAddress((const GLubyte*)\"glMultiModeDrawElementsIBM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_IBM_multimode_draw_arrays */\r\n\r\n#ifdef GL_IBM_vertex_array_lists\r\n\r\nstatic GLboolean _glewInit_GL_IBM_vertex_array_lists ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glColorPointerListIBM\")) == NULL) || r;\r\n  r = ((glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glEdgeFlagPointerListIBM\")) == NULL) || r;\r\n  r = ((glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordPointerListIBM\")) == NULL) || r;\r\n  r = ((glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glIndexPointerListIBM\")) == NULL) || r;\r\n  r = ((glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glNormalPointerListIBM\")) == NULL) || r;\r\n  r = ((glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorPointerListIBM\")) == NULL) || r;\r\n  r = ((glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordPointerListIBM\")) == NULL) || r;\r\n  r = ((glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)\"glVertexPointerListIBM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_IBM_vertex_array_lists */\r\n\r\n#ifdef GL_INTEL_map_texture\r\n\r\nstatic GLboolean _glewInit_GL_INTEL_map_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)\"glMapTexture2DINTEL\")) == NULL) || r;\r\n  r = ((glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)glewGetProcAddress((const GLubyte*)\"glSyncTextureINTEL\")) == NULL) || r;\r\n  r = ((glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)glewGetProcAddress((const GLubyte*)\"glUnmapTexture2DINTEL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_INTEL_map_texture */\r\n\r\n#ifdef GL_INTEL_parallel_arrays\r\n\r\nstatic GLboolean _glewInit_GL_INTEL_parallel_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)\"glColorPointervINTEL\")) == NULL) || r;\r\n  r = ((glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)\"glNormalPointervINTEL\")) == NULL) || r;\r\n  r = ((glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordPointervINTEL\")) == NULL) || r;\r\n  r = ((glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)\"glVertexPointervINTEL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_INTEL_parallel_arrays */\r\n\r\n#ifdef GL_INTEL_performance_query\r\n\r\nstatic GLboolean _glewInit_GL_INTEL_performance_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)\"glBeginPerfQueryINTEL\")) == NULL) || r;\r\n  r = ((glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)\"glCreatePerfQueryINTEL\")) == NULL) || r;\r\n  r = ((glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)\"glDeletePerfQueryINTEL\")) == NULL) || r;\r\n  r = ((glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)\"glEndPerfQueryINTEL\")) == NULL) || r;\r\n  r = ((glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetFirstPerfQueryIdINTEL\")) == NULL) || r;\r\n  r = ((glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetNextPerfQueryIdINTEL\")) == NULL) || r;\r\n  r = ((glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfCounterInfoINTEL\")) == NULL) || r;\r\n  r = ((glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfQueryDataINTEL\")) == NULL) || r;\r\n  r = ((glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfQueryIdByNameINTEL\")) == NULL) || r;\r\n  r = ((glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)glewGetProcAddress((const GLubyte*)\"glGetPerfQueryInfoINTEL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_INTEL_performance_query */\r\n\r\n#ifdef GL_INTEL_texture_scissor\r\n\r\nstatic GLboolean _glewInit_GL_INTEL_texture_scissor ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexScissorFuncINTEL = (PFNGLTEXSCISSORFUNCINTELPROC)glewGetProcAddress((const GLubyte*)\"glTexScissorFuncINTEL\")) == NULL) || r;\r\n  r = ((glTexScissorINTEL = (PFNGLTEXSCISSORINTELPROC)glewGetProcAddress((const GLubyte*)\"glTexScissorINTEL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_INTEL_texture_scissor */\r\n\r\n#ifdef GL_KHR_blend_equation_advanced\r\n\r\nstatic GLboolean _glewInit_GL_KHR_blend_equation_advanced ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)glewGetProcAddress((const GLubyte*)\"glBlendBarrierKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_KHR_blend_equation_advanced */\r\n\r\n#ifdef GL_KHR_debug\r\n\r\nstatic GLboolean _glewInit_GL_KHR_debug ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageCallback\")) == NULL) || r;\r\n  r = ((glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageControl\")) == NULL) || r;\r\n  r = ((glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)glewGetProcAddress((const GLubyte*)\"glDebugMessageInsert\")) == NULL) || r;\r\n  r = ((glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)glewGetProcAddress((const GLubyte*)\"glGetDebugMessageLog\")) == NULL) || r;\r\n  r = ((glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectLabel\")) == NULL) || r;\r\n  r = ((glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)\"glGetObjectPtrLabel\")) == NULL) || r;\r\n  r = ((glObjectLabel = (PFNGLOBJECTLABELPROC)glewGetProcAddress((const GLubyte*)\"glObjectLabel\")) == NULL) || r;\r\n  r = ((glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)glewGetProcAddress((const GLubyte*)\"glObjectPtrLabel\")) == NULL) || r;\r\n  r = ((glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)\"glPopDebugGroup\")) == NULL) || r;\r\n  r = ((glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)glewGetProcAddress((const GLubyte*)\"glPushDebugGroup\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_KHR_debug */\r\n\r\n#ifdef GL_KHR_parallel_shader_compile\r\n\r\nstatic GLboolean _glewInit_GL_KHR_parallel_shader_compile ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)glewGetProcAddress((const GLubyte*)\"glMaxShaderCompilerThreadsKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_KHR_parallel_shader_compile */\r\n\r\n#ifdef GL_KHR_robustness\r\n\r\nstatic GLboolean _glewInit_GL_KHR_robustness ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformfv\")) == NULL) || r;\r\n  r = ((glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformiv\")) == NULL) || r;\r\n  r = ((glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)\"glGetnUniformuiv\")) == NULL) || r;\r\n  r = ((glReadnPixels = (PFNGLREADNPIXELSPROC)glewGetProcAddress((const GLubyte*)\"glReadnPixels\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_KHR_robustness */\r\n\r\n#ifdef GL_KTX_buffer_region\r\n\r\nstatic GLboolean _glewInit_GL_KTX_buffer_region ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferRegionEnabled = (PFNGLBUFFERREGIONENABLEDPROC)glewGetProcAddress((const GLubyte*)\"glBufferRegionEnabled\")) == NULL) || r;\r\n  r = ((glDeleteBufferRegion = (PFNGLDELETEBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)\"glDeleteBufferRegion\")) == NULL) || r;\r\n  r = ((glDrawBufferRegion = (PFNGLDRAWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)\"glDrawBufferRegion\")) == NULL) || r;\r\n  r = ((glNewBufferRegion = (PFNGLNEWBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)\"glNewBufferRegion\")) == NULL) || r;\r\n  r = ((glReadBufferRegion = (PFNGLREADBUFFERREGIONPROC)glewGetProcAddress((const GLubyte*)\"glReadBufferRegion\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_KTX_buffer_region */\r\n\r\n#ifdef GL_MESA_resize_buffers\r\n\r\nstatic GLboolean _glewInit_GL_MESA_resize_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)\"glResizeBuffersMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_MESA_resize_buffers */\r\n\r\n#ifdef GL_MESA_window_pos\r\n\r\nstatic GLboolean _glewInit_GL_MESA_window_pos ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2dMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2dvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2fMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2fvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2iMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2ivMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2sMESA\")) == NULL) || r;\r\n  r = ((glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos2svMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3dMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3dvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3fMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3fvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3iMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3ivMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3sMESA\")) == NULL) || r;\r\n  r = ((glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos3svMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4dMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4dvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4fMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4fvMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4iMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4ivMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4sMESA\")) == NULL) || r;\r\n  r = ((glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)glewGetProcAddress((const GLubyte*)\"glWindowPos4svMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_MESA_window_pos */\r\n\r\n#ifdef GL_NVX_conditional_render\r\n\r\nstatic GLboolean _glewInit_GL_NVX_conditional_render ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)\"glBeginConditionalRenderNVX\")) == NULL) || r;\r\n  r = ((glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)glewGetProcAddress((const GLubyte*)\"glEndConditionalRenderNVX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NVX_conditional_render */\r\n\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n\r\nstatic GLboolean _glewInit_GL_NVX_linked_gpu_multicast ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glLGPUCopyImageSubDataNVX = (PFNGLLGPUCOPYIMAGESUBDATANVXPROC)glewGetProcAddress((const GLubyte*)\"glLGPUCopyImageSubDataNVX\")) == NULL) || r;\r\n  r = ((glLGPUInterlockNVX = (PFNGLLGPUINTERLOCKNVXPROC)glewGetProcAddress((const GLubyte*)\"glLGPUInterlockNVX\")) == NULL) || r;\r\n  r = ((glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)glewGetProcAddress((const GLubyte*)\"glLGPUNamedBufferSubDataNVX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NVX_linked_gpu_multicast */\r\n\r\n#ifdef GL_NV_3dvision_settings\r\n\r\nstatic GLboolean _glewInit_GL_NV_3dvision_settings ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glStereoParameterfNV = (PFNGLSTEREOPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)\"glStereoParameterfNV\")) == NULL) || r;\r\n  r = ((glStereoParameteriNV = (PFNGLSTEREOPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glStereoParameteriNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_3dvision_settings */\r\n\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n\r\nstatic GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectBindlessNV\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectBindlessNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_bindless_multi_draw_indirect */\r\n\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n\r\nstatic GLboolean _glewInit_GL_NV_bindless_multi_draw_indirect_count ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawArraysIndirectBindlessCountNV\")) == NULL) || r;\r\n  r = ((glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiDrawElementsIndirectBindlessCountNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_bindless_multi_draw_indirect_count */\r\n\r\n#ifdef GL_NV_bindless_texture\r\n\r\nstatic GLboolean _glewInit_GL_NV_bindless_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)glewGetProcAddress((const GLubyte*)\"glGetImageHandleNV\")) == NULL) || r;\r\n  r = ((glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureHandleNV\")) == NULL) || r;\r\n  r = ((glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)glewGetProcAddress((const GLubyte*)\"glGetTextureSamplerHandleNV\")) == NULL) || r;\r\n  r = ((glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glIsImageHandleResidentNV\")) == NULL) || r;\r\n  r = ((glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glIsTextureHandleResidentNV\")) == NULL) || r;\r\n  r = ((glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeImageHandleNonResidentNV\")) == NULL) || r;\r\n  r = ((glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeImageHandleResidentNV\")) == NULL) || r;\r\n  r = ((glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeTextureHandleNonResidentNV\")) == NULL) || r;\r\n  r = ((glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeTextureHandleResidentNV\")) == NULL) || r;\r\n  r = ((glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformHandleui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformHandleui64vNV\")) == NULL) || r;\r\n  r = ((glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniformHandleui64NV\")) == NULL) || r;\r\n  r = ((glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformHandleui64vNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_bindless_texture */\r\n\r\n#ifdef GL_NV_blend_equation_advanced\r\n\r\nstatic GLboolean _glewInit_GL_NV_blend_equation_advanced ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)glewGetProcAddress((const GLubyte*)\"glBlendBarrierNV\")) == NULL) || r;\r\n  r = ((glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glBlendParameteriNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_blend_equation_advanced */\r\n\r\n#ifdef GL_NV_clip_space_w_scaling\r\n\r\nstatic GLboolean _glewInit_GL_NV_clip_space_w_scaling ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)glewGetProcAddress((const GLubyte*)\"glViewportPositionWScaleNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_clip_space_w_scaling */\r\n\r\n#ifdef GL_NV_command_list\r\n\r\nstatic GLboolean _glewInit_GL_NV_command_list ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)\"glCallCommandListNV\")) == NULL) || r;\r\n  r = ((glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)glewGetProcAddress((const GLubyte*)\"glCommandListSegmentsNV\")) == NULL) || r;\r\n  r = ((glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)\"glCompileCommandListNV\")) == NULL) || r;\r\n  r = ((glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)\"glCreateCommandListsNV\")) == NULL) || r;\r\n  r = ((glCreateStatesNV = (PFNGLCREATESTATESNVPROC)glewGetProcAddress((const GLubyte*)\"glCreateStatesNV\")) == NULL) || r;\r\n  r = ((glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteCommandListsNV\")) == NULL) || r;\r\n  r = ((glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteStatesNV\")) == NULL) || r;\r\n  r = ((glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawCommandsAddressNV\")) == NULL) || r;\r\n  r = ((glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawCommandsNV\")) == NULL) || r;\r\n  r = ((glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawCommandsStatesAddressNV\")) == NULL) || r;\r\n  r = ((glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawCommandsStatesNV\")) == NULL) || r;\r\n  r = ((glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCommandHeaderNV\")) == NULL) || r;\r\n  r = ((glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)glewGetProcAddress((const GLubyte*)\"glGetStageIndexNV\")) == NULL) || r;\r\n  r = ((glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)glewGetProcAddress((const GLubyte*)\"glIsCommandListNV\")) == NULL) || r;\r\n  r = ((glIsStateNV = (PFNGLISSTATENVPROC)glewGetProcAddress((const GLubyte*)\"glIsStateNV\")) == NULL) || r;\r\n  r = ((glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)glewGetProcAddress((const GLubyte*)\"glListDrawCommandsStatesClientNV\")) == NULL) || r;\r\n  r = ((glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)glewGetProcAddress((const GLubyte*)\"glStateCaptureNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_command_list */\r\n\r\n#ifdef GL_NV_conditional_render\r\n\r\nstatic GLboolean _glewInit_GL_NV_conditional_render ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)\"glBeginConditionalRenderNV\")) == NULL) || r;\r\n  r = ((glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)\"glEndConditionalRenderNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_conditional_render */\r\n\r\n#ifdef GL_NV_conservative_raster\r\n\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)glewGetProcAddress((const GLubyte*)\"glSubpixelPrecisionBiasNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster */\r\n\r\n#ifdef GL_NV_conservative_raster_dilate\r\n\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster_dilate ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)\"glConservativeRasterParameterfNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster_dilate */\r\n\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n\r\nstatic GLboolean _glewInit_GL_NV_conservative_raster_pre_snap_triangles ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glConservativeRasterParameteriNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\r\n\r\n#ifdef GL_NV_copy_buffer\r\n\r\nstatic GLboolean _glewInit_GL_NV_copy_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyBufferSubDataNV = (PFNGLCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glCopyBufferSubDataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_copy_buffer */\r\n\r\n#ifdef GL_NV_copy_image\r\n\r\nstatic GLboolean _glewInit_GL_NV_copy_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glCopyImageSubDataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_copy_image */\r\n\r\n#ifdef GL_NV_depth_buffer_float\r\n\r\nstatic GLboolean _glewInit_GL_NV_depth_buffer_float ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)glewGetProcAddress((const GLubyte*)\"glClearDepthdNV\")) == NULL) || r;\r\n  r = ((glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)glewGetProcAddress((const GLubyte*)\"glDepthBoundsdNV\")) == NULL) || r;\r\n  r = ((glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangedNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_depth_buffer_float */\r\n\r\n#ifdef GL_NV_draw_buffers\r\n\r\nstatic GLboolean _glewInit_GL_NV_draw_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawBuffersNV = (PFNGLDRAWBUFFERSNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawBuffersNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_draw_buffers */\r\n\r\n#ifdef GL_NV_draw_instanced\r\n\r\nstatic GLboolean _glewInit_GL_NV_draw_instanced ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawArraysInstancedNV = (PFNGLDRAWARRAYSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawArraysInstancedNV\")) == NULL) || r;\r\n  r = ((glDrawElementsInstancedNV = (PFNGLDRAWELEMENTSINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawElementsInstancedNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_draw_instanced */\r\n\r\n#ifdef GL_NV_draw_texture\r\n\r\nstatic GLboolean _glewInit_GL_NV_draw_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)glewGetProcAddress((const GLubyte*)\"glDrawTextureNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_draw_texture */\r\n\r\n#ifdef GL_NV_draw_vulkan_image\r\n\r\nstatic GLboolean _glewInit_GL_NV_draw_vulkan_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)glewGetProcAddress((const GLubyte*)\"glDrawVkImageNV\")) == NULL) || r;\r\n  r = ((glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVkProcAddrNV\")) == NULL) || r;\r\n  r = ((glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)glewGetProcAddress((const GLubyte*)\"glSignalVkFenceNV\")) == NULL) || r;\r\n  r = ((glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)\"glSignalVkSemaphoreNV\")) == NULL) || r;\r\n  r = ((glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)glewGetProcAddress((const GLubyte*)\"glWaitVkSemaphoreNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_draw_vulkan_image */\r\n\r\n#ifdef GL_NV_evaluators\r\n\r\nstatic GLboolean _glewInit_GL_NV_evaluators ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glEvalMapsNV = (PFNGLEVALMAPSNVPROC)glewGetProcAddress((const GLubyte*)\"glEvalMapsNV\")) == NULL) || r;\r\n  r = ((glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMapAttribParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMapAttribParameterivNV\")) == NULL) || r;\r\n  r = ((glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMapControlPointsNV\")) == NULL) || r;\r\n  r = ((glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMapParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMapParameterivNV\")) == NULL) || r;\r\n  r = ((glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)\"glMapControlPointsNV\")) == NULL) || r;\r\n  r = ((glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glMapParameterfvNV\")) == NULL) || r;\r\n  r = ((glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glMapParameterivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_evaluators */\r\n\r\n#ifdef GL_NV_explicit_multisample\r\n\r\nstatic GLboolean _glewInit_GL_NV_explicit_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetMultisamplefvNV\")) == NULL) || r;\r\n  r = ((glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)\"glSampleMaskIndexedNV\")) == NULL) || r;\r\n  r = ((glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)glewGetProcAddress((const GLubyte*)\"glTexRenderbufferNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_explicit_multisample */\r\n\r\n#ifdef GL_NV_fence\r\n\r\nstatic GLboolean _glewInit_GL_NV_fence ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteFencesNV\")) == NULL) || r;\r\n  r = ((glFinishFenceNV = (PFNGLFINISHFENCENVPROC)glewGetProcAddress((const GLubyte*)\"glFinishFenceNV\")) == NULL) || r;\r\n  r = ((glGenFencesNV = (PFNGLGENFENCESNVPROC)glewGetProcAddress((const GLubyte*)\"glGenFencesNV\")) == NULL) || r;\r\n  r = ((glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetFenceivNV\")) == NULL) || r;\r\n  r = ((glIsFenceNV = (PFNGLISFENCENVPROC)glewGetProcAddress((const GLubyte*)\"glIsFenceNV\")) == NULL) || r;\r\n  r = ((glSetFenceNV = (PFNGLSETFENCENVPROC)glewGetProcAddress((const GLubyte*)\"glSetFenceNV\")) == NULL) || r;\r\n  r = ((glTestFenceNV = (PFNGLTESTFENCENVPROC)glewGetProcAddress((const GLubyte*)\"glTestFenceNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_fence */\r\n\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n\r\nstatic GLboolean _glewInit_GL_NV_fragment_coverage_to_color ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)glewGetProcAddress((const GLubyte*)\"glFragmentCoverageColorNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_fragment_coverage_to_color */\r\n\r\n#ifdef GL_NV_fragment_program\r\n\r\nstatic GLboolean _glewInit_GL_NV_fragment_program ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramNamedParameterdvNV\")) == NULL) || r;\r\n  r = ((glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramNamedParameterfvNV\")) == NULL) || r;\r\n  r = ((glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramNamedParameter4dNV\")) == NULL) || r;\r\n  r = ((glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramNamedParameter4dvNV\")) == NULL) || r;\r\n  r = ((glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramNamedParameter4fNV\")) == NULL) || r;\r\n  r = ((glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramNamedParameter4fvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_fragment_program */\r\n\r\n#ifdef GL_NV_framebuffer_blit\r\n\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_blit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBlitFramebufferNV = (PFNGLBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)\"glBlitFramebufferNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_blit */\r\n\r\n#ifdef GL_NV_framebuffer_multisample\r\n\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glRenderbufferStorageMultisampleNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisampleNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_multisample */\r\n\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n\r\nstatic GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)\"glRenderbufferStorageMultisampleCoverageNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_multisample_coverage */\r\n\r\n#ifdef GL_NV_geometry_program4\r\n\r\nstatic GLboolean _glewInit_GL_NV_geometry_program4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramVertexLimitNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_geometry_program4 */\r\n\r\n#ifdef GL_NV_gpu_multicast\r\n\r\nstatic GLboolean _glewInit_GL_NV_gpu_multicast ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMulticastBarrierNV = (PFNGLMULTICASTBARRIERNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastBarrierNV\")) == NULL) || r;\r\n  r = ((glMulticastBlitFramebufferNV = (PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastBlitFramebufferNV\")) == NULL) || r;\r\n  r = ((glMulticastBufferSubDataNV = (PFNGLMULTICASTBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastBufferSubDataNV\")) == NULL) || r;\r\n  r = ((glMulticastCopyBufferSubDataNV = (PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastCopyBufferSubDataNV\")) == NULL) || r;\r\n  r = ((glMulticastCopyImageSubDataNV = (PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastCopyImageSubDataNV\")) == NULL) || r;\r\n  r = ((glMulticastFramebufferSampleLocationsfvNV = (PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastFramebufferSampleLocationsfvNV\")) == NULL) || r;\r\n  r = ((glMulticastGetQueryObjecti64vNV = (PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastGetQueryObjecti64vNV\")) == NULL) || r;\r\n  r = ((glMulticastGetQueryObjectivNV = (PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastGetQueryObjectivNV\")) == NULL) || r;\r\n  r = ((glMulticastGetQueryObjectui64vNV = (PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastGetQueryObjectui64vNV\")) == NULL) || r;\r\n  r = ((glMulticastGetQueryObjectuivNV = (PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastGetQueryObjectuivNV\")) == NULL) || r;\r\n  r = ((glMulticastWaitSyncNV = (PFNGLMULTICASTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)\"glMulticastWaitSyncNV\")) == NULL) || r;\r\n  r = ((glRenderGpuMaskNV = (PFNGLRENDERGPUMASKNVPROC)glewGetProcAddress((const GLubyte*)\"glRenderGpuMaskNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_gpu_multicast */\r\n\r\n#ifdef GL_NV_gpu_program4\r\n\r\nstatic GLboolean _glewInit_GL_NV_gpu_program4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameterI4iNV\")) == NULL) || r;\r\n  r = ((glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameterI4ivNV\")) == NULL) || r;\r\n  r = ((glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameterI4uiNV\")) == NULL) || r;\r\n  r = ((glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParameterI4uivNV\")) == NULL) || r;\r\n  r = ((glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParametersI4ivNV\")) == NULL) || r;\r\n  r = ((glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramEnvParametersI4uivNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameterI4iNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameterI4ivNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameterI4uiNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParameterI4uivNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParametersI4ivNV\")) == NULL) || r;\r\n  r = ((glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramLocalParametersI4uivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_gpu_program4 */\r\n\r\n#ifdef GL_NV_gpu_shader5\r\n\r\nstatic GLboolean _glewInit_GL_NV_gpu_shader5 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformi64vNV\")) == NULL) || r;\r\n  r = ((glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetUniformui64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1i64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1i64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform1ui64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2i64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2i64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform2ui64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3i64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3i64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform3ui64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4i64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4i64vNV\")) == NULL) || r;\r\n  r = ((glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniform4ui64vNV\")) == NULL) || r;\r\n  r = ((glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1i64NV\")) == NULL) || r;\r\n  r = ((glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1i64vNV\")) == NULL) || r;\r\n  r = ((glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ui64NV\")) == NULL) || r;\r\n  r = ((glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform1ui64vNV\")) == NULL) || r;\r\n  r = ((glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2i64NV\")) == NULL) || r;\r\n  r = ((glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2i64vNV\")) == NULL) || r;\r\n  r = ((glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ui64NV\")) == NULL) || r;\r\n  r = ((glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform2ui64vNV\")) == NULL) || r;\r\n  r = ((glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3i64NV\")) == NULL) || r;\r\n  r = ((glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3i64vNV\")) == NULL) || r;\r\n  r = ((glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ui64NV\")) == NULL) || r;\r\n  r = ((glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform3ui64vNV\")) == NULL) || r;\r\n  r = ((glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4i64NV\")) == NULL) || r;\r\n  r = ((glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4i64vNV\")) == NULL) || r;\r\n  r = ((glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ui64NV\")) == NULL) || r;\r\n  r = ((glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniform4ui64vNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_gpu_shader5 */\r\n\r\n#ifdef GL_NV_half_float\r\n\r\nstatic GLboolean _glewInit_GL_NV_half_float ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColor3hNV = (PFNGLCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)\"glColor3hNV\")) == NULL) || r;\r\n  r = ((glColor3hvNV = (PFNGLCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glColor3hvNV\")) == NULL) || r;\r\n  r = ((glColor4hNV = (PFNGLCOLOR4HNVPROC)glewGetProcAddress((const GLubyte*)\"glColor4hNV\")) == NULL) || r;\r\n  r = ((glColor4hvNV = (PFNGLCOLOR4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glColor4hvNV\")) == NULL) || r;\r\n  r = ((glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordhNV\")) == NULL) || r;\r\n  r = ((glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordhvNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1hNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord1hvNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2hNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord2hvNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3hNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord3hvNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4hNV\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4hvNV\")) == NULL) || r;\r\n  r = ((glNormal3hNV = (PFNGLNORMAL3HNVPROC)glewGetProcAddress((const GLubyte*)\"glNormal3hNV\")) == NULL) || r;\r\n  r = ((glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glNormal3hvNV\")) == NULL) || r;\r\n  r = ((glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3hNV\")) == NULL) || r;\r\n  r = ((glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColor3hvNV\")) == NULL) || r;\r\n  r = ((glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord1hNV\")) == NULL) || r;\r\n  r = ((glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord1hvNV\")) == NULL) || r;\r\n  r = ((glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2hNV\")) == NULL) || r;\r\n  r = ((glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2hvNV\")) == NULL) || r;\r\n  r = ((glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord3hNV\")) == NULL) || r;\r\n  r = ((glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord3hvNV\")) == NULL) || r;\r\n  r = ((glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4hNV\")) == NULL) || r;\r\n  r = ((glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4hvNV\")) == NULL) || r;\r\n  r = ((glVertex2hNV = (PFNGLVERTEX2HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex2hNV\")) == NULL) || r;\r\n  r = ((glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex2hvNV\")) == NULL) || r;\r\n  r = ((glVertex3hNV = (PFNGLVERTEX3HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex3hNV\")) == NULL) || r;\r\n  r = ((glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex3hvNV\")) == NULL) || r;\r\n  r = ((glVertex4hNV = (PFNGLVERTEX4HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex4hNV\")) == NULL) || r;\r\n  r = ((glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertex4hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1hNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2hNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3hNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4hNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs1hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs2hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs3hvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs4hvNV\")) == NULL) || r;\r\n  r = ((glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexWeighthNV\")) == NULL) || r;\r\n  r = ((glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexWeighthvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_half_float */\r\n\r\n#ifdef GL_NV_instanced_arrays\r\n\r\nstatic GLboolean _glewInit_GL_NV_instanced_arrays ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVertexAttribDivisorNV = (PFNGLVERTEXATTRIBDIVISORNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribDivisorNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_instanced_arrays */\r\n\r\n#ifdef GL_NV_internalformat_sample_query\r\n\r\nstatic GLboolean _glewInit_GL_NV_internalformat_sample_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetInternalformatSampleivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_internalformat_sample_query */\r\n\r\n#ifdef GL_NV_non_square_matrices\r\n\r\nstatic GLboolean _glewInit_GL_NV_non_square_matrices ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glUniformMatrix2x3fvNV = (PFNGLUNIFORMMATRIX2X3FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x3fvNV\")) == NULL) || r;\r\n  r = ((glUniformMatrix2x4fvNV = (PFNGLUNIFORMMATRIX2X4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix2x4fvNV\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x2fvNV = (PFNGLUNIFORMMATRIX3X2FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x2fvNV\")) == NULL) || r;\r\n  r = ((glUniformMatrix3x4fvNV = (PFNGLUNIFORMMATRIX3X4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix3x4fvNV\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x2fvNV = (PFNGLUNIFORMMATRIX4X2FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x2fvNV\")) == NULL) || r;\r\n  r = ((glUniformMatrix4x3fvNV = (PFNGLUNIFORMMATRIX4X3FVNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformMatrix4x3fvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_non_square_matrices */\r\n\r\n#ifdef GL_NV_occlusion_query\r\n\r\nstatic GLboolean _glewInit_GL_NV_occlusion_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)\"glBeginOcclusionQueryNV\")) == NULL) || r;\r\n  r = ((glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteOcclusionQueriesNV\")) == NULL) || r;\r\n  r = ((glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)\"glEndOcclusionQueryNV\")) == NULL) || r;\r\n  r = ((glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)\"glGenOcclusionQueriesNV\")) == NULL) || r;\r\n  r = ((glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetOcclusionQueryivNV\")) == NULL) || r;\r\n  r = ((glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetOcclusionQueryuivNV\")) == NULL) || r;\r\n  r = ((glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)\"glIsOcclusionQueryNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_occlusion_query */\r\n\r\n#ifdef GL_NV_parameter_buffer_object\r\n\r\nstatic GLboolean _glewInit_GL_NV_parameter_buffer_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramBufferParametersIivNV\")) == NULL) || r;\r\n  r = ((glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramBufferParametersIuivNV\")) == NULL) || r;\r\n  r = ((glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramBufferParametersfvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_parameter_buffer_object */\r\n\r\n#ifdef GL_NV_path_rendering\r\n\r\nstatic GLboolean _glewInit_GL_NV_path_rendering ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCopyPathNV = (PFNGLCOPYPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glCopyPathNV\")) == NULL) || r;\r\n  r = ((glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glCoverFillPathInstancedNV\")) == NULL) || r;\r\n  r = ((glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glCoverFillPathNV\")) == NULL) || r;\r\n  r = ((glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glCoverStrokePathInstancedNV\")) == NULL) || r;\r\n  r = ((glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glCoverStrokePathNV\")) == NULL) || r;\r\n  r = ((glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)glewGetProcAddress((const GLubyte*)\"glDeletePathsNV\")) == NULL) || r;\r\n  r = ((glGenPathsNV = (PFNGLGENPATHSNVPROC)glewGetProcAddress((const GLubyte*)\"glGenPathsNV\")) == NULL) || r;\r\n  r = ((glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathColorGenfvNV\")) == NULL) || r;\r\n  r = ((glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathColorGenivNV\")) == NULL) || r;\r\n  r = ((glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathCommandsNV\")) == NULL) || r;\r\n  r = ((glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathCoordsNV\")) == NULL) || r;\r\n  r = ((glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathDashArrayNV\")) == NULL) || r;\r\n  r = ((glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathLengthNV\")) == NULL) || r;\r\n  r = ((glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathMetricRangeNV\")) == NULL) || r;\r\n  r = ((glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathMetricsNV\")) == NULL) || r;\r\n  r = ((glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathParameterivNV\")) == NULL) || r;\r\n  r = ((glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathSpacingNV\")) == NULL) || r;\r\n  r = ((glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathTexGenfvNV\")) == NULL) || r;\r\n  r = ((glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetPathTexGenivNV\")) == NULL) || r;\r\n  r = ((glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramResourcefvNV\")) == NULL) || r;\r\n  r = ((glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)glewGetProcAddress((const GLubyte*)\"glInterpolatePathsNV\")) == NULL) || r;\r\n  r = ((glIsPathNV = (PFNGLISPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glIsPathNV\")) == NULL) || r;\r\n  r = ((glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glIsPointInFillPathNV\")) == NULL) || r;\r\n  r = ((glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glIsPointInStrokePathNV\")) == NULL) || r;\r\n  r = ((glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoad3x2fNV\")) == NULL) || r;\r\n  r = ((glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoad3x3fNV\")) == NULL) || r;\r\n  r = ((glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixLoadTranspose3x3fNV\")) == NULL) || r;\r\n  r = ((glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMult3x2fNV\")) == NULL) || r;\r\n  r = ((glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMult3x3fNV\")) == NULL) || r;\r\n  r = ((glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)glewGetProcAddress((const GLubyte*)\"glMatrixMultTranspose3x3fNV\")) == NULL) || r;\r\n  r = ((glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)glewGetProcAddress((const GLubyte*)\"glPathColorGenNV\")) == NULL) || r;\r\n  r = ((glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)\"glPathCommandsNV\")) == NULL) || r;\r\n  r = ((glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)glewGetProcAddress((const GLubyte*)\"glPathCoordsNV\")) == NULL) || r;\r\n  r = ((glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)glewGetProcAddress((const GLubyte*)\"glPathCoverDepthFuncNV\")) == NULL) || r;\r\n  r = ((glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)glewGetProcAddress((const GLubyte*)\"glPathDashArrayNV\")) == NULL) || r;\r\n  r = ((glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)glewGetProcAddress((const GLubyte*)\"glPathFogGenNV\")) == NULL) || r;\r\n  r = ((glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)\"glPathGlyphIndexArrayNV\")) == NULL) || r;\r\n  r = ((glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glPathGlyphIndexRangeNV\")) == NULL) || r;\r\n  r = ((glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glPathGlyphRangeNV\")) == NULL) || r;\r\n  r = ((glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)glewGetProcAddress((const GLubyte*)\"glPathGlyphsNV\")) == NULL) || r;\r\n  r = ((glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)glewGetProcAddress((const GLubyte*)\"glPathMemoryGlyphIndexArrayNV\")) == NULL) || r;\r\n  r = ((glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)\"glPathParameterfNV\")) == NULL) || r;\r\n  r = ((glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glPathParameterfvNV\")) == NULL) || r;\r\n  r = ((glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glPathParameteriNV\")) == NULL) || r;\r\n  r = ((glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glPathParameterivNV\")) == NULL) || r;\r\n  r = ((glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)glewGetProcAddress((const GLubyte*)\"glPathStencilDepthOffsetNV\")) == NULL) || r;\r\n  r = ((glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)glewGetProcAddress((const GLubyte*)\"glPathStencilFuncNV\")) == NULL) || r;\r\n  r = ((glPathStringNV = (PFNGLPATHSTRINGNVPROC)glewGetProcAddress((const GLubyte*)\"glPathStringNV\")) == NULL) || r;\r\n  r = ((glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)glewGetProcAddress((const GLubyte*)\"glPathSubCommandsNV\")) == NULL) || r;\r\n  r = ((glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)glewGetProcAddress((const GLubyte*)\"glPathSubCoordsNV\")) == NULL) || r;\r\n  r = ((glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)glewGetProcAddress((const GLubyte*)\"glPathTexGenNV\")) == NULL) || r;\r\n  r = ((glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glPointAlongPathNV\")) == NULL) || r;\r\n  r = ((glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramPathFragmentInputGenNV\")) == NULL) || r;\r\n  r = ((glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilFillPathInstancedNV\")) == NULL) || r;\r\n  r = ((glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilFillPathNV\")) == NULL) || r;\r\n  r = ((glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilStrokePathInstancedNV\")) == NULL) || r;\r\n  r = ((glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilStrokePathNV\")) == NULL) || r;\r\n  r = ((glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilThenCoverFillPathInstancedNV\")) == NULL) || r;\r\n  r = ((glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilThenCoverFillPathNV\")) == NULL) || r;\r\n  r = ((glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilThenCoverStrokePathInstancedNV\")) == NULL) || r;\r\n  r = ((glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glStencilThenCoverStrokePathNV\")) == NULL) || r;\r\n  r = ((glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)glewGetProcAddress((const GLubyte*)\"glTransformPathNV\")) == NULL) || r;\r\n  r = ((glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)glewGetProcAddress((const GLubyte*)\"glWeightPathsNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_path_rendering */\r\n\r\n#ifdef GL_NV_pixel_data_range\r\n\r\nstatic GLboolean _glewInit_GL_NV_pixel_data_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)\"glFlushPixelDataRangeNV\")) == NULL) || r;\r\n  r = ((glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)\"glPixelDataRangeNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_pixel_data_range */\r\n\r\n#ifdef GL_NV_point_sprite\r\n\r\nstatic GLboolean _glewInit_GL_NV_point_sprite ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glPointParameteriNV\")) == NULL) || r;\r\n  r = ((glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_point_sprite */\r\n\r\n#ifdef GL_NV_polygon_mode\r\n\r\nstatic GLboolean _glewInit_GL_NV_polygon_mode ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPolygonModeNV = (PFNGLPOLYGONMODENVPROC)glewGetProcAddress((const GLubyte*)\"glPolygonModeNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_polygon_mode */\r\n\r\n#ifdef GL_NV_present_video\r\n\r\nstatic GLboolean _glewInit_GL_NV_present_video ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoi64vNV\")) == NULL) || r;\r\n  r = ((glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoivNV\")) == NULL) || r;\r\n  r = ((glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoui64vNV\")) == NULL) || r;\r\n  r = ((glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideouivNV\")) == NULL) || r;\r\n  r = ((glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)glewGetProcAddress((const GLubyte*)\"glPresentFrameDualFillNV\")) == NULL) || r;\r\n  r = ((glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)glewGetProcAddress((const GLubyte*)\"glPresentFrameKeyedNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_present_video */\r\n\r\n#ifdef GL_NV_primitive_restart\r\n\r\nstatic GLboolean _glewInit_GL_NV_primitive_restart ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)glewGetProcAddress((const GLubyte*)\"glPrimitiveRestartIndexNV\")) == NULL) || r;\r\n  r = ((glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)glewGetProcAddress((const GLubyte*)\"glPrimitiveRestartNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_primitive_restart */\r\n\r\n#ifdef GL_NV_register_combiners\r\n\r\nstatic GLboolean _glewInit_GL_NV_register_combiners ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerInputNV\")) == NULL) || r;\r\n  r = ((glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerOutputNV\")) == NULL) || r;\r\n  r = ((glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerParameterfNV\")) == NULL) || r;\r\n  r = ((glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerParameterfvNV\")) == NULL) || r;\r\n  r = ((glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerParameteriNV\")) == NULL) || r;\r\n  r = ((glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerParameterivNV\")) == NULL) || r;\r\n  r = ((glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)\"glFinalCombinerInputNV\")) == NULL) || r;\r\n  r = ((glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCombinerInputParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCombinerInputParameterivNV\")) == NULL) || r;\r\n  r = ((glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCombinerOutputParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCombinerOutputParameterivNV\")) == NULL) || r;\r\n  r = ((glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetFinalCombinerInputParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetFinalCombinerInputParameterivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_register_combiners */\r\n\r\n#ifdef GL_NV_register_combiners2\r\n\r\nstatic GLboolean _glewInit_GL_NV_register_combiners2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glCombinerStageParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetCombinerStageParameterfvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_register_combiners2 */\r\n\r\n#ifdef GL_NV_sample_locations\r\n\r\nstatic GLboolean _glewInit_GL_NV_sample_locations ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferSampleLocationsfvNV\")) == NULL) || r;\r\n  r = ((glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)glewGetProcAddress((const GLubyte*)\"glNamedFramebufferSampleLocationsfvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_sample_locations */\r\n\r\n#ifdef GL_NV_shader_buffer_load\r\n\r\nstatic GLboolean _glewInit_GL_NV_shader_buffer_load ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetBufferParameterui64vNV\")) == NULL) || r;\r\n  r = ((glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetIntegerui64vNV\")) == NULL) || r;\r\n  r = ((glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetNamedBufferParameterui64vNV\")) == NULL) || r;\r\n  r = ((glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glIsBufferResidentNV\")) == NULL) || r;\r\n  r = ((glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glIsNamedBufferResidentNV\")) == NULL) || r;\r\n  r = ((glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeBufferNonResidentNV\")) == NULL) || r;\r\n  r = ((glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeBufferResidentNV\")) == NULL) || r;\r\n  r = ((glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeNamedBufferNonResidentNV\")) == NULL) || r;\r\n  r = ((glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glMakeNamedBufferResidentNV\")) == NULL) || r;\r\n  r = ((glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformui64NV\")) == NULL) || r;\r\n  r = ((glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramUniformui64vNV\")) == NULL) || r;\r\n  r = ((glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)glewGetProcAddress((const GLubyte*)\"glUniformui64NV\")) == NULL) || r;\r\n  r = ((glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glUniformui64vNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_shader_buffer_load */\r\n\r\n#ifdef GL_NV_texture_array\r\n\r\nstatic GLboolean _glewInit_GL_NV_texture_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glCompressedTexImage3DNV = (PFNGLCOMPRESSEDTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexImage3DNV\")) == NULL) || r;\r\n  r = ((glCompressedTexSubImage3DNV = (PFNGLCOMPRESSEDTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)\"glCompressedTexSubImage3DNV\")) == NULL) || r;\r\n  r = ((glCopyTexSubImage3DNV = (PFNGLCOPYTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)\"glCopyTexSubImage3DNV\")) == NULL) || r;\r\n  r = ((glFramebufferTextureLayerNV = (PFNGLFRAMEBUFFERTEXTURELAYERNVPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureLayerNV\")) == NULL) || r;\r\n  r = ((glTexImage3DNV = (PFNGLTEXIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)\"glTexImage3DNV\")) == NULL) || r;\r\n  r = ((glTexSubImage3DNV = (PFNGLTEXSUBIMAGE3DNVPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage3DNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_texture_array */\r\n\r\n#ifdef GL_NV_texture_barrier\r\n\r\nstatic GLboolean _glewInit_GL_NV_texture_barrier ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)glewGetProcAddress((const GLubyte*)\"glTextureBarrierNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_texture_barrier */\r\n\r\n#ifdef GL_NV_texture_multisample\r\n\r\nstatic GLboolean _glewInit_GL_NV_texture_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)\"glTexImage2DMultisampleCoverageNV\")) == NULL) || r;\r\n  r = ((glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)\"glTexImage3DMultisampleCoverageNV\")) == NULL) || r;\r\n  r = ((glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage2DMultisampleCoverageNV\")) == NULL) || r;\r\n  r = ((glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage2DMultisampleNV\")) == NULL) || r;\r\n  r = ((glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage3DMultisampleCoverageNV\")) == NULL) || r;\r\n  r = ((glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)glewGetProcAddress((const GLubyte*)\"glTextureImage3DMultisampleNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_texture_multisample */\r\n\r\n#ifdef GL_NV_transform_feedback\r\n\r\nstatic GLboolean _glewInit_GL_NV_transform_feedback ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)\"glActiveVaryingNV\")) == NULL) || r;\r\n  r = ((glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glBeginTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferBaseNV\")) == NULL) || r;\r\n  r = ((glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferOffsetNV\")) == NULL) || r;\r\n  r = ((glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glBindBufferRangeNV\")) == NULL) || r;\r\n  r = ((glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glEndTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)\"glGetActiveVaryingNV\")) == NULL) || r;\r\n  r = ((glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)glewGetProcAddress((const GLubyte*)\"glGetTransformFeedbackVaryingNV\")) == NULL) || r;\r\n  r = ((glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVaryingLocationNV\")) == NULL) || r;\r\n  r = ((glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackAttribsNV\")) == NULL) || r;\r\n  r = ((glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)glewGetProcAddress((const GLubyte*)\"glTransformFeedbackVaryingsNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_transform_feedback */\r\n\r\n#ifdef GL_NV_transform_feedback2\r\n\r\nstatic GLboolean _glewInit_GL_NV_transform_feedback2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glBindTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteTransformFeedbacksNV\")) == NULL) || r;\r\n  r = ((glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glDrawTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)glewGetProcAddress((const GLubyte*)\"glGenTransformFeedbacksNV\")) == NULL) || r;\r\n  r = ((glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glIsTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glPauseTransformFeedbackNV\")) == NULL) || r;\r\n  r = ((glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)\"glResumeTransformFeedbackNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_transform_feedback2 */\r\n\r\n#ifdef GL_NV_vdpau_interop\r\n\r\nstatic GLboolean _glewInit_GL_NV_vdpau_interop ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUFiniNV\")) == NULL) || r;\r\n  r = ((glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUGetSurfaceivNV\")) == NULL) || r;\r\n  r = ((glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUInitNV\")) == NULL) || r;\r\n  r = ((glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUIsSurfaceNV\")) == NULL) || r;\r\n  r = ((glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUMapSurfacesNV\")) == NULL) || r;\r\n  r = ((glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAURegisterOutputSurfaceNV\")) == NULL) || r;\r\n  r = ((glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAURegisterVideoSurfaceNV\")) == NULL) || r;\r\n  r = ((glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUSurfaceAccessNV\")) == NULL) || r;\r\n  r = ((glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUUnmapSurfacesNV\")) == NULL) || r;\r\n  r = ((glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)glewGetProcAddress((const GLubyte*)\"glVDPAUUnregisterSurfaceNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_vdpau_interop */\r\n\r\n#ifdef GL_NV_vertex_array_range\r\n\r\nstatic GLboolean _glewInit_GL_NV_vertex_array_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glFlushVertexArrayRangeNV\")) == NULL) || r;\r\n  r = ((glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glVertexArrayRangeNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_vertex_array_range */\r\n\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n\r\nstatic GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribLi64vNV\")) == NULL) || r;\r\n  r = ((glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribLui64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1i64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1i64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1ui64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL1ui64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2i64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2i64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2ui64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL2ui64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3i64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3i64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3ui64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL3ui64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4i64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4i64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4ui64NV\")) == NULL) || r;\r\n  r = ((glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribL4ui64vNV\")) == NULL) || r;\r\n  r = ((glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribLFormatNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_vertex_attrib_integer_64bit */\r\n\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n\r\nstatic GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)glewGetProcAddress((const GLubyte*)\"glBufferAddressRangeNV\")) == NULL) || r;\r\n  r = ((glColorFormatNV = (PFNGLCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glColorFormatNV\")) == NULL) || r;\r\n  r = ((glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glEdgeFlagFormatNV\")) == NULL) || r;\r\n  r = ((glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glFogCoordFormatNV\")) == NULL) || r;\r\n  r = ((glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetIntegerui64i_vNV\")) == NULL) || r;\r\n  r = ((glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glIndexFormatNV\")) == NULL) || r;\r\n  r = ((glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glNormalFormatNV\")) == NULL) || r;\r\n  r = ((glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glSecondaryColorFormatNV\")) == NULL) || r;\r\n  r = ((glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glTexCoordFormatNV\")) == NULL) || r;\r\n  r = ((glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribFormatNV\")) == NULL) || r;\r\n  r = ((glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribIFormatNV\")) == NULL) || r;\r\n  r = ((glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexFormatNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_vertex_buffer_unified_memory */\r\n\r\n#ifdef GL_NV_vertex_program\r\n\r\nstatic GLboolean _glewInit_GL_NV_vertex_program ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)\"glAreProgramsResidentNV\")) == NULL) || r;\r\n  r = ((glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)\"glBindProgramNV\")) == NULL) || r;\r\n  r = ((glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)\"glDeleteProgramsNV\")) == NULL) || r;\r\n  r = ((glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)\"glExecuteProgramNV\")) == NULL) || r;\r\n  r = ((glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)\"glGenProgramsNV\")) == NULL) || r;\r\n  r = ((glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramParameterdvNV\")) == NULL) || r;\r\n  r = ((glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramParameterfvNV\")) == NULL) || r;\r\n  r = ((glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramStringNV\")) == NULL) || r;\r\n  r = ((glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetProgramivNV\")) == NULL) || r;\r\n  r = ((glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetTrackMatrixivNV\")) == NULL) || r;\r\n  r = ((glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribPointervNV\")) == NULL) || r;\r\n  r = ((glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribdvNV\")) == NULL) || r;\r\n  r = ((glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribfvNV\")) == NULL) || r;\r\n  r = ((glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVertexAttribivNV\")) == NULL) || r;\r\n  r = ((glIsProgramNV = (PFNGLISPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)\"glIsProgramNV\")) == NULL) || r;\r\n  r = ((glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)\"glLoadProgramNV\")) == NULL) || r;\r\n  r = ((glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameter4dNV\")) == NULL) || r;\r\n  r = ((glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameter4dvNV\")) == NULL) || r;\r\n  r = ((glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameter4fNV\")) == NULL) || r;\r\n  r = ((glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameter4fvNV\")) == NULL) || r;\r\n  r = ((glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameters4dvNV\")) == NULL) || r;\r\n  r = ((glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glProgramParameters4fvNV\")) == NULL) || r;\r\n  r = ((glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)\"glRequestResidentProgramsNV\")) == NULL) || r;\r\n  r = ((glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)glewGetProcAddress((const GLubyte*)\"glTrackMatrixNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1dNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1fNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1sNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib1svNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2dNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2fNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2sNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib2svNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3dNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3fNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3sNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib3svNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4dNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4fNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4sNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4svNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4ubNV\")) == NULL) || r;\r\n  r = ((glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttrib4ubvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribPointerNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs1dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs1fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs1svNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs2dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs2fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs2svNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs3dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs3fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs3svNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs4dvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs4fvNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs4svNV\")) == NULL) || r;\r\n  r = ((glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)glewGetProcAddress((const GLubyte*)\"glVertexAttribs4ubvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_vertex_program */\r\n\r\n#ifdef GL_NV_video_capture\r\n\r\nstatic GLboolean _glewInit_GL_NV_video_capture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)\"glBeginVideoCaptureNV\")) == NULL) || r;\r\n  r = ((glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)glewGetProcAddress((const GLubyte*)\"glBindVideoCaptureStreamBufferNV\")) == NULL) || r;\r\n  r = ((glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)glewGetProcAddress((const GLubyte*)\"glBindVideoCaptureStreamTextureNV\")) == NULL) || r;\r\n  r = ((glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)\"glEndVideoCaptureNV\")) == NULL) || r;\r\n  r = ((glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoCaptureStreamdvNV\")) == NULL) || r;\r\n  r = ((glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoCaptureStreamfvNV\")) == NULL) || r;\r\n  r = ((glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoCaptureStreamivNV\")) == NULL) || r;\r\n  r = ((glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)glewGetProcAddress((const GLubyte*)\"glGetVideoCaptureivNV\")) == NULL) || r;\r\n  r = ((glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)glewGetProcAddress((const GLubyte*)\"glVideoCaptureNV\")) == NULL) || r;\r\n  r = ((glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)\"glVideoCaptureStreamParameterdvNV\")) == NULL) || r;\r\n  r = ((glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)\"glVideoCaptureStreamParameterfvNV\")) == NULL) || r;\r\n  r = ((glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)\"glVideoCaptureStreamParameterivNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_video_capture */\r\n\r\n#ifdef GL_NV_viewport_array\r\n\r\nstatic GLboolean _glewInit_GL_NV_viewport_array ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDepthRangeArrayfvNV = (PFNGLDEPTHRANGEARRAYFVNVPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangeArrayfvNV\")) == NULL) || r;\r\n  r = ((glDepthRangeIndexedfNV = (PFNGLDEPTHRANGEINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangeIndexedfNV\")) == NULL) || r;\r\n  r = ((glDisableiNV = (PFNGLDISABLEINVPROC)glewGetProcAddress((const GLubyte*)\"glDisableiNV\")) == NULL) || r;\r\n  r = ((glEnableiNV = (PFNGLENABLEINVPROC)glewGetProcAddress((const GLubyte*)\"glEnableiNV\")) == NULL) || r;\r\n  r = ((glGetFloati_vNV = (PFNGLGETFLOATI_VNVPROC)glewGetProcAddress((const GLubyte*)\"glGetFloati_vNV\")) == NULL) || r;\r\n  r = ((glIsEnablediNV = (PFNGLISENABLEDINVPROC)glewGetProcAddress((const GLubyte*)\"glIsEnablediNV\")) == NULL) || r;\r\n  r = ((glScissorArrayvNV = (PFNGLSCISSORARRAYVNVPROC)glewGetProcAddress((const GLubyte*)\"glScissorArrayvNV\")) == NULL) || r;\r\n  r = ((glScissorIndexedNV = (PFNGLSCISSORINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)\"glScissorIndexedNV\")) == NULL) || r;\r\n  r = ((glScissorIndexedvNV = (PFNGLSCISSORINDEXEDVNVPROC)glewGetProcAddress((const GLubyte*)\"glScissorIndexedvNV\")) == NULL) || r;\r\n  r = ((glViewportArrayvNV = (PFNGLVIEWPORTARRAYVNVPROC)glewGetProcAddress((const GLubyte*)\"glViewportArrayvNV\")) == NULL) || r;\r\n  r = ((glViewportIndexedfNV = (PFNGLVIEWPORTINDEXEDFNVPROC)glewGetProcAddress((const GLubyte*)\"glViewportIndexedfNV\")) == NULL) || r;\r\n  r = ((glViewportIndexedfvNV = (PFNGLVIEWPORTINDEXEDFVNVPROC)glewGetProcAddress((const GLubyte*)\"glViewportIndexedfvNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_viewport_array */\r\n\r\n#ifdef GL_NV_viewport_swizzle\r\n\r\nstatic GLboolean _glewInit_GL_NV_viewport_swizzle ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)glewGetProcAddress((const GLubyte*)\"glViewportSwizzleNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_NV_viewport_swizzle */\r\n\r\n#ifdef GL_OVR_multiview\r\n\r\nstatic GLboolean _glewInit_GL_OVR_multiview ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureMultiviewOVR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_OVR_multiview */\r\n\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n\r\nstatic GLboolean _glewInit_GL_OVR_multiview_multisampled_render_to_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferTextureMultisampleMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferTextureMultisampleMultiviewOVR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_OVR_multiview_multisampled_render_to_texture */\r\n\r\n#ifdef GL_QCOM_alpha_test\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_alpha_test ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAlphaFuncQCOM = (PFNGLALPHAFUNCQCOMPROC)glewGetProcAddress((const GLubyte*)\"glAlphaFuncQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_alpha_test */\r\n\r\n#ifdef GL_QCOM_driver_control\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_driver_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDisableDriverControlQCOM = (PFNGLDISABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)\"glDisableDriverControlQCOM\")) == NULL) || r;\r\n  r = ((glEnableDriverControlQCOM = (PFNGLENABLEDRIVERCONTROLQCOMPROC)glewGetProcAddress((const GLubyte*)\"glEnableDriverControlQCOM\")) == NULL) || r;\r\n  r = ((glGetDriverControlStringQCOM = (PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)glewGetProcAddress((const GLubyte*)\"glGetDriverControlStringQCOM\")) == NULL) || r;\r\n  r = ((glGetDriverControlsQCOM = (PFNGLGETDRIVERCONTROLSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glGetDriverControlsQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_driver_control */\r\n\r\n#ifdef GL_QCOM_extended_get\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_extended_get ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glExtGetBufferPointervQCOM = (PFNGLEXTGETBUFFERPOINTERVQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetBufferPointervQCOM\")) == NULL) || r;\r\n  r = ((glExtGetBuffersQCOM = (PFNGLEXTGETBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetBuffersQCOM\")) == NULL) || r;\r\n  r = ((glExtGetFramebuffersQCOM = (PFNGLEXTGETFRAMEBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetFramebuffersQCOM\")) == NULL) || r;\r\n  r = ((glExtGetRenderbuffersQCOM = (PFNGLEXTGETRENDERBUFFERSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetRenderbuffersQCOM\")) == NULL) || r;\r\n  r = ((glExtGetTexLevelParameterivQCOM = (PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetTexLevelParameterivQCOM\")) == NULL) || r;\r\n  r = ((glExtGetTexSubImageQCOM = (PFNGLEXTGETTEXSUBIMAGEQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetTexSubImageQCOM\")) == NULL) || r;\r\n  r = ((glExtGetTexturesQCOM = (PFNGLEXTGETTEXTURESQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetTexturesQCOM\")) == NULL) || r;\r\n  r = ((glExtTexObjectStateOverrideiQCOM = (PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtTexObjectStateOverrideiQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_extended_get */\r\n\r\n#ifdef GL_QCOM_extended_get2\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_extended_get2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glExtGetProgramBinarySourceQCOM = (PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetProgramBinarySourceQCOM\")) == NULL) || r;\r\n  r = ((glExtGetProgramsQCOM = (PFNGLEXTGETPROGRAMSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetProgramsQCOM\")) == NULL) || r;\r\n  r = ((glExtGetShadersQCOM = (PFNGLEXTGETSHADERSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtGetShadersQCOM\")) == NULL) || r;\r\n  r = ((glExtIsProgramBinaryQCOM = (PFNGLEXTISPROGRAMBINARYQCOMPROC)glewGetProcAddress((const GLubyte*)\"glExtIsProgramBinaryQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_extended_get2 */\r\n\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_framebuffer_foveated ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferFoveationConfigQCOM = (PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferFoveationConfigQCOM\")) == NULL) || r;\r\n  r = ((glFramebufferFoveationParametersQCOM = (PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferFoveationParametersQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_framebuffer_foveated */\r\n\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFramebufferFetchBarrierQCOM = (PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC)glewGetProcAddress((const GLubyte*)\"glFramebufferFetchBarrierQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */\r\n\r\n#ifdef GL_QCOM_tiled_rendering\r\n\r\nstatic GLboolean _glewInit_GL_QCOM_tiled_rendering ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glEndTilingQCOM = (PFNGLENDTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)\"glEndTilingQCOM\")) == NULL) || r;\r\n  r = ((glStartTilingQCOM = (PFNGLSTARTTILINGQCOMPROC)glewGetProcAddress((const GLubyte*)\"glStartTilingQCOM\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_QCOM_tiled_rendering */\r\n\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_ES1_0_compatibility ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAlphaFuncx = (PFNGLALPHAFUNCXPROC)glewGetProcAddress((const GLubyte*)\"glAlphaFuncx\")) == NULL) || r;\r\n  r = ((glClearColorx = (PFNGLCLEARCOLORXPROC)glewGetProcAddress((const GLubyte*)\"glClearColorx\")) == NULL) || r;\r\n  r = ((glClearDepthx = (PFNGLCLEARDEPTHXPROC)glewGetProcAddress((const GLubyte*)\"glClearDepthx\")) == NULL) || r;\r\n  r = ((glColor4x = (PFNGLCOLOR4XPROC)glewGetProcAddress((const GLubyte*)\"glColor4x\")) == NULL) || r;\r\n  r = ((glDepthRangex = (PFNGLDEPTHRANGEXPROC)glewGetProcAddress((const GLubyte*)\"glDepthRangex\")) == NULL) || r;\r\n  r = ((glFogx = (PFNGLFOGXPROC)glewGetProcAddress((const GLubyte*)\"glFogx\")) == NULL) || r;\r\n  r = ((glFogxv = (PFNGLFOGXVPROC)glewGetProcAddress((const GLubyte*)\"glFogxv\")) == NULL) || r;\r\n  r = ((glFrustumf = (PFNGLFRUSTUMFPROC)glewGetProcAddress((const GLubyte*)\"glFrustumf\")) == NULL) || r;\r\n  r = ((glFrustumx = (PFNGLFRUSTUMXPROC)glewGetProcAddress((const GLubyte*)\"glFrustumx\")) == NULL) || r;\r\n  r = ((glLightModelx = (PFNGLLIGHTMODELXPROC)glewGetProcAddress((const GLubyte*)\"glLightModelx\")) == NULL) || r;\r\n  r = ((glLightModelxv = (PFNGLLIGHTMODELXVPROC)glewGetProcAddress((const GLubyte*)\"glLightModelxv\")) == NULL) || r;\r\n  r = ((glLightx = (PFNGLLIGHTXPROC)glewGetProcAddress((const GLubyte*)\"glLightx\")) == NULL) || r;\r\n  r = ((glLightxv = (PFNGLLIGHTXVPROC)glewGetProcAddress((const GLubyte*)\"glLightxv\")) == NULL) || r;\r\n  r = ((glLineWidthx = (PFNGLLINEWIDTHXPROC)glewGetProcAddress((const GLubyte*)\"glLineWidthx\")) == NULL) || r;\r\n  r = ((glLoadMatrixx = (PFNGLLOADMATRIXXPROC)glewGetProcAddress((const GLubyte*)\"glLoadMatrixx\")) == NULL) || r;\r\n  r = ((glMaterialx = (PFNGLMATERIALXPROC)glewGetProcAddress((const GLubyte*)\"glMaterialx\")) == NULL) || r;\r\n  r = ((glMaterialxv = (PFNGLMATERIALXVPROC)glewGetProcAddress((const GLubyte*)\"glMaterialxv\")) == NULL) || r;\r\n  r = ((glMultMatrixx = (PFNGLMULTMATRIXXPROC)glewGetProcAddress((const GLubyte*)\"glMultMatrixx\")) == NULL) || r;\r\n  r = ((glMultiTexCoord4x = (PFNGLMULTITEXCOORD4XPROC)glewGetProcAddress((const GLubyte*)\"glMultiTexCoord4x\")) == NULL) || r;\r\n  r = ((glNormal3x = (PFNGLNORMAL3XPROC)glewGetProcAddress((const GLubyte*)\"glNormal3x\")) == NULL) || r;\r\n  r = ((glOrthof = (PFNGLORTHOFPROC)glewGetProcAddress((const GLubyte*)\"glOrthof\")) == NULL) || r;\r\n  r = ((glOrthox = (PFNGLORTHOXPROC)glewGetProcAddress((const GLubyte*)\"glOrthox\")) == NULL) || r;\r\n  r = ((glPointSizex = (PFNGLPOINTSIZEXPROC)glewGetProcAddress((const GLubyte*)\"glPointSizex\")) == NULL) || r;\r\n  r = ((glPolygonOffsetx = (PFNGLPOLYGONOFFSETXPROC)glewGetProcAddress((const GLubyte*)\"glPolygonOffsetx\")) == NULL) || r;\r\n  r = ((glRotatex = (PFNGLROTATEXPROC)glewGetProcAddress((const GLubyte*)\"glRotatex\")) == NULL) || r;\r\n  r = ((glSampleCoveragex = (PFNGLSAMPLECOVERAGEXPROC)glewGetProcAddress((const GLubyte*)\"glSampleCoveragex\")) == NULL) || r;\r\n  r = ((glScalex = (PFNGLSCALEXPROC)glewGetProcAddress((const GLubyte*)\"glScalex\")) == NULL) || r;\r\n  r = ((glTexEnvx = (PFNGLTEXENVXPROC)glewGetProcAddress((const GLubyte*)\"glTexEnvx\")) == NULL) || r;\r\n  r = ((glTexEnvxv = (PFNGLTEXENVXVPROC)glewGetProcAddress((const GLubyte*)\"glTexEnvxv\")) == NULL) || r;\r\n  r = ((glTexParameterx = (PFNGLTEXPARAMETERXPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterx\")) == NULL) || r;\r\n  r = ((glTranslatex = (PFNGLTRANSLATEXPROC)glewGetProcAddress((const GLubyte*)\"glTranslatex\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_ES1_0_compatibility */\r\n\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_ES1_1_compatibility ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glClipPlanef = (PFNGLCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)\"glClipPlanef\")) == NULL) || r;\r\n  r = ((glClipPlanex = (PFNGLCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)\"glClipPlanex\")) == NULL) || r;\r\n  r = ((glGetClipPlanef = (PFNGLGETCLIPPLANEFPROC)glewGetProcAddress((const GLubyte*)\"glGetClipPlanef\")) == NULL) || r;\r\n  r = ((glGetClipPlanex = (PFNGLGETCLIPPLANEXPROC)glewGetProcAddress((const GLubyte*)\"glGetClipPlanex\")) == NULL) || r;\r\n  r = ((glGetFixedv = (PFNGLGETFIXEDVPROC)glewGetProcAddress((const GLubyte*)\"glGetFixedv\")) == NULL) || r;\r\n  r = ((glGetLightxv = (PFNGLGETLIGHTXVPROC)glewGetProcAddress((const GLubyte*)\"glGetLightxv\")) == NULL) || r;\r\n  r = ((glGetMaterialxv = (PFNGLGETMATERIALXVPROC)glewGetProcAddress((const GLubyte*)\"glGetMaterialxv\")) == NULL) || r;\r\n  r = ((glGetTexEnvxv = (PFNGLGETTEXENVXVPROC)glewGetProcAddress((const GLubyte*)\"glGetTexEnvxv\")) == NULL) || r;\r\n  r = ((glGetTexParameterxv = (PFNGLGETTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)\"glGetTexParameterxv\")) == NULL) || r;\r\n  r = ((glPointParameterx = (PFNGLPOINTPARAMETERXPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterx\")) == NULL) || r;\r\n  r = ((glPointParameterxv = (PFNGLPOINTPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)\"glPointParameterxv\")) == NULL) || r;\r\n  r = ((glPointSizePointerOES = (PFNGLPOINTSIZEPOINTEROESPROC)glewGetProcAddress((const GLubyte*)\"glPointSizePointerOES\")) == NULL) || r;\r\n  r = ((glTexParameterxv = (PFNGLTEXPARAMETERXVPROC)glewGetProcAddress((const GLubyte*)\"glTexParameterxv\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_ES1_1_compatibility */\r\n\r\n#ifdef GL_REGAL_error_string\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_error_string ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glErrorStringREGAL = (PFNGLERRORSTRINGREGALPROC)glewGetProcAddress((const GLubyte*)\"glErrorStringREGAL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_error_string */\r\n\r\n#ifdef GL_REGAL_extension_query\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_extension_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetExtensionREGAL = (PFNGLGETEXTENSIONREGALPROC)glewGetProcAddress((const GLubyte*)\"glGetExtensionREGAL\")) == NULL) || r;\r\n  r = ((glIsSupportedREGAL = (PFNGLISSUPPORTEDREGALPROC)glewGetProcAddress((const GLubyte*)\"glIsSupportedREGAL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_extension_query */\r\n\r\n#ifdef GL_REGAL_log\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_log ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glLogMessageCallbackREGAL = (PFNGLLOGMESSAGECALLBACKREGALPROC)glewGetProcAddress((const GLubyte*)\"glLogMessageCallbackREGAL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_log */\r\n\r\n#ifdef GL_REGAL_proc_address\r\n\r\nstatic GLboolean _glewInit_GL_REGAL_proc_address ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetProcAddressREGAL = (PFNGLGETPROCADDRESSREGALPROC)glewGetProcAddress((const GLubyte*)\"glGetProcAddressREGAL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_REGAL_proc_address */\r\n\r\n#ifdef GL_SGIS_detail_texture\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_detail_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glDetailTexFuncSGIS\")) == NULL) || r;\r\n  r = ((glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glGetDetailTexFuncSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_detail_texture */\r\n\r\n#ifdef GL_SGIS_fog_function\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_fog_function ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glFogFuncSGIS\")) == NULL) || r;\r\n  r = ((glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glGetFogFuncSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_fog_function */\r\n\r\n#ifdef GL_SGIS_multisample\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)glewGetProcAddress((const GLubyte*)\"glSampleMaskSGIS\")) == NULL) || r;\r\n  r = ((glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)glewGetProcAddress((const GLubyte*)\"glSamplePatternSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_multisample */\r\n\r\n#ifdef GL_SGIS_multitexture\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_multitexture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glInterleavedTextureCoordSetsSGIS = (PFNGLINTERLEAVEDTEXTURECOORDSETSSGISPROC)glewGetProcAddress((const GLubyte*)\"glInterleavedTextureCoordSetsSGIS\")) == NULL) || r;\r\n  r = ((glSelectTextureCoordSetSGIS = (PFNGLSELECTTEXTURECOORDSETSGISPROC)glewGetProcAddress((const GLubyte*)\"glSelectTextureCoordSetSGIS\")) == NULL) || r;\r\n  r = ((glSelectTextureSGIS = (PFNGLSELECTTEXTURESGISPROC)glewGetProcAddress((const GLubyte*)\"glSelectTextureSGIS\")) == NULL) || r;\r\n  r = ((glSelectTextureTransformSGIS = (PFNGLSELECTTEXTURETRANSFORMSGISPROC)glewGetProcAddress((const GLubyte*)\"glSelectTextureTransformSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_multitexture */\r\n\r\n#ifdef GL_SGIS_shared_multisample\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_shared_multisample ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMultisampleSubRectPosSGIS = (PFNGLMULTISAMPLESUBRECTPOSSGISPROC)glewGetProcAddress((const GLubyte*)\"glMultisampleSubRectPosSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_shared_multisample */\r\n\r\n#ifdef GL_SGIS_sharpen_texture\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_sharpen_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glGetSharpenTexFuncSGIS\")) == NULL) || r;\r\n  r = ((glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glSharpenTexFuncSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_sharpen_texture */\r\n\r\n#ifdef GL_SGIS_texture4D\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_texture4D ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)\"glTexImage4DSGIS\")) == NULL) || r;\r\n  r = ((glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)\"glTexSubImage4DSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_texture4D */\r\n\r\n#ifdef GL_SGIS_texture_filter4\r\n\r\nstatic GLboolean _glewInit_GL_SGIS_texture_filter4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glGetTexFilterFuncSGIS\")) == NULL) || r;\r\n  r = ((glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)\"glTexFilterFuncSGIS\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIS_texture_filter4 */\r\n\r\n#ifdef GL_SGIX_async\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_async ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glAsyncMarkerSGIX\")) == NULL) || r;\r\n  r = ((glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glDeleteAsyncMarkersSGIX\")) == NULL) || r;\r\n  r = ((glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFinishAsyncSGIX\")) == NULL) || r;\r\n  r = ((glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGenAsyncMarkersSGIX\")) == NULL) || r;\r\n  r = ((glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glIsAsyncMarkerSGIX\")) == NULL) || r;\r\n  r = ((glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)\"glPollAsyncSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_async */\r\n\r\n#ifdef GL_SGIX_datapipe\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_datapipe ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAddressSpace = (PFNGLADDRESSSPACEPROC)glewGetProcAddress((const GLubyte*)\"glAddressSpace\")) == NULL) || r;\r\n  r = ((glDataPipe = (PFNGLDATAPIPEPROC)glewGetProcAddress((const GLubyte*)\"glDataPipe\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_datapipe */\r\n\r\n#ifdef GL_SGIX_flush_raster\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_flush_raster ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFlushRasterSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_flush_raster */\r\n\r\n#ifdef GL_SGIX_fog_layers\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_fog_layers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFogLayersSGIX = (PFNGLFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFogLayersSGIX\")) == NULL) || r;\r\n  r = ((glGetFogLayersSGIX = (PFNGLGETFOGLAYERSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetFogLayersSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_fog_layers */\r\n\r\n#ifdef GL_SGIX_fog_texture\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_fog_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTextureFogSGIX = (PFNGLTEXTUREFOGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glTextureFogSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_fog_texture */\r\n\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_fragment_specular_lighting ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentColorMaterialSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelfSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelfvSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModeliSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightModelivSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightfSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightfvSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightiSGIX\")) == NULL) || r;\r\n  r = ((glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentLightivSGIX\")) == NULL) || r;\r\n  r = ((glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialfSGIX\")) == NULL) || r;\r\n  r = ((glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialfvSGIX\")) == NULL) || r;\r\n  r = ((glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialiSGIX\")) == NULL) || r;\r\n  r = ((glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFragmentMaterialivSGIX\")) == NULL) || r;\r\n  r = ((glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentLightfvSGIX\")) == NULL) || r;\r\n  r = ((glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentLightivSGIX\")) == NULL) || r;\r\n  r = ((glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentMaterialfvSGIX\")) == NULL) || r;\r\n  r = ((glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetFragmentMaterialivSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_fragment_specular_lighting */\r\n\r\n#ifdef GL_SGIX_framezoom\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_framezoom ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)glewGetProcAddress((const GLubyte*)\"glFrameZoomSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_framezoom */\r\n\r\n#ifdef GL_SGIX_igloo_interface\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_igloo_interface ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)glewGetProcAddress((const GLubyte*)\"glIglooInterfaceSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_igloo_interface */\r\n\r\n#ifdef GL_SGIX_mpeg1\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_mpeg1 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAllocMPEGPredictorsSGIX = (PFNGLALLOCMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glAllocMPEGPredictorsSGIX\")) == NULL) || r;\r\n  r = ((glDeleteMPEGPredictorsSGIX = (PFNGLDELETEMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glDeleteMPEGPredictorsSGIX\")) == NULL) || r;\r\n  r = ((glGenMPEGPredictorsSGIX = (PFNGLGENMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGenMPEGPredictorsSGIX\")) == NULL) || r;\r\n  r = ((glGetMPEGParameterfvSGIX = (PFNGLGETMPEGPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetMPEGParameterfvSGIX\")) == NULL) || r;\r\n  r = ((glGetMPEGParameterivSGIX = (PFNGLGETMPEGPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetMPEGParameterivSGIX\")) == NULL) || r;\r\n  r = ((glGetMPEGPredictorSGIX = (PFNGLGETMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetMPEGPredictorSGIX\")) == NULL) || r;\r\n  r = ((glGetMPEGQuantTableubv = (PFNGLGETMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)\"glGetMPEGQuantTableubv\")) == NULL) || r;\r\n  r = ((glIsMPEGPredictorSGIX = (PFNGLISMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)\"glIsMPEGPredictorSGIX\")) == NULL) || r;\r\n  r = ((glMPEGPredictorSGIX = (PFNGLMPEGPREDICTORSGIXPROC)glewGetProcAddress((const GLubyte*)\"glMPEGPredictorSGIX\")) == NULL) || r;\r\n  r = ((glMPEGQuantTableubv = (PFNGLMPEGQUANTTABLEUBVPROC)glewGetProcAddress((const GLubyte*)\"glMPEGQuantTableubv\")) == NULL) || r;\r\n  r = ((glSwapMPEGPredictorsSGIX = (PFNGLSWAPMPEGPREDICTORSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glSwapMPEGPredictorsSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_mpeg1 */\r\n\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_nonlinear_lighting_pervertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetNonlinLightfvSGIX = (PFNGLGETNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetNonlinLightfvSGIX\")) == NULL) || r;\r\n  r = ((glGetNonlinMaterialfvSGIX = (PFNGLGETNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetNonlinMaterialfvSGIX\")) == NULL) || r;\r\n  r = ((glNonlinLightfvSGIX = (PFNGLNONLINLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glNonlinLightfvSGIX\")) == NULL) || r;\r\n  r = ((glNonlinMaterialfvSGIX = (PFNGLNONLINMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glNonlinMaterialfvSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_nonlinear_lighting_pervertex */\r\n\r\n#ifdef GL_SGIX_pixel_texture\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_pixel_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)glewGetProcAddress((const GLubyte*)\"glPixelTexGenSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_pixel_texture */\r\n\r\n#ifdef GL_SGIX_polynomial_ffd\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_polynomial_ffd ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glDeformSGIX = (PFNGLDEFORMSGIXPROC)glewGetProcAddress((const GLubyte*)\"glDeformSGIX\")) == NULL) || r;\r\n  r = ((glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)glewGetProcAddress((const GLubyte*)\"glLoadIdentityDeformationMapSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_polynomial_ffd */\r\n\r\n#ifdef GL_SGIX_quad_mesh\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_quad_mesh ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glMeshBreadthSGIX = (PFNGLMESHBREADTHSGIXPROC)glewGetProcAddress((const GLubyte*)\"glMeshBreadthSGIX\")) == NULL) || r;\r\n  r = ((glMeshStrideSGIX = (PFNGLMESHSTRIDESGIXPROC)glewGetProcAddress((const GLubyte*)\"glMeshStrideSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_quad_mesh */\r\n\r\n#ifdef GL_SGIX_reference_plane\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_reference_plane ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)glewGetProcAddress((const GLubyte*)\"glReferencePlaneSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_reference_plane */\r\n\r\n#ifdef GL_SGIX_sprite\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_sprite ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)glewGetProcAddress((const GLubyte*)\"glSpriteParameterfSGIX\")) == NULL) || r;\r\n  r = ((glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glSpriteParameterfvSGIX\")) == NULL) || r;\r\n  r = ((glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)glewGetProcAddress((const GLubyte*)\"glSpriteParameteriSGIX\")) == NULL) || r;\r\n  r = ((glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)\"glSpriteParameterivSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_sprite */\r\n\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_tag_sample_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glTagSampleBufferSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_tag_sample_buffer */\r\n\r\n#ifdef GL_SGIX_vector_ops\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_vector_ops ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetVectorOperationSGIX = (PFNGLGETVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGetVectorOperationSGIX\")) == NULL) || r;\r\n  r = ((glVectorOperationSGIX = (PFNGLVECTOROPERATIONSGIXPROC)glewGetProcAddress((const GLubyte*)\"glVectorOperationSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_vector_ops */\r\n\r\n#ifdef GL_SGIX_vertex_array_object\r\n\r\nstatic GLboolean _glewInit_GL_SGIX_vertex_array_object ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAreVertexArraysResidentSGIX = (PFNGLAREVERTEXARRAYSRESIDENTSGIXPROC)glewGetProcAddress((const GLubyte*)\"glAreVertexArraysResidentSGIX\")) == NULL) || r;\r\n  r = ((glBindVertexArraySGIX = (PFNGLBINDVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)\"glBindVertexArraySGIX\")) == NULL) || r;\r\n  r = ((glDeleteVertexArraysSGIX = (PFNGLDELETEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glDeleteVertexArraysSGIX\")) == NULL) || r;\r\n  r = ((glGenVertexArraysSGIX = (PFNGLGENVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glGenVertexArraysSGIX\")) == NULL) || r;\r\n  r = ((glIsVertexArraySGIX = (PFNGLISVERTEXARRAYSGIXPROC)glewGetProcAddress((const GLubyte*)\"glIsVertexArraySGIX\")) == NULL) || r;\r\n  r = ((glPrioritizeVertexArraysSGIX = (PFNGLPRIORITIZEVERTEXARRAYSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glPrioritizeVertexArraysSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGIX_vertex_array_object */\r\n\r\n#ifdef GL_SGI_color_table\r\n\r\nstatic GLboolean _glewInit_GL_SGI_color_table ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)\"glColorTableParameterfvSGI\")) == NULL) || r;\r\n  r = ((glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)\"glColorTableParameterivSGI\")) == NULL) || r;\r\n  r = ((glColorTableSGI = (PFNGLCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)\"glColorTableSGI\")) == NULL) || r;\r\n  r = ((glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)\"glCopyColorTableSGI\")) == NULL) || r;\r\n  r = ((glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameterfvSGI\")) == NULL) || r;\r\n  r = ((glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableParameterivSGI\")) == NULL) || r;\r\n  r = ((glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)\"glGetColorTableSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGI_color_table */\r\n\r\n#ifdef GL_SGI_fft\r\n\r\nstatic GLboolean _glewInit_GL_SGI_fft ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGetPixelTransformParameterfvSGI = (PFNGLGETPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)\"glGetPixelTransformParameterfvSGI\")) == NULL) || r;\r\n  r = ((glGetPixelTransformParameterivSGI = (PFNGLGETPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)\"glGetPixelTransformParameterivSGI\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterfSGI = (PFNGLPIXELTRANSFORMPARAMETERFSGIPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterfSGI\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterfvSGI = (PFNGLPIXELTRANSFORMPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterfvSGI\")) == NULL) || r;\r\n  r = ((glPixelTransformParameteriSGI = (PFNGLPIXELTRANSFORMPARAMETERISGIPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameteriSGI\")) == NULL) || r;\r\n  r = ((glPixelTransformParameterivSGI = (PFNGLPIXELTRANSFORMPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformParameterivSGI\")) == NULL) || r;\r\n  r = ((glPixelTransformSGI = (PFNGLPIXELTRANSFORMSGIPROC)glewGetProcAddress((const GLubyte*)\"glPixelTransformSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SGI_fft */\r\n\r\n#ifdef GL_SUNX_constant_data\r\n\r\nstatic GLboolean _glewInit_GL_SUNX_constant_data ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)glewGetProcAddress((const GLubyte*)\"glFinishTextureSUNX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SUNX_constant_data */\r\n\r\n#ifdef GL_SUN_global_alpha\r\n\r\nstatic GLboolean _glewInit_GL_SUN_global_alpha ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactorbSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactordSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactorfSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactoriSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactorsSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactorubSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactoruiSUN\")) == NULL) || r;\r\n  r = ((glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)glewGetProcAddress((const GLubyte*)\"glGlobalAlphaFactorusSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SUN_global_alpha */\r\n\r\n#ifdef GL_SUN_read_video_pixels\r\n\r\nstatic GLboolean _glewInit_GL_SUN_read_video_pixels ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glReadVideoPixelsSUN = (PFNGLREADVIDEOPIXELSSUNPROC)glewGetProcAddress((const GLubyte*)\"glReadVideoPixelsSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SUN_read_video_pixels */\r\n\r\n#ifdef GL_SUN_triangle_list\r\n\r\nstatic GLboolean _glewInit_GL_SUN_triangle_list ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodePointerSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeubSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeubvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuivSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeusSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeusvSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SUN_triangle_list */\r\n\r\n#ifdef GL_SUN_vertex\r\n\r\nstatic GLboolean _glewInit_GL_SUN_vertex ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4ubVertex2fSUN\")) == NULL) || r;\r\n  r = ((glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4ubVertex2fvSUN\")) == NULL) || r;\r\n  r = ((glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4ubVertex3fSUN\")) == NULL) || r;\r\n  r = ((glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glColor4ubVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor4fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor4ubVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiColor4ubVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiTexCoord2fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiVertex3fSUN\")) == NULL) || r;\r\n  r = ((glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glReplacementCodeuiVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor4fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor4fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor4ubVertex3fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fColor4ubVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fNormal3fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fNormal3fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fVertex3fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord2fVertex3fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4fColor4fNormal3fVertex4fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4fColor4fNormal3fVertex4fvSUN\")) == NULL) || r;\r\n  r = ((glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4fVertex4fSUN\")) == NULL) || r;\r\n  r = ((glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)\"glTexCoord4fVertex4fvSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_SUN_vertex */\r\n\r\n#ifdef GL_WIN_swap_hint\r\n\r\nstatic GLboolean _glewInit_GL_WIN_swap_hint ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glAddSwapHintRectWIN = (PFNGLADDSWAPHINTRECTWINPROC)glewGetProcAddress((const GLubyte*)\"glAddSwapHintRectWIN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GL_WIN_swap_hint */\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nstatic int _glewExtensionCompare(const char *s1, const char *s2)\r\n{\r\n  /* http://www.chanduthedev.com/2012/07/strcmp-implementation-in-c.html */\r\n  while (*s1 || *s2)\r\n  {\r\n      if (*s1 > *s2)\r\n          return 1;\r\n      if (*s1 < *s2)\r\n          return -1;\r\n      s1++;\r\n      s2++;\r\n  }\r\n  return 0;\r\n}\r\n\r\nstatic ptrdiff_t _glewBsearchExtension(const char* name)\r\n{\r\n  ptrdiff_t lo = 0, hi = sizeof(_glewExtensionLookup) / sizeof(char*) - 2;\r\n\r\n  while (lo <= hi)\r\n  {\r\n    ptrdiff_t mid = (lo + hi) / 2;\r\n    const int cmp = _glewExtensionCompare(name, _glewExtensionLookup[mid]);\r\n    if (cmp < 0) hi = mid - 1;\r\n    else if (cmp > 0) lo = mid + 1;\r\n    else return mid;\r\n  }\r\n  return -1;\r\n}\r\n\r\nstatic GLboolean *_glewGetExtensionString(const char *name)\r\n{\r\n  ptrdiff_t n = _glewBsearchExtension(name);\r\n  if (n >= 0) return &_glewExtensionString[n];\r\n  return NULL;\r\n}\r\n\r\nstatic GLboolean *_glewGetExtensionEnable(const char *name)\r\n{\r\n  ptrdiff_t n = _glewBsearchExtension(name);\r\n  if (n >= 0) return _glewExtensionEnabled[n];\r\n  return NULL;\r\n}\r\n\r\nstatic const char *_glewNextSpace(const char *i)\r\n{\r\n  const char *j = i;\r\n  if (j)\r\n    while (*j!=' ' && *j) ++j;\r\n  return j;\r\n}\r\n\r\nstatic const char *_glewNextNonSpace(const char *i)\r\n{\r\n  const char *j = i;\r\n  if (j)\r\n    while (*j==' ') ++j;\r\n  return j;\r\n}\r\n\r\nGLboolean GLEWAPIENTRY glewGetExtension (const char* name)\r\n{\r\n  GLboolean *enable = _glewGetExtensionString(name);\r\n  if (enable)\r\n    return *enable;\r\n  return GL_FALSE;\r\n}\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\ntypedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);\r\ntypedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);\r\n\r\nstatic GLenum GLEWAPIENTRY glewContextInit ()\r\n{\r\n  PFNGLGETSTRINGPROC getString;\r\n  const GLubyte* s;\r\n  GLuint dot;\r\n  GLint major, minor;\r\n  size_t n;\r\n\r\n  #ifdef _WIN32\r\n  getString = glGetString;\r\n  #else\r\n  getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)\"glGetString\");\r\n  if (!getString)\r\n    return GLEW_ERROR_NO_GL_VERSION;\r\n  #endif\r\n\r\n  /* query opengl version */\r\n  s = getString(GL_VERSION);\r\n  dot = _glewStrCLen(s, '.');\r\n  if (dot == 0)\r\n    return GLEW_ERROR_NO_GL_VERSION;\r\n\r\n  major = s[dot-1]-'0';\r\n  minor = s[dot+1]-'0';\r\n\r\n  if (minor < 0 || minor > 9)\r\n    minor = 0;\r\n  if (major<0 || major>9)\r\n    return GLEW_ERROR_NO_GL_VERSION;\r\n\r\n  if (major == 1 && minor == 0)\r\n  {\r\n    return GLEW_ERROR_GL_VERSION_10_ONLY;\r\n  }\r\n  else\r\n  {\r\n    GLEW_VERSION_4_6   = ( major > 4 )                 || ( major == 4 && minor >= 6 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_5   = GLEW_VERSION_4_4   == GL_TRUE || ( major == 4 && minor >= 5 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_4   = GLEW_VERSION_4_5   == GL_TRUE || ( major == 4 && minor >= 4 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_3   = GLEW_VERSION_4_4   == GL_TRUE || ( major == 4 && minor >= 3 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_2   = GLEW_VERSION_4_3   == GL_TRUE || ( major == 4 && minor >= 2 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_1   = GLEW_VERSION_4_2   == GL_TRUE || ( major == 4 && minor >= 1 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_4_0   = GLEW_VERSION_4_1   == GL_TRUE || ( major == 4               ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_3_3   = GLEW_VERSION_4_0   == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_3_2   = GLEW_VERSION_3_3   == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_3_1   = GLEW_VERSION_3_2   == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_3_0   = GLEW_VERSION_3_1   == GL_TRUE || ( major == 3               ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_2_1   = GLEW_VERSION_3_0   == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_2_0   = GLEW_VERSION_2_1   == GL_TRUE || ( major == 2               ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_5   = GLEW_VERSION_2_0   == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_4   = GLEW_VERSION_1_5   == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_3   = GLEW_VERSION_1_4   == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_2_1 = GLEW_VERSION_1_3   == GL_TRUE                                 ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_2   = GLEW_VERSION_1_2_1 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;\r\n    GLEW_VERSION_1_1   = GLEW_VERSION_1_2   == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;\r\n  }\r\n\r\n  for (n = 0; n < sizeof(_glewExtensionString) / sizeof(_glewExtensionString[0]); ++n)\r\n    _glewExtensionString[n] = GL_FALSE;\r\n\r\n  if (GLEW_VERSION_3_0)\r\n  {\r\n    GLint n = 0;\r\n    GLint i;\r\n    PFNGLGETINTEGERVPROC getIntegerv;\r\n    PFNGLGETSTRINGIPROC getStringi;\r\n    const char *ext;\r\n    GLboolean *enable;\r\n\r\n    #ifdef _WIN32\r\n    getIntegerv = glGetIntegerv;\r\n    #else\r\n    getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)\"glGetIntegerv\");\r\n    #endif\r\n\r\n    if (getIntegerv)\r\n      getIntegerv(GL_NUM_EXTENSIONS, &n);\r\n\r\n    /* glGetStringi is OpenGL 3.0 */\r\n    getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)\"glGetStringi\");\r\n    if (getStringi)\r\n      for (i = 0; i<n; ++i)\r\n      {\r\n        ext = (const char *) getStringi(GL_EXTENSIONS, i);\r\n\r\n        /* Based on extension string(s), glewGetExtension purposes */\r\n        enable = _glewGetExtensionString(ext);\r\n        if (enable)\r\n          *enable = GL_TRUE;\r\n\r\n        /* Based on extension string(s), experimental mode, glewIsSupported purposes */\r\n        enable = _glewGetExtensionEnable(ext);\r\n        if (enable)\r\n          *enable = GL_TRUE;\r\n      }\r\n  }\r\n  else\r\n  {\r\n    const char *extensions;\r\n    const char *end;\r\n    const char *i;\r\n    const char *j;\r\n    char ext[128];\r\n    GLboolean *enable;\r\n\r\n    extensions = (const char *) getString(GL_EXTENSIONS);\r\n\r\n    if (extensions)\r\n    {\r\n      end = extensions + _glewStrLen((const GLubyte *) extensions);\r\n      for (i=extensions; i<end; i = j + 1)\r\n      {\r\n        i = _glewNextNonSpace(i);\r\n        j = _glewNextSpace(i);\r\n\r\n        /* Copy extension into NUL terminated string */\r\n        if (j-i >= (ptrdiff_t) sizeof(ext))\r\n          continue;\r\n        _glewStrCopy(ext, i, ' ');\r\n\r\n        /* Based on extension string(s), glewGetExtension purposes */\r\n        enable = _glewGetExtensionString(ext);\r\n        if (enable)\r\n          *enable = GL_TRUE;\r\n\r\n        /* Based on extension string(s), experimental mode, glewIsSupported purposes */\r\n        enable = _glewGetExtensionEnable(ext);\r\n        if (enable)\r\n          *enable = GL_TRUE;\r\n      }\r\n    }\r\n  }\r\n#ifdef GL_VERSION_1_2\r\n  if (glewExperimental || GLEW_VERSION_1_2) GLEW_VERSION_1_2 = !_glewInit_GL_VERSION_1_2();\r\n#endif /* GL_VERSION_1_2 */\r\n#ifdef GL_VERSION_1_3\r\n  if (glewExperimental || GLEW_VERSION_1_3) GLEW_VERSION_1_3 = !_glewInit_GL_VERSION_1_3();\r\n#endif /* GL_VERSION_1_3 */\r\n#ifdef GL_VERSION_1_4\r\n  if (glewExperimental || GLEW_VERSION_1_4) GLEW_VERSION_1_4 = !_glewInit_GL_VERSION_1_4();\r\n#endif /* GL_VERSION_1_4 */\r\n#ifdef GL_VERSION_1_5\r\n  if (glewExperimental || GLEW_VERSION_1_5) GLEW_VERSION_1_5 = !_glewInit_GL_VERSION_1_5();\r\n#endif /* GL_VERSION_1_5 */\r\n#ifdef GL_VERSION_2_0\r\n  if (glewExperimental || GLEW_VERSION_2_0) GLEW_VERSION_2_0 = !_glewInit_GL_VERSION_2_0();\r\n#endif /* GL_VERSION_2_0 */\r\n#ifdef GL_VERSION_2_1\r\n  if (glewExperimental || GLEW_VERSION_2_1) GLEW_VERSION_2_1 = !_glewInit_GL_VERSION_2_1();\r\n#endif /* GL_VERSION_2_1 */\r\n#ifdef GL_VERSION_3_0\r\n  if (glewExperimental || GLEW_VERSION_3_0) GLEW_VERSION_3_0 = !_glewInit_GL_VERSION_3_0();\r\n#endif /* GL_VERSION_3_0 */\r\n#ifdef GL_VERSION_3_1\r\n  if (glewExperimental || GLEW_VERSION_3_1) GLEW_VERSION_3_1 = !_glewInit_GL_VERSION_3_1();\r\n#endif /* GL_VERSION_3_1 */\r\n#ifdef GL_VERSION_3_2\r\n  if (glewExperimental || GLEW_VERSION_3_2) GLEW_VERSION_3_2 = !_glewInit_GL_VERSION_3_2();\r\n#endif /* GL_VERSION_3_2 */\r\n#ifdef GL_VERSION_3_3\r\n  if (glewExperimental || GLEW_VERSION_3_3) GLEW_VERSION_3_3 = !_glewInit_GL_VERSION_3_3();\r\n#endif /* GL_VERSION_3_3 */\r\n#ifdef GL_VERSION_4_0\r\n  if (glewExperimental || GLEW_VERSION_4_0) GLEW_VERSION_4_0 = !_glewInit_GL_VERSION_4_0();\r\n#endif /* GL_VERSION_4_0 */\r\n#ifdef GL_VERSION_4_5\r\n  if (glewExperimental || GLEW_VERSION_4_5) GLEW_VERSION_4_5 = !_glewInit_GL_VERSION_4_5();\r\n#endif /* GL_VERSION_4_5 */\r\n#ifdef GL_VERSION_4_6\r\n  if (glewExperimental || GLEW_VERSION_4_6) GLEW_VERSION_4_6 = !_glewInit_GL_VERSION_4_6();\r\n#endif /* GL_VERSION_4_6 */\r\n#ifdef GL_3DFX_tbuffer\r\n  if (glewExperimental || GLEW_3DFX_tbuffer) GLEW_3DFX_tbuffer = !_glewInit_GL_3DFX_tbuffer();\r\n#endif /* GL_3DFX_tbuffer */\r\n#ifdef GL_AMD_debug_output\r\n  if (glewExperimental || GLEW_AMD_debug_output) GLEW_AMD_debug_output = !_glewInit_GL_AMD_debug_output();\r\n#endif /* GL_AMD_debug_output */\r\n#ifdef GL_AMD_draw_buffers_blend\r\n  if (glewExperimental || GLEW_AMD_draw_buffers_blend) GLEW_AMD_draw_buffers_blend = !_glewInit_GL_AMD_draw_buffers_blend();\r\n#endif /* GL_AMD_draw_buffers_blend */\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n  if (glewExperimental || GLEW_AMD_framebuffer_sample_positions) GLEW_AMD_framebuffer_sample_positions = !_glewInit_GL_AMD_framebuffer_sample_positions();\r\n#endif /* GL_AMD_framebuffer_sample_positions */\r\n#ifdef GL_AMD_interleaved_elements\r\n  if (glewExperimental || GLEW_AMD_interleaved_elements) GLEW_AMD_interleaved_elements = !_glewInit_GL_AMD_interleaved_elements();\r\n#endif /* GL_AMD_interleaved_elements */\r\n#ifdef GL_AMD_multi_draw_indirect\r\n  if (glewExperimental || GLEW_AMD_multi_draw_indirect) GLEW_AMD_multi_draw_indirect = !_glewInit_GL_AMD_multi_draw_indirect();\r\n#endif /* GL_AMD_multi_draw_indirect */\r\n#ifdef GL_AMD_name_gen_delete\r\n  if (glewExperimental || GLEW_AMD_name_gen_delete) GLEW_AMD_name_gen_delete = !_glewInit_GL_AMD_name_gen_delete();\r\n#endif /* GL_AMD_name_gen_delete */\r\n#ifdef GL_AMD_occlusion_query_event\r\n  if (glewExperimental || GLEW_AMD_occlusion_query_event) GLEW_AMD_occlusion_query_event = !_glewInit_GL_AMD_occlusion_query_event();\r\n#endif /* GL_AMD_occlusion_query_event */\r\n#ifdef GL_AMD_performance_monitor\r\n  if (glewExperimental || GLEW_AMD_performance_monitor) GLEW_AMD_performance_monitor = !_glewInit_GL_AMD_performance_monitor();\r\n#endif /* GL_AMD_performance_monitor */\r\n#ifdef GL_AMD_sample_positions\r\n  if (glewExperimental || GLEW_AMD_sample_positions) GLEW_AMD_sample_positions = !_glewInit_GL_AMD_sample_positions();\r\n#endif /* GL_AMD_sample_positions */\r\n#ifdef GL_AMD_sparse_texture\r\n  if (glewExperimental || GLEW_AMD_sparse_texture) GLEW_AMD_sparse_texture = !_glewInit_GL_AMD_sparse_texture();\r\n#endif /* GL_AMD_sparse_texture */\r\n#ifdef GL_AMD_stencil_operation_extended\r\n  if (glewExperimental || GLEW_AMD_stencil_operation_extended) GLEW_AMD_stencil_operation_extended = !_glewInit_GL_AMD_stencil_operation_extended();\r\n#endif /* GL_AMD_stencil_operation_extended */\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n  if (glewExperimental || GLEW_AMD_vertex_shader_tessellator) GLEW_AMD_vertex_shader_tessellator = !_glewInit_GL_AMD_vertex_shader_tessellator();\r\n#endif /* GL_AMD_vertex_shader_tessellator */\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n  if (glewExperimental || GLEW_ANGLE_framebuffer_blit) GLEW_ANGLE_framebuffer_blit = !_glewInit_GL_ANGLE_framebuffer_blit();\r\n#endif /* GL_ANGLE_framebuffer_blit */\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n  if (glewExperimental || GLEW_ANGLE_framebuffer_multisample) GLEW_ANGLE_framebuffer_multisample = !_glewInit_GL_ANGLE_framebuffer_multisample();\r\n#endif /* GL_ANGLE_framebuffer_multisample */\r\n#ifdef GL_ANGLE_instanced_arrays\r\n  if (glewExperimental || GLEW_ANGLE_instanced_arrays) GLEW_ANGLE_instanced_arrays = !_glewInit_GL_ANGLE_instanced_arrays();\r\n#endif /* GL_ANGLE_instanced_arrays */\r\n#ifdef GL_ANGLE_timer_query\r\n  if (glewExperimental || GLEW_ANGLE_timer_query) GLEW_ANGLE_timer_query = !_glewInit_GL_ANGLE_timer_query();\r\n#endif /* GL_ANGLE_timer_query */\r\n#ifdef GL_ANGLE_translated_shader_source\r\n  if (glewExperimental || GLEW_ANGLE_translated_shader_source) GLEW_ANGLE_translated_shader_source = !_glewInit_GL_ANGLE_translated_shader_source();\r\n#endif /* GL_ANGLE_translated_shader_source */\r\n#ifdef GL_APPLE_copy_texture_levels\r\n  if (glewExperimental || GLEW_APPLE_copy_texture_levels) GLEW_APPLE_copy_texture_levels = !_glewInit_GL_APPLE_copy_texture_levels();\r\n#endif /* GL_APPLE_copy_texture_levels */\r\n#ifdef GL_APPLE_element_array\r\n  if (glewExperimental || GLEW_APPLE_element_array) GLEW_APPLE_element_array = !_glewInit_GL_APPLE_element_array();\r\n#endif /* GL_APPLE_element_array */\r\n#ifdef GL_APPLE_fence\r\n  if (glewExperimental || GLEW_APPLE_fence) GLEW_APPLE_fence = !_glewInit_GL_APPLE_fence();\r\n#endif /* GL_APPLE_fence */\r\n#ifdef GL_APPLE_flush_buffer_range\r\n  if (glewExperimental || GLEW_APPLE_flush_buffer_range) GLEW_APPLE_flush_buffer_range = !_glewInit_GL_APPLE_flush_buffer_range();\r\n#endif /* GL_APPLE_flush_buffer_range */\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n  if (glewExperimental || GLEW_APPLE_framebuffer_multisample) GLEW_APPLE_framebuffer_multisample = !_glewInit_GL_APPLE_framebuffer_multisample();\r\n#endif /* GL_APPLE_framebuffer_multisample */\r\n#ifdef GL_APPLE_object_purgeable\r\n  if (glewExperimental || GLEW_APPLE_object_purgeable) GLEW_APPLE_object_purgeable = !_glewInit_GL_APPLE_object_purgeable();\r\n#endif /* GL_APPLE_object_purgeable */\r\n#ifdef GL_APPLE_sync\r\n  if (glewExperimental || GLEW_APPLE_sync) GLEW_APPLE_sync = !_glewInit_GL_APPLE_sync();\r\n#endif /* GL_APPLE_sync */\r\n#ifdef GL_APPLE_texture_range\r\n  if (glewExperimental || GLEW_APPLE_texture_range) GLEW_APPLE_texture_range = !_glewInit_GL_APPLE_texture_range();\r\n#endif /* GL_APPLE_texture_range */\r\n#ifdef GL_APPLE_vertex_array_object\r\n  if (glewExperimental || GLEW_APPLE_vertex_array_object) GLEW_APPLE_vertex_array_object = !_glewInit_GL_APPLE_vertex_array_object();\r\n#endif /* GL_APPLE_vertex_array_object */\r\n#ifdef GL_APPLE_vertex_array_range\r\n  if (glewExperimental || GLEW_APPLE_vertex_array_range) GLEW_APPLE_vertex_array_range = !_glewInit_GL_APPLE_vertex_array_range();\r\n#endif /* GL_APPLE_vertex_array_range */\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n  if (glewExperimental || GLEW_APPLE_vertex_program_evaluators) GLEW_APPLE_vertex_program_evaluators = !_glewInit_GL_APPLE_vertex_program_evaluators();\r\n#endif /* GL_APPLE_vertex_program_evaluators */\r\n#ifdef GL_ARB_ES2_compatibility\r\n  if (glewExperimental || GLEW_ARB_ES2_compatibility) GLEW_ARB_ES2_compatibility = !_glewInit_GL_ARB_ES2_compatibility();\r\n#endif /* GL_ARB_ES2_compatibility */\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n  if (glewExperimental || GLEW_ARB_ES3_1_compatibility) GLEW_ARB_ES3_1_compatibility = !_glewInit_GL_ARB_ES3_1_compatibility();\r\n#endif /* GL_ARB_ES3_1_compatibility */\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n  if (glewExperimental || GLEW_ARB_ES3_2_compatibility) GLEW_ARB_ES3_2_compatibility = !_glewInit_GL_ARB_ES3_2_compatibility();\r\n#endif /* GL_ARB_ES3_2_compatibility */\r\n#ifdef GL_ARB_base_instance\r\n  if (glewExperimental || GLEW_ARB_base_instance) GLEW_ARB_base_instance = !_glewInit_GL_ARB_base_instance();\r\n#endif /* GL_ARB_base_instance */\r\n#ifdef GL_ARB_bindless_texture\r\n  if (glewExperimental || GLEW_ARB_bindless_texture) GLEW_ARB_bindless_texture = !_glewInit_GL_ARB_bindless_texture();\r\n#endif /* GL_ARB_bindless_texture */\r\n#ifdef GL_ARB_blend_func_extended\r\n  if (glewExperimental || GLEW_ARB_blend_func_extended) GLEW_ARB_blend_func_extended = !_glewInit_GL_ARB_blend_func_extended();\r\n#endif /* GL_ARB_blend_func_extended */\r\n#ifdef GL_ARB_buffer_storage\r\n  if (glewExperimental || GLEW_ARB_buffer_storage) GLEW_ARB_buffer_storage = !_glewInit_GL_ARB_buffer_storage();\r\n#endif /* GL_ARB_buffer_storage */\r\n#ifdef GL_ARB_cl_event\r\n  if (glewExperimental || GLEW_ARB_cl_event) GLEW_ARB_cl_event = !_glewInit_GL_ARB_cl_event();\r\n#endif /* GL_ARB_cl_event */\r\n#ifdef GL_ARB_clear_buffer_object\r\n  if (glewExperimental || GLEW_ARB_clear_buffer_object) GLEW_ARB_clear_buffer_object = !_glewInit_GL_ARB_clear_buffer_object();\r\n#endif /* GL_ARB_clear_buffer_object */\r\n#ifdef GL_ARB_clear_texture\r\n  if (glewExperimental || GLEW_ARB_clear_texture) GLEW_ARB_clear_texture = !_glewInit_GL_ARB_clear_texture();\r\n#endif /* GL_ARB_clear_texture */\r\n#ifdef GL_ARB_clip_control\r\n  if (glewExperimental || GLEW_ARB_clip_control) GLEW_ARB_clip_control = !_glewInit_GL_ARB_clip_control();\r\n#endif /* GL_ARB_clip_control */\r\n#ifdef GL_ARB_color_buffer_float\r\n  if (glewExperimental || GLEW_ARB_color_buffer_float) GLEW_ARB_color_buffer_float = !_glewInit_GL_ARB_color_buffer_float();\r\n#endif /* GL_ARB_color_buffer_float */\r\n#ifdef GL_ARB_compute_shader\r\n  if (glewExperimental || GLEW_ARB_compute_shader) GLEW_ARB_compute_shader = !_glewInit_GL_ARB_compute_shader();\r\n#endif /* GL_ARB_compute_shader */\r\n#ifdef GL_ARB_compute_variable_group_size\r\n  if (glewExperimental || GLEW_ARB_compute_variable_group_size) GLEW_ARB_compute_variable_group_size = !_glewInit_GL_ARB_compute_variable_group_size();\r\n#endif /* GL_ARB_compute_variable_group_size */\r\n#ifdef GL_ARB_copy_buffer\r\n  if (glewExperimental || GLEW_ARB_copy_buffer) GLEW_ARB_copy_buffer = !_glewInit_GL_ARB_copy_buffer();\r\n#endif /* GL_ARB_copy_buffer */\r\n#ifdef GL_ARB_copy_image\r\n  if (glewExperimental || GLEW_ARB_copy_image) GLEW_ARB_copy_image = !_glewInit_GL_ARB_copy_image();\r\n#endif /* GL_ARB_copy_image */\r\n#ifdef GL_ARB_debug_output\r\n  if (glewExperimental || GLEW_ARB_debug_output) GLEW_ARB_debug_output = !_glewInit_GL_ARB_debug_output();\r\n#endif /* GL_ARB_debug_output */\r\n#ifdef GL_ARB_direct_state_access\r\n  if (glewExperimental || GLEW_ARB_direct_state_access) GLEW_ARB_direct_state_access = !_glewInit_GL_ARB_direct_state_access();\r\n#endif /* GL_ARB_direct_state_access */\r\n#ifdef GL_ARB_draw_buffers\r\n  if (glewExperimental || GLEW_ARB_draw_buffers) GLEW_ARB_draw_buffers = !_glewInit_GL_ARB_draw_buffers();\r\n#endif /* GL_ARB_draw_buffers */\r\n#ifdef GL_ARB_draw_buffers_blend\r\n  if (glewExperimental || GLEW_ARB_draw_buffers_blend) GLEW_ARB_draw_buffers_blend = !_glewInit_GL_ARB_draw_buffers_blend();\r\n#endif /* GL_ARB_draw_buffers_blend */\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n  if (glewExperimental || GLEW_ARB_draw_elements_base_vertex) GLEW_ARB_draw_elements_base_vertex = !_glewInit_GL_ARB_draw_elements_base_vertex();\r\n#endif /* GL_ARB_draw_elements_base_vertex */\r\n#ifdef GL_ARB_draw_indirect\r\n  if (glewExperimental || GLEW_ARB_draw_indirect) GLEW_ARB_draw_indirect = !_glewInit_GL_ARB_draw_indirect();\r\n#endif /* GL_ARB_draw_indirect */\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n  if (glewExperimental || GLEW_ARB_framebuffer_no_attachments) GLEW_ARB_framebuffer_no_attachments = !_glewInit_GL_ARB_framebuffer_no_attachments();\r\n#endif /* GL_ARB_framebuffer_no_attachments */\r\n#ifdef GL_ARB_framebuffer_object\r\n  if (glewExperimental || GLEW_ARB_framebuffer_object) GLEW_ARB_framebuffer_object = !_glewInit_GL_ARB_framebuffer_object();\r\n#endif /* GL_ARB_framebuffer_object */\r\n#ifdef GL_ARB_geometry_shader4\r\n  if (glewExperimental || GLEW_ARB_geometry_shader4) GLEW_ARB_geometry_shader4 = !_glewInit_GL_ARB_geometry_shader4();\r\n#endif /* GL_ARB_geometry_shader4 */\r\n#ifdef GL_ARB_get_program_binary\r\n  if (glewExperimental || GLEW_ARB_get_program_binary) GLEW_ARB_get_program_binary = !_glewInit_GL_ARB_get_program_binary();\r\n#endif /* GL_ARB_get_program_binary */\r\n#ifdef GL_ARB_get_texture_sub_image\r\n  if (glewExperimental || GLEW_ARB_get_texture_sub_image) GLEW_ARB_get_texture_sub_image = !_glewInit_GL_ARB_get_texture_sub_image();\r\n#endif /* GL_ARB_get_texture_sub_image */\r\n#ifdef GL_ARB_gl_spirv\r\n  if (glewExperimental || GLEW_ARB_gl_spirv) GLEW_ARB_gl_spirv = !_glewInit_GL_ARB_gl_spirv();\r\n#endif /* GL_ARB_gl_spirv */\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n  if (glewExperimental || GLEW_ARB_gpu_shader_fp64) GLEW_ARB_gpu_shader_fp64 = !_glewInit_GL_ARB_gpu_shader_fp64();\r\n#endif /* GL_ARB_gpu_shader_fp64 */\r\n#ifdef GL_ARB_gpu_shader_int64\r\n  if (glewExperimental || GLEW_ARB_gpu_shader_int64) GLEW_ARB_gpu_shader_int64 = !_glewInit_GL_ARB_gpu_shader_int64();\r\n#endif /* GL_ARB_gpu_shader_int64 */\r\n#ifdef GL_ARB_imaging\r\n  if (glewExperimental || GLEW_ARB_imaging) GLEW_ARB_imaging = !_glewInit_GL_ARB_imaging();\r\n#endif /* GL_ARB_imaging */\r\n#ifdef GL_ARB_indirect_parameters\r\n  if (glewExperimental || GLEW_ARB_indirect_parameters) GLEW_ARB_indirect_parameters = !_glewInit_GL_ARB_indirect_parameters();\r\n#endif /* GL_ARB_indirect_parameters */\r\n#ifdef GL_ARB_instanced_arrays\r\n  if (glewExperimental || GLEW_ARB_instanced_arrays) GLEW_ARB_instanced_arrays = !_glewInit_GL_ARB_instanced_arrays();\r\n#endif /* GL_ARB_instanced_arrays */\r\n#ifdef GL_ARB_internalformat_query\r\n  if (glewExperimental || GLEW_ARB_internalformat_query) GLEW_ARB_internalformat_query = !_glewInit_GL_ARB_internalformat_query();\r\n#endif /* GL_ARB_internalformat_query */\r\n#ifdef GL_ARB_internalformat_query2\r\n  if (glewExperimental || GLEW_ARB_internalformat_query2) GLEW_ARB_internalformat_query2 = !_glewInit_GL_ARB_internalformat_query2();\r\n#endif /* GL_ARB_internalformat_query2 */\r\n#ifdef GL_ARB_invalidate_subdata\r\n  if (glewExperimental || GLEW_ARB_invalidate_subdata) GLEW_ARB_invalidate_subdata = !_glewInit_GL_ARB_invalidate_subdata();\r\n#endif /* GL_ARB_invalidate_subdata */\r\n#ifdef GL_ARB_map_buffer_range\r\n  if (glewExperimental || GLEW_ARB_map_buffer_range) GLEW_ARB_map_buffer_range = !_glewInit_GL_ARB_map_buffer_range();\r\n#endif /* GL_ARB_map_buffer_range */\r\n#ifdef GL_ARB_matrix_palette\r\n  if (glewExperimental || GLEW_ARB_matrix_palette) GLEW_ARB_matrix_palette = !_glewInit_GL_ARB_matrix_palette();\r\n#endif /* GL_ARB_matrix_palette */\r\n#ifdef GL_ARB_multi_bind\r\n  if (glewExperimental || GLEW_ARB_multi_bind) GLEW_ARB_multi_bind = !_glewInit_GL_ARB_multi_bind();\r\n#endif /* GL_ARB_multi_bind */\r\n#ifdef GL_ARB_multi_draw_indirect\r\n  if (glewExperimental || GLEW_ARB_multi_draw_indirect) GLEW_ARB_multi_draw_indirect = !_glewInit_GL_ARB_multi_draw_indirect();\r\n#endif /* GL_ARB_multi_draw_indirect */\r\n#ifdef GL_ARB_multisample\r\n  if (glewExperimental || GLEW_ARB_multisample) GLEW_ARB_multisample = !_glewInit_GL_ARB_multisample();\r\n#endif /* GL_ARB_multisample */\r\n#ifdef GL_ARB_multitexture\r\n  if (glewExperimental || GLEW_ARB_multitexture) GLEW_ARB_multitexture = !_glewInit_GL_ARB_multitexture();\r\n#endif /* GL_ARB_multitexture */\r\n#ifdef GL_ARB_occlusion_query\r\n  if (glewExperimental || GLEW_ARB_occlusion_query) GLEW_ARB_occlusion_query = !_glewInit_GL_ARB_occlusion_query();\r\n#endif /* GL_ARB_occlusion_query */\r\n#ifdef GL_ARB_parallel_shader_compile\r\n  if (glewExperimental || GLEW_ARB_parallel_shader_compile) GLEW_ARB_parallel_shader_compile = !_glewInit_GL_ARB_parallel_shader_compile();\r\n#endif /* GL_ARB_parallel_shader_compile */\r\n#ifdef GL_ARB_point_parameters\r\n  if (glewExperimental || GLEW_ARB_point_parameters) GLEW_ARB_point_parameters = !_glewInit_GL_ARB_point_parameters();\r\n#endif /* GL_ARB_point_parameters */\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n  if (glewExperimental || GLEW_ARB_polygon_offset_clamp) GLEW_ARB_polygon_offset_clamp = !_glewInit_GL_ARB_polygon_offset_clamp();\r\n#endif /* GL_ARB_polygon_offset_clamp */\r\n#ifdef GL_ARB_program_interface_query\r\n  if (glewExperimental || GLEW_ARB_program_interface_query) GLEW_ARB_program_interface_query = !_glewInit_GL_ARB_program_interface_query();\r\n#endif /* GL_ARB_program_interface_query */\r\n#ifdef GL_ARB_provoking_vertex\r\n  if (glewExperimental || GLEW_ARB_provoking_vertex) GLEW_ARB_provoking_vertex = !_glewInit_GL_ARB_provoking_vertex();\r\n#endif /* GL_ARB_provoking_vertex */\r\n#ifdef GL_ARB_robustness\r\n  if (glewExperimental || GLEW_ARB_robustness) GLEW_ARB_robustness = !_glewInit_GL_ARB_robustness();\r\n#endif /* GL_ARB_robustness */\r\n#ifdef GL_ARB_sample_locations\r\n  if (glewExperimental || GLEW_ARB_sample_locations) GLEW_ARB_sample_locations = !_glewInit_GL_ARB_sample_locations();\r\n#endif /* GL_ARB_sample_locations */\r\n#ifdef GL_ARB_sample_shading\r\n  if (glewExperimental || GLEW_ARB_sample_shading) GLEW_ARB_sample_shading = !_glewInit_GL_ARB_sample_shading();\r\n#endif /* GL_ARB_sample_shading */\r\n#ifdef GL_ARB_sampler_objects\r\n  if (glewExperimental || GLEW_ARB_sampler_objects) GLEW_ARB_sampler_objects = !_glewInit_GL_ARB_sampler_objects();\r\n#endif /* GL_ARB_sampler_objects */\r\n#ifdef GL_ARB_separate_shader_objects\r\n  if (glewExperimental || GLEW_ARB_separate_shader_objects) GLEW_ARB_separate_shader_objects = !_glewInit_GL_ARB_separate_shader_objects();\r\n#endif /* GL_ARB_separate_shader_objects */\r\n#ifdef GL_ARB_shader_atomic_counters\r\n  if (glewExperimental || GLEW_ARB_shader_atomic_counters) GLEW_ARB_shader_atomic_counters = !_glewInit_GL_ARB_shader_atomic_counters();\r\n#endif /* GL_ARB_shader_atomic_counters */\r\n#ifdef GL_ARB_shader_image_load_store\r\n  if (glewExperimental || GLEW_ARB_shader_image_load_store) GLEW_ARB_shader_image_load_store = !_glewInit_GL_ARB_shader_image_load_store();\r\n#endif /* GL_ARB_shader_image_load_store */\r\n#ifdef GL_ARB_shader_objects\r\n  if (glewExperimental || GLEW_ARB_shader_objects) GLEW_ARB_shader_objects = !_glewInit_GL_ARB_shader_objects();\r\n#endif /* GL_ARB_shader_objects */\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n  if (glewExperimental || GLEW_ARB_shader_storage_buffer_object) GLEW_ARB_shader_storage_buffer_object = !_glewInit_GL_ARB_shader_storage_buffer_object();\r\n#endif /* GL_ARB_shader_storage_buffer_object */\r\n#ifdef GL_ARB_shader_subroutine\r\n  if (glewExperimental || GLEW_ARB_shader_subroutine) GLEW_ARB_shader_subroutine = !_glewInit_GL_ARB_shader_subroutine();\r\n#endif /* GL_ARB_shader_subroutine */\r\n#ifdef GL_ARB_shading_language_include\r\n  if (glewExperimental || GLEW_ARB_shading_language_include) GLEW_ARB_shading_language_include = !_glewInit_GL_ARB_shading_language_include();\r\n#endif /* GL_ARB_shading_language_include */\r\n#ifdef GL_ARB_sparse_buffer\r\n  if (glewExperimental || GLEW_ARB_sparse_buffer) GLEW_ARB_sparse_buffer = !_glewInit_GL_ARB_sparse_buffer();\r\n#endif /* GL_ARB_sparse_buffer */\r\n#ifdef GL_ARB_sparse_texture\r\n  if (glewExperimental || GLEW_ARB_sparse_texture) GLEW_ARB_sparse_texture = !_glewInit_GL_ARB_sparse_texture();\r\n#endif /* GL_ARB_sparse_texture */\r\n#ifdef GL_ARB_sync\r\n  if (glewExperimental || GLEW_ARB_sync) GLEW_ARB_sync = !_glewInit_GL_ARB_sync();\r\n#endif /* GL_ARB_sync */\r\n#ifdef GL_ARB_tessellation_shader\r\n  if (glewExperimental || GLEW_ARB_tessellation_shader) GLEW_ARB_tessellation_shader = !_glewInit_GL_ARB_tessellation_shader();\r\n#endif /* GL_ARB_tessellation_shader */\r\n#ifdef GL_ARB_texture_barrier\r\n  if (glewExperimental || GLEW_ARB_texture_barrier) GLEW_ARB_texture_barrier = !_glewInit_GL_ARB_texture_barrier();\r\n#endif /* GL_ARB_texture_barrier */\r\n#ifdef GL_ARB_texture_buffer_object\r\n  if (glewExperimental || GLEW_ARB_texture_buffer_object) GLEW_ARB_texture_buffer_object = !_glewInit_GL_ARB_texture_buffer_object();\r\n#endif /* GL_ARB_texture_buffer_object */\r\n#ifdef GL_ARB_texture_buffer_range\r\n  if (glewExperimental || GLEW_ARB_texture_buffer_range) GLEW_ARB_texture_buffer_range = !_glewInit_GL_ARB_texture_buffer_range();\r\n#endif /* GL_ARB_texture_buffer_range */\r\n#ifdef GL_ARB_texture_compression\r\n  if (glewExperimental || GLEW_ARB_texture_compression) GLEW_ARB_texture_compression = !_glewInit_GL_ARB_texture_compression();\r\n#endif /* GL_ARB_texture_compression */\r\n#ifdef GL_ARB_texture_multisample\r\n  if (glewExperimental || GLEW_ARB_texture_multisample) GLEW_ARB_texture_multisample = !_glewInit_GL_ARB_texture_multisample();\r\n#endif /* GL_ARB_texture_multisample */\r\n#ifdef GL_ARB_texture_storage\r\n  if (glewExperimental || GLEW_ARB_texture_storage) GLEW_ARB_texture_storage = !_glewInit_GL_ARB_texture_storage();\r\n#endif /* GL_ARB_texture_storage */\r\n#ifdef GL_ARB_texture_storage_multisample\r\n  if (glewExperimental || GLEW_ARB_texture_storage_multisample) GLEW_ARB_texture_storage_multisample = !_glewInit_GL_ARB_texture_storage_multisample();\r\n#endif /* GL_ARB_texture_storage_multisample */\r\n#ifdef GL_ARB_texture_view\r\n  if (glewExperimental || GLEW_ARB_texture_view) GLEW_ARB_texture_view = !_glewInit_GL_ARB_texture_view();\r\n#endif /* GL_ARB_texture_view */\r\n#ifdef GL_ARB_timer_query\r\n  if (glewExperimental || GLEW_ARB_timer_query) GLEW_ARB_timer_query = !_glewInit_GL_ARB_timer_query();\r\n#endif /* GL_ARB_timer_query */\r\n#ifdef GL_ARB_transform_feedback2\r\n  if (glewExperimental || GLEW_ARB_transform_feedback2) GLEW_ARB_transform_feedback2 = !_glewInit_GL_ARB_transform_feedback2();\r\n#endif /* GL_ARB_transform_feedback2 */\r\n#ifdef GL_ARB_transform_feedback3\r\n  if (glewExperimental || GLEW_ARB_transform_feedback3) GLEW_ARB_transform_feedback3 = !_glewInit_GL_ARB_transform_feedback3();\r\n#endif /* GL_ARB_transform_feedback3 */\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n  if (glewExperimental || GLEW_ARB_transform_feedback_instanced) GLEW_ARB_transform_feedback_instanced = !_glewInit_GL_ARB_transform_feedback_instanced();\r\n#endif /* GL_ARB_transform_feedback_instanced */\r\n#ifdef GL_ARB_transpose_matrix\r\n  if (glewExperimental || GLEW_ARB_transpose_matrix) GLEW_ARB_transpose_matrix = !_glewInit_GL_ARB_transpose_matrix();\r\n#endif /* GL_ARB_transpose_matrix */\r\n#ifdef GL_ARB_uniform_buffer_object\r\n  if (glewExperimental || GLEW_ARB_uniform_buffer_object) GLEW_ARB_uniform_buffer_object = !_glewInit_GL_ARB_uniform_buffer_object();\r\n#endif /* GL_ARB_uniform_buffer_object */\r\n#ifdef GL_ARB_vertex_array_object\r\n  if (glewExperimental || GLEW_ARB_vertex_array_object) GLEW_ARB_vertex_array_object = !_glewInit_GL_ARB_vertex_array_object();\r\n#endif /* GL_ARB_vertex_array_object */\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n  if (glewExperimental || GLEW_ARB_vertex_attrib_64bit) GLEW_ARB_vertex_attrib_64bit = !_glewInit_GL_ARB_vertex_attrib_64bit();\r\n#endif /* GL_ARB_vertex_attrib_64bit */\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n  if (glewExperimental || GLEW_ARB_vertex_attrib_binding) GLEW_ARB_vertex_attrib_binding = !_glewInit_GL_ARB_vertex_attrib_binding();\r\n#endif /* GL_ARB_vertex_attrib_binding */\r\n#ifdef GL_ARB_vertex_blend\r\n  if (glewExperimental || GLEW_ARB_vertex_blend) GLEW_ARB_vertex_blend = !_glewInit_GL_ARB_vertex_blend();\r\n#endif /* GL_ARB_vertex_blend */\r\n#ifdef GL_ARB_vertex_buffer_object\r\n  if (glewExperimental || GLEW_ARB_vertex_buffer_object) GLEW_ARB_vertex_buffer_object = !_glewInit_GL_ARB_vertex_buffer_object();\r\n#endif /* GL_ARB_vertex_buffer_object */\r\n#ifdef GL_ARB_vertex_program\r\n  if (glewExperimental || GLEW_ARB_vertex_program) GLEW_ARB_vertex_program = !_glewInit_GL_ARB_vertex_program();\r\n#endif /* GL_ARB_vertex_program */\r\n#ifdef GL_ARB_vertex_shader\r\n  if (glewExperimental || GLEW_ARB_vertex_shader) { GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader(); _glewInit_GL_ARB_vertex_program(); }\r\n#endif /* GL_ARB_vertex_shader */\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n  if (glewExperimental || GLEW_ARB_vertex_type_2_10_10_10_rev) GLEW_ARB_vertex_type_2_10_10_10_rev = !_glewInit_GL_ARB_vertex_type_2_10_10_10_rev();\r\n#endif /* GL_ARB_vertex_type_2_10_10_10_rev */\r\n#ifdef GL_ARB_viewport_array\r\n  if (glewExperimental || GLEW_ARB_viewport_array) GLEW_ARB_viewport_array = !_glewInit_GL_ARB_viewport_array();\r\n#endif /* GL_ARB_viewport_array */\r\n#ifdef GL_ARB_window_pos\r\n  if (glewExperimental || GLEW_ARB_window_pos) GLEW_ARB_window_pos = !_glewInit_GL_ARB_window_pos();\r\n#endif /* GL_ARB_window_pos */\r\n#ifdef GL_ATI_draw_buffers\r\n  if (glewExperimental || GLEW_ATI_draw_buffers) GLEW_ATI_draw_buffers = !_glewInit_GL_ATI_draw_buffers();\r\n#endif /* GL_ATI_draw_buffers */\r\n#ifdef GL_ATI_element_array\r\n  if (glewExperimental || GLEW_ATI_element_array) GLEW_ATI_element_array = !_glewInit_GL_ATI_element_array();\r\n#endif /* GL_ATI_element_array */\r\n#ifdef GL_ATI_envmap_bumpmap\r\n  if (glewExperimental || GLEW_ATI_envmap_bumpmap) GLEW_ATI_envmap_bumpmap = !_glewInit_GL_ATI_envmap_bumpmap();\r\n#endif /* GL_ATI_envmap_bumpmap */\r\n#ifdef GL_ATI_fragment_shader\r\n  if (glewExperimental || GLEW_ATI_fragment_shader) GLEW_ATI_fragment_shader = !_glewInit_GL_ATI_fragment_shader();\r\n#endif /* GL_ATI_fragment_shader */\r\n#ifdef GL_ATI_map_object_buffer\r\n  if (glewExperimental || GLEW_ATI_map_object_buffer) GLEW_ATI_map_object_buffer = !_glewInit_GL_ATI_map_object_buffer();\r\n#endif /* GL_ATI_map_object_buffer */\r\n#ifdef GL_ATI_pn_triangles\r\n  if (glewExperimental || GLEW_ATI_pn_triangles) GLEW_ATI_pn_triangles = !_glewInit_GL_ATI_pn_triangles();\r\n#endif /* GL_ATI_pn_triangles */\r\n#ifdef GL_ATI_separate_stencil\r\n  if (glewExperimental || GLEW_ATI_separate_stencil) GLEW_ATI_separate_stencil = !_glewInit_GL_ATI_separate_stencil();\r\n#endif /* GL_ATI_separate_stencil */\r\n#ifdef GL_ATI_vertex_array_object\r\n  if (glewExperimental || GLEW_ATI_vertex_array_object) GLEW_ATI_vertex_array_object = !_glewInit_GL_ATI_vertex_array_object();\r\n#endif /* GL_ATI_vertex_array_object */\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n  if (glewExperimental || GLEW_ATI_vertex_attrib_array_object) GLEW_ATI_vertex_attrib_array_object = !_glewInit_GL_ATI_vertex_attrib_array_object();\r\n#endif /* GL_ATI_vertex_attrib_array_object */\r\n#ifdef GL_ATI_vertex_streams\r\n  if (glewExperimental || GLEW_ATI_vertex_streams) GLEW_ATI_vertex_streams = !_glewInit_GL_ATI_vertex_streams();\r\n#endif /* GL_ATI_vertex_streams */\r\n#ifdef GL_EXT_base_instance\r\n  if (glewExperimental || GLEW_EXT_base_instance) GLEW_EXT_base_instance = !_glewInit_GL_EXT_base_instance();\r\n#endif /* GL_EXT_base_instance */\r\n#ifdef GL_EXT_bindable_uniform\r\n  if (glewExperimental || GLEW_EXT_bindable_uniform) GLEW_EXT_bindable_uniform = !_glewInit_GL_EXT_bindable_uniform();\r\n#endif /* GL_EXT_bindable_uniform */\r\n#ifdef GL_EXT_blend_color\r\n  if (glewExperimental || GLEW_EXT_blend_color) GLEW_EXT_blend_color = !_glewInit_GL_EXT_blend_color();\r\n#endif /* GL_EXT_blend_color */\r\n#ifdef GL_EXT_blend_equation_separate\r\n  if (glewExperimental || GLEW_EXT_blend_equation_separate) GLEW_EXT_blend_equation_separate = !_glewInit_GL_EXT_blend_equation_separate();\r\n#endif /* GL_EXT_blend_equation_separate */\r\n#ifdef GL_EXT_blend_func_extended\r\n  if (glewExperimental || GLEW_EXT_blend_func_extended) GLEW_EXT_blend_func_extended = !_glewInit_GL_EXT_blend_func_extended();\r\n#endif /* GL_EXT_blend_func_extended */\r\n#ifdef GL_EXT_blend_func_separate\r\n  if (glewExperimental || GLEW_EXT_blend_func_separate) GLEW_EXT_blend_func_separate = !_glewInit_GL_EXT_blend_func_separate();\r\n#endif /* GL_EXT_blend_func_separate */\r\n#ifdef GL_EXT_blend_minmax\r\n  if (glewExperimental || GLEW_EXT_blend_minmax) GLEW_EXT_blend_minmax = !_glewInit_GL_EXT_blend_minmax();\r\n#endif /* GL_EXT_blend_minmax */\r\n#ifdef GL_EXT_buffer_storage\r\n  if (glewExperimental || GLEW_EXT_buffer_storage) GLEW_EXT_buffer_storage = !_glewInit_GL_EXT_buffer_storage();\r\n#endif /* GL_EXT_buffer_storage */\r\n#ifdef GL_EXT_clear_texture\r\n  if (glewExperimental || GLEW_EXT_clear_texture) GLEW_EXT_clear_texture = !_glewInit_GL_EXT_clear_texture();\r\n#endif /* GL_EXT_clear_texture */\r\n#ifdef GL_EXT_color_subtable\r\n  if (glewExperimental || GLEW_EXT_color_subtable) GLEW_EXT_color_subtable = !_glewInit_GL_EXT_color_subtable();\r\n#endif /* GL_EXT_color_subtable */\r\n#ifdef GL_EXT_compiled_vertex_array\r\n  if (glewExperimental || GLEW_EXT_compiled_vertex_array) GLEW_EXT_compiled_vertex_array = !_glewInit_GL_EXT_compiled_vertex_array();\r\n#endif /* GL_EXT_compiled_vertex_array */\r\n#ifdef GL_EXT_convolution\r\n  if (glewExperimental || GLEW_EXT_convolution) GLEW_EXT_convolution = !_glewInit_GL_EXT_convolution();\r\n#endif /* GL_EXT_convolution */\r\n#ifdef GL_EXT_coordinate_frame\r\n  if (glewExperimental || GLEW_EXT_coordinate_frame) GLEW_EXT_coordinate_frame = !_glewInit_GL_EXT_coordinate_frame();\r\n#endif /* GL_EXT_coordinate_frame */\r\n#ifdef GL_EXT_copy_image\r\n  if (glewExperimental || GLEW_EXT_copy_image) GLEW_EXT_copy_image = !_glewInit_GL_EXT_copy_image();\r\n#endif /* GL_EXT_copy_image */\r\n#ifdef GL_EXT_copy_texture\r\n  if (glewExperimental || GLEW_EXT_copy_texture) GLEW_EXT_copy_texture = !_glewInit_GL_EXT_copy_texture();\r\n#endif /* GL_EXT_copy_texture */\r\n#ifdef GL_EXT_cull_vertex\r\n  if (glewExperimental || GLEW_EXT_cull_vertex) GLEW_EXT_cull_vertex = !_glewInit_GL_EXT_cull_vertex();\r\n#endif /* GL_EXT_cull_vertex */\r\n#ifdef GL_EXT_debug_label\r\n  if (glewExperimental || GLEW_EXT_debug_label) GLEW_EXT_debug_label = !_glewInit_GL_EXT_debug_label();\r\n#endif /* GL_EXT_debug_label */\r\n#ifdef GL_EXT_debug_marker\r\n  if (glewExperimental || GLEW_EXT_debug_marker) GLEW_EXT_debug_marker = !_glewInit_GL_EXT_debug_marker();\r\n#endif /* GL_EXT_debug_marker */\r\n#ifdef GL_EXT_depth_bounds_test\r\n  if (glewExperimental || GLEW_EXT_depth_bounds_test) GLEW_EXT_depth_bounds_test = !_glewInit_GL_EXT_depth_bounds_test();\r\n#endif /* GL_EXT_depth_bounds_test */\r\n#ifdef GL_EXT_direct_state_access\r\n  if (glewExperimental || GLEW_EXT_direct_state_access) GLEW_EXT_direct_state_access = !_glewInit_GL_EXT_direct_state_access();\r\n#endif /* GL_EXT_direct_state_access */\r\n#ifdef GL_EXT_discard_framebuffer\r\n  if (glewExperimental || GLEW_EXT_discard_framebuffer) GLEW_EXT_discard_framebuffer = !_glewInit_GL_EXT_discard_framebuffer();\r\n#endif /* GL_EXT_discard_framebuffer */\r\n#ifdef GL_EXT_draw_buffers\r\n  if (glewExperimental || GLEW_EXT_draw_buffers) GLEW_EXT_draw_buffers = !_glewInit_GL_EXT_draw_buffers();\r\n#endif /* GL_EXT_draw_buffers */\r\n#ifdef GL_EXT_draw_buffers2\r\n  if (glewExperimental || GLEW_EXT_draw_buffers2) GLEW_EXT_draw_buffers2 = !_glewInit_GL_EXT_draw_buffers2();\r\n#endif /* GL_EXT_draw_buffers2 */\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n  if (glewExperimental || GLEW_EXT_draw_buffers_indexed) GLEW_EXT_draw_buffers_indexed = !_glewInit_GL_EXT_draw_buffers_indexed();\r\n#endif /* GL_EXT_draw_buffers_indexed */\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n  if (glewExperimental || GLEW_EXT_draw_elements_base_vertex) GLEW_EXT_draw_elements_base_vertex = !_glewInit_GL_EXT_draw_elements_base_vertex();\r\n#endif /* GL_EXT_draw_elements_base_vertex */\r\n#ifdef GL_EXT_draw_instanced\r\n  if (glewExperimental || GLEW_EXT_draw_instanced) GLEW_EXT_draw_instanced = !_glewInit_GL_EXT_draw_instanced();\r\n#endif /* GL_EXT_draw_instanced */\r\n#ifdef GL_EXT_draw_range_elements\r\n  if (glewExperimental || GLEW_EXT_draw_range_elements) GLEW_EXT_draw_range_elements = !_glewInit_GL_EXT_draw_range_elements();\r\n#endif /* GL_EXT_draw_range_elements */\r\n#ifdef GL_EXT_external_buffer\r\n  if (glewExperimental || GLEW_EXT_external_buffer) GLEW_EXT_external_buffer = !_glewInit_GL_EXT_external_buffer();\r\n#endif /* GL_EXT_external_buffer */\r\n#ifdef GL_EXT_fog_coord\r\n  if (glewExperimental || GLEW_EXT_fog_coord) GLEW_EXT_fog_coord = !_glewInit_GL_EXT_fog_coord();\r\n#endif /* GL_EXT_fog_coord */\r\n#ifdef GL_EXT_fragment_lighting\r\n  if (glewExperimental || GLEW_EXT_fragment_lighting) GLEW_EXT_fragment_lighting = !_glewInit_GL_EXT_fragment_lighting();\r\n#endif /* GL_EXT_fragment_lighting */\r\n#ifdef GL_EXT_framebuffer_blit\r\n  if (glewExperimental || GLEW_EXT_framebuffer_blit) GLEW_EXT_framebuffer_blit = !_glewInit_GL_EXT_framebuffer_blit();\r\n#endif /* GL_EXT_framebuffer_blit */\r\n#ifdef GL_EXT_framebuffer_multisample\r\n  if (glewExperimental || GLEW_EXT_framebuffer_multisample) GLEW_EXT_framebuffer_multisample = !_glewInit_GL_EXT_framebuffer_multisample();\r\n#endif /* GL_EXT_framebuffer_multisample */\r\n#ifdef GL_EXT_framebuffer_object\r\n  if (glewExperimental || GLEW_EXT_framebuffer_object) GLEW_EXT_framebuffer_object = !_glewInit_GL_EXT_framebuffer_object();\r\n#endif /* GL_EXT_framebuffer_object */\r\n#ifdef GL_EXT_geometry_shader4\r\n  if (glewExperimental || GLEW_EXT_geometry_shader4) GLEW_EXT_geometry_shader4 = !_glewInit_GL_EXT_geometry_shader4();\r\n#endif /* GL_EXT_geometry_shader4 */\r\n#ifdef GL_EXT_gpu_program_parameters\r\n  if (glewExperimental || GLEW_EXT_gpu_program_parameters) GLEW_EXT_gpu_program_parameters = !_glewInit_GL_EXT_gpu_program_parameters();\r\n#endif /* GL_EXT_gpu_program_parameters */\r\n#ifdef GL_EXT_gpu_shader4\r\n  if (glewExperimental || GLEW_EXT_gpu_shader4) GLEW_EXT_gpu_shader4 = !_glewInit_GL_EXT_gpu_shader4();\r\n#endif /* GL_EXT_gpu_shader4 */\r\n#ifdef GL_EXT_histogram\r\n  if (glewExperimental || GLEW_EXT_histogram) GLEW_EXT_histogram = !_glewInit_GL_EXT_histogram();\r\n#endif /* GL_EXT_histogram */\r\n#ifdef GL_EXT_index_func\r\n  if (glewExperimental || GLEW_EXT_index_func) GLEW_EXT_index_func = !_glewInit_GL_EXT_index_func();\r\n#endif /* GL_EXT_index_func */\r\n#ifdef GL_EXT_index_material\r\n  if (glewExperimental || GLEW_EXT_index_material) GLEW_EXT_index_material = !_glewInit_GL_EXT_index_material();\r\n#endif /* GL_EXT_index_material */\r\n#ifdef GL_EXT_instanced_arrays\r\n  if (glewExperimental || GLEW_EXT_instanced_arrays) GLEW_EXT_instanced_arrays = !_glewInit_GL_EXT_instanced_arrays();\r\n#endif /* GL_EXT_instanced_arrays */\r\n#ifdef GL_EXT_light_texture\r\n  if (glewExperimental || GLEW_EXT_light_texture) GLEW_EXT_light_texture = !_glewInit_GL_EXT_light_texture();\r\n#endif /* GL_EXT_light_texture */\r\n#ifdef GL_EXT_map_buffer_range\r\n  if (glewExperimental || GLEW_EXT_map_buffer_range) GLEW_EXT_map_buffer_range = !_glewInit_GL_EXT_map_buffer_range();\r\n#endif /* GL_EXT_map_buffer_range */\r\n#ifdef GL_EXT_memory_object\r\n  if (glewExperimental || GLEW_EXT_memory_object) GLEW_EXT_memory_object = !_glewInit_GL_EXT_memory_object();\r\n#endif /* GL_EXT_memory_object */\r\n#ifdef GL_EXT_memory_object_fd\r\n  if (glewExperimental || GLEW_EXT_memory_object_fd) GLEW_EXT_memory_object_fd = !_glewInit_GL_EXT_memory_object_fd();\r\n#endif /* GL_EXT_memory_object_fd */\r\n#ifdef GL_EXT_memory_object_win32\r\n  if (glewExperimental || GLEW_EXT_memory_object_win32) GLEW_EXT_memory_object_win32 = !_glewInit_GL_EXT_memory_object_win32();\r\n#endif /* GL_EXT_memory_object_win32 */\r\n#ifdef GL_EXT_multi_draw_arrays\r\n  if (glewExperimental || GLEW_EXT_multi_draw_arrays) GLEW_EXT_multi_draw_arrays = !_glewInit_GL_EXT_multi_draw_arrays();\r\n#endif /* GL_EXT_multi_draw_arrays */\r\n#ifdef GL_EXT_multi_draw_indirect\r\n  if (glewExperimental || GLEW_EXT_multi_draw_indirect) GLEW_EXT_multi_draw_indirect = !_glewInit_GL_EXT_multi_draw_indirect();\r\n#endif /* GL_EXT_multi_draw_indirect */\r\n#ifdef GL_EXT_multisample\r\n  if (glewExperimental || GLEW_EXT_multisample) GLEW_EXT_multisample = !_glewInit_GL_EXT_multisample();\r\n#endif /* GL_EXT_multisample */\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n  if (glewExperimental || GLEW_EXT_multisampled_render_to_texture) GLEW_EXT_multisampled_render_to_texture = !_glewInit_GL_EXT_multisampled_render_to_texture();\r\n#endif /* GL_EXT_multisampled_render_to_texture */\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n  if (glewExperimental || GLEW_EXT_multiview_draw_buffers) GLEW_EXT_multiview_draw_buffers = !_glewInit_GL_EXT_multiview_draw_buffers();\r\n#endif /* GL_EXT_multiview_draw_buffers */\r\n#ifdef GL_EXT_paletted_texture\r\n  if (glewExperimental || GLEW_EXT_paletted_texture) GLEW_EXT_paletted_texture = !_glewInit_GL_EXT_paletted_texture();\r\n#endif /* GL_EXT_paletted_texture */\r\n#ifdef GL_EXT_pixel_transform\r\n  if (glewExperimental || GLEW_EXT_pixel_transform) GLEW_EXT_pixel_transform = !_glewInit_GL_EXT_pixel_transform();\r\n#endif /* GL_EXT_pixel_transform */\r\n#ifdef GL_EXT_point_parameters\r\n  if (glewExperimental || GLEW_EXT_point_parameters) GLEW_EXT_point_parameters = !_glewInit_GL_EXT_point_parameters();\r\n#endif /* GL_EXT_point_parameters */\r\n#ifdef GL_EXT_polygon_offset\r\n  if (glewExperimental || GLEW_EXT_polygon_offset) GLEW_EXT_polygon_offset = !_glewInit_GL_EXT_polygon_offset();\r\n#endif /* GL_EXT_polygon_offset */\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n  if (glewExperimental || GLEW_EXT_polygon_offset_clamp) GLEW_EXT_polygon_offset_clamp = !_glewInit_GL_EXT_polygon_offset_clamp();\r\n#endif /* GL_EXT_polygon_offset_clamp */\r\n#ifdef GL_EXT_provoking_vertex\r\n  if (glewExperimental || GLEW_EXT_provoking_vertex) GLEW_EXT_provoking_vertex = !_glewInit_GL_EXT_provoking_vertex();\r\n#endif /* GL_EXT_provoking_vertex */\r\n#ifdef GL_EXT_raster_multisample\r\n  if (glewExperimental || GLEW_EXT_raster_multisample) GLEW_EXT_raster_multisample = !_glewInit_GL_EXT_raster_multisample();\r\n#endif /* GL_EXT_raster_multisample */\r\n#ifdef GL_EXT_scene_marker\r\n  if (glewExperimental || GLEW_EXT_scene_marker) GLEW_EXT_scene_marker = !_glewInit_GL_EXT_scene_marker();\r\n#endif /* GL_EXT_scene_marker */\r\n#ifdef GL_EXT_secondary_color\r\n  if (glewExperimental || GLEW_EXT_secondary_color) GLEW_EXT_secondary_color = !_glewInit_GL_EXT_secondary_color();\r\n#endif /* GL_EXT_secondary_color */\r\n#ifdef GL_EXT_semaphore\r\n  if (glewExperimental || GLEW_EXT_semaphore) GLEW_EXT_semaphore = !_glewInit_GL_EXT_semaphore();\r\n#endif /* GL_EXT_semaphore */\r\n#ifdef GL_EXT_semaphore_fd\r\n  if (glewExperimental || GLEW_EXT_semaphore_fd) GLEW_EXT_semaphore_fd = !_glewInit_GL_EXT_semaphore_fd();\r\n#endif /* GL_EXT_semaphore_fd */\r\n#ifdef GL_EXT_semaphore_win32\r\n  if (glewExperimental || GLEW_EXT_semaphore_win32) GLEW_EXT_semaphore_win32 = !_glewInit_GL_EXT_semaphore_win32();\r\n#endif /* GL_EXT_semaphore_win32 */\r\n#ifdef GL_EXT_separate_shader_objects\r\n  if (glewExperimental || GLEW_EXT_separate_shader_objects) GLEW_EXT_separate_shader_objects = !_glewInit_GL_EXT_separate_shader_objects();\r\n#endif /* GL_EXT_separate_shader_objects */\r\n#ifdef GL_EXT_shader_image_load_store\r\n  if (glewExperimental || GLEW_EXT_shader_image_load_store) GLEW_EXT_shader_image_load_store = !_glewInit_GL_EXT_shader_image_load_store();\r\n#endif /* GL_EXT_shader_image_load_store */\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n  if (glewExperimental || GLEW_EXT_shader_pixel_local_storage2) GLEW_EXT_shader_pixel_local_storage2 = !_glewInit_GL_EXT_shader_pixel_local_storage2();\r\n#endif /* GL_EXT_shader_pixel_local_storage2 */\r\n#ifdef GL_EXT_sparse_texture\r\n  if (glewExperimental || GLEW_EXT_sparse_texture) GLEW_EXT_sparse_texture = !_glewInit_GL_EXT_sparse_texture();\r\n#endif /* GL_EXT_sparse_texture */\r\n#ifdef GL_EXT_stencil_two_side\r\n  if (glewExperimental || GLEW_EXT_stencil_two_side) GLEW_EXT_stencil_two_side = !_glewInit_GL_EXT_stencil_two_side();\r\n#endif /* GL_EXT_stencil_two_side */\r\n#ifdef GL_EXT_subtexture\r\n  if (glewExperimental || GLEW_EXT_subtexture) GLEW_EXT_subtexture = !_glewInit_GL_EXT_subtexture();\r\n#endif /* GL_EXT_subtexture */\r\n#ifdef GL_EXT_texture3D\r\n  if (glewExperimental || GLEW_EXT_texture3D) GLEW_EXT_texture3D = !_glewInit_GL_EXT_texture3D();\r\n#endif /* GL_EXT_texture3D */\r\n#ifdef GL_EXT_texture_array\r\n  if (glewExperimental || GLEW_EXT_texture_array) GLEW_EXT_texture_array = !_glewInit_GL_EXT_texture_array();\r\n#endif /* GL_EXT_texture_array */\r\n#ifdef GL_EXT_texture_buffer_object\r\n  if (glewExperimental || GLEW_EXT_texture_buffer_object) GLEW_EXT_texture_buffer_object = !_glewInit_GL_EXT_texture_buffer_object();\r\n#endif /* GL_EXT_texture_buffer_object */\r\n#ifdef GL_EXT_texture_integer\r\n  if (glewExperimental || GLEW_EXT_texture_integer) GLEW_EXT_texture_integer = !_glewInit_GL_EXT_texture_integer();\r\n#endif /* GL_EXT_texture_integer */\r\n#ifdef GL_EXT_texture_object\r\n  if (glewExperimental || GLEW_EXT_texture_object) GLEW_EXT_texture_object = !_glewInit_GL_EXT_texture_object();\r\n#endif /* GL_EXT_texture_object */\r\n#ifdef GL_EXT_texture_perturb_normal\r\n  if (glewExperimental || GLEW_EXT_texture_perturb_normal) GLEW_EXT_texture_perturb_normal = !_glewInit_GL_EXT_texture_perturb_normal();\r\n#endif /* GL_EXT_texture_perturb_normal */\r\n#ifdef GL_EXT_texture_storage\r\n  if (glewExperimental || GLEW_EXT_texture_storage) GLEW_EXT_texture_storage = !_glewInit_GL_EXT_texture_storage();\r\n#endif /* GL_EXT_texture_storage */\r\n#ifdef GL_EXT_texture_view\r\n  if (glewExperimental || GLEW_EXT_texture_view) GLEW_EXT_texture_view = !_glewInit_GL_EXT_texture_view();\r\n#endif /* GL_EXT_texture_view */\r\n#ifdef GL_EXT_timer_query\r\n  if (glewExperimental || GLEW_EXT_timer_query) GLEW_EXT_timer_query = !_glewInit_GL_EXT_timer_query();\r\n#endif /* GL_EXT_timer_query */\r\n#ifdef GL_EXT_transform_feedback\r\n  if (glewExperimental || GLEW_EXT_transform_feedback) GLEW_EXT_transform_feedback = !_glewInit_GL_EXT_transform_feedback();\r\n#endif /* GL_EXT_transform_feedback */\r\n#ifdef GL_EXT_vertex_array\r\n  if (glewExperimental || GLEW_EXT_vertex_array) GLEW_EXT_vertex_array = !_glewInit_GL_EXT_vertex_array();\r\n#endif /* GL_EXT_vertex_array */\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n  if (glewExperimental || GLEW_EXT_vertex_array_setXXX) GLEW_EXT_vertex_array_setXXX = !_glewInit_GL_EXT_vertex_array_setXXX();\r\n#endif /* GL_EXT_vertex_array_setXXX */\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n  if (glewExperimental || GLEW_EXT_vertex_attrib_64bit) GLEW_EXT_vertex_attrib_64bit = !_glewInit_GL_EXT_vertex_attrib_64bit();\r\n#endif /* GL_EXT_vertex_attrib_64bit */\r\n#ifdef GL_EXT_vertex_shader\r\n  if (glewExperimental || GLEW_EXT_vertex_shader) GLEW_EXT_vertex_shader = !_glewInit_GL_EXT_vertex_shader();\r\n#endif /* GL_EXT_vertex_shader */\r\n#ifdef GL_EXT_vertex_weighting\r\n  if (glewExperimental || GLEW_EXT_vertex_weighting) GLEW_EXT_vertex_weighting = !_glewInit_GL_EXT_vertex_weighting();\r\n#endif /* GL_EXT_vertex_weighting */\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n  if (glewExperimental || GLEW_EXT_win32_keyed_mutex) GLEW_EXT_win32_keyed_mutex = !_glewInit_GL_EXT_win32_keyed_mutex();\r\n#endif /* GL_EXT_win32_keyed_mutex */\r\n#ifdef GL_EXT_window_rectangles\r\n  if (glewExperimental || GLEW_EXT_window_rectangles) GLEW_EXT_window_rectangles = !_glewInit_GL_EXT_window_rectangles();\r\n#endif /* GL_EXT_window_rectangles */\r\n#ifdef GL_EXT_x11_sync_object\r\n  if (glewExperimental || GLEW_EXT_x11_sync_object) GLEW_EXT_x11_sync_object = !_glewInit_GL_EXT_x11_sync_object();\r\n#endif /* GL_EXT_x11_sync_object */\r\n#ifdef GL_GREMEDY_frame_terminator\r\n  if (glewExperimental || GLEW_GREMEDY_frame_terminator) GLEW_GREMEDY_frame_terminator = !_glewInit_GL_GREMEDY_frame_terminator();\r\n#endif /* GL_GREMEDY_frame_terminator */\r\n#ifdef GL_GREMEDY_string_marker\r\n  if (glewExperimental || GLEW_GREMEDY_string_marker) GLEW_GREMEDY_string_marker = !_glewInit_GL_GREMEDY_string_marker();\r\n#endif /* GL_GREMEDY_string_marker */\r\n#ifdef GL_HP_image_transform\r\n  if (glewExperimental || GLEW_HP_image_transform) GLEW_HP_image_transform = !_glewInit_GL_HP_image_transform();\r\n#endif /* GL_HP_image_transform */\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n  if (glewExperimental || GLEW_IBM_multimode_draw_arrays) GLEW_IBM_multimode_draw_arrays = !_glewInit_GL_IBM_multimode_draw_arrays();\r\n#endif /* GL_IBM_multimode_draw_arrays */\r\n#ifdef GL_IBM_vertex_array_lists\r\n  if (glewExperimental || GLEW_IBM_vertex_array_lists) GLEW_IBM_vertex_array_lists = !_glewInit_GL_IBM_vertex_array_lists();\r\n#endif /* GL_IBM_vertex_array_lists */\r\n#ifdef GL_INTEL_map_texture\r\n  if (glewExperimental || GLEW_INTEL_map_texture) GLEW_INTEL_map_texture = !_glewInit_GL_INTEL_map_texture();\r\n#endif /* GL_INTEL_map_texture */\r\n#ifdef GL_INTEL_parallel_arrays\r\n  if (glewExperimental || GLEW_INTEL_parallel_arrays) GLEW_INTEL_parallel_arrays = !_glewInit_GL_INTEL_parallel_arrays();\r\n#endif /* GL_INTEL_parallel_arrays */\r\n#ifdef GL_INTEL_performance_query\r\n  if (glewExperimental || GLEW_INTEL_performance_query) GLEW_INTEL_performance_query = !_glewInit_GL_INTEL_performance_query();\r\n#endif /* GL_INTEL_performance_query */\r\n#ifdef GL_INTEL_texture_scissor\r\n  if (glewExperimental || GLEW_INTEL_texture_scissor) GLEW_INTEL_texture_scissor = !_glewInit_GL_INTEL_texture_scissor();\r\n#endif /* GL_INTEL_texture_scissor */\r\n#ifdef GL_KHR_blend_equation_advanced\r\n  if (glewExperimental || GLEW_KHR_blend_equation_advanced) GLEW_KHR_blend_equation_advanced = !_glewInit_GL_KHR_blend_equation_advanced();\r\n#endif /* GL_KHR_blend_equation_advanced */\r\n#ifdef GL_KHR_debug\r\n  if (glewExperimental || GLEW_KHR_debug) GLEW_KHR_debug = !_glewInit_GL_KHR_debug();\r\n#endif /* GL_KHR_debug */\r\n#ifdef GL_KHR_parallel_shader_compile\r\n  if (glewExperimental || GLEW_KHR_parallel_shader_compile) GLEW_KHR_parallel_shader_compile = !_glewInit_GL_KHR_parallel_shader_compile();\r\n#endif /* GL_KHR_parallel_shader_compile */\r\n#ifdef GL_KHR_robustness\r\n  if (glewExperimental || GLEW_KHR_robustness) GLEW_KHR_robustness = !_glewInit_GL_KHR_robustness();\r\n#endif /* GL_KHR_robustness */\r\n#ifdef GL_KTX_buffer_region\r\n  if (glewExperimental || GLEW_KTX_buffer_region) GLEW_KTX_buffer_region = !_glewInit_GL_KTX_buffer_region();\r\n#endif /* GL_KTX_buffer_region */\r\n#ifdef GL_MESA_resize_buffers\r\n  if (glewExperimental || GLEW_MESA_resize_buffers) GLEW_MESA_resize_buffers = !_glewInit_GL_MESA_resize_buffers();\r\n#endif /* GL_MESA_resize_buffers */\r\n#ifdef GL_MESA_window_pos\r\n  if (glewExperimental || GLEW_MESA_window_pos) GLEW_MESA_window_pos = !_glewInit_GL_MESA_window_pos();\r\n#endif /* GL_MESA_window_pos */\r\n#ifdef GL_NVX_conditional_render\r\n  if (glewExperimental || GLEW_NVX_conditional_render) GLEW_NVX_conditional_render = !_glewInit_GL_NVX_conditional_render();\r\n#endif /* GL_NVX_conditional_render */\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n  if (glewExperimental || GLEW_NVX_linked_gpu_multicast) GLEW_NVX_linked_gpu_multicast = !_glewInit_GL_NVX_linked_gpu_multicast();\r\n#endif /* GL_NVX_linked_gpu_multicast */\r\n#ifdef GL_NV_3dvision_settings\r\n  if (glewExperimental || GLEW_NV_3dvision_settings) GLEW_NV_3dvision_settings = !_glewInit_GL_NV_3dvision_settings();\r\n#endif /* GL_NV_3dvision_settings */\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n  if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect) GLEW_NV_bindless_multi_draw_indirect = !_glewInit_GL_NV_bindless_multi_draw_indirect();\r\n#endif /* GL_NV_bindless_multi_draw_indirect */\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n  if (glewExperimental || GLEW_NV_bindless_multi_draw_indirect_count) GLEW_NV_bindless_multi_draw_indirect_count = !_glewInit_GL_NV_bindless_multi_draw_indirect_count();\r\n#endif /* GL_NV_bindless_multi_draw_indirect_count */\r\n#ifdef GL_NV_bindless_texture\r\n  if (glewExperimental || GLEW_NV_bindless_texture) GLEW_NV_bindless_texture = !_glewInit_GL_NV_bindless_texture();\r\n#endif /* GL_NV_bindless_texture */\r\n#ifdef GL_NV_blend_equation_advanced\r\n  if (glewExperimental || GLEW_NV_blend_equation_advanced) GLEW_NV_blend_equation_advanced = !_glewInit_GL_NV_blend_equation_advanced();\r\n#endif /* GL_NV_blend_equation_advanced */\r\n#ifdef GL_NV_clip_space_w_scaling\r\n  if (glewExperimental || GLEW_NV_clip_space_w_scaling) GLEW_NV_clip_space_w_scaling = !_glewInit_GL_NV_clip_space_w_scaling();\r\n#endif /* GL_NV_clip_space_w_scaling */\r\n#ifdef GL_NV_command_list\r\n  if (glewExperimental || GLEW_NV_command_list) GLEW_NV_command_list = !_glewInit_GL_NV_command_list();\r\n#endif /* GL_NV_command_list */\r\n#ifdef GL_NV_conditional_render\r\n  if (glewExperimental || GLEW_NV_conditional_render) GLEW_NV_conditional_render = !_glewInit_GL_NV_conditional_render();\r\n#endif /* GL_NV_conditional_render */\r\n#ifdef GL_NV_conservative_raster\r\n  if (glewExperimental || GLEW_NV_conservative_raster) GLEW_NV_conservative_raster = !_glewInit_GL_NV_conservative_raster();\r\n#endif /* GL_NV_conservative_raster */\r\n#ifdef GL_NV_conservative_raster_dilate\r\n  if (glewExperimental || GLEW_NV_conservative_raster_dilate) GLEW_NV_conservative_raster_dilate = !_glewInit_GL_NV_conservative_raster_dilate();\r\n#endif /* GL_NV_conservative_raster_dilate */\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n  if (glewExperimental || GLEW_NV_conservative_raster_pre_snap_triangles) GLEW_NV_conservative_raster_pre_snap_triangles = !_glewInit_GL_NV_conservative_raster_pre_snap_triangles();\r\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\r\n#ifdef GL_NV_copy_buffer\r\n  if (glewExperimental || GLEW_NV_copy_buffer) GLEW_NV_copy_buffer = !_glewInit_GL_NV_copy_buffer();\r\n#endif /* GL_NV_copy_buffer */\r\n#ifdef GL_NV_copy_image\r\n  if (glewExperimental || GLEW_NV_copy_image) GLEW_NV_copy_image = !_glewInit_GL_NV_copy_image();\r\n#endif /* GL_NV_copy_image */\r\n#ifdef GL_NV_depth_buffer_float\r\n  if (glewExperimental || GLEW_NV_depth_buffer_float) GLEW_NV_depth_buffer_float = !_glewInit_GL_NV_depth_buffer_float();\r\n#endif /* GL_NV_depth_buffer_float */\r\n#ifdef GL_NV_draw_buffers\r\n  if (glewExperimental || GLEW_NV_draw_buffers) GLEW_NV_draw_buffers = !_glewInit_GL_NV_draw_buffers();\r\n#endif /* GL_NV_draw_buffers */\r\n#ifdef GL_NV_draw_instanced\r\n  if (glewExperimental || GLEW_NV_draw_instanced) GLEW_NV_draw_instanced = !_glewInit_GL_NV_draw_instanced();\r\n#endif /* GL_NV_draw_instanced */\r\n#ifdef GL_NV_draw_texture\r\n  if (glewExperimental || GLEW_NV_draw_texture) GLEW_NV_draw_texture = !_glewInit_GL_NV_draw_texture();\r\n#endif /* GL_NV_draw_texture */\r\n#ifdef GL_NV_draw_vulkan_image\r\n  if (glewExperimental || GLEW_NV_draw_vulkan_image) GLEW_NV_draw_vulkan_image = !_glewInit_GL_NV_draw_vulkan_image();\r\n#endif /* GL_NV_draw_vulkan_image */\r\n#ifdef GL_NV_evaluators\r\n  if (glewExperimental || GLEW_NV_evaluators) GLEW_NV_evaluators = !_glewInit_GL_NV_evaluators();\r\n#endif /* GL_NV_evaluators */\r\n#ifdef GL_NV_explicit_multisample\r\n  if (glewExperimental || GLEW_NV_explicit_multisample) GLEW_NV_explicit_multisample = !_glewInit_GL_NV_explicit_multisample();\r\n#endif /* GL_NV_explicit_multisample */\r\n#ifdef GL_NV_fence\r\n  if (glewExperimental || GLEW_NV_fence) GLEW_NV_fence = !_glewInit_GL_NV_fence();\r\n#endif /* GL_NV_fence */\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n  if (glewExperimental || GLEW_NV_fragment_coverage_to_color) GLEW_NV_fragment_coverage_to_color = !_glewInit_GL_NV_fragment_coverage_to_color();\r\n#endif /* GL_NV_fragment_coverage_to_color */\r\n#ifdef GL_NV_fragment_program\r\n  if (glewExperimental || GLEW_NV_fragment_program) GLEW_NV_fragment_program = !_glewInit_GL_NV_fragment_program();\r\n#endif /* GL_NV_fragment_program */\r\n#ifdef GL_NV_framebuffer_blit\r\n  if (glewExperimental || GLEW_NV_framebuffer_blit) GLEW_NV_framebuffer_blit = !_glewInit_GL_NV_framebuffer_blit();\r\n#endif /* GL_NV_framebuffer_blit */\r\n#ifdef GL_NV_framebuffer_multisample\r\n  if (glewExperimental || GLEW_NV_framebuffer_multisample) GLEW_NV_framebuffer_multisample = !_glewInit_GL_NV_framebuffer_multisample();\r\n#endif /* GL_NV_framebuffer_multisample */\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n  if (glewExperimental || GLEW_NV_framebuffer_multisample_coverage) GLEW_NV_framebuffer_multisample_coverage = !_glewInit_GL_NV_framebuffer_multisample_coverage();\r\n#endif /* GL_NV_framebuffer_multisample_coverage */\r\n#ifdef GL_NV_geometry_program4\r\n  if (glewExperimental || GLEW_NV_geometry_program4) GLEW_NV_geometry_program4 = !_glewInit_GL_NV_geometry_program4();\r\n#endif /* GL_NV_geometry_program4 */\r\n#ifdef GL_NV_gpu_multicast\r\n  if (glewExperimental || GLEW_NV_gpu_multicast) GLEW_NV_gpu_multicast = !_glewInit_GL_NV_gpu_multicast();\r\n#endif /* GL_NV_gpu_multicast */\r\n#ifdef GL_NV_gpu_program4\r\n  if (glewExperimental || GLEW_NV_gpu_program4) GLEW_NV_gpu_program4 = !_glewInit_GL_NV_gpu_program4();\r\n#endif /* GL_NV_gpu_program4 */\r\n#ifdef GL_NV_gpu_shader5\r\n  if (glewExperimental || GLEW_NV_gpu_shader5) GLEW_NV_gpu_shader5 = !_glewInit_GL_NV_gpu_shader5();\r\n#endif /* GL_NV_gpu_shader5 */\r\n#ifdef GL_NV_half_float\r\n  if (glewExperimental || GLEW_NV_half_float) GLEW_NV_half_float = !_glewInit_GL_NV_half_float();\r\n#endif /* GL_NV_half_float */\r\n#ifdef GL_NV_instanced_arrays\r\n  if (glewExperimental || GLEW_NV_instanced_arrays) GLEW_NV_instanced_arrays = !_glewInit_GL_NV_instanced_arrays();\r\n#endif /* GL_NV_instanced_arrays */\r\n#ifdef GL_NV_internalformat_sample_query\r\n  if (glewExperimental || GLEW_NV_internalformat_sample_query) GLEW_NV_internalformat_sample_query = !_glewInit_GL_NV_internalformat_sample_query();\r\n#endif /* GL_NV_internalformat_sample_query */\r\n#ifdef GL_NV_non_square_matrices\r\n  if (glewExperimental || GLEW_NV_non_square_matrices) GLEW_NV_non_square_matrices = !_glewInit_GL_NV_non_square_matrices();\r\n#endif /* GL_NV_non_square_matrices */\r\n#ifdef GL_NV_occlusion_query\r\n  if (glewExperimental || GLEW_NV_occlusion_query) GLEW_NV_occlusion_query = !_glewInit_GL_NV_occlusion_query();\r\n#endif /* GL_NV_occlusion_query */\r\n#ifdef GL_NV_parameter_buffer_object\r\n  if (glewExperimental || GLEW_NV_parameter_buffer_object) GLEW_NV_parameter_buffer_object = !_glewInit_GL_NV_parameter_buffer_object();\r\n#endif /* GL_NV_parameter_buffer_object */\r\n#ifdef GL_NV_path_rendering\r\n  if (glewExperimental || GLEW_NV_path_rendering) GLEW_NV_path_rendering = !_glewInit_GL_NV_path_rendering();\r\n#endif /* GL_NV_path_rendering */\r\n#ifdef GL_NV_pixel_data_range\r\n  if (glewExperimental || GLEW_NV_pixel_data_range) GLEW_NV_pixel_data_range = !_glewInit_GL_NV_pixel_data_range();\r\n#endif /* GL_NV_pixel_data_range */\r\n#ifdef GL_NV_point_sprite\r\n  if (glewExperimental || GLEW_NV_point_sprite) GLEW_NV_point_sprite = !_glewInit_GL_NV_point_sprite();\r\n#endif /* GL_NV_point_sprite */\r\n#ifdef GL_NV_polygon_mode\r\n  if (glewExperimental || GLEW_NV_polygon_mode) GLEW_NV_polygon_mode = !_glewInit_GL_NV_polygon_mode();\r\n#endif /* GL_NV_polygon_mode */\r\n#ifdef GL_NV_present_video\r\n  if (glewExperimental || GLEW_NV_present_video) GLEW_NV_present_video = !_glewInit_GL_NV_present_video();\r\n#endif /* GL_NV_present_video */\r\n#ifdef GL_NV_primitive_restart\r\n  if (glewExperimental || GLEW_NV_primitive_restart) GLEW_NV_primitive_restart = !_glewInit_GL_NV_primitive_restart();\r\n#endif /* GL_NV_primitive_restart */\r\n#ifdef GL_NV_register_combiners\r\n  if (glewExperimental || GLEW_NV_register_combiners) GLEW_NV_register_combiners = !_glewInit_GL_NV_register_combiners();\r\n#endif /* GL_NV_register_combiners */\r\n#ifdef GL_NV_register_combiners2\r\n  if (glewExperimental || GLEW_NV_register_combiners2) GLEW_NV_register_combiners2 = !_glewInit_GL_NV_register_combiners2();\r\n#endif /* GL_NV_register_combiners2 */\r\n#ifdef GL_NV_sample_locations\r\n  if (glewExperimental || GLEW_NV_sample_locations) GLEW_NV_sample_locations = !_glewInit_GL_NV_sample_locations();\r\n#endif /* GL_NV_sample_locations */\r\n#ifdef GL_NV_shader_buffer_load\r\n  if (glewExperimental || GLEW_NV_shader_buffer_load) GLEW_NV_shader_buffer_load = !_glewInit_GL_NV_shader_buffer_load();\r\n#endif /* GL_NV_shader_buffer_load */\r\n#ifdef GL_NV_texture_array\r\n  if (glewExperimental || GLEW_NV_texture_array) GLEW_NV_texture_array = !_glewInit_GL_NV_texture_array();\r\n#endif /* GL_NV_texture_array */\r\n#ifdef GL_NV_texture_barrier\r\n  if (glewExperimental || GLEW_NV_texture_barrier) GLEW_NV_texture_barrier = !_glewInit_GL_NV_texture_barrier();\r\n#endif /* GL_NV_texture_barrier */\r\n#ifdef GL_NV_texture_multisample\r\n  if (glewExperimental || GLEW_NV_texture_multisample) GLEW_NV_texture_multisample = !_glewInit_GL_NV_texture_multisample();\r\n#endif /* GL_NV_texture_multisample */\r\n#ifdef GL_NV_transform_feedback\r\n  if (glewExperimental || GLEW_NV_transform_feedback) GLEW_NV_transform_feedback = !_glewInit_GL_NV_transform_feedback();\r\n#endif /* GL_NV_transform_feedback */\r\n#ifdef GL_NV_transform_feedback2\r\n  if (glewExperimental || GLEW_NV_transform_feedback2) GLEW_NV_transform_feedback2 = !_glewInit_GL_NV_transform_feedback2();\r\n#endif /* GL_NV_transform_feedback2 */\r\n#ifdef GL_NV_vdpau_interop\r\n  if (glewExperimental || GLEW_NV_vdpau_interop) GLEW_NV_vdpau_interop = !_glewInit_GL_NV_vdpau_interop();\r\n#endif /* GL_NV_vdpau_interop */\r\n#ifdef GL_NV_vertex_array_range\r\n  if (glewExperimental || GLEW_NV_vertex_array_range) GLEW_NV_vertex_array_range = !_glewInit_GL_NV_vertex_array_range();\r\n#endif /* GL_NV_vertex_array_range */\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n  if (glewExperimental || GLEW_NV_vertex_attrib_integer_64bit) GLEW_NV_vertex_attrib_integer_64bit = !_glewInit_GL_NV_vertex_attrib_integer_64bit();\r\n#endif /* GL_NV_vertex_attrib_integer_64bit */\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n  if (glewExperimental || GLEW_NV_vertex_buffer_unified_memory) GLEW_NV_vertex_buffer_unified_memory = !_glewInit_GL_NV_vertex_buffer_unified_memory();\r\n#endif /* GL_NV_vertex_buffer_unified_memory */\r\n#ifdef GL_NV_vertex_program\r\n  if (glewExperimental || GLEW_NV_vertex_program) GLEW_NV_vertex_program = !_glewInit_GL_NV_vertex_program();\r\n#endif /* GL_NV_vertex_program */\r\n#ifdef GL_NV_video_capture\r\n  if (glewExperimental || GLEW_NV_video_capture) GLEW_NV_video_capture = !_glewInit_GL_NV_video_capture();\r\n#endif /* GL_NV_video_capture */\r\n#ifdef GL_NV_viewport_array\r\n  if (glewExperimental || GLEW_NV_viewport_array) GLEW_NV_viewport_array = !_glewInit_GL_NV_viewport_array();\r\n#endif /* GL_NV_viewport_array */\r\n#ifdef GL_NV_viewport_swizzle\r\n  if (glewExperimental || GLEW_NV_viewport_swizzle) GLEW_NV_viewport_swizzle = !_glewInit_GL_NV_viewport_swizzle();\r\n#endif /* GL_NV_viewport_swizzle */\r\n#ifdef GL_OVR_multiview\r\n  if (glewExperimental || GLEW_OVR_multiview) GLEW_OVR_multiview = !_glewInit_GL_OVR_multiview();\r\n#endif /* GL_OVR_multiview */\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n  if (glewExperimental || GLEW_OVR_multiview_multisampled_render_to_texture) GLEW_OVR_multiview_multisampled_render_to_texture = !_glewInit_GL_OVR_multiview_multisampled_render_to_texture();\r\n#endif /* GL_OVR_multiview_multisampled_render_to_texture */\r\n#ifdef GL_QCOM_alpha_test\r\n  if (glewExperimental || GLEW_QCOM_alpha_test) GLEW_QCOM_alpha_test = !_glewInit_GL_QCOM_alpha_test();\r\n#endif /* GL_QCOM_alpha_test */\r\n#ifdef GL_QCOM_driver_control\r\n  if (glewExperimental || GLEW_QCOM_driver_control) GLEW_QCOM_driver_control = !_glewInit_GL_QCOM_driver_control();\r\n#endif /* GL_QCOM_driver_control */\r\n#ifdef GL_QCOM_extended_get\r\n  if (glewExperimental || GLEW_QCOM_extended_get) GLEW_QCOM_extended_get = !_glewInit_GL_QCOM_extended_get();\r\n#endif /* GL_QCOM_extended_get */\r\n#ifdef GL_QCOM_extended_get2\r\n  if (glewExperimental || GLEW_QCOM_extended_get2) GLEW_QCOM_extended_get2 = !_glewInit_GL_QCOM_extended_get2();\r\n#endif /* GL_QCOM_extended_get2 */\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n  if (glewExperimental || GLEW_QCOM_framebuffer_foveated) GLEW_QCOM_framebuffer_foveated = !_glewInit_GL_QCOM_framebuffer_foveated();\r\n#endif /* GL_QCOM_framebuffer_foveated */\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n  if (glewExperimental || GLEW_QCOM_shader_framebuffer_fetch_noncoherent) GLEW_QCOM_shader_framebuffer_fetch_noncoherent = !_glewInit_GL_QCOM_shader_framebuffer_fetch_noncoherent();\r\n#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */\r\n#ifdef GL_QCOM_tiled_rendering\r\n  if (glewExperimental || GLEW_QCOM_tiled_rendering) GLEW_QCOM_tiled_rendering = !_glewInit_GL_QCOM_tiled_rendering();\r\n#endif /* GL_QCOM_tiled_rendering */\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n  if (glewExperimental || GLEW_REGAL_ES1_0_compatibility) GLEW_REGAL_ES1_0_compatibility = !_glewInit_GL_REGAL_ES1_0_compatibility();\r\n#endif /* GL_REGAL_ES1_0_compatibility */\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n  if (glewExperimental || GLEW_REGAL_ES1_1_compatibility) GLEW_REGAL_ES1_1_compatibility = !_glewInit_GL_REGAL_ES1_1_compatibility();\r\n#endif /* GL_REGAL_ES1_1_compatibility */\r\n#ifdef GL_REGAL_error_string\r\n  if (glewExperimental || GLEW_REGAL_error_string) GLEW_REGAL_error_string = !_glewInit_GL_REGAL_error_string();\r\n#endif /* GL_REGAL_error_string */\r\n#ifdef GL_REGAL_extension_query\r\n  if (glewExperimental || GLEW_REGAL_extension_query) GLEW_REGAL_extension_query = !_glewInit_GL_REGAL_extension_query();\r\n#endif /* GL_REGAL_extension_query */\r\n#ifdef GL_REGAL_log\r\n  if (glewExperimental || GLEW_REGAL_log) GLEW_REGAL_log = !_glewInit_GL_REGAL_log();\r\n#endif /* GL_REGAL_log */\r\n#ifdef GL_REGAL_proc_address\r\n  if (glewExperimental || GLEW_REGAL_proc_address) GLEW_REGAL_proc_address = !_glewInit_GL_REGAL_proc_address();\r\n#endif /* GL_REGAL_proc_address */\r\n#ifdef GL_SGIS_detail_texture\r\n  if (glewExperimental || GLEW_SGIS_detail_texture) GLEW_SGIS_detail_texture = !_glewInit_GL_SGIS_detail_texture();\r\n#endif /* GL_SGIS_detail_texture */\r\n#ifdef GL_SGIS_fog_function\r\n  if (glewExperimental || GLEW_SGIS_fog_function) GLEW_SGIS_fog_function = !_glewInit_GL_SGIS_fog_function();\r\n#endif /* GL_SGIS_fog_function */\r\n#ifdef GL_SGIS_multisample\r\n  if (glewExperimental || GLEW_SGIS_multisample) GLEW_SGIS_multisample = !_glewInit_GL_SGIS_multisample();\r\n#endif /* GL_SGIS_multisample */\r\n#ifdef GL_SGIS_multitexture\r\n  if (glewExperimental || GLEW_SGIS_multitexture) GLEW_SGIS_multitexture = !_glewInit_GL_SGIS_multitexture();\r\n#endif /* GL_SGIS_multitexture */\r\n#ifdef GL_SGIS_shared_multisample\r\n  if (glewExperimental || GLEW_SGIS_shared_multisample) GLEW_SGIS_shared_multisample = !_glewInit_GL_SGIS_shared_multisample();\r\n#endif /* GL_SGIS_shared_multisample */\r\n#ifdef GL_SGIS_sharpen_texture\r\n  if (glewExperimental || GLEW_SGIS_sharpen_texture) GLEW_SGIS_sharpen_texture = !_glewInit_GL_SGIS_sharpen_texture();\r\n#endif /* GL_SGIS_sharpen_texture */\r\n#ifdef GL_SGIS_texture4D\r\n  if (glewExperimental || GLEW_SGIS_texture4D) GLEW_SGIS_texture4D = !_glewInit_GL_SGIS_texture4D();\r\n#endif /* GL_SGIS_texture4D */\r\n#ifdef GL_SGIS_texture_filter4\r\n  if (glewExperimental || GLEW_SGIS_texture_filter4) GLEW_SGIS_texture_filter4 = !_glewInit_GL_SGIS_texture_filter4();\r\n#endif /* GL_SGIS_texture_filter4 */\r\n#ifdef GL_SGIX_async\r\n  if (glewExperimental || GLEW_SGIX_async) GLEW_SGIX_async = !_glewInit_GL_SGIX_async();\r\n#endif /* GL_SGIX_async */\r\n#ifdef GL_SGIX_datapipe\r\n  if (glewExperimental || GLEW_SGIX_datapipe) GLEW_SGIX_datapipe = !_glewInit_GL_SGIX_datapipe();\r\n#endif /* GL_SGIX_datapipe */\r\n#ifdef GL_SGIX_flush_raster\r\n  if (glewExperimental || GLEW_SGIX_flush_raster) GLEW_SGIX_flush_raster = !_glewInit_GL_SGIX_flush_raster();\r\n#endif /* GL_SGIX_flush_raster */\r\n#ifdef GL_SGIX_fog_layers\r\n  if (glewExperimental || GLEW_SGIX_fog_layers) GLEW_SGIX_fog_layers = !_glewInit_GL_SGIX_fog_layers();\r\n#endif /* GL_SGIX_fog_layers */\r\n#ifdef GL_SGIX_fog_texture\r\n  if (glewExperimental || GLEW_SGIX_fog_texture) GLEW_SGIX_fog_texture = !_glewInit_GL_SGIX_fog_texture();\r\n#endif /* GL_SGIX_fog_texture */\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n  if (glewExperimental || GLEW_SGIX_fragment_specular_lighting) GLEW_SGIX_fragment_specular_lighting = !_glewInit_GL_SGIX_fragment_specular_lighting();\r\n#endif /* GL_SGIX_fragment_specular_lighting */\r\n#ifdef GL_SGIX_framezoom\r\n  if (glewExperimental || GLEW_SGIX_framezoom) GLEW_SGIX_framezoom = !_glewInit_GL_SGIX_framezoom();\r\n#endif /* GL_SGIX_framezoom */\r\n#ifdef GL_SGIX_igloo_interface\r\n  if (glewExperimental || GLEW_SGIX_igloo_interface) GLEW_SGIX_igloo_interface = !_glewInit_GL_SGIX_igloo_interface();\r\n#endif /* GL_SGIX_igloo_interface */\r\n#ifdef GL_SGIX_mpeg1\r\n  if (glewExperimental || GLEW_SGIX_mpeg1) GLEW_SGIX_mpeg1 = !_glewInit_GL_SGIX_mpeg1();\r\n#endif /* GL_SGIX_mpeg1 */\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n  if (glewExperimental || GLEW_SGIX_nonlinear_lighting_pervertex) GLEW_SGIX_nonlinear_lighting_pervertex = !_glewInit_GL_SGIX_nonlinear_lighting_pervertex();\r\n#endif /* GL_SGIX_nonlinear_lighting_pervertex */\r\n#ifdef GL_SGIX_pixel_texture\r\n  if (glewExperimental || GLEW_SGIX_pixel_texture) GLEW_SGIX_pixel_texture = !_glewInit_GL_SGIX_pixel_texture();\r\n#endif /* GL_SGIX_pixel_texture */\r\n#ifdef GL_SGIX_polynomial_ffd\r\n  if (glewExperimental || GLEW_SGIX_polynomial_ffd) GLEW_SGIX_polynomial_ffd = !_glewInit_GL_SGIX_polynomial_ffd();\r\n#endif /* GL_SGIX_polynomial_ffd */\r\n#ifdef GL_SGIX_quad_mesh\r\n  if (glewExperimental || GLEW_SGIX_quad_mesh) GLEW_SGIX_quad_mesh = !_glewInit_GL_SGIX_quad_mesh();\r\n#endif /* GL_SGIX_quad_mesh */\r\n#ifdef GL_SGIX_reference_plane\r\n  if (glewExperimental || GLEW_SGIX_reference_plane) GLEW_SGIX_reference_plane = !_glewInit_GL_SGIX_reference_plane();\r\n#endif /* GL_SGIX_reference_plane */\r\n#ifdef GL_SGIX_sprite\r\n  if (glewExperimental || GLEW_SGIX_sprite) GLEW_SGIX_sprite = !_glewInit_GL_SGIX_sprite();\r\n#endif /* GL_SGIX_sprite */\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n  if (glewExperimental || GLEW_SGIX_tag_sample_buffer) GLEW_SGIX_tag_sample_buffer = !_glewInit_GL_SGIX_tag_sample_buffer();\r\n#endif /* GL_SGIX_tag_sample_buffer */\r\n#ifdef GL_SGIX_vector_ops\r\n  if (glewExperimental || GLEW_SGIX_vector_ops) GLEW_SGIX_vector_ops = !_glewInit_GL_SGIX_vector_ops();\r\n#endif /* GL_SGIX_vector_ops */\r\n#ifdef GL_SGIX_vertex_array_object\r\n  if (glewExperimental || GLEW_SGIX_vertex_array_object) GLEW_SGIX_vertex_array_object = !_glewInit_GL_SGIX_vertex_array_object();\r\n#endif /* GL_SGIX_vertex_array_object */\r\n#ifdef GL_SGI_color_table\r\n  if (glewExperimental || GLEW_SGI_color_table) GLEW_SGI_color_table = !_glewInit_GL_SGI_color_table();\r\n#endif /* GL_SGI_color_table */\r\n#ifdef GL_SGI_fft\r\n  if (glewExperimental || GLEW_SGI_fft) GLEW_SGI_fft = !_glewInit_GL_SGI_fft();\r\n#endif /* GL_SGI_fft */\r\n#ifdef GL_SUNX_constant_data\r\n  if (glewExperimental || GLEW_SUNX_constant_data) GLEW_SUNX_constant_data = !_glewInit_GL_SUNX_constant_data();\r\n#endif /* GL_SUNX_constant_data */\r\n#ifdef GL_SUN_global_alpha\r\n  if (glewExperimental || GLEW_SUN_global_alpha) GLEW_SUN_global_alpha = !_glewInit_GL_SUN_global_alpha();\r\n#endif /* GL_SUN_global_alpha */\r\n#ifdef GL_SUN_read_video_pixels\r\n  if (glewExperimental || GLEW_SUN_read_video_pixels) GLEW_SUN_read_video_pixels = !_glewInit_GL_SUN_read_video_pixels();\r\n#endif /* GL_SUN_read_video_pixels */\r\n#ifdef GL_SUN_triangle_list\r\n  if (glewExperimental || GLEW_SUN_triangle_list) GLEW_SUN_triangle_list = !_glewInit_GL_SUN_triangle_list();\r\n#endif /* GL_SUN_triangle_list */\r\n#ifdef GL_SUN_vertex\r\n  if (glewExperimental || GLEW_SUN_vertex) GLEW_SUN_vertex = !_glewInit_GL_SUN_vertex();\r\n#endif /* GL_SUN_vertex */\r\n#ifdef GL_WIN_swap_hint\r\n  if (glewExperimental || GLEW_WIN_swap_hint) GLEW_WIN_swap_hint = !_glewInit_GL_WIN_swap_hint();\r\n#endif /* GL_WIN_swap_hint */\r\n#ifdef GL_NV_fragment_program4\r\n  GLEW_NV_fragment_program4 = GLEW_NV_gpu_program4;\r\n#endif /* GL_NV_fragment_program4 */\r\n#ifdef GL_NV_geometry_program4\r\n  GLEW_NV_geometry_program4 = GLEW_NV_gpu_program4;\r\n#endif /* GL_NV_geometry_program4 */\r\n#ifdef GL_NV_tessellation_program5\r\n  GLEW_NV_tessellation_program5 = GLEW_NV_gpu_program5;\r\n#endif /* GL_NV_tessellation_program5 */\r\n#ifdef GL_NV_vertex_program4\r\n  GLEW_NV_vertex_program4 = GLEW_NV_gpu_program4;\r\n#endif /* GL_NV_vertex_program4 */\r\n\r\n  return GLEW_OK;\r\n}\r\n\r\n\r\n#if defined(GLEW_OSMESA)\r\n\r\n#elif defined(GLEW_EGL)\r\n\r\nPFNEGLCHOOSECONFIGPROC __eglewChooseConfig = NULL;\r\nPFNEGLCOPYBUFFERSPROC __eglewCopyBuffers = NULL;\r\nPFNEGLCREATECONTEXTPROC __eglewCreateContext = NULL;\r\nPFNEGLCREATEPBUFFERSURFACEPROC __eglewCreatePbufferSurface = NULL;\r\nPFNEGLCREATEPIXMAPSURFACEPROC __eglewCreatePixmapSurface = NULL;\r\nPFNEGLCREATEWINDOWSURFACEPROC __eglewCreateWindowSurface = NULL;\r\nPFNEGLDESTROYCONTEXTPROC __eglewDestroyContext = NULL;\r\nPFNEGLDESTROYSURFACEPROC __eglewDestroySurface = NULL;\r\nPFNEGLGETCONFIGATTRIBPROC __eglewGetConfigAttrib = NULL;\r\nPFNEGLGETCONFIGSPROC __eglewGetConfigs = NULL;\r\nPFNEGLGETCURRENTDISPLAYPROC __eglewGetCurrentDisplay = NULL;\r\nPFNEGLGETCURRENTSURFACEPROC __eglewGetCurrentSurface = NULL;\r\nPFNEGLGETDISPLAYPROC __eglewGetDisplay = NULL;\r\nPFNEGLGETERRORPROC __eglewGetError = NULL;\r\nPFNEGLINITIALIZEPROC __eglewInitialize = NULL;\r\nPFNEGLMAKECURRENTPROC __eglewMakeCurrent = NULL;\r\nPFNEGLQUERYCONTEXTPROC __eglewQueryContext = NULL;\r\nPFNEGLQUERYSTRINGPROC __eglewQueryString = NULL;\r\nPFNEGLQUERYSURFACEPROC __eglewQuerySurface = NULL;\r\nPFNEGLSWAPBUFFERSPROC __eglewSwapBuffers = NULL;\r\nPFNEGLTERMINATEPROC __eglewTerminate = NULL;\r\nPFNEGLWAITGLPROC __eglewWaitGL = NULL;\r\nPFNEGLWAITNATIVEPROC __eglewWaitNative = NULL;\r\n\r\nPFNEGLBINDTEXIMAGEPROC __eglewBindTexImage = NULL;\r\nPFNEGLRELEASETEXIMAGEPROC __eglewReleaseTexImage = NULL;\r\nPFNEGLSURFACEATTRIBPROC __eglewSurfaceAttrib = NULL;\r\nPFNEGLSWAPINTERVALPROC __eglewSwapInterval = NULL;\r\n\r\nPFNEGLBINDAPIPROC __eglewBindAPI = NULL;\r\nPFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC __eglewCreatePbufferFromClientBuffer = NULL;\r\nPFNEGLQUERYAPIPROC __eglewQueryAPI = NULL;\r\nPFNEGLRELEASETHREADPROC __eglewReleaseThread = NULL;\r\nPFNEGLWAITCLIENTPROC __eglewWaitClient = NULL;\r\n\r\nPFNEGLGETCURRENTCONTEXTPROC __eglewGetCurrentContext = NULL;\r\n\r\nPFNEGLCLIENTWAITSYNCPROC __eglewClientWaitSync = NULL;\r\nPFNEGLCREATEIMAGEPROC __eglewCreateImage = NULL;\r\nPFNEGLCREATEPLATFORMPIXMAPSURFACEPROC __eglewCreatePlatformPixmapSurface = NULL;\r\nPFNEGLCREATEPLATFORMWINDOWSURFACEPROC __eglewCreatePlatformWindowSurface = NULL;\r\nPFNEGLCREATESYNCPROC __eglewCreateSync = NULL;\r\nPFNEGLDESTROYIMAGEPROC __eglewDestroyImage = NULL;\r\nPFNEGLDESTROYSYNCPROC __eglewDestroySync = NULL;\r\nPFNEGLGETPLATFORMDISPLAYPROC __eglewGetPlatformDisplay = NULL;\r\nPFNEGLGETSYNCATTRIBPROC __eglewGetSyncAttrib = NULL;\r\nPFNEGLWAITSYNCPROC __eglewWaitSync = NULL;\r\n\r\nPFNEGLSETBLOBCACHEFUNCSANDROIDPROC __eglewSetBlobCacheFuncsANDROID = NULL;\r\n\r\nPFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC __eglewCreateNativeClientBufferANDROID = NULL;\r\n\r\nPFNEGLDUPNATIVEFENCEFDANDROIDPROC __eglewDupNativeFenceFDANDROID = NULL;\r\n\r\nPFNEGLPRESENTATIONTIMEANDROIDPROC __eglewPresentationTimeANDROID = NULL;\r\n\r\nPFNEGLQUERYSURFACEPOINTERANGLEPROC __eglewQuerySurfacePointerANGLE = NULL;\r\n\r\nPFNEGLQUERYDEVICESEXTPROC __eglewQueryDevicesEXT = NULL;\r\n\r\nPFNEGLQUERYDEVICEATTRIBEXTPROC __eglewQueryDeviceAttribEXT = NULL;\r\nPFNEGLQUERYDEVICESTRINGEXTPROC __eglewQueryDeviceStringEXT = NULL;\r\nPFNEGLQUERYDISPLAYATTRIBEXTPROC __eglewQueryDisplayAttribEXT = NULL;\r\n\r\nPFNEGLQUERYDMABUFFORMATSEXTPROC __eglewQueryDmaBufFormatsEXT = NULL;\r\nPFNEGLQUERYDMABUFMODIFIERSEXTPROC __eglewQueryDmaBufModifiersEXT = NULL;\r\n\r\nPFNEGLGETOUTPUTLAYERSEXTPROC __eglewGetOutputLayersEXT = NULL;\r\nPFNEGLGETOUTPUTPORTSEXTPROC __eglewGetOutputPortsEXT = NULL;\r\nPFNEGLOUTPUTLAYERATTRIBEXTPROC __eglewOutputLayerAttribEXT = NULL;\r\nPFNEGLOUTPUTPORTATTRIBEXTPROC __eglewOutputPortAttribEXT = NULL;\r\nPFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC __eglewQueryOutputLayerAttribEXT = NULL;\r\nPFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC __eglewQueryOutputLayerStringEXT = NULL;\r\nPFNEGLQUERYOUTPUTPORTATTRIBEXTPROC __eglewQueryOutputPortAttribEXT = NULL;\r\nPFNEGLQUERYOUTPUTPORTSTRINGEXTPROC __eglewQueryOutputPortStringEXT = NULL;\r\n\r\nPFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC __eglewCreatePlatformPixmapSurfaceEXT = NULL;\r\nPFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC __eglewCreatePlatformWindowSurfaceEXT = NULL;\r\nPFNEGLGETPLATFORMDISPLAYEXTPROC __eglewGetPlatformDisplayEXT = NULL;\r\n\r\nPFNEGLSTREAMCONSUMEROUTPUTEXTPROC __eglewStreamConsumerOutputEXT = NULL;\r\n\r\nPFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC __eglewSwapBuffersWithDamageEXT = NULL;\r\n\r\nPFNEGLCREATEPIXMAPSURFACEHIPROC __eglewCreatePixmapSurfaceHI = NULL;\r\n\r\nPFNEGLCREATESYNC64KHRPROC __eglewCreateSync64KHR = NULL;\r\n\r\nPFNEGLDEBUGMESSAGECONTROLKHRPROC __eglewDebugMessageControlKHR = NULL;\r\nPFNEGLLABELOBJECTKHRPROC __eglewLabelObjectKHR = NULL;\r\nPFNEGLQUERYDEBUGKHRPROC __eglewQueryDebugKHR = NULL;\r\n\r\nPFNEGLCREATEIMAGEKHRPROC __eglewCreateImageKHR = NULL;\r\nPFNEGLDESTROYIMAGEKHRPROC __eglewDestroyImageKHR = NULL;\r\n\r\nPFNEGLLOCKSURFACEKHRPROC __eglewLockSurfaceKHR = NULL;\r\nPFNEGLUNLOCKSURFACEKHRPROC __eglewUnlockSurfaceKHR = NULL;\r\n\r\nPFNEGLQUERYSURFACE64KHRPROC __eglewQuerySurface64KHR = NULL;\r\n\r\nPFNEGLSETDAMAGEREGIONKHRPROC __eglewSetDamageRegionKHR = NULL;\r\n\r\nPFNEGLCLIENTWAITSYNCKHRPROC __eglewClientWaitSyncKHR = NULL;\r\nPFNEGLCREATESYNCKHRPROC __eglewCreateSyncKHR = NULL;\r\nPFNEGLDESTROYSYNCKHRPROC __eglewDestroySyncKHR = NULL;\r\nPFNEGLGETSYNCATTRIBKHRPROC __eglewGetSyncAttribKHR = NULL;\r\nPFNEGLSIGNALSYNCKHRPROC __eglewSignalSyncKHR = NULL;\r\n\r\nPFNEGLCREATESTREAMKHRPROC __eglewCreateStreamKHR = NULL;\r\nPFNEGLDESTROYSTREAMKHRPROC __eglewDestroyStreamKHR = NULL;\r\nPFNEGLQUERYSTREAMKHRPROC __eglewQueryStreamKHR = NULL;\r\nPFNEGLQUERYSTREAMU64KHRPROC __eglewQueryStreamu64KHR = NULL;\r\nPFNEGLSTREAMATTRIBKHRPROC __eglewStreamAttribKHR = NULL;\r\n\r\nPFNEGLCREATESTREAMATTRIBKHRPROC __eglewCreateStreamAttribKHR = NULL;\r\nPFNEGLQUERYSTREAMATTRIBKHRPROC __eglewQueryStreamAttribKHR = NULL;\r\nPFNEGLSETSTREAMATTRIBKHRPROC __eglewSetStreamAttribKHR = NULL;\r\nPFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC __eglewStreamConsumerAcquireAttribKHR = NULL;\r\nPFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC __eglewStreamConsumerReleaseAttribKHR = NULL;\r\n\r\nPFNEGLSTREAMCONSUMERACQUIREKHRPROC __eglewStreamConsumerAcquireKHR = NULL;\r\nPFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC __eglewStreamConsumerGLTextureExternalKHR = NULL;\r\nPFNEGLSTREAMCONSUMERRELEASEKHRPROC __eglewStreamConsumerReleaseKHR = NULL;\r\n\r\nPFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC __eglewCreateStreamFromFileDescriptorKHR = NULL;\r\nPFNEGLGETSTREAMFILEDESCRIPTORKHRPROC __eglewGetStreamFileDescriptorKHR = NULL;\r\n\r\nPFNEGLQUERYSTREAMTIMEKHRPROC __eglewQueryStreamTimeKHR = NULL;\r\n\r\nPFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC __eglewCreateStreamProducerSurfaceKHR = NULL;\r\n\r\nPFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC __eglewSwapBuffersWithDamageKHR = NULL;\r\n\r\nPFNEGLWAITSYNCKHRPROC __eglewWaitSyncKHR = NULL;\r\n\r\nPFNEGLCREATEDRMIMAGEMESAPROC __eglewCreateDRMImageMESA = NULL;\r\nPFNEGLEXPORTDRMIMAGEMESAPROC __eglewExportDRMImageMESA = NULL;\r\n\r\nPFNEGLEXPORTDMABUFIMAGEMESAPROC __eglewExportDMABUFImageMESA = NULL;\r\nPFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC __eglewExportDMABUFImageQueryMESA = NULL;\r\n\r\nPFNEGLSWAPBUFFERSREGIONNOKPROC __eglewSwapBuffersRegionNOK = NULL;\r\n\r\nPFNEGLSWAPBUFFERSREGION2NOKPROC __eglewSwapBuffersRegion2NOK = NULL;\r\n\r\nPFNEGLQUERYNATIVEDISPLAYNVPROC __eglewQueryNativeDisplayNV = NULL;\r\nPFNEGLQUERYNATIVEPIXMAPNVPROC __eglewQueryNativePixmapNV = NULL;\r\nPFNEGLQUERYNATIVEWINDOWNVPROC __eglewQueryNativeWindowNV = NULL;\r\n\r\nPFNEGLPOSTSUBBUFFERNVPROC __eglewPostSubBufferNV = NULL;\r\n\r\nPFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC __eglewStreamConsumerGLTextureExternalAttribsNV = NULL;\r\n\r\nPFNEGLQUERYDISPLAYATTRIBNVPROC __eglewQueryDisplayAttribNV = NULL;\r\nPFNEGLQUERYSTREAMMETADATANVPROC __eglewQueryStreamMetadataNV = NULL;\r\nPFNEGLSETSTREAMMETADATANVPROC __eglewSetStreamMetadataNV = NULL;\r\n\r\nPFNEGLRESETSTREAMNVPROC __eglewResetStreamNV = NULL;\r\n\r\nPFNEGLCREATESTREAMSYNCNVPROC __eglewCreateStreamSyncNV = NULL;\r\n\r\nPFNEGLCLIENTWAITSYNCNVPROC __eglewClientWaitSyncNV = NULL;\r\nPFNEGLCREATEFENCESYNCNVPROC __eglewCreateFenceSyncNV = NULL;\r\nPFNEGLDESTROYSYNCNVPROC __eglewDestroySyncNV = NULL;\r\nPFNEGLFENCENVPROC __eglewFenceNV = NULL;\r\nPFNEGLGETSYNCATTRIBNVPROC __eglewGetSyncAttribNV = NULL;\r\nPFNEGLSIGNALSYNCNVPROC __eglewSignalSyncNV = NULL;\r\n\r\nPFNEGLGETSYSTEMTIMEFREQUENCYNVPROC __eglewGetSystemTimeFrequencyNV = NULL;\r\nPFNEGLGETSYSTEMTIMENVPROC __eglewGetSystemTimeNV = NULL;\r\nGLboolean __EGLEW_VERSION_1_0 = GL_FALSE;\r\nGLboolean __EGLEW_VERSION_1_1 = GL_FALSE;\r\nGLboolean __EGLEW_VERSION_1_2 = GL_FALSE;\r\nGLboolean __EGLEW_VERSION_1_3 = GL_FALSE;\r\nGLboolean __EGLEW_VERSION_1_4 = GL_FALSE;\r\nGLboolean __EGLEW_VERSION_1_5 = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_blob_cache = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_create_native_client_buffer = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_framebuffer_target = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_front_buffer_auto_refresh = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_image_native_buffer = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_native_fence_sync = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_presentation_time = GL_FALSE;\r\nGLboolean __EGLEW_ANDROID_recordable = GL_FALSE;\r\nGLboolean __EGLEW_ANGLE_d3d_share_handle_client_buffer = GL_FALSE;\r\nGLboolean __EGLEW_ANGLE_device_d3d = GL_FALSE;\r\nGLboolean __EGLEW_ANGLE_query_surface_pointer = GL_FALSE;\r\nGLboolean __EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = GL_FALSE;\r\nGLboolean __EGLEW_ANGLE_window_fixed_size = GL_FALSE;\r\nGLboolean __EGLEW_ARM_implicit_external_sync = GL_FALSE;\r\nGLboolean __EGLEW_ARM_pixmap_multisample_discard = GL_FALSE;\r\nGLboolean __EGLEW_EXT_buffer_age = GL_FALSE;\r\nGLboolean __EGLEW_EXT_client_extensions = GL_FALSE;\r\nGLboolean __EGLEW_EXT_create_context_robustness = GL_FALSE;\r\nGLboolean __EGLEW_EXT_device_base = GL_FALSE;\r\nGLboolean __EGLEW_EXT_device_drm = GL_FALSE;\r\nGLboolean __EGLEW_EXT_device_enumeration = GL_FALSE;\r\nGLboolean __EGLEW_EXT_device_openwf = GL_FALSE;\r\nGLboolean __EGLEW_EXT_device_query = GL_FALSE;\r\nGLboolean __EGLEW_EXT_gl_colorspace_bt2020_linear = GL_FALSE;\r\nGLboolean __EGLEW_EXT_gl_colorspace_bt2020_pq = GL_FALSE;\r\nGLboolean __EGLEW_EXT_gl_colorspace_scrgb_linear = GL_FALSE;\r\nGLboolean __EGLEW_EXT_image_dma_buf_import = GL_FALSE;\r\nGLboolean __EGLEW_EXT_image_dma_buf_import_modifiers = GL_FALSE;\r\nGLboolean __EGLEW_EXT_multiview_window = GL_FALSE;\r\nGLboolean __EGLEW_EXT_output_base = GL_FALSE;\r\nGLboolean __EGLEW_EXT_output_drm = GL_FALSE;\r\nGLboolean __EGLEW_EXT_output_openwf = GL_FALSE;\r\nGLboolean __EGLEW_EXT_pixel_format_float = GL_FALSE;\r\nGLboolean __EGLEW_EXT_platform_base = GL_FALSE;\r\nGLboolean __EGLEW_EXT_platform_device = GL_FALSE;\r\nGLboolean __EGLEW_EXT_platform_wayland = GL_FALSE;\r\nGLboolean __EGLEW_EXT_platform_x11 = GL_FALSE;\r\nGLboolean __EGLEW_EXT_protected_content = GL_FALSE;\r\nGLboolean __EGLEW_EXT_protected_surface = GL_FALSE;\r\nGLboolean __EGLEW_EXT_stream_consumer_egloutput = GL_FALSE;\r\nGLboolean __EGLEW_EXT_surface_SMPTE2086_metadata = GL_FALSE;\r\nGLboolean __EGLEW_EXT_swap_buffers_with_damage = GL_FALSE;\r\nGLboolean __EGLEW_EXT_yuv_surface = GL_FALSE;\r\nGLboolean __EGLEW_HI_clientpixmap = GL_FALSE;\r\nGLboolean __EGLEW_HI_colorformats = GL_FALSE;\r\nGLboolean __EGLEW_IMG_context_priority = GL_FALSE;\r\nGLboolean __EGLEW_IMG_image_plane_attribs = GL_FALSE;\r\nGLboolean __EGLEW_KHR_cl_event = GL_FALSE;\r\nGLboolean __EGLEW_KHR_cl_event2 = GL_FALSE;\r\nGLboolean __EGLEW_KHR_client_get_all_proc_addresses = GL_FALSE;\r\nGLboolean __EGLEW_KHR_config_attribs = GL_FALSE;\r\nGLboolean __EGLEW_KHR_context_flush_control = GL_FALSE;\r\nGLboolean __EGLEW_KHR_create_context = GL_FALSE;\r\nGLboolean __EGLEW_KHR_create_context_no_error = GL_FALSE;\r\nGLboolean __EGLEW_KHR_debug = GL_FALSE;\r\nGLboolean __EGLEW_KHR_fence_sync = GL_FALSE;\r\nGLboolean __EGLEW_KHR_get_all_proc_addresses = GL_FALSE;\r\nGLboolean __EGLEW_KHR_gl_colorspace = GL_FALSE;\r\nGLboolean __EGLEW_KHR_gl_renderbuffer_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_gl_texture_2D_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_gl_texture_3D_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_gl_texture_cubemap_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_image_base = GL_FALSE;\r\nGLboolean __EGLEW_KHR_image_pixmap = GL_FALSE;\r\nGLboolean __EGLEW_KHR_lock_surface = GL_FALSE;\r\nGLboolean __EGLEW_KHR_lock_surface2 = GL_FALSE;\r\nGLboolean __EGLEW_KHR_lock_surface3 = GL_FALSE;\r\nGLboolean __EGLEW_KHR_mutable_render_buffer = GL_FALSE;\r\nGLboolean __EGLEW_KHR_no_config_context = GL_FALSE;\r\nGLboolean __EGLEW_KHR_partial_update = GL_FALSE;\r\nGLboolean __EGLEW_KHR_platform_android = GL_FALSE;\r\nGLboolean __EGLEW_KHR_platform_gbm = GL_FALSE;\r\nGLboolean __EGLEW_KHR_platform_wayland = GL_FALSE;\r\nGLboolean __EGLEW_KHR_platform_x11 = GL_FALSE;\r\nGLboolean __EGLEW_KHR_reusable_sync = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_attrib = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_consumer_gltexture = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_cross_process_fd = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_fifo = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_producer_aldatalocator = GL_FALSE;\r\nGLboolean __EGLEW_KHR_stream_producer_eglsurface = GL_FALSE;\r\nGLboolean __EGLEW_KHR_surfaceless_context = GL_FALSE;\r\nGLboolean __EGLEW_KHR_swap_buffers_with_damage = GL_FALSE;\r\nGLboolean __EGLEW_KHR_vg_parent_image = GL_FALSE;\r\nGLboolean __EGLEW_KHR_wait_sync = GL_FALSE;\r\nGLboolean __EGLEW_MESA_drm_image = GL_FALSE;\r\nGLboolean __EGLEW_MESA_image_dma_buf_export = GL_FALSE;\r\nGLboolean __EGLEW_MESA_platform_gbm = GL_FALSE;\r\nGLboolean __EGLEW_MESA_platform_surfaceless = GL_FALSE;\r\nGLboolean __EGLEW_NOK_swap_region = GL_FALSE;\r\nGLboolean __EGLEW_NOK_swap_region2 = GL_FALSE;\r\nGLboolean __EGLEW_NOK_texture_from_pixmap = GL_FALSE;\r\nGLboolean __EGLEW_NV_3dvision_surface = GL_FALSE;\r\nGLboolean __EGLEW_NV_coverage_sample = GL_FALSE;\r\nGLboolean __EGLEW_NV_coverage_sample_resolve = GL_FALSE;\r\nGLboolean __EGLEW_NV_cuda_event = GL_FALSE;\r\nGLboolean __EGLEW_NV_depth_nonlinear = GL_FALSE;\r\nGLboolean __EGLEW_NV_device_cuda = GL_FALSE;\r\nGLboolean __EGLEW_NV_native_query = GL_FALSE;\r\nGLboolean __EGLEW_NV_post_convert_rounding = GL_FALSE;\r\nGLboolean __EGLEW_NV_post_sub_buffer = GL_FALSE;\r\nGLboolean __EGLEW_NV_robustness_video_memory_purge = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_consumer_gltexture_yuv = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_cross_display = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_cross_object = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_cross_partition = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_cross_process = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_cross_system = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_fifo_next = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_fifo_synchronous = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_frame_limits = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_metadata = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_remote = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_reset = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_socket = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_socket_inet = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_socket_unix = GL_FALSE;\r\nGLboolean __EGLEW_NV_stream_sync = GL_FALSE;\r\nGLboolean __EGLEW_NV_sync = GL_FALSE;\r\nGLboolean __EGLEW_NV_system_time = GL_FALSE;\r\nGLboolean __EGLEW_TIZEN_image_native_buffer = GL_FALSE;\r\nGLboolean __EGLEW_TIZEN_image_native_surface = GL_FALSE;\r\n#ifdef EGL_VERSION_1_0\r\n\r\nstatic GLboolean _glewInit_EGL_VERSION_1_0 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglChooseConfig = (PFNEGLCHOOSECONFIGPROC)glewGetProcAddress((const GLubyte*)\"eglChooseConfig\")) == NULL) || r;\r\n  r = ((eglCopyBuffers = (PFNEGLCOPYBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"eglCopyBuffers\")) == NULL) || r;\r\n  r = ((eglCreateContext = (PFNEGLCREATECONTEXTPROC)glewGetProcAddress((const GLubyte*)\"eglCreateContext\")) == NULL) || r;\r\n  r = ((eglCreatePbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePbufferSurface\")) == NULL) || r;\r\n  r = ((eglCreatePixmapSurface = (PFNEGLCREATEPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePixmapSurface\")) == NULL) || r;\r\n  r = ((eglCreateWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglCreateWindowSurface\")) == NULL) || r;\r\n  r = ((eglDestroyContext = (PFNEGLDESTROYCONTEXTPROC)glewGetProcAddress((const GLubyte*)\"eglDestroyContext\")) == NULL) || r;\r\n  r = ((eglDestroySurface = (PFNEGLDESTROYSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglDestroySurface\")) == NULL) || r;\r\n  r = ((eglGetConfigAttrib = (PFNEGLGETCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)\"eglGetConfigAttrib\")) == NULL) || r;\r\n  r = ((eglGetConfigs = (PFNEGLGETCONFIGSPROC)glewGetProcAddress((const GLubyte*)\"eglGetConfigs\")) == NULL) || r;\r\n  r = ((eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)\"eglGetCurrentDisplay\")) == NULL) || r;\r\n  r = ((eglGetCurrentSurface = (PFNEGLGETCURRENTSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglGetCurrentSurface\")) == NULL) || r;\r\n  r = ((eglGetDisplay = (PFNEGLGETDISPLAYPROC)glewGetProcAddress((const GLubyte*)\"eglGetDisplay\")) == NULL) || r;\r\n  r = ((eglGetError = (PFNEGLGETERRORPROC)glewGetProcAddress((const GLubyte*)\"eglGetError\")) == NULL) || r;\r\n  r = ((eglInitialize = (PFNEGLINITIALIZEPROC)glewGetProcAddress((const GLubyte*)\"eglInitialize\")) == NULL) || r;\r\n  r = ((eglMakeCurrent = (PFNEGLMAKECURRENTPROC)glewGetProcAddress((const GLubyte*)\"eglMakeCurrent\")) == NULL) || r;\r\n  r = ((eglQueryContext = (PFNEGLQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryContext\")) == NULL) || r;\r\n  r = ((eglQueryString = (PFNEGLQUERYSTRINGPROC)glewGetProcAddress((const GLubyte*)\"eglQueryString\")) == NULL) || r;\r\n  r = ((eglQuerySurface = (PFNEGLQUERYSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglQuerySurface\")) == NULL) || r;\r\n  r = ((eglSwapBuffers = (PFNEGLSWAPBUFFERSPROC)glewGetProcAddress((const GLubyte*)\"eglSwapBuffers\")) == NULL) || r;\r\n  r = ((eglTerminate = (PFNEGLTERMINATEPROC)glewGetProcAddress((const GLubyte*)\"eglTerminate\")) == NULL) || r;\r\n  r = ((eglWaitGL = (PFNEGLWAITGLPROC)glewGetProcAddress((const GLubyte*)\"eglWaitGL\")) == NULL) || r;\r\n  r = ((eglWaitNative = (PFNEGLWAITNATIVEPROC)glewGetProcAddress((const GLubyte*)\"eglWaitNative\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_VERSION_1_0 */\r\n\r\n#ifdef EGL_VERSION_1_1\r\n\r\nstatic GLboolean _glewInit_EGL_VERSION_1_1 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglBindTexImage = (PFNEGLBINDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"eglBindTexImage\")) == NULL) || r;\r\n  r = ((eglReleaseTexImage = (PFNEGLRELEASETEXIMAGEPROC)glewGetProcAddress((const GLubyte*)\"eglReleaseTexImage\")) == NULL) || r;\r\n  r = ((eglSurfaceAttrib = (PFNEGLSURFACEATTRIBPROC)glewGetProcAddress((const GLubyte*)\"eglSurfaceAttrib\")) == NULL) || r;\r\n  r = ((eglSwapInterval = (PFNEGLSWAPINTERVALPROC)glewGetProcAddress((const GLubyte*)\"eglSwapInterval\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_VERSION_1_1 */\r\n\r\n#ifdef EGL_VERSION_1_2\r\n\r\nstatic GLboolean _glewInit_EGL_VERSION_1_2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglBindAPI = (PFNEGLBINDAPIPROC)glewGetProcAddress((const GLubyte*)\"eglBindAPI\")) == NULL) || r;\r\n  r = ((eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePbufferFromClientBuffer\")) == NULL) || r;\r\n  r = ((eglQueryAPI = (PFNEGLQUERYAPIPROC)glewGetProcAddress((const GLubyte*)\"eglQueryAPI\")) == NULL) || r;\r\n  r = ((eglReleaseThread = (PFNEGLRELEASETHREADPROC)glewGetProcAddress((const GLubyte*)\"eglReleaseThread\")) == NULL) || r;\r\n  r = ((eglWaitClient = (PFNEGLWAITCLIENTPROC)glewGetProcAddress((const GLubyte*)\"eglWaitClient\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_VERSION_1_2 */\r\n\r\n#ifdef EGL_VERSION_1_4\r\n\r\nstatic GLboolean _glewInit_EGL_VERSION_1_4 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglGetCurrentContext = (PFNEGLGETCURRENTCONTEXTPROC)glewGetProcAddress((const GLubyte*)\"eglGetCurrentContext\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_VERSION_1_4 */\r\n\r\n#ifdef EGL_VERSION_1_5\r\n\r\nstatic GLboolean _glewInit_EGL_VERSION_1_5 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC)glewGetProcAddress((const GLubyte*)\"eglClientWaitSync\")) == NULL) || r;\r\n  r = ((eglCreateImage = (PFNEGLCREATEIMAGEPROC)glewGetProcAddress((const GLubyte*)\"eglCreateImage\")) == NULL) || r;\r\n  r = ((eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePlatformPixmapSurface\")) == NULL) || r;\r\n  r = ((eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePlatformWindowSurface\")) == NULL) || r;\r\n  r = ((eglCreateSync = (PFNEGLCREATESYNCPROC)glewGetProcAddress((const GLubyte*)\"eglCreateSync\")) == NULL) || r;\r\n  r = ((eglDestroyImage = (PFNEGLDESTROYIMAGEPROC)glewGetProcAddress((const GLubyte*)\"eglDestroyImage\")) == NULL) || r;\r\n  r = ((eglDestroySync = (PFNEGLDESTROYSYNCPROC)glewGetProcAddress((const GLubyte*)\"eglDestroySync\")) == NULL) || r;\r\n  r = ((eglGetPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYPROC)glewGetProcAddress((const GLubyte*)\"eglGetPlatformDisplay\")) == NULL) || r;\r\n  r = ((eglGetSyncAttrib = (PFNEGLGETSYNCATTRIBPROC)glewGetProcAddress((const GLubyte*)\"eglGetSyncAttrib\")) == NULL) || r;\r\n  r = ((eglWaitSync = (PFNEGLWAITSYNCPROC)glewGetProcAddress((const GLubyte*)\"eglWaitSync\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_VERSION_1_5 */\r\n\r\n#ifdef EGL_ANDROID_blob_cache\r\n\r\nstatic GLboolean _glewInit_EGL_ANDROID_blob_cache ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSetBlobCacheFuncsANDROID = (PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)glewGetProcAddress((const GLubyte*)\"eglSetBlobCacheFuncsANDROID\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_ANDROID_blob_cache */\r\n\r\n#ifdef EGL_ANDROID_create_native_client_buffer\r\n\r\nstatic GLboolean _glewInit_EGL_ANDROID_create_native_client_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateNativeClientBufferANDROID = (PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC)glewGetProcAddress((const GLubyte*)\"eglCreateNativeClientBufferANDROID\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_ANDROID_create_native_client_buffer */\r\n\r\n#ifdef EGL_ANDROID_native_fence_sync\r\n\r\nstatic GLboolean _glewInit_EGL_ANDROID_native_fence_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglDupNativeFenceFDANDROID = (PFNEGLDUPNATIVEFENCEFDANDROIDPROC)glewGetProcAddress((const GLubyte*)\"eglDupNativeFenceFDANDROID\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_ANDROID_native_fence_sync */\r\n\r\n#ifdef EGL_ANDROID_presentation_time\r\n\r\nstatic GLboolean _glewInit_EGL_ANDROID_presentation_time ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglPresentationTimeANDROID = (PFNEGLPRESENTATIONTIMEANDROIDPROC)glewGetProcAddress((const GLubyte*)\"eglPresentationTimeANDROID\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_ANDROID_presentation_time */\r\n\r\n#ifdef EGL_ANGLE_query_surface_pointer\r\n\r\nstatic GLboolean _glewInit_EGL_ANGLE_query_surface_pointer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQuerySurfacePointerANGLE = (PFNEGLQUERYSURFACEPOINTERANGLEPROC)glewGetProcAddress((const GLubyte*)\"eglQuerySurfacePointerANGLE\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_ANGLE_query_surface_pointer */\r\n\r\n#ifdef EGL_EXT_device_enumeration\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_device_enumeration ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDevicesEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_device_enumeration */\r\n\r\n#ifdef EGL_EXT_device_query\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_device_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryDeviceAttribEXT = (PFNEGLQUERYDEVICEATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDeviceAttribEXT\")) == NULL) || r;\r\n  r = ((eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDeviceStringEXT\")) == NULL) || r;\r\n  r = ((eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDisplayAttribEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_device_query */\r\n\r\n#ifdef EGL_EXT_image_dma_buf_import_modifiers\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_image_dma_buf_import_modifiers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDmaBufFormatsEXT\")) == NULL) || r;\r\n  r = ((eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDmaBufModifiersEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_image_dma_buf_import_modifiers */\r\n\r\n#ifdef EGL_EXT_output_base\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_output_base ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglGetOutputLayersEXT = (PFNEGLGETOUTPUTLAYERSEXTPROC)glewGetProcAddress((const GLubyte*)\"eglGetOutputLayersEXT\")) == NULL) || r;\r\n  r = ((eglGetOutputPortsEXT = (PFNEGLGETOUTPUTPORTSEXTPROC)glewGetProcAddress((const GLubyte*)\"eglGetOutputPortsEXT\")) == NULL) || r;\r\n  r = ((eglOutputLayerAttribEXT = (PFNEGLOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglOutputLayerAttribEXT\")) == NULL) || r;\r\n  r = ((eglOutputPortAttribEXT = (PFNEGLOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglOutputPortAttribEXT\")) == NULL) || r;\r\n  r = ((eglQueryOutputLayerAttribEXT = (PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryOutputLayerAttribEXT\")) == NULL) || r;\r\n  r = ((eglQueryOutputLayerStringEXT = (PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryOutputLayerStringEXT\")) == NULL) || r;\r\n  r = ((eglQueryOutputPortAttribEXT = (PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryOutputPortAttribEXT\")) == NULL) || r;\r\n  r = ((eglQueryOutputPortStringEXT = (PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"eglQueryOutputPortStringEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_output_base */\r\n\r\n#ifdef EGL_EXT_platform_base\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_platform_base ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePlatformPixmapSurfaceEXT\")) == NULL) || r;\r\n  r = ((eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePlatformWindowSurfaceEXT\")) == NULL) || r;\r\n  r = ((eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)glewGetProcAddress((const GLubyte*)\"eglGetPlatformDisplayEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_platform_base */\r\n\r\n#ifdef EGL_EXT_stream_consumer_egloutput\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_stream_consumer_egloutput ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglStreamConsumerOutputEXT = (PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerOutputEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_stream_consumer_egloutput */\r\n\r\n#ifdef EGL_EXT_swap_buffers_with_damage\r\n\r\nstatic GLboolean _glewInit_EGL_EXT_swap_buffers_with_damage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSwapBuffersWithDamageEXT = (PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"eglSwapBuffersWithDamageEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_EXT_swap_buffers_with_damage */\r\n\r\n#ifdef EGL_HI_clientpixmap\r\n\r\nstatic GLboolean _glewInit_EGL_HI_clientpixmap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreatePixmapSurfaceHI = (PFNEGLCREATEPIXMAPSURFACEHIPROC)glewGetProcAddress((const GLubyte*)\"eglCreatePixmapSurfaceHI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_HI_clientpixmap */\r\n\r\n#ifdef EGL_KHR_cl_event2\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_cl_event2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateSync64KHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_cl_event2 */\r\n\r\n#ifdef EGL_KHR_debug\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_debug ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglDebugMessageControlKHR = (PFNEGLDEBUGMESSAGECONTROLKHRPROC)glewGetProcAddress((const GLubyte*)\"eglDebugMessageControlKHR\")) == NULL) || r;\r\n  r = ((eglLabelObjectKHR = (PFNEGLLABELOBJECTKHRPROC)glewGetProcAddress((const GLubyte*)\"eglLabelObjectKHR\")) == NULL) || r;\r\n  r = ((eglQueryDebugKHR = (PFNEGLQUERYDEBUGKHRPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDebugKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_debug */\r\n\r\n#ifdef EGL_KHR_image\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateImageKHR\")) == NULL) || r;\r\n  r = ((eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglDestroyImageKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_image */\r\n\r\n#ifdef EGL_KHR_lock_surface\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_lock_surface ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglLockSurfaceKHR = (PFNEGLLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglLockSurfaceKHR\")) == NULL) || r;\r\n  r = ((eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglUnlockSurfaceKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_lock_surface */\r\n\r\n#ifdef EGL_KHR_lock_surface3\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_lock_surface3 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQuerySurface64KHR = (PFNEGLQUERYSURFACE64KHRPROC)glewGetProcAddress((const GLubyte*)\"eglQuerySurface64KHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_lock_surface3 */\r\n\r\n#ifdef EGL_KHR_partial_update\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_partial_update ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSetDamageRegionKHR = (PFNEGLSETDAMAGEREGIONKHRPROC)glewGetProcAddress((const GLubyte*)\"eglSetDamageRegionKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_partial_update */\r\n\r\n#ifdef EGL_KHR_reusable_sync\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_reusable_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)\"eglClientWaitSyncKHR\")) == NULL) || r;\r\n  r = ((eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateSyncKHR\")) == NULL) || r;\r\n  r = ((eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC)glewGetProcAddress((const GLubyte*)\"eglDestroySyncKHR\")) == NULL) || r;\r\n  r = ((eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglGetSyncAttribKHR\")) == NULL) || r;\r\n  r = ((eglSignalSyncKHR = (PFNEGLSIGNALSYNCKHRPROC)glewGetProcAddress((const GLubyte*)\"eglSignalSyncKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_reusable_sync */\r\n\r\n#ifdef EGL_KHR_stream\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateStreamKHR = (PFNEGLCREATESTREAMKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateStreamKHR\")) == NULL) || r;\r\n  r = ((eglDestroyStreamKHR = (PFNEGLDESTROYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)\"eglDestroyStreamKHR\")) == NULL) || r;\r\n  r = ((eglQueryStreamKHR = (PFNEGLQUERYSTREAMKHRPROC)glewGetProcAddress((const GLubyte*)\"eglQueryStreamKHR\")) == NULL) || r;\r\n  r = ((eglQueryStreamu64KHR = (PFNEGLQUERYSTREAMU64KHRPROC)glewGetProcAddress((const GLubyte*)\"eglQueryStreamu64KHR\")) == NULL) || r;\r\n  r = ((eglStreamAttribKHR = (PFNEGLSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamAttribKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream */\r\n\r\n#ifdef EGL_KHR_stream_attrib\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream_attrib ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateStreamAttribKHR = (PFNEGLCREATESTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateStreamAttribKHR\")) == NULL) || r;\r\n  r = ((eglQueryStreamAttribKHR = (PFNEGLQUERYSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglQueryStreamAttribKHR\")) == NULL) || r;\r\n  r = ((eglSetStreamAttribKHR = (PFNEGLSETSTREAMATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglSetStreamAttribKHR\")) == NULL) || r;\r\n  r = ((eglStreamConsumerAcquireAttribKHR = (PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerAcquireAttribKHR\")) == NULL) || r;\r\n  r = ((eglStreamConsumerReleaseAttribKHR = (PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerReleaseAttribKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream_attrib */\r\n\r\n#ifdef EGL_KHR_stream_consumer_gltexture\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream_consumer_gltexture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglStreamConsumerAcquireKHR = (PFNEGLSTREAMCONSUMERACQUIREKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerAcquireKHR\")) == NULL) || r;\r\n  r = ((eglStreamConsumerGLTextureExternalKHR = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerGLTextureExternalKHR\")) == NULL) || r;\r\n  r = ((eglStreamConsumerReleaseKHR = (PFNEGLSTREAMCONSUMERRELEASEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerReleaseKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream_consumer_gltexture */\r\n\r\n#ifdef EGL_KHR_stream_cross_process_fd\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream_cross_process_fd ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateStreamFromFileDescriptorKHR = (PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateStreamFromFileDescriptorKHR\")) == NULL) || r;\r\n  r = ((eglGetStreamFileDescriptorKHR = (PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)glewGetProcAddress((const GLubyte*)\"eglGetStreamFileDescriptorKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream_cross_process_fd */\r\n\r\n#ifdef EGL_KHR_stream_fifo\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream_fifo ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryStreamTimeKHR = (PFNEGLQUERYSTREAMTIMEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglQueryStreamTimeKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream_fifo */\r\n\r\n#ifdef EGL_KHR_stream_producer_eglsurface\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_stream_producer_eglsurface ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateStreamProducerSurfaceKHR = (PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglCreateStreamProducerSurfaceKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_stream_producer_eglsurface */\r\n\r\n#ifdef EGL_KHR_swap_buffers_with_damage\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_swap_buffers_with_damage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSwapBuffersWithDamageKHR = (PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC)glewGetProcAddress((const GLubyte*)\"eglSwapBuffersWithDamageKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_swap_buffers_with_damage */\r\n\r\n#ifdef EGL_KHR_wait_sync\r\n\r\nstatic GLboolean _glewInit_EGL_KHR_wait_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglWaitSyncKHR = (PFNEGLWAITSYNCKHRPROC)glewGetProcAddress((const GLubyte*)\"eglWaitSyncKHR\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_KHR_wait_sync */\r\n\r\n#ifdef EGL_MESA_drm_image\r\n\r\nstatic GLboolean _glewInit_EGL_MESA_drm_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateDRMImageMESA = (PFNEGLCREATEDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)\"eglCreateDRMImageMESA\")) == NULL) || r;\r\n  r = ((eglExportDRMImageMESA = (PFNEGLEXPORTDRMIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)\"eglExportDRMImageMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_MESA_drm_image */\r\n\r\n#ifdef EGL_MESA_image_dma_buf_export\r\n\r\nstatic GLboolean _glewInit_EGL_MESA_image_dma_buf_export ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglExportDMABUFImageMESA = (PFNEGLEXPORTDMABUFIMAGEMESAPROC)glewGetProcAddress((const GLubyte*)\"eglExportDMABUFImageMESA\")) == NULL) || r;\r\n  r = ((eglExportDMABUFImageQueryMESA = (PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC)glewGetProcAddress((const GLubyte*)\"eglExportDMABUFImageQueryMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_MESA_image_dma_buf_export */\r\n\r\n#ifdef EGL_NOK_swap_region\r\n\r\nstatic GLboolean _glewInit_EGL_NOK_swap_region ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSwapBuffersRegionNOK = (PFNEGLSWAPBUFFERSREGIONNOKPROC)glewGetProcAddress((const GLubyte*)\"eglSwapBuffersRegionNOK\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NOK_swap_region */\r\n\r\n#ifdef EGL_NOK_swap_region2\r\n\r\nstatic GLboolean _glewInit_EGL_NOK_swap_region2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglSwapBuffersRegion2NOK = (PFNEGLSWAPBUFFERSREGION2NOKPROC)glewGetProcAddress((const GLubyte*)\"eglSwapBuffersRegion2NOK\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NOK_swap_region2 */\r\n\r\n#ifdef EGL_NV_native_query\r\n\r\nstatic GLboolean _glewInit_EGL_NV_native_query ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryNativeDisplayNV = (PFNEGLQUERYNATIVEDISPLAYNVPROC)glewGetProcAddress((const GLubyte*)\"eglQueryNativeDisplayNV\")) == NULL) || r;\r\n  r = ((eglQueryNativePixmapNV = (PFNEGLQUERYNATIVEPIXMAPNVPROC)glewGetProcAddress((const GLubyte*)\"eglQueryNativePixmapNV\")) == NULL) || r;\r\n  r = ((eglQueryNativeWindowNV = (PFNEGLQUERYNATIVEWINDOWNVPROC)glewGetProcAddress((const GLubyte*)\"eglQueryNativeWindowNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_native_query */\r\n\r\n#ifdef EGL_NV_post_sub_buffer\r\n\r\nstatic GLboolean _glewInit_EGL_NV_post_sub_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglPostSubBufferNV = (PFNEGLPOSTSUBBUFFERNVPROC)glewGetProcAddress((const GLubyte*)\"eglPostSubBufferNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_post_sub_buffer */\r\n\r\n#ifdef EGL_NV_stream_consumer_gltexture_yuv\r\n\r\nstatic GLboolean _glewInit_EGL_NV_stream_consumer_gltexture_yuv ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglStreamConsumerGLTextureExternalAttribsNV = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)\"eglStreamConsumerGLTextureExternalAttribsNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_stream_consumer_gltexture_yuv */\r\n\r\n#ifdef EGL_NV_stream_metadata\r\n\r\nstatic GLboolean _glewInit_EGL_NV_stream_metadata ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglQueryDisplayAttribNV = (PFNEGLQUERYDISPLAYATTRIBNVPROC)glewGetProcAddress((const GLubyte*)\"eglQueryDisplayAttribNV\")) == NULL) || r;\r\n  r = ((eglQueryStreamMetadataNV = (PFNEGLQUERYSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)\"eglQueryStreamMetadataNV\")) == NULL) || r;\r\n  r = ((eglSetStreamMetadataNV = (PFNEGLSETSTREAMMETADATANVPROC)glewGetProcAddress((const GLubyte*)\"eglSetStreamMetadataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_stream_metadata */\r\n\r\n#ifdef EGL_NV_stream_reset\r\n\r\nstatic GLboolean _glewInit_EGL_NV_stream_reset ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglResetStreamNV = (PFNEGLRESETSTREAMNVPROC)glewGetProcAddress((const GLubyte*)\"eglResetStreamNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_stream_reset */\r\n\r\n#ifdef EGL_NV_stream_sync\r\n\r\nstatic GLboolean _glewInit_EGL_NV_stream_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglCreateStreamSyncNV = (PFNEGLCREATESTREAMSYNCNVPROC)glewGetProcAddress((const GLubyte*)\"eglCreateStreamSyncNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_stream_sync */\r\n\r\n#ifdef EGL_NV_sync\r\n\r\nstatic GLboolean _glewInit_EGL_NV_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglClientWaitSyncNV = (PFNEGLCLIENTWAITSYNCNVPROC)glewGetProcAddress((const GLubyte*)\"eglClientWaitSyncNV\")) == NULL) || r;\r\n  r = ((eglCreateFenceSyncNV = (PFNEGLCREATEFENCESYNCNVPROC)glewGetProcAddress((const GLubyte*)\"eglCreateFenceSyncNV\")) == NULL) || r;\r\n  r = ((eglDestroySyncNV = (PFNEGLDESTROYSYNCNVPROC)glewGetProcAddress((const GLubyte*)\"eglDestroySyncNV\")) == NULL) || r;\r\n  r = ((eglFenceNV = (PFNEGLFENCENVPROC)glewGetProcAddress((const GLubyte*)\"eglFenceNV\")) == NULL) || r;\r\n  r = ((eglGetSyncAttribNV = (PFNEGLGETSYNCATTRIBNVPROC)glewGetProcAddress((const GLubyte*)\"eglGetSyncAttribNV\")) == NULL) || r;\r\n  r = ((eglSignalSyncNV = (PFNEGLSIGNALSYNCNVPROC)glewGetProcAddress((const GLubyte*)\"eglSignalSyncNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_sync */\r\n\r\n#ifdef EGL_NV_system_time\r\n\r\nstatic GLboolean _glewInit_EGL_NV_system_time ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)glewGetProcAddress((const GLubyte*)\"eglGetSystemTimeFrequencyNV\")) == NULL) || r;\r\n  r = ((eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC)glewGetProcAddress((const GLubyte*)\"eglGetSystemTimeNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* EGL_NV_system_time */\r\n\r\n  /* ------------------------------------------------------------------------ */\r\n\r\nGLboolean eglewGetExtension (const char* name)\r\n{\r\n  const GLubyte* start;\r\n  const GLubyte* end;\r\n\r\n  start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS);\r\n  if (0 == start) return GL_FALSE;\r\n  end = start + _glewStrLen(start);\r\n  return _glewSearchExtension(name, start, end);\r\n}\r\n\r\nGLenum eglewInit (EGLDisplay display)\r\n{\r\n  EGLint major, minor;\r\n  const GLubyte* extStart;\r\n  const GLubyte* extEnd;\r\n  PFNEGLINITIALIZEPROC initialize = NULL;\r\n  PFNEGLQUERYSTRINGPROC queryString = NULL;\r\n\r\n  /* Load necessary entry points */\r\n  initialize = (PFNEGLINITIALIZEPROC)   glewGetProcAddress(\"eglInitialize\");\r\n  queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress(\"eglQueryString\");\r\n  if (!initialize || !queryString)\r\n    return 1;\r\n\r\n  /* query EGK version */\r\n  if (initialize(display, &major, &minor) != EGL_TRUE)\r\n    return 1;\r\n\r\n  EGLEW_VERSION_1_5   = ( major > 1 )                || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;\r\n  EGLEW_VERSION_1_4   = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;\r\n  EGLEW_VERSION_1_3   = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;\r\n  EGLEW_VERSION_1_2   = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;\r\n  EGLEW_VERSION_1_1   = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;\r\n  EGLEW_VERSION_1_0   = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE;\r\n\r\n  /* query EGL extension string */\r\n  extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS);\r\n  if (extStart == 0)\r\n    extStart = (const GLubyte *)\"\";\r\n  extEnd = extStart + _glewStrLen(extStart);\r\n\r\n  /* initialize extensions */\r\n#ifdef EGL_VERSION_1_0\r\n  if (glewExperimental || EGLEW_VERSION_1_0) EGLEW_VERSION_1_0 = !_glewInit_EGL_VERSION_1_0();\r\n#endif /* EGL_VERSION_1_0 */\r\n#ifdef EGL_VERSION_1_1\r\n  if (glewExperimental || EGLEW_VERSION_1_1) EGLEW_VERSION_1_1 = !_glewInit_EGL_VERSION_1_1();\r\n#endif /* EGL_VERSION_1_1 */\r\n#ifdef EGL_VERSION_1_2\r\n  if (glewExperimental || EGLEW_VERSION_1_2) EGLEW_VERSION_1_2 = !_glewInit_EGL_VERSION_1_2();\r\n#endif /* EGL_VERSION_1_2 */\r\n#ifdef EGL_VERSION_1_4\r\n  if (glewExperimental || EGLEW_VERSION_1_4) EGLEW_VERSION_1_4 = !_glewInit_EGL_VERSION_1_4();\r\n#endif /* EGL_VERSION_1_4 */\r\n#ifdef EGL_VERSION_1_5\r\n  if (glewExperimental || EGLEW_VERSION_1_5) EGLEW_VERSION_1_5 = !_glewInit_EGL_VERSION_1_5();\r\n#endif /* EGL_VERSION_1_5 */\r\n#ifdef EGL_ANDROID_blob_cache\r\n  EGLEW_ANDROID_blob_cache = _glewSearchExtension(\"EGL_ANDROID_blob_cache\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_ANDROID_blob_cache) EGLEW_ANDROID_blob_cache = !_glewInit_EGL_ANDROID_blob_cache();\r\n#endif /* EGL_ANDROID_blob_cache */\r\n#ifdef EGL_ANDROID_create_native_client_buffer\r\n  EGLEW_ANDROID_create_native_client_buffer = _glewSearchExtension(\"EGL_ANDROID_create_native_client_buffer\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_ANDROID_create_native_client_buffer) EGLEW_ANDROID_create_native_client_buffer = !_glewInit_EGL_ANDROID_create_native_client_buffer();\r\n#endif /* EGL_ANDROID_create_native_client_buffer */\r\n#ifdef EGL_ANDROID_framebuffer_target\r\n  EGLEW_ANDROID_framebuffer_target = _glewSearchExtension(\"EGL_ANDROID_framebuffer_target\", extStart, extEnd);\r\n#endif /* EGL_ANDROID_framebuffer_target */\r\n#ifdef EGL_ANDROID_front_buffer_auto_refresh\r\n  EGLEW_ANDROID_front_buffer_auto_refresh = _glewSearchExtension(\"EGL_ANDROID_front_buffer_auto_refresh\", extStart, extEnd);\r\n#endif /* EGL_ANDROID_front_buffer_auto_refresh */\r\n#ifdef EGL_ANDROID_image_native_buffer\r\n  EGLEW_ANDROID_image_native_buffer = _glewSearchExtension(\"EGL_ANDROID_image_native_buffer\", extStart, extEnd);\r\n#endif /* EGL_ANDROID_image_native_buffer */\r\n#ifdef EGL_ANDROID_native_fence_sync\r\n  EGLEW_ANDROID_native_fence_sync = _glewSearchExtension(\"EGL_ANDROID_native_fence_sync\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_ANDROID_native_fence_sync) EGLEW_ANDROID_native_fence_sync = !_glewInit_EGL_ANDROID_native_fence_sync();\r\n#endif /* EGL_ANDROID_native_fence_sync */\r\n#ifdef EGL_ANDROID_presentation_time\r\n  EGLEW_ANDROID_presentation_time = _glewSearchExtension(\"EGL_ANDROID_presentation_time\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_ANDROID_presentation_time) EGLEW_ANDROID_presentation_time = !_glewInit_EGL_ANDROID_presentation_time();\r\n#endif /* EGL_ANDROID_presentation_time */\r\n#ifdef EGL_ANDROID_recordable\r\n  EGLEW_ANDROID_recordable = _glewSearchExtension(\"EGL_ANDROID_recordable\", extStart, extEnd);\r\n#endif /* EGL_ANDROID_recordable */\r\n#ifdef EGL_ANGLE_d3d_share_handle_client_buffer\r\n  EGLEW_ANGLE_d3d_share_handle_client_buffer = _glewSearchExtension(\"EGL_ANGLE_d3d_share_handle_client_buffer\", extStart, extEnd);\r\n#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */\r\n#ifdef EGL_ANGLE_device_d3d\r\n  EGLEW_ANGLE_device_d3d = _glewSearchExtension(\"EGL_ANGLE_device_d3d\", extStart, extEnd);\r\n#endif /* EGL_ANGLE_device_d3d */\r\n#ifdef EGL_ANGLE_query_surface_pointer\r\n  EGLEW_ANGLE_query_surface_pointer = _glewSearchExtension(\"EGL_ANGLE_query_surface_pointer\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_ANGLE_query_surface_pointer) EGLEW_ANGLE_query_surface_pointer = !_glewInit_EGL_ANGLE_query_surface_pointer();\r\n#endif /* EGL_ANGLE_query_surface_pointer */\r\n#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle\r\n  EGLEW_ANGLE_surface_d3d_texture_2d_share_handle = _glewSearchExtension(\"EGL_ANGLE_surface_d3d_texture_2d_share_handle\", extStart, extEnd);\r\n#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */\r\n#ifdef EGL_ANGLE_window_fixed_size\r\n  EGLEW_ANGLE_window_fixed_size = _glewSearchExtension(\"EGL_ANGLE_window_fixed_size\", extStart, extEnd);\r\n#endif /* EGL_ANGLE_window_fixed_size */\r\n#ifdef EGL_ARM_implicit_external_sync\r\n  EGLEW_ARM_implicit_external_sync = _glewSearchExtension(\"EGL_ARM_implicit_external_sync\", extStart, extEnd);\r\n#endif /* EGL_ARM_implicit_external_sync */\r\n#ifdef EGL_ARM_pixmap_multisample_discard\r\n  EGLEW_ARM_pixmap_multisample_discard = _glewSearchExtension(\"EGL_ARM_pixmap_multisample_discard\", extStart, extEnd);\r\n#endif /* EGL_ARM_pixmap_multisample_discard */\r\n#ifdef EGL_EXT_buffer_age\r\n  EGLEW_EXT_buffer_age = _glewSearchExtension(\"EGL_EXT_buffer_age\", extStart, extEnd);\r\n#endif /* EGL_EXT_buffer_age */\r\n#ifdef EGL_EXT_client_extensions\r\n  EGLEW_EXT_client_extensions = _glewSearchExtension(\"EGL_EXT_client_extensions\", extStart, extEnd);\r\n#endif /* EGL_EXT_client_extensions */\r\n#ifdef EGL_EXT_create_context_robustness\r\n  EGLEW_EXT_create_context_robustness = _glewSearchExtension(\"EGL_EXT_create_context_robustness\", extStart, extEnd);\r\n#endif /* EGL_EXT_create_context_robustness */\r\n#ifdef EGL_EXT_device_base\r\n  EGLEW_EXT_device_base = _glewSearchExtension(\"EGL_EXT_device_base\", extStart, extEnd);\r\n#endif /* EGL_EXT_device_base */\r\n#ifdef EGL_EXT_device_drm\r\n  EGLEW_EXT_device_drm = _glewSearchExtension(\"EGL_EXT_device_drm\", extStart, extEnd);\r\n#endif /* EGL_EXT_device_drm */\r\n#ifdef EGL_EXT_device_enumeration\r\n  EGLEW_EXT_device_enumeration = _glewSearchExtension(\"EGL_EXT_device_enumeration\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_device_enumeration) EGLEW_EXT_device_enumeration = !_glewInit_EGL_EXT_device_enumeration();\r\n#endif /* EGL_EXT_device_enumeration */\r\n#ifdef EGL_EXT_device_openwf\r\n  EGLEW_EXT_device_openwf = _glewSearchExtension(\"EGL_EXT_device_openwf\", extStart, extEnd);\r\n#endif /* EGL_EXT_device_openwf */\r\n#ifdef EGL_EXT_device_query\r\n  EGLEW_EXT_device_query = _glewSearchExtension(\"EGL_EXT_device_query\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_device_query) EGLEW_EXT_device_query = !_glewInit_EGL_EXT_device_query();\r\n#endif /* EGL_EXT_device_query */\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_linear\r\n  EGLEW_EXT_gl_colorspace_bt2020_linear = _glewSearchExtension(\"EGL_EXT_gl_colorspace_bt2020_linear\", extStart, extEnd);\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_linear */\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_pq\r\n  EGLEW_EXT_gl_colorspace_bt2020_pq = _glewSearchExtension(\"EGL_EXT_gl_colorspace_bt2020_pq\", extStart, extEnd);\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_pq */\r\n#ifdef EGL_EXT_gl_colorspace_scrgb_linear\r\n  EGLEW_EXT_gl_colorspace_scrgb_linear = _glewSearchExtension(\"EGL_EXT_gl_colorspace_scrgb_linear\", extStart, extEnd);\r\n#endif /* EGL_EXT_gl_colorspace_scrgb_linear */\r\n#ifdef EGL_EXT_image_dma_buf_import\r\n  EGLEW_EXT_image_dma_buf_import = _glewSearchExtension(\"EGL_EXT_image_dma_buf_import\", extStart, extEnd);\r\n#endif /* EGL_EXT_image_dma_buf_import */\r\n#ifdef EGL_EXT_image_dma_buf_import_modifiers\r\n  EGLEW_EXT_image_dma_buf_import_modifiers = _glewSearchExtension(\"EGL_EXT_image_dma_buf_import_modifiers\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_image_dma_buf_import_modifiers) EGLEW_EXT_image_dma_buf_import_modifiers = !_glewInit_EGL_EXT_image_dma_buf_import_modifiers();\r\n#endif /* EGL_EXT_image_dma_buf_import_modifiers */\r\n#ifdef EGL_EXT_multiview_window\r\n  EGLEW_EXT_multiview_window = _glewSearchExtension(\"EGL_EXT_multiview_window\", extStart, extEnd);\r\n#endif /* EGL_EXT_multiview_window */\r\n#ifdef EGL_EXT_output_base\r\n  EGLEW_EXT_output_base = _glewSearchExtension(\"EGL_EXT_output_base\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_output_base) EGLEW_EXT_output_base = !_glewInit_EGL_EXT_output_base();\r\n#endif /* EGL_EXT_output_base */\r\n#ifdef EGL_EXT_output_drm\r\n  EGLEW_EXT_output_drm = _glewSearchExtension(\"EGL_EXT_output_drm\", extStart, extEnd);\r\n#endif /* EGL_EXT_output_drm */\r\n#ifdef EGL_EXT_output_openwf\r\n  EGLEW_EXT_output_openwf = _glewSearchExtension(\"EGL_EXT_output_openwf\", extStart, extEnd);\r\n#endif /* EGL_EXT_output_openwf */\r\n#ifdef EGL_EXT_pixel_format_float\r\n  EGLEW_EXT_pixel_format_float = _glewSearchExtension(\"EGL_EXT_pixel_format_float\", extStart, extEnd);\r\n#endif /* EGL_EXT_pixel_format_float */\r\n#ifdef EGL_EXT_platform_base\r\n  EGLEW_EXT_platform_base = _glewSearchExtension(\"EGL_EXT_platform_base\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_platform_base) EGLEW_EXT_platform_base = !_glewInit_EGL_EXT_platform_base();\r\n#endif /* EGL_EXT_platform_base */\r\n#ifdef EGL_EXT_platform_device\r\n  EGLEW_EXT_platform_device = _glewSearchExtension(\"EGL_EXT_platform_device\", extStart, extEnd);\r\n#endif /* EGL_EXT_platform_device */\r\n#ifdef EGL_EXT_platform_wayland\r\n  EGLEW_EXT_platform_wayland = _glewSearchExtension(\"EGL_EXT_platform_wayland\", extStart, extEnd);\r\n#endif /* EGL_EXT_platform_wayland */\r\n#ifdef EGL_EXT_platform_x11\r\n  EGLEW_EXT_platform_x11 = _glewSearchExtension(\"EGL_EXT_platform_x11\", extStart, extEnd);\r\n#endif /* EGL_EXT_platform_x11 */\r\n#ifdef EGL_EXT_protected_content\r\n  EGLEW_EXT_protected_content = _glewSearchExtension(\"EGL_EXT_protected_content\", extStart, extEnd);\r\n#endif /* EGL_EXT_protected_content */\r\n#ifdef EGL_EXT_protected_surface\r\n  EGLEW_EXT_protected_surface = _glewSearchExtension(\"EGL_EXT_protected_surface\", extStart, extEnd);\r\n#endif /* EGL_EXT_protected_surface */\r\n#ifdef EGL_EXT_stream_consumer_egloutput\r\n  EGLEW_EXT_stream_consumer_egloutput = _glewSearchExtension(\"EGL_EXT_stream_consumer_egloutput\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_stream_consumer_egloutput) EGLEW_EXT_stream_consumer_egloutput = !_glewInit_EGL_EXT_stream_consumer_egloutput();\r\n#endif /* EGL_EXT_stream_consumer_egloutput */\r\n#ifdef EGL_EXT_surface_SMPTE2086_metadata\r\n  EGLEW_EXT_surface_SMPTE2086_metadata = _glewSearchExtension(\"EGL_EXT_surface_SMPTE2086_metadata\", extStart, extEnd);\r\n#endif /* EGL_EXT_surface_SMPTE2086_metadata */\r\n#ifdef EGL_EXT_swap_buffers_with_damage\r\n  EGLEW_EXT_swap_buffers_with_damage = _glewSearchExtension(\"EGL_EXT_swap_buffers_with_damage\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_EXT_swap_buffers_with_damage) EGLEW_EXT_swap_buffers_with_damage = !_glewInit_EGL_EXT_swap_buffers_with_damage();\r\n#endif /* EGL_EXT_swap_buffers_with_damage */\r\n#ifdef EGL_EXT_yuv_surface\r\n  EGLEW_EXT_yuv_surface = _glewSearchExtension(\"EGL_EXT_yuv_surface\", extStart, extEnd);\r\n#endif /* EGL_EXT_yuv_surface */\r\n#ifdef EGL_HI_clientpixmap\r\n  EGLEW_HI_clientpixmap = _glewSearchExtension(\"EGL_HI_clientpixmap\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_HI_clientpixmap) EGLEW_HI_clientpixmap = !_glewInit_EGL_HI_clientpixmap();\r\n#endif /* EGL_HI_clientpixmap */\r\n#ifdef EGL_HI_colorformats\r\n  EGLEW_HI_colorformats = _glewSearchExtension(\"EGL_HI_colorformats\", extStart, extEnd);\r\n#endif /* EGL_HI_colorformats */\r\n#ifdef EGL_IMG_context_priority\r\n  EGLEW_IMG_context_priority = _glewSearchExtension(\"EGL_IMG_context_priority\", extStart, extEnd);\r\n#endif /* EGL_IMG_context_priority */\r\n#ifdef EGL_IMG_image_plane_attribs\r\n  EGLEW_IMG_image_plane_attribs = _glewSearchExtension(\"EGL_IMG_image_plane_attribs\", extStart, extEnd);\r\n#endif /* EGL_IMG_image_plane_attribs */\r\n#ifdef EGL_KHR_cl_event\r\n  EGLEW_KHR_cl_event = _glewSearchExtension(\"EGL_KHR_cl_event\", extStart, extEnd);\r\n#endif /* EGL_KHR_cl_event */\r\n#ifdef EGL_KHR_cl_event2\r\n  EGLEW_KHR_cl_event2 = _glewSearchExtension(\"EGL_KHR_cl_event2\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_cl_event2) EGLEW_KHR_cl_event2 = !_glewInit_EGL_KHR_cl_event2();\r\n#endif /* EGL_KHR_cl_event2 */\r\n#ifdef EGL_KHR_client_get_all_proc_addresses\r\n  EGLEW_KHR_client_get_all_proc_addresses = _glewSearchExtension(\"EGL_KHR_client_get_all_proc_addresses\", extStart, extEnd);\r\n#endif /* EGL_KHR_client_get_all_proc_addresses */\r\n#ifdef EGL_KHR_config_attribs\r\n  EGLEW_KHR_config_attribs = _glewSearchExtension(\"EGL_KHR_config_attribs\", extStart, extEnd);\r\n#endif /* EGL_KHR_config_attribs */\r\n#ifdef EGL_KHR_context_flush_control\r\n  EGLEW_KHR_context_flush_control = _glewSearchExtension(\"EGL_KHR_context_flush_control\", extStart, extEnd);\r\n#endif /* EGL_KHR_context_flush_control */\r\n#ifdef EGL_KHR_create_context\r\n  EGLEW_KHR_create_context = _glewSearchExtension(\"EGL_KHR_create_context\", extStart, extEnd);\r\n#endif /* EGL_KHR_create_context */\r\n#ifdef EGL_KHR_create_context_no_error\r\n  EGLEW_KHR_create_context_no_error = _glewSearchExtension(\"EGL_KHR_create_context_no_error\", extStart, extEnd);\r\n#endif /* EGL_KHR_create_context_no_error */\r\n#ifdef EGL_KHR_debug\r\n  EGLEW_KHR_debug = _glewSearchExtension(\"EGL_KHR_debug\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_debug) EGLEW_KHR_debug = !_glewInit_EGL_KHR_debug();\r\n#endif /* EGL_KHR_debug */\r\n#ifdef EGL_KHR_fence_sync\r\n  EGLEW_KHR_fence_sync = _glewSearchExtension(\"EGL_KHR_fence_sync\", extStart, extEnd);\r\n#endif /* EGL_KHR_fence_sync */\r\n#ifdef EGL_KHR_get_all_proc_addresses\r\n  EGLEW_KHR_get_all_proc_addresses = _glewSearchExtension(\"EGL_KHR_get_all_proc_addresses\", extStart, extEnd);\r\n#endif /* EGL_KHR_get_all_proc_addresses */\r\n#ifdef EGL_KHR_gl_colorspace\r\n  EGLEW_KHR_gl_colorspace = _glewSearchExtension(\"EGL_KHR_gl_colorspace\", extStart, extEnd);\r\n#endif /* EGL_KHR_gl_colorspace */\r\n#ifdef EGL_KHR_gl_renderbuffer_image\r\n  EGLEW_KHR_gl_renderbuffer_image = _glewSearchExtension(\"EGL_KHR_gl_renderbuffer_image\", extStart, extEnd);\r\n#endif /* EGL_KHR_gl_renderbuffer_image */\r\n#ifdef EGL_KHR_gl_texture_2D_image\r\n  EGLEW_KHR_gl_texture_2D_image = _glewSearchExtension(\"EGL_KHR_gl_texture_2D_image\", extStart, extEnd);\r\n#endif /* EGL_KHR_gl_texture_2D_image */\r\n#ifdef EGL_KHR_gl_texture_3D_image\r\n  EGLEW_KHR_gl_texture_3D_image = _glewSearchExtension(\"EGL_KHR_gl_texture_3D_image\", extStart, extEnd);\r\n#endif /* EGL_KHR_gl_texture_3D_image */\r\n#ifdef EGL_KHR_gl_texture_cubemap_image\r\n  EGLEW_KHR_gl_texture_cubemap_image = _glewSearchExtension(\"EGL_KHR_gl_texture_cubemap_image\", extStart, extEnd);\r\n#endif /* EGL_KHR_gl_texture_cubemap_image */\r\n#ifdef EGL_KHR_image\r\n  EGLEW_KHR_image = _glewSearchExtension(\"EGL_KHR_image\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_image) EGLEW_KHR_image = !_glewInit_EGL_KHR_image();\r\n#endif /* EGL_KHR_image */\r\n#ifdef EGL_KHR_image_base\r\n  EGLEW_KHR_image_base = _glewSearchExtension(\"EGL_KHR_image_base\", extStart, extEnd);\r\n#endif /* EGL_KHR_image_base */\r\n#ifdef EGL_KHR_image_pixmap\r\n  EGLEW_KHR_image_pixmap = _glewSearchExtension(\"EGL_KHR_image_pixmap\", extStart, extEnd);\r\n#endif /* EGL_KHR_image_pixmap */\r\n#ifdef EGL_KHR_lock_surface\r\n  EGLEW_KHR_lock_surface = _glewSearchExtension(\"EGL_KHR_lock_surface\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_lock_surface) EGLEW_KHR_lock_surface = !_glewInit_EGL_KHR_lock_surface();\r\n#endif /* EGL_KHR_lock_surface */\r\n#ifdef EGL_KHR_lock_surface2\r\n  EGLEW_KHR_lock_surface2 = _glewSearchExtension(\"EGL_KHR_lock_surface2\", extStart, extEnd);\r\n#endif /* EGL_KHR_lock_surface2 */\r\n#ifdef EGL_KHR_lock_surface3\r\n  EGLEW_KHR_lock_surface3 = _glewSearchExtension(\"EGL_KHR_lock_surface3\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_lock_surface3) EGLEW_KHR_lock_surface3 = !_glewInit_EGL_KHR_lock_surface3();\r\n#endif /* EGL_KHR_lock_surface3 */\r\n#ifdef EGL_KHR_mutable_render_buffer\r\n  EGLEW_KHR_mutable_render_buffer = _glewSearchExtension(\"EGL_KHR_mutable_render_buffer\", extStart, extEnd);\r\n#endif /* EGL_KHR_mutable_render_buffer */\r\n#ifdef EGL_KHR_no_config_context\r\n  EGLEW_KHR_no_config_context = _glewSearchExtension(\"EGL_KHR_no_config_context\", extStart, extEnd);\r\n#endif /* EGL_KHR_no_config_context */\r\n#ifdef EGL_KHR_partial_update\r\n  EGLEW_KHR_partial_update = _glewSearchExtension(\"EGL_KHR_partial_update\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_partial_update) EGLEW_KHR_partial_update = !_glewInit_EGL_KHR_partial_update();\r\n#endif /* EGL_KHR_partial_update */\r\n#ifdef EGL_KHR_platform_android\r\n  EGLEW_KHR_platform_android = _glewSearchExtension(\"EGL_KHR_platform_android\", extStart, extEnd);\r\n#endif /* EGL_KHR_platform_android */\r\n#ifdef EGL_KHR_platform_gbm\r\n  EGLEW_KHR_platform_gbm = _glewSearchExtension(\"EGL_KHR_platform_gbm\", extStart, extEnd);\r\n#endif /* EGL_KHR_platform_gbm */\r\n#ifdef EGL_KHR_platform_wayland\r\n  EGLEW_KHR_platform_wayland = _glewSearchExtension(\"EGL_KHR_platform_wayland\", extStart, extEnd);\r\n#endif /* EGL_KHR_platform_wayland */\r\n#ifdef EGL_KHR_platform_x11\r\n  EGLEW_KHR_platform_x11 = _glewSearchExtension(\"EGL_KHR_platform_x11\", extStart, extEnd);\r\n#endif /* EGL_KHR_platform_x11 */\r\n#ifdef EGL_KHR_reusable_sync\r\n  EGLEW_KHR_reusable_sync = _glewSearchExtension(\"EGL_KHR_reusable_sync\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_reusable_sync) EGLEW_KHR_reusable_sync = !_glewInit_EGL_KHR_reusable_sync();\r\n#endif /* EGL_KHR_reusable_sync */\r\n#ifdef EGL_KHR_stream\r\n  EGLEW_KHR_stream = _glewSearchExtension(\"EGL_KHR_stream\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream) EGLEW_KHR_stream = !_glewInit_EGL_KHR_stream();\r\n#endif /* EGL_KHR_stream */\r\n#ifdef EGL_KHR_stream_attrib\r\n  EGLEW_KHR_stream_attrib = _glewSearchExtension(\"EGL_KHR_stream_attrib\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream_attrib) EGLEW_KHR_stream_attrib = !_glewInit_EGL_KHR_stream_attrib();\r\n#endif /* EGL_KHR_stream_attrib */\r\n#ifdef EGL_KHR_stream_consumer_gltexture\r\n  EGLEW_KHR_stream_consumer_gltexture = _glewSearchExtension(\"EGL_KHR_stream_consumer_gltexture\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream_consumer_gltexture) EGLEW_KHR_stream_consumer_gltexture = !_glewInit_EGL_KHR_stream_consumer_gltexture();\r\n#endif /* EGL_KHR_stream_consumer_gltexture */\r\n#ifdef EGL_KHR_stream_cross_process_fd\r\n  EGLEW_KHR_stream_cross_process_fd = _glewSearchExtension(\"EGL_KHR_stream_cross_process_fd\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream_cross_process_fd) EGLEW_KHR_stream_cross_process_fd = !_glewInit_EGL_KHR_stream_cross_process_fd();\r\n#endif /* EGL_KHR_stream_cross_process_fd */\r\n#ifdef EGL_KHR_stream_fifo\r\n  EGLEW_KHR_stream_fifo = _glewSearchExtension(\"EGL_KHR_stream_fifo\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream_fifo) EGLEW_KHR_stream_fifo = !_glewInit_EGL_KHR_stream_fifo();\r\n#endif /* EGL_KHR_stream_fifo */\r\n#ifdef EGL_KHR_stream_producer_aldatalocator\r\n  EGLEW_KHR_stream_producer_aldatalocator = _glewSearchExtension(\"EGL_KHR_stream_producer_aldatalocator\", extStart, extEnd);\r\n#endif /* EGL_KHR_stream_producer_aldatalocator */\r\n#ifdef EGL_KHR_stream_producer_eglsurface\r\n  EGLEW_KHR_stream_producer_eglsurface = _glewSearchExtension(\"EGL_KHR_stream_producer_eglsurface\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_stream_producer_eglsurface) EGLEW_KHR_stream_producer_eglsurface = !_glewInit_EGL_KHR_stream_producer_eglsurface();\r\n#endif /* EGL_KHR_stream_producer_eglsurface */\r\n#ifdef EGL_KHR_surfaceless_context\r\n  EGLEW_KHR_surfaceless_context = _glewSearchExtension(\"EGL_KHR_surfaceless_context\", extStart, extEnd);\r\n#endif /* EGL_KHR_surfaceless_context */\r\n#ifdef EGL_KHR_swap_buffers_with_damage\r\n  EGLEW_KHR_swap_buffers_with_damage = _glewSearchExtension(\"EGL_KHR_swap_buffers_with_damage\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_swap_buffers_with_damage) EGLEW_KHR_swap_buffers_with_damage = !_glewInit_EGL_KHR_swap_buffers_with_damage();\r\n#endif /* EGL_KHR_swap_buffers_with_damage */\r\n#ifdef EGL_KHR_vg_parent_image\r\n  EGLEW_KHR_vg_parent_image = _glewSearchExtension(\"EGL_KHR_vg_parent_image\", extStart, extEnd);\r\n#endif /* EGL_KHR_vg_parent_image */\r\n#ifdef EGL_KHR_wait_sync\r\n  EGLEW_KHR_wait_sync = _glewSearchExtension(\"EGL_KHR_wait_sync\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_KHR_wait_sync) EGLEW_KHR_wait_sync = !_glewInit_EGL_KHR_wait_sync();\r\n#endif /* EGL_KHR_wait_sync */\r\n#ifdef EGL_MESA_drm_image\r\n  EGLEW_MESA_drm_image = _glewSearchExtension(\"EGL_MESA_drm_image\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_MESA_drm_image) EGLEW_MESA_drm_image = !_glewInit_EGL_MESA_drm_image();\r\n#endif /* EGL_MESA_drm_image */\r\n#ifdef EGL_MESA_image_dma_buf_export\r\n  EGLEW_MESA_image_dma_buf_export = _glewSearchExtension(\"EGL_MESA_image_dma_buf_export\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_MESA_image_dma_buf_export) EGLEW_MESA_image_dma_buf_export = !_glewInit_EGL_MESA_image_dma_buf_export();\r\n#endif /* EGL_MESA_image_dma_buf_export */\r\n#ifdef EGL_MESA_platform_gbm\r\n  EGLEW_MESA_platform_gbm = _glewSearchExtension(\"EGL_MESA_platform_gbm\", extStart, extEnd);\r\n#endif /* EGL_MESA_platform_gbm */\r\n#ifdef EGL_MESA_platform_surfaceless\r\n  EGLEW_MESA_platform_surfaceless = _glewSearchExtension(\"EGL_MESA_platform_surfaceless\", extStart, extEnd);\r\n#endif /* EGL_MESA_platform_surfaceless */\r\n#ifdef EGL_NOK_swap_region\r\n  EGLEW_NOK_swap_region = _glewSearchExtension(\"EGL_NOK_swap_region\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NOK_swap_region) EGLEW_NOK_swap_region = !_glewInit_EGL_NOK_swap_region();\r\n#endif /* EGL_NOK_swap_region */\r\n#ifdef EGL_NOK_swap_region2\r\n  EGLEW_NOK_swap_region2 = _glewSearchExtension(\"EGL_NOK_swap_region2\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NOK_swap_region2) EGLEW_NOK_swap_region2 = !_glewInit_EGL_NOK_swap_region2();\r\n#endif /* EGL_NOK_swap_region2 */\r\n#ifdef EGL_NOK_texture_from_pixmap\r\n  EGLEW_NOK_texture_from_pixmap = _glewSearchExtension(\"EGL_NOK_texture_from_pixmap\", extStart, extEnd);\r\n#endif /* EGL_NOK_texture_from_pixmap */\r\n#ifdef EGL_NV_3dvision_surface\r\n  EGLEW_NV_3dvision_surface = _glewSearchExtension(\"EGL_NV_3dvision_surface\", extStart, extEnd);\r\n#endif /* EGL_NV_3dvision_surface */\r\n#ifdef EGL_NV_coverage_sample\r\n  EGLEW_NV_coverage_sample = _glewSearchExtension(\"EGL_NV_coverage_sample\", extStart, extEnd);\r\n#endif /* EGL_NV_coverage_sample */\r\n#ifdef EGL_NV_coverage_sample_resolve\r\n  EGLEW_NV_coverage_sample_resolve = _glewSearchExtension(\"EGL_NV_coverage_sample_resolve\", extStart, extEnd);\r\n#endif /* EGL_NV_coverage_sample_resolve */\r\n#ifdef EGL_NV_cuda_event\r\n  EGLEW_NV_cuda_event = _glewSearchExtension(\"EGL_NV_cuda_event\", extStart, extEnd);\r\n#endif /* EGL_NV_cuda_event */\r\n#ifdef EGL_NV_depth_nonlinear\r\n  EGLEW_NV_depth_nonlinear = _glewSearchExtension(\"EGL_NV_depth_nonlinear\", extStart, extEnd);\r\n#endif /* EGL_NV_depth_nonlinear */\r\n#ifdef EGL_NV_device_cuda\r\n  EGLEW_NV_device_cuda = _glewSearchExtension(\"EGL_NV_device_cuda\", extStart, extEnd);\r\n#endif /* EGL_NV_device_cuda */\r\n#ifdef EGL_NV_native_query\r\n  EGLEW_NV_native_query = _glewSearchExtension(\"EGL_NV_native_query\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_native_query) EGLEW_NV_native_query = !_glewInit_EGL_NV_native_query();\r\n#endif /* EGL_NV_native_query */\r\n#ifdef EGL_NV_post_convert_rounding\r\n  EGLEW_NV_post_convert_rounding = _glewSearchExtension(\"EGL_NV_post_convert_rounding\", extStart, extEnd);\r\n#endif /* EGL_NV_post_convert_rounding */\r\n#ifdef EGL_NV_post_sub_buffer\r\n  EGLEW_NV_post_sub_buffer = _glewSearchExtension(\"EGL_NV_post_sub_buffer\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_post_sub_buffer) EGLEW_NV_post_sub_buffer = !_glewInit_EGL_NV_post_sub_buffer();\r\n#endif /* EGL_NV_post_sub_buffer */\r\n#ifdef EGL_NV_robustness_video_memory_purge\r\n  EGLEW_NV_robustness_video_memory_purge = _glewSearchExtension(\"EGL_NV_robustness_video_memory_purge\", extStart, extEnd);\r\n#endif /* EGL_NV_robustness_video_memory_purge */\r\n#ifdef EGL_NV_stream_consumer_gltexture_yuv\r\n  EGLEW_NV_stream_consumer_gltexture_yuv = _glewSearchExtension(\"EGL_NV_stream_consumer_gltexture_yuv\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_stream_consumer_gltexture_yuv) EGLEW_NV_stream_consumer_gltexture_yuv = !_glewInit_EGL_NV_stream_consumer_gltexture_yuv();\r\n#endif /* EGL_NV_stream_consumer_gltexture_yuv */\r\n#ifdef EGL_NV_stream_cross_display\r\n  EGLEW_NV_stream_cross_display = _glewSearchExtension(\"EGL_NV_stream_cross_display\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_cross_display */\r\n#ifdef EGL_NV_stream_cross_object\r\n  EGLEW_NV_stream_cross_object = _glewSearchExtension(\"EGL_NV_stream_cross_object\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_cross_object */\r\n#ifdef EGL_NV_stream_cross_partition\r\n  EGLEW_NV_stream_cross_partition = _glewSearchExtension(\"EGL_NV_stream_cross_partition\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_cross_partition */\r\n#ifdef EGL_NV_stream_cross_process\r\n  EGLEW_NV_stream_cross_process = _glewSearchExtension(\"EGL_NV_stream_cross_process\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_cross_process */\r\n#ifdef EGL_NV_stream_cross_system\r\n  EGLEW_NV_stream_cross_system = _glewSearchExtension(\"EGL_NV_stream_cross_system\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_cross_system */\r\n#ifdef EGL_NV_stream_fifo_next\r\n  EGLEW_NV_stream_fifo_next = _glewSearchExtension(\"EGL_NV_stream_fifo_next\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_fifo_next */\r\n#ifdef EGL_NV_stream_fifo_synchronous\r\n  EGLEW_NV_stream_fifo_synchronous = _glewSearchExtension(\"EGL_NV_stream_fifo_synchronous\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_fifo_synchronous */\r\n#ifdef EGL_NV_stream_frame_limits\r\n  EGLEW_NV_stream_frame_limits = _glewSearchExtension(\"EGL_NV_stream_frame_limits\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_frame_limits */\r\n#ifdef EGL_NV_stream_metadata\r\n  EGLEW_NV_stream_metadata = _glewSearchExtension(\"EGL_NV_stream_metadata\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_stream_metadata) EGLEW_NV_stream_metadata = !_glewInit_EGL_NV_stream_metadata();\r\n#endif /* EGL_NV_stream_metadata */\r\n#ifdef EGL_NV_stream_remote\r\n  EGLEW_NV_stream_remote = _glewSearchExtension(\"EGL_NV_stream_remote\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_remote */\r\n#ifdef EGL_NV_stream_reset\r\n  EGLEW_NV_stream_reset = _glewSearchExtension(\"EGL_NV_stream_reset\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_stream_reset) EGLEW_NV_stream_reset = !_glewInit_EGL_NV_stream_reset();\r\n#endif /* EGL_NV_stream_reset */\r\n#ifdef EGL_NV_stream_socket\r\n  EGLEW_NV_stream_socket = _glewSearchExtension(\"EGL_NV_stream_socket\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_socket */\r\n#ifdef EGL_NV_stream_socket_inet\r\n  EGLEW_NV_stream_socket_inet = _glewSearchExtension(\"EGL_NV_stream_socket_inet\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_socket_inet */\r\n#ifdef EGL_NV_stream_socket_unix\r\n  EGLEW_NV_stream_socket_unix = _glewSearchExtension(\"EGL_NV_stream_socket_unix\", extStart, extEnd);\r\n#endif /* EGL_NV_stream_socket_unix */\r\n#ifdef EGL_NV_stream_sync\r\n  EGLEW_NV_stream_sync = _glewSearchExtension(\"EGL_NV_stream_sync\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_stream_sync) EGLEW_NV_stream_sync = !_glewInit_EGL_NV_stream_sync();\r\n#endif /* EGL_NV_stream_sync */\r\n#ifdef EGL_NV_sync\r\n  EGLEW_NV_sync = _glewSearchExtension(\"EGL_NV_sync\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_sync) EGLEW_NV_sync = !_glewInit_EGL_NV_sync();\r\n#endif /* EGL_NV_sync */\r\n#ifdef EGL_NV_system_time\r\n  EGLEW_NV_system_time = _glewSearchExtension(\"EGL_NV_system_time\", extStart, extEnd);\r\n  if (glewExperimental || EGLEW_NV_system_time) EGLEW_NV_system_time = !_glewInit_EGL_NV_system_time();\r\n#endif /* EGL_NV_system_time */\r\n#ifdef EGL_TIZEN_image_native_buffer\r\n  EGLEW_TIZEN_image_native_buffer = _glewSearchExtension(\"EGL_TIZEN_image_native_buffer\", extStart, extEnd);\r\n#endif /* EGL_TIZEN_image_native_buffer */\r\n#ifdef EGL_TIZEN_image_native_surface\r\n  EGLEW_TIZEN_image_native_surface = _glewSearchExtension(\"EGL_TIZEN_image_native_surface\", extStart, extEnd);\r\n#endif /* EGL_TIZEN_image_native_surface */\r\n\r\n  return GLEW_OK;\r\n}\r\n\r\n#elif defined(_WIN32)\r\n\r\nPFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL;\r\n\r\nPFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC __wglewBlitContextFramebufferAMD = NULL;\r\nPFNWGLCREATEASSOCIATEDCONTEXTAMDPROC __wglewCreateAssociatedContextAMD = NULL;\r\nPFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __wglewCreateAssociatedContextAttribsAMD = NULL;\r\nPFNWGLDELETEASSOCIATEDCONTEXTAMDPROC __wglewDeleteAssociatedContextAMD = NULL;\r\nPFNWGLGETCONTEXTGPUIDAMDPROC __wglewGetContextGPUIDAMD = NULL;\r\nPFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC __wglewGetCurrentAssociatedContextAMD = NULL;\r\nPFNWGLGETGPUIDSAMDPROC __wglewGetGPUIDsAMD = NULL;\r\nPFNWGLGETGPUINFOAMDPROC __wglewGetGPUInfoAMD = NULL;\r\nPFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __wglewMakeAssociatedContextCurrentAMD = NULL;\r\n\r\nPFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL;\r\nPFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL;\r\nPFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL;\r\nPFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL;\r\n\r\nPFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL;\r\n\r\nPFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL;\r\n\r\nPFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB = NULL;\r\nPFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB = NULL;\r\n\r\nPFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB = NULL;\r\nPFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB = NULL;\r\nPFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB = NULL;\r\nPFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB = NULL;\r\nPFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB = NULL;\r\n\r\nPFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB = NULL;\r\nPFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB = NULL;\r\nPFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB = NULL;\r\n\r\nPFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB = NULL;\r\nPFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB = NULL;\r\nPFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB = NULL;\r\n\r\nPFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT = NULL;\r\nPFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT = NULL;\r\nPFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT = NULL;\r\nPFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT = NULL;\r\n\r\nPFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT = NULL;\r\n\r\nPFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT = NULL;\r\nPFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT = NULL;\r\n\r\nPFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT = NULL;\r\nPFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT = NULL;\r\nPFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT = NULL;\r\nPFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT = NULL;\r\nPFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT = NULL;\r\n\r\nPFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT = NULL;\r\nPFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT = NULL;\r\nPFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT = NULL;\r\n\r\nPFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT = NULL;\r\nPFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT = NULL;\r\n\r\nPFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D = NULL;\r\nPFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D = NULL;\r\n\r\nPFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D = NULL;\r\nPFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D = NULL;\r\nPFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D = NULL;\r\nPFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D = NULL;\r\n\r\nPFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D = NULL;\r\nPFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D = NULL;\r\nPFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D = NULL;\r\nPFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D = NULL;\r\nPFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D = NULL;\r\nPFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D = NULL;\r\nPFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D = NULL;\r\nPFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D = NULL;\r\nPFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D = NULL;\r\nPFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D = NULL;\r\nPFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D = NULL;\r\nPFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D = NULL;\r\n\r\nPFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D = NULL;\r\nPFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D = NULL;\r\nPFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D = NULL;\r\nPFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D = NULL;\r\n\r\nPFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D = NULL;\r\nPFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D = NULL;\r\nPFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D = NULL;\r\nPFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D = NULL;\r\n\r\nPFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D = NULL;\r\nPFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D = NULL;\r\nPFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D = NULL;\r\nPFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D = NULL;\r\n\r\nPFNWGLDXCLOSEDEVICENVPROC __wglewDXCloseDeviceNV = NULL;\r\nPFNWGLDXLOCKOBJECTSNVPROC __wglewDXLockObjectsNV = NULL;\r\nPFNWGLDXOBJECTACCESSNVPROC __wglewDXObjectAccessNV = NULL;\r\nPFNWGLDXOPENDEVICENVPROC __wglewDXOpenDeviceNV = NULL;\r\nPFNWGLDXREGISTEROBJECTNVPROC __wglewDXRegisterObjectNV = NULL;\r\nPFNWGLDXSETRESOURCESHAREHANDLENVPROC __wglewDXSetResourceShareHandleNV = NULL;\r\nPFNWGLDXUNLOCKOBJECTSNVPROC __wglewDXUnlockObjectsNV = NULL;\r\nPFNWGLDXUNREGISTEROBJECTNVPROC __wglewDXUnregisterObjectNV = NULL;\r\n\r\nPFNWGLCOPYIMAGESUBDATANVPROC __wglewCopyImageSubDataNV = NULL;\r\n\r\nPFNWGLDELAYBEFORESWAPNVPROC __wglewDelayBeforeSwapNV = NULL;\r\n\r\nPFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV = NULL;\r\nPFNWGLDELETEDCNVPROC __wglewDeleteDCNV = NULL;\r\nPFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV = NULL;\r\nPFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV = NULL;\r\nPFNWGLENUMGPUSNVPROC __wglewEnumGpusNV = NULL;\r\n\r\nPFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV = NULL;\r\nPFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV = NULL;\r\nPFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV = NULL;\r\n\r\nPFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV = NULL;\r\nPFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV = NULL;\r\nPFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV = NULL;\r\nPFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV = NULL;\r\nPFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV = NULL;\r\nPFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV = NULL;\r\n\r\nPFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV = NULL;\r\nPFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV = NULL;\r\n\r\nPFNWGLBINDVIDEOCAPTUREDEVICENVPROC __wglewBindVideoCaptureDeviceNV = NULL;\r\nPFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC __wglewEnumerateVideoCaptureDevicesNV = NULL;\r\nPFNWGLLOCKVIDEOCAPTUREDEVICENVPROC __wglewLockVideoCaptureDeviceNV = NULL;\r\nPFNWGLQUERYVIDEOCAPTUREDEVICENVPROC __wglewQueryVideoCaptureDeviceNV = NULL;\r\nPFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC __wglewReleaseVideoCaptureDeviceNV = NULL;\r\n\r\nPFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV = NULL;\r\nPFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV = NULL;\r\nPFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV = NULL;\r\nPFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV = NULL;\r\nPFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV = NULL;\r\nPFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV = NULL;\r\n\r\nPFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML = NULL;\r\nPFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML = NULL;\r\nPFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML = NULL;\r\nPFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML = NULL;\r\nPFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML = NULL;\r\nPFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML = NULL;\r\nGLboolean __WGLEW_3DFX_multisample = GL_FALSE;\r\nGLboolean __WGLEW_3DL_stereo_control = GL_FALSE;\r\nGLboolean __WGLEW_AMD_gpu_association = GL_FALSE;\r\nGLboolean __WGLEW_ARB_buffer_region = GL_FALSE;\r\nGLboolean __WGLEW_ARB_context_flush_control = GL_FALSE;\r\nGLboolean __WGLEW_ARB_create_context = GL_FALSE;\r\nGLboolean __WGLEW_ARB_create_context_no_error = GL_FALSE;\r\nGLboolean __WGLEW_ARB_create_context_profile = GL_FALSE;\r\nGLboolean __WGLEW_ARB_create_context_robustness = GL_FALSE;\r\nGLboolean __WGLEW_ARB_extensions_string = GL_FALSE;\r\nGLboolean __WGLEW_ARB_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __WGLEW_ARB_make_current_read = GL_FALSE;\r\nGLboolean __WGLEW_ARB_multisample = GL_FALSE;\r\nGLboolean __WGLEW_ARB_pbuffer = GL_FALSE;\r\nGLboolean __WGLEW_ARB_pixel_format = GL_FALSE;\r\nGLboolean __WGLEW_ARB_pixel_format_float = GL_FALSE;\r\nGLboolean __WGLEW_ARB_render_texture = GL_FALSE;\r\nGLboolean __WGLEW_ARB_robustness_application_isolation = GL_FALSE;\r\nGLboolean __WGLEW_ARB_robustness_share_group_isolation = GL_FALSE;\r\nGLboolean __WGLEW_ATI_pixel_format_float = GL_FALSE;\r\nGLboolean __WGLEW_ATI_render_texture_rectangle = GL_FALSE;\r\nGLboolean __WGLEW_EXT_colorspace = GL_FALSE;\r\nGLboolean __WGLEW_EXT_create_context_es2_profile = GL_FALSE;\r\nGLboolean __WGLEW_EXT_create_context_es_profile = GL_FALSE;\r\nGLboolean __WGLEW_EXT_depth_float = GL_FALSE;\r\nGLboolean __WGLEW_EXT_display_color_table = GL_FALSE;\r\nGLboolean __WGLEW_EXT_extensions_string = GL_FALSE;\r\nGLboolean __WGLEW_EXT_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __WGLEW_EXT_make_current_read = GL_FALSE;\r\nGLboolean __WGLEW_EXT_multisample = GL_FALSE;\r\nGLboolean __WGLEW_EXT_pbuffer = GL_FALSE;\r\nGLboolean __WGLEW_EXT_pixel_format = GL_FALSE;\r\nGLboolean __WGLEW_EXT_pixel_format_packed_float = GL_FALSE;\r\nGLboolean __WGLEW_EXT_swap_control = GL_FALSE;\r\nGLboolean __WGLEW_EXT_swap_control_tear = GL_FALSE;\r\nGLboolean __WGLEW_I3D_digital_video_control = GL_FALSE;\r\nGLboolean __WGLEW_I3D_gamma = GL_FALSE;\r\nGLboolean __WGLEW_I3D_genlock = GL_FALSE;\r\nGLboolean __WGLEW_I3D_image_buffer = GL_FALSE;\r\nGLboolean __WGLEW_I3D_swap_frame_lock = GL_FALSE;\r\nGLboolean __WGLEW_I3D_swap_frame_usage = GL_FALSE;\r\nGLboolean __WGLEW_NV_DX_interop = GL_FALSE;\r\nGLboolean __WGLEW_NV_DX_interop2 = GL_FALSE;\r\nGLboolean __WGLEW_NV_copy_image = GL_FALSE;\r\nGLboolean __WGLEW_NV_delay_before_swap = GL_FALSE;\r\nGLboolean __WGLEW_NV_float_buffer = GL_FALSE;\r\nGLboolean __WGLEW_NV_gpu_affinity = GL_FALSE;\r\nGLboolean __WGLEW_NV_multisample_coverage = GL_FALSE;\r\nGLboolean __WGLEW_NV_present_video = GL_FALSE;\r\nGLboolean __WGLEW_NV_render_depth_texture = GL_FALSE;\r\nGLboolean __WGLEW_NV_render_texture_rectangle = GL_FALSE;\r\nGLboolean __WGLEW_NV_swap_group = GL_FALSE;\r\nGLboolean __WGLEW_NV_vertex_array_range = GL_FALSE;\r\nGLboolean __WGLEW_NV_video_capture = GL_FALSE;\r\nGLboolean __WGLEW_NV_video_output = GL_FALSE;\r\nGLboolean __WGLEW_OML_sync_control = GL_FALSE;\r\n#ifdef WGL_3DL_stereo_control\r\n\r\nstatic GLboolean _glewInit_WGL_3DL_stereo_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC)glewGetProcAddress((const GLubyte*)\"wglSetStereoEmitterState3DL\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_3DL_stereo_control */\r\n\r\n#ifdef WGL_AMD_gpu_association\r\n\r\nstatic GLboolean _glewInit_WGL_AMD_gpu_association ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBlitContextFramebufferAMD = (PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)\"wglBlitContextFramebufferAMD\")) == NULL) || r;\r\n  r = ((wglCreateAssociatedContextAMD = (PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"wglCreateAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((wglCreateAssociatedContextAttribsAMD = (PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)\"wglCreateAssociatedContextAttribsAMD\")) == NULL) || r;\r\n  r = ((wglDeleteAssociatedContextAMD = (PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"wglDeleteAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((wglGetContextGPUIDAMD = (PFNWGLGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)\"wglGetContextGPUIDAMD\")) == NULL) || r;\r\n  r = ((wglGetCurrentAssociatedContextAMD = (PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"wglGetCurrentAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((wglGetGPUIDsAMD = (PFNWGLGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)\"wglGetGPUIDsAMD\")) == NULL) || r;\r\n  r = ((wglGetGPUInfoAMD = (PFNWGLGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)\"wglGetGPUInfoAMD\")) == NULL) || r;\r\n  r = ((wglMakeAssociatedContextCurrentAMD = (PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)\"wglMakeAssociatedContextCurrentAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_AMD_gpu_association */\r\n\r\n#ifdef WGL_ARB_buffer_region\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_buffer_region ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)\"wglCreateBufferRegionARB\")) == NULL) || r;\r\n  r = ((wglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)\"wglDeleteBufferRegionARB\")) == NULL) || r;\r\n  r = ((wglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)\"wglRestoreBufferRegionARB\")) == NULL) || r;\r\n  r = ((wglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)\"wglSaveBufferRegionARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_buffer_region */\r\n\r\n#ifdef WGL_ARB_create_context\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_create_context ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)\"wglCreateContextAttribsARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_create_context */\r\n\r\n#ifdef WGL_ARB_extensions_string\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_extensions_string ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetExtensionsStringARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_extensions_string */\r\n\r\n#ifdef WGL_ARB_make_current_read\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_make_current_read ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetCurrentReadDCARB\")) == NULL) || r;\r\n  r = ((wglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC)glewGetProcAddress((const GLubyte*)\"wglMakeContextCurrentARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_make_current_read */\r\n\r\n#ifdef WGL_ARB_pbuffer\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_pbuffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"wglCreatePbufferARB\")) == NULL) || r;\r\n  r = ((wglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"wglDestroyPbufferARB\")) == NULL) || r;\r\n  r = ((wglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetPbufferDCARB\")) == NULL) || r;\r\n  r = ((wglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)\"wglQueryPbufferARB\")) == NULL) || r;\r\n  r = ((wglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)\"wglReleasePbufferDCARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_pbuffer */\r\n\r\n#ifdef WGL_ARB_pixel_format\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_pixel_format ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)glewGetProcAddress((const GLubyte*)\"wglChoosePixelFormatARB\")) == NULL) || r;\r\n  r = ((wglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetPixelFormatAttribfvARB\")) == NULL) || r;\r\n  r = ((wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetPixelFormatAttribivARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_pixel_format */\r\n\r\n#ifdef WGL_ARB_render_texture\r\n\r\nstatic GLboolean _glewInit_WGL_ARB_render_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)\"wglBindTexImageARB\")) == NULL) || r;\r\n  r = ((wglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)\"wglReleaseTexImageARB\")) == NULL) || r;\r\n  r = ((wglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC)glewGetProcAddress((const GLubyte*)\"wglSetPbufferAttribARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_ARB_render_texture */\r\n\r\n#ifdef WGL_EXT_display_color_table\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_display_color_table ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"wglBindDisplayColorTableEXT\")) == NULL) || r;\r\n  r = ((wglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"wglCreateDisplayColorTableEXT\")) == NULL) || r;\r\n  r = ((wglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"wglDestroyDisplayColorTableEXT\")) == NULL) || r;\r\n  r = ((wglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)\"wglLoadDisplayColorTableEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_display_color_table */\r\n\r\n#ifdef WGL_EXT_extensions_string\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_extensions_string ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetExtensionsStringEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_extensions_string */\r\n\r\n#ifdef WGL_EXT_make_current_read\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_make_current_read ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetCurrentReadDCEXT\")) == NULL) || r;\r\n  r = ((wglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC)glewGetProcAddress((const GLubyte*)\"wglMakeContextCurrentEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_make_current_read */\r\n\r\n#ifdef WGL_EXT_pbuffer\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_pbuffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"wglCreatePbufferEXT\")) == NULL) || r;\r\n  r = ((wglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"wglDestroyPbufferEXT\")) == NULL) || r;\r\n  r = ((wglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetPbufferDCEXT\")) == NULL) || r;\r\n  r = ((wglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)\"wglQueryPbufferEXT\")) == NULL) || r;\r\n  r = ((wglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)\"wglReleasePbufferDCEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_pbuffer */\r\n\r\n#ifdef WGL_EXT_pixel_format\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_pixel_format ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC)glewGetProcAddress((const GLubyte*)\"wglChoosePixelFormatEXT\")) == NULL) || r;\r\n  r = ((wglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetPixelFormatAttribfvEXT\")) == NULL) || r;\r\n  r = ((wglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetPixelFormatAttribivEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_pixel_format */\r\n\r\n#ifdef WGL_EXT_swap_control\r\n\r\nstatic GLboolean _glewInit_WGL_EXT_swap_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetSwapIntervalEXT\")) == NULL) || r;\r\n  r = ((wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)\"wglSwapIntervalEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_EXT_swap_control */\r\n\r\n#ifdef WGL_I3D_digital_video_control\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_digital_video_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetDigitalVideoParametersI3D\")) == NULL) || r;\r\n  r = ((wglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglSetDigitalVideoParametersI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_digital_video_control */\r\n\r\n#ifdef WGL_I3D_gamma\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_gamma ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGammaTableI3D\")) == NULL) || r;\r\n  r = ((wglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGammaTableParametersI3D\")) == NULL) || r;\r\n  r = ((wglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglSetGammaTableI3D\")) == NULL) || r;\r\n  r = ((wglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglSetGammaTableParametersI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_gamma */\r\n\r\n#ifdef WGL_I3D_genlock\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_genlock ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglDisableGenlockI3D\")) == NULL) || r;\r\n  r = ((wglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglEnableGenlockI3D\")) == NULL) || r;\r\n  r = ((wglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGenlockSampleRateI3D\")) == NULL) || r;\r\n  r = ((wglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGenlockSourceDelayI3D\")) == NULL) || r;\r\n  r = ((wglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGenlockSourceEdgeI3D\")) == NULL) || r;\r\n  r = ((wglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGenlockSourceI3D\")) == NULL) || r;\r\n  r = ((wglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGenlockSampleRateI3D\")) == NULL) || r;\r\n  r = ((wglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGenlockSourceDelayI3D\")) == NULL) || r;\r\n  r = ((wglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGenlockSourceEdgeI3D\")) == NULL) || r;\r\n  r = ((wglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetGenlockSourceI3D\")) == NULL) || r;\r\n  r = ((wglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglIsEnabledGenlockI3D\")) == NULL) || r;\r\n  r = ((wglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)\"wglQueryGenlockMaxSourceDelayI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_genlock */\r\n\r\n#ifdef WGL_I3D_image_buffer\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_image_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglAssociateImageBufferEventsI3D\")) == NULL) || r;\r\n  r = ((wglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)\"wglCreateImageBufferI3D\")) == NULL) || r;\r\n  r = ((wglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)\"wglDestroyImageBufferI3D\")) == NULL) || r;\r\n  r = ((wglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)\"wglReleaseImageBufferEventsI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_image_buffer */\r\n\r\n#ifdef WGL_I3D_swap_frame_lock\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_swap_frame_lock ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglDisableFrameLockI3D\")) == NULL) || r;\r\n  r = ((wglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglEnableFrameLockI3D\")) == NULL) || r;\r\n  r = ((wglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)\"wglIsEnabledFrameLockI3D\")) == NULL) || r;\r\n  r = ((wglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC)glewGetProcAddress((const GLubyte*)\"wglQueryFrameLockMasterI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_swap_frame_lock */\r\n\r\n#ifdef WGL_I3D_swap_frame_usage\r\n\r\nstatic GLboolean _glewInit_WGL_I3D_swap_frame_usage ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)\"wglBeginFrameTrackingI3D\")) == NULL) || r;\r\n  r = ((wglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)\"wglEndFrameTrackingI3D\")) == NULL) || r;\r\n  r = ((wglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC)glewGetProcAddress((const GLubyte*)\"wglGetFrameUsageI3D\")) == NULL) || r;\r\n  r = ((wglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)\"wglQueryFrameTrackingI3D\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_I3D_swap_frame_usage */\r\n\r\n#ifdef WGL_NV_DX_interop\r\n\r\nstatic GLboolean _glewInit_WGL_NV_DX_interop ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglDXCloseDeviceNV = (PFNWGLDXCLOSEDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglDXCloseDeviceNV\")) == NULL) || r;\r\n  r = ((wglDXLockObjectsNV = (PFNWGLDXLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)\"wglDXLockObjectsNV\")) == NULL) || r;\r\n  r = ((wglDXObjectAccessNV = (PFNWGLDXOBJECTACCESSNVPROC)glewGetProcAddress((const GLubyte*)\"wglDXObjectAccessNV\")) == NULL) || r;\r\n  r = ((wglDXOpenDeviceNV = (PFNWGLDXOPENDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglDXOpenDeviceNV\")) == NULL) || r;\r\n  r = ((wglDXRegisterObjectNV = (PFNWGLDXREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)\"wglDXRegisterObjectNV\")) == NULL) || r;\r\n  r = ((wglDXSetResourceShareHandleNV = (PFNWGLDXSETRESOURCESHAREHANDLENVPROC)glewGetProcAddress((const GLubyte*)\"wglDXSetResourceShareHandleNV\")) == NULL) || r;\r\n  r = ((wglDXUnlockObjectsNV = (PFNWGLDXUNLOCKOBJECTSNVPROC)glewGetProcAddress((const GLubyte*)\"wglDXUnlockObjectsNV\")) == NULL) || r;\r\n  r = ((wglDXUnregisterObjectNV = (PFNWGLDXUNREGISTEROBJECTNVPROC)glewGetProcAddress((const GLubyte*)\"wglDXUnregisterObjectNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_DX_interop */\r\n\r\n#ifdef WGL_NV_copy_image\r\n\r\nstatic GLboolean _glewInit_WGL_NV_copy_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCopyImageSubDataNV = (PFNWGLCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"wglCopyImageSubDataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_copy_image */\r\n\r\n#ifdef WGL_NV_delay_before_swap\r\n\r\nstatic GLboolean _glewInit_WGL_NV_delay_before_swap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglDelayBeforeSwapNV = (PFNWGLDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)\"wglDelayBeforeSwapNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_delay_before_swap */\r\n\r\n#ifdef WGL_NV_gpu_affinity\r\n\r\nstatic GLboolean _glewInit_WGL_NV_gpu_affinity ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglCreateAffinityDCNV = (PFNWGLCREATEAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)\"wglCreateAffinityDCNV\")) == NULL) || r;\r\n  r = ((wglDeleteDCNV = (PFNWGLDELETEDCNVPROC)glewGetProcAddress((const GLubyte*)\"wglDeleteDCNV\")) == NULL) || r;\r\n  r = ((wglEnumGpuDevicesNV = (PFNWGLENUMGPUDEVICESNVPROC)glewGetProcAddress((const GLubyte*)\"wglEnumGpuDevicesNV\")) == NULL) || r;\r\n  r = ((wglEnumGpusFromAffinityDCNV = (PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)\"wglEnumGpusFromAffinityDCNV\")) == NULL) || r;\r\n  r = ((wglEnumGpusNV = (PFNWGLENUMGPUSNVPROC)glewGetProcAddress((const GLubyte*)\"wglEnumGpusNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_gpu_affinity */\r\n\r\n#ifdef WGL_NV_present_video\r\n\r\nstatic GLboolean _glewInit_WGL_NV_present_video ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindVideoDeviceNV = (PFNWGLBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglBindVideoDeviceNV\")) == NULL) || r;\r\n  r = ((wglEnumerateVideoDevicesNV = (PFNWGLENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)\"wglEnumerateVideoDevicesNV\")) == NULL) || r;\r\n  r = ((wglQueryCurrentContextNV = (PFNWGLQUERYCURRENTCONTEXTNVPROC)glewGetProcAddress((const GLubyte*)\"wglQueryCurrentContextNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_present_video */\r\n\r\n#ifdef WGL_NV_swap_group\r\n\r\nstatic GLboolean _glewInit_WGL_NV_swap_group ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindSwapBarrierNV = (PFNWGLBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)\"wglBindSwapBarrierNV\")) == NULL) || r;\r\n  r = ((wglJoinSwapGroupNV = (PFNWGLJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)\"wglJoinSwapGroupNV\")) == NULL) || r;\r\n  r = ((wglQueryFrameCountNV = (PFNWGLQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"wglQueryFrameCountNV\")) == NULL) || r;\r\n  r = ((wglQueryMaxSwapGroupsNV = (PFNWGLQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)\"wglQueryMaxSwapGroupsNV\")) == NULL) || r;\r\n  r = ((wglQuerySwapGroupNV = (PFNWGLQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)\"wglQuerySwapGroupNV\")) == NULL) || r;\r\n  r = ((wglResetFrameCountNV = (PFNWGLRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"wglResetFrameCountNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_swap_group */\r\n\r\n#ifdef WGL_NV_vertex_array_range\r\n\r\nstatic GLboolean _glewInit_WGL_NV_vertex_array_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)\"wglAllocateMemoryNV\")) == NULL) || r;\r\n  r = ((wglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)\"wglFreeMemoryNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_vertex_array_range */\r\n\r\n#ifdef WGL_NV_video_capture\r\n\r\nstatic GLboolean _glewInit_WGL_NV_video_capture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindVideoCaptureDeviceNV = (PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglBindVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((wglEnumerateVideoCaptureDevicesNV = (PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)\"wglEnumerateVideoCaptureDevicesNV\")) == NULL) || r;\r\n  r = ((wglLockVideoCaptureDeviceNV = (PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglLockVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((wglQueryVideoCaptureDeviceNV = (PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglQueryVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((wglReleaseVideoCaptureDeviceNV = (PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglReleaseVideoCaptureDeviceNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_video_capture */\r\n\r\n#ifdef WGL_NV_video_output\r\n\r\nstatic GLboolean _glewInit_WGL_NV_video_output ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglBindVideoImageNV = (PFNWGLBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)\"wglBindVideoImageNV\")) == NULL) || r;\r\n  r = ((wglGetVideoDeviceNV = (PFNWGLGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglGetVideoDeviceNV\")) == NULL) || r;\r\n  r = ((wglGetVideoInfoNV = (PFNWGLGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)\"wglGetVideoInfoNV\")) == NULL) || r;\r\n  r = ((wglReleaseVideoDeviceNV = (PFNWGLRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"wglReleaseVideoDeviceNV\")) == NULL) || r;\r\n  r = ((wglReleaseVideoImageNV = (PFNWGLRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)\"wglReleaseVideoImageNV\")) == NULL) || r;\r\n  r = ((wglSendPbufferToVideoNV = (PFNWGLSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)\"wglSendPbufferToVideoNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_NV_video_output */\r\n\r\n#ifdef WGL_OML_sync_control\r\n\r\nstatic GLboolean _glewInit_WGL_OML_sync_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((wglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)\"wglGetMscRateOML\")) == NULL) || r;\r\n  r = ((wglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)\"wglGetSyncValuesOML\")) == NULL) || r;\r\n  r = ((wglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)\"wglSwapBuffersMscOML\")) == NULL) || r;\r\n  r = ((wglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)\"wglSwapLayerBuffersMscOML\")) == NULL) || r;\r\n  r = ((wglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)\"wglWaitForMscOML\")) == NULL) || r;\r\n  r = ((wglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)\"wglWaitForSbcOML\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* WGL_OML_sync_control */\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nstatic PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL;\r\nstatic PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL;\r\n\r\nGLboolean GLEWAPIENTRY wglewGetExtension (const char* name)\r\n{    \r\n  const GLubyte* start;\r\n  const GLubyte* end;\r\n  if (_wglewGetExtensionsStringARB == NULL)\r\n    if (_wglewGetExtensionsStringEXT == NULL)\r\n      return GL_FALSE;\r\n    else\r\n      start = (const GLubyte*)_wglewGetExtensionsStringEXT();\r\n  else\r\n    start = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());\r\n  if (start == 0)\r\n    return GL_FALSE;\r\n  end = start + _glewStrLen(start);\r\n  return _glewSearchExtension(name, start, end);\r\n}\r\n\r\nGLenum GLEWAPIENTRY wglewInit ()\r\n{\r\n  GLboolean crippled;\r\n  const GLubyte* extStart;\r\n  const GLubyte* extEnd;\r\n  /* find wgl extension string query functions */\r\n  _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)\"wglGetExtensionsStringARB\");\r\n  _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)\"wglGetExtensionsStringEXT\");\r\n  /* query wgl extension string */\r\n  if (_wglewGetExtensionsStringARB == NULL)\r\n    if (_wglewGetExtensionsStringEXT == NULL)\r\n      extStart = (const GLubyte*)\"\";\r\n    else\r\n      extStart = (const GLubyte*)_wglewGetExtensionsStringEXT();\r\n  else\r\n    extStart = (const GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC());\r\n  extEnd = extStart + _glewStrLen(extStart);\r\n  /* initialize extensions */\r\n  crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL;\r\n#ifdef WGL_3DFX_multisample\r\n  WGLEW_3DFX_multisample = _glewSearchExtension(\"WGL_3DFX_multisample\", extStart, extEnd);\r\n#endif /* WGL_3DFX_multisample */\r\n#ifdef WGL_3DL_stereo_control\r\n  WGLEW_3DL_stereo_control = _glewSearchExtension(\"WGL_3DL_stereo_control\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_3DL_stereo_control|| crippled) WGLEW_3DL_stereo_control= !_glewInit_WGL_3DL_stereo_control();\r\n#endif /* WGL_3DL_stereo_control */\r\n#ifdef WGL_AMD_gpu_association\r\n  WGLEW_AMD_gpu_association = _glewSearchExtension(\"WGL_AMD_gpu_association\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_AMD_gpu_association|| crippled) WGLEW_AMD_gpu_association= !_glewInit_WGL_AMD_gpu_association();\r\n#endif /* WGL_AMD_gpu_association */\r\n#ifdef WGL_ARB_buffer_region\r\n  WGLEW_ARB_buffer_region = _glewSearchExtension(\"WGL_ARB_buffer_region\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_buffer_region|| crippled) WGLEW_ARB_buffer_region= !_glewInit_WGL_ARB_buffer_region();\r\n#endif /* WGL_ARB_buffer_region */\r\n#ifdef WGL_ARB_context_flush_control\r\n  WGLEW_ARB_context_flush_control = _glewSearchExtension(\"WGL_ARB_context_flush_control\", extStart, extEnd);\r\n#endif /* WGL_ARB_context_flush_control */\r\n#ifdef WGL_ARB_create_context\r\n  WGLEW_ARB_create_context = _glewSearchExtension(\"WGL_ARB_create_context\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_create_context|| crippled) WGLEW_ARB_create_context= !_glewInit_WGL_ARB_create_context();\r\n#endif /* WGL_ARB_create_context */\r\n#ifdef WGL_ARB_create_context_no_error\r\n  WGLEW_ARB_create_context_no_error = _glewSearchExtension(\"WGL_ARB_create_context_no_error\", extStart, extEnd);\r\n#endif /* WGL_ARB_create_context_no_error */\r\n#ifdef WGL_ARB_create_context_profile\r\n  WGLEW_ARB_create_context_profile = _glewSearchExtension(\"WGL_ARB_create_context_profile\", extStart, extEnd);\r\n#endif /* WGL_ARB_create_context_profile */\r\n#ifdef WGL_ARB_create_context_robustness\r\n  WGLEW_ARB_create_context_robustness = _glewSearchExtension(\"WGL_ARB_create_context_robustness\", extStart, extEnd);\r\n#endif /* WGL_ARB_create_context_robustness */\r\n#ifdef WGL_ARB_extensions_string\r\n  WGLEW_ARB_extensions_string = _glewSearchExtension(\"WGL_ARB_extensions_string\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_extensions_string|| crippled) WGLEW_ARB_extensions_string= !_glewInit_WGL_ARB_extensions_string();\r\n#endif /* WGL_ARB_extensions_string */\r\n#ifdef WGL_ARB_framebuffer_sRGB\r\n  WGLEW_ARB_framebuffer_sRGB = _glewSearchExtension(\"WGL_ARB_framebuffer_sRGB\", extStart, extEnd);\r\n#endif /* WGL_ARB_framebuffer_sRGB */\r\n#ifdef WGL_ARB_make_current_read\r\n  WGLEW_ARB_make_current_read = _glewSearchExtension(\"WGL_ARB_make_current_read\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_make_current_read|| crippled) WGLEW_ARB_make_current_read= !_glewInit_WGL_ARB_make_current_read();\r\n#endif /* WGL_ARB_make_current_read */\r\n#ifdef WGL_ARB_multisample\r\n  WGLEW_ARB_multisample = _glewSearchExtension(\"WGL_ARB_multisample\", extStart, extEnd);\r\n#endif /* WGL_ARB_multisample */\r\n#ifdef WGL_ARB_pbuffer\r\n  WGLEW_ARB_pbuffer = _glewSearchExtension(\"WGL_ARB_pbuffer\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_pbuffer|| crippled) WGLEW_ARB_pbuffer= !_glewInit_WGL_ARB_pbuffer();\r\n#endif /* WGL_ARB_pbuffer */\r\n#ifdef WGL_ARB_pixel_format\r\n  WGLEW_ARB_pixel_format = _glewSearchExtension(\"WGL_ARB_pixel_format\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_pixel_format|| crippled) WGLEW_ARB_pixel_format= !_glewInit_WGL_ARB_pixel_format();\r\n#endif /* WGL_ARB_pixel_format */\r\n#ifdef WGL_ARB_pixel_format_float\r\n  WGLEW_ARB_pixel_format_float = _glewSearchExtension(\"WGL_ARB_pixel_format_float\", extStart, extEnd);\r\n#endif /* WGL_ARB_pixel_format_float */\r\n#ifdef WGL_ARB_render_texture\r\n  WGLEW_ARB_render_texture = _glewSearchExtension(\"WGL_ARB_render_texture\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_ARB_render_texture|| crippled) WGLEW_ARB_render_texture= !_glewInit_WGL_ARB_render_texture();\r\n#endif /* WGL_ARB_render_texture */\r\n#ifdef WGL_ARB_robustness_application_isolation\r\n  WGLEW_ARB_robustness_application_isolation = _glewSearchExtension(\"WGL_ARB_robustness_application_isolation\", extStart, extEnd);\r\n#endif /* WGL_ARB_robustness_application_isolation */\r\n#ifdef WGL_ARB_robustness_share_group_isolation\r\n  WGLEW_ARB_robustness_share_group_isolation = _glewSearchExtension(\"WGL_ARB_robustness_share_group_isolation\", extStart, extEnd);\r\n#endif /* WGL_ARB_robustness_share_group_isolation */\r\n#ifdef WGL_ATI_pixel_format_float\r\n  WGLEW_ATI_pixel_format_float = _glewSearchExtension(\"WGL_ATI_pixel_format_float\", extStart, extEnd);\r\n#endif /* WGL_ATI_pixel_format_float */\r\n#ifdef WGL_ATI_render_texture_rectangle\r\n  WGLEW_ATI_render_texture_rectangle = _glewSearchExtension(\"WGL_ATI_render_texture_rectangle\", extStart, extEnd);\r\n#endif /* WGL_ATI_render_texture_rectangle */\r\n#ifdef WGL_EXT_colorspace\r\n  WGLEW_EXT_colorspace = _glewSearchExtension(\"WGL_EXT_colorspace\", extStart, extEnd);\r\n#endif /* WGL_EXT_colorspace */\r\n#ifdef WGL_EXT_create_context_es2_profile\r\n  WGLEW_EXT_create_context_es2_profile = _glewSearchExtension(\"WGL_EXT_create_context_es2_profile\", extStart, extEnd);\r\n#endif /* WGL_EXT_create_context_es2_profile */\r\n#ifdef WGL_EXT_create_context_es_profile\r\n  WGLEW_EXT_create_context_es_profile = _glewSearchExtension(\"WGL_EXT_create_context_es_profile\", extStart, extEnd);\r\n#endif /* WGL_EXT_create_context_es_profile */\r\n#ifdef WGL_EXT_depth_float\r\n  WGLEW_EXT_depth_float = _glewSearchExtension(\"WGL_EXT_depth_float\", extStart, extEnd);\r\n#endif /* WGL_EXT_depth_float */\r\n#ifdef WGL_EXT_display_color_table\r\n  WGLEW_EXT_display_color_table = _glewSearchExtension(\"WGL_EXT_display_color_table\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_display_color_table|| crippled) WGLEW_EXT_display_color_table= !_glewInit_WGL_EXT_display_color_table();\r\n#endif /* WGL_EXT_display_color_table */\r\n#ifdef WGL_EXT_extensions_string\r\n  WGLEW_EXT_extensions_string = _glewSearchExtension(\"WGL_EXT_extensions_string\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_extensions_string|| crippled) WGLEW_EXT_extensions_string= !_glewInit_WGL_EXT_extensions_string();\r\n#endif /* WGL_EXT_extensions_string */\r\n#ifdef WGL_EXT_framebuffer_sRGB\r\n  WGLEW_EXT_framebuffer_sRGB = _glewSearchExtension(\"WGL_EXT_framebuffer_sRGB\", extStart, extEnd);\r\n#endif /* WGL_EXT_framebuffer_sRGB */\r\n#ifdef WGL_EXT_make_current_read\r\n  WGLEW_EXT_make_current_read = _glewSearchExtension(\"WGL_EXT_make_current_read\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_make_current_read|| crippled) WGLEW_EXT_make_current_read= !_glewInit_WGL_EXT_make_current_read();\r\n#endif /* WGL_EXT_make_current_read */\r\n#ifdef WGL_EXT_multisample\r\n  WGLEW_EXT_multisample = _glewSearchExtension(\"WGL_EXT_multisample\", extStart, extEnd);\r\n#endif /* WGL_EXT_multisample */\r\n#ifdef WGL_EXT_pbuffer\r\n  WGLEW_EXT_pbuffer = _glewSearchExtension(\"WGL_EXT_pbuffer\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_pbuffer|| crippled) WGLEW_EXT_pbuffer= !_glewInit_WGL_EXT_pbuffer();\r\n#endif /* WGL_EXT_pbuffer */\r\n#ifdef WGL_EXT_pixel_format\r\n  WGLEW_EXT_pixel_format = _glewSearchExtension(\"WGL_EXT_pixel_format\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_pixel_format|| crippled) WGLEW_EXT_pixel_format= !_glewInit_WGL_EXT_pixel_format();\r\n#endif /* WGL_EXT_pixel_format */\r\n#ifdef WGL_EXT_pixel_format_packed_float\r\n  WGLEW_EXT_pixel_format_packed_float = _glewSearchExtension(\"WGL_EXT_pixel_format_packed_float\", extStart, extEnd);\r\n#endif /* WGL_EXT_pixel_format_packed_float */\r\n#ifdef WGL_EXT_swap_control\r\n  WGLEW_EXT_swap_control = _glewSearchExtension(\"WGL_EXT_swap_control\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_EXT_swap_control|| crippled) WGLEW_EXT_swap_control= !_glewInit_WGL_EXT_swap_control();\r\n#endif /* WGL_EXT_swap_control */\r\n#ifdef WGL_EXT_swap_control_tear\r\n  WGLEW_EXT_swap_control_tear = _glewSearchExtension(\"WGL_EXT_swap_control_tear\", extStart, extEnd);\r\n#endif /* WGL_EXT_swap_control_tear */\r\n#ifdef WGL_I3D_digital_video_control\r\n  WGLEW_I3D_digital_video_control = _glewSearchExtension(\"WGL_I3D_digital_video_control\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_digital_video_control|| crippled) WGLEW_I3D_digital_video_control= !_glewInit_WGL_I3D_digital_video_control();\r\n#endif /* WGL_I3D_digital_video_control */\r\n#ifdef WGL_I3D_gamma\r\n  WGLEW_I3D_gamma = _glewSearchExtension(\"WGL_I3D_gamma\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_gamma|| crippled) WGLEW_I3D_gamma= !_glewInit_WGL_I3D_gamma();\r\n#endif /* WGL_I3D_gamma */\r\n#ifdef WGL_I3D_genlock\r\n  WGLEW_I3D_genlock = _glewSearchExtension(\"WGL_I3D_genlock\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_genlock|| crippled) WGLEW_I3D_genlock= !_glewInit_WGL_I3D_genlock();\r\n#endif /* WGL_I3D_genlock */\r\n#ifdef WGL_I3D_image_buffer\r\n  WGLEW_I3D_image_buffer = _glewSearchExtension(\"WGL_I3D_image_buffer\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_image_buffer|| crippled) WGLEW_I3D_image_buffer= !_glewInit_WGL_I3D_image_buffer();\r\n#endif /* WGL_I3D_image_buffer */\r\n#ifdef WGL_I3D_swap_frame_lock\r\n  WGLEW_I3D_swap_frame_lock = _glewSearchExtension(\"WGL_I3D_swap_frame_lock\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_swap_frame_lock|| crippled) WGLEW_I3D_swap_frame_lock= !_glewInit_WGL_I3D_swap_frame_lock();\r\n#endif /* WGL_I3D_swap_frame_lock */\r\n#ifdef WGL_I3D_swap_frame_usage\r\n  WGLEW_I3D_swap_frame_usage = _glewSearchExtension(\"WGL_I3D_swap_frame_usage\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_I3D_swap_frame_usage|| crippled) WGLEW_I3D_swap_frame_usage= !_glewInit_WGL_I3D_swap_frame_usage();\r\n#endif /* WGL_I3D_swap_frame_usage */\r\n#ifdef WGL_NV_DX_interop\r\n  WGLEW_NV_DX_interop = _glewSearchExtension(\"WGL_NV_DX_interop\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_DX_interop|| crippled) WGLEW_NV_DX_interop= !_glewInit_WGL_NV_DX_interop();\r\n#endif /* WGL_NV_DX_interop */\r\n#ifdef WGL_NV_DX_interop2\r\n  WGLEW_NV_DX_interop2 = _glewSearchExtension(\"WGL_NV_DX_interop2\", extStart, extEnd);\r\n#endif /* WGL_NV_DX_interop2 */\r\n#ifdef WGL_NV_copy_image\r\n  WGLEW_NV_copy_image = _glewSearchExtension(\"WGL_NV_copy_image\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_copy_image|| crippled) WGLEW_NV_copy_image= !_glewInit_WGL_NV_copy_image();\r\n#endif /* WGL_NV_copy_image */\r\n#ifdef WGL_NV_delay_before_swap\r\n  WGLEW_NV_delay_before_swap = _glewSearchExtension(\"WGL_NV_delay_before_swap\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_delay_before_swap|| crippled) WGLEW_NV_delay_before_swap= !_glewInit_WGL_NV_delay_before_swap();\r\n#endif /* WGL_NV_delay_before_swap */\r\n#ifdef WGL_NV_float_buffer\r\n  WGLEW_NV_float_buffer = _glewSearchExtension(\"WGL_NV_float_buffer\", extStart, extEnd);\r\n#endif /* WGL_NV_float_buffer */\r\n#ifdef WGL_NV_gpu_affinity\r\n  WGLEW_NV_gpu_affinity = _glewSearchExtension(\"WGL_NV_gpu_affinity\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_gpu_affinity|| crippled) WGLEW_NV_gpu_affinity= !_glewInit_WGL_NV_gpu_affinity();\r\n#endif /* WGL_NV_gpu_affinity */\r\n#ifdef WGL_NV_multisample_coverage\r\n  WGLEW_NV_multisample_coverage = _glewSearchExtension(\"WGL_NV_multisample_coverage\", extStart, extEnd);\r\n#endif /* WGL_NV_multisample_coverage */\r\n#ifdef WGL_NV_present_video\r\n  WGLEW_NV_present_video = _glewSearchExtension(\"WGL_NV_present_video\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_present_video|| crippled) WGLEW_NV_present_video= !_glewInit_WGL_NV_present_video();\r\n#endif /* WGL_NV_present_video */\r\n#ifdef WGL_NV_render_depth_texture\r\n  WGLEW_NV_render_depth_texture = _glewSearchExtension(\"WGL_NV_render_depth_texture\", extStart, extEnd);\r\n#endif /* WGL_NV_render_depth_texture */\r\n#ifdef WGL_NV_render_texture_rectangle\r\n  WGLEW_NV_render_texture_rectangle = _glewSearchExtension(\"WGL_NV_render_texture_rectangle\", extStart, extEnd);\r\n#endif /* WGL_NV_render_texture_rectangle */\r\n#ifdef WGL_NV_swap_group\r\n  WGLEW_NV_swap_group = _glewSearchExtension(\"WGL_NV_swap_group\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_swap_group|| crippled) WGLEW_NV_swap_group= !_glewInit_WGL_NV_swap_group();\r\n#endif /* WGL_NV_swap_group */\r\n#ifdef WGL_NV_vertex_array_range\r\n  WGLEW_NV_vertex_array_range = _glewSearchExtension(\"WGL_NV_vertex_array_range\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_vertex_array_range|| crippled) WGLEW_NV_vertex_array_range= !_glewInit_WGL_NV_vertex_array_range();\r\n#endif /* WGL_NV_vertex_array_range */\r\n#ifdef WGL_NV_video_capture\r\n  WGLEW_NV_video_capture = _glewSearchExtension(\"WGL_NV_video_capture\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_video_capture|| crippled) WGLEW_NV_video_capture= !_glewInit_WGL_NV_video_capture();\r\n#endif /* WGL_NV_video_capture */\r\n#ifdef WGL_NV_video_output\r\n  WGLEW_NV_video_output = _glewSearchExtension(\"WGL_NV_video_output\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_NV_video_output|| crippled) WGLEW_NV_video_output= !_glewInit_WGL_NV_video_output();\r\n#endif /* WGL_NV_video_output */\r\n#ifdef WGL_OML_sync_control\r\n  WGLEW_OML_sync_control = _glewSearchExtension(\"WGL_OML_sync_control\", extStart, extEnd);\r\n  if (glewExperimental || WGLEW_OML_sync_control|| crippled) WGLEW_OML_sync_control= !_glewInit_WGL_OML_sync_control();\r\n#endif /* WGL_OML_sync_control */\r\n\r\n  return GLEW_OK;\r\n}\r\n\r\n#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))\r\n\r\nPFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay = NULL;\r\n\r\nPFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig = NULL;\r\nPFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext = NULL;\r\nPFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer = NULL;\r\nPFNGLXCREATEPIXMAPPROC __glewXCreatePixmap = NULL;\r\nPFNGLXCREATEWINDOWPROC __glewXCreateWindow = NULL;\r\nPFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer = NULL;\r\nPFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap = NULL;\r\nPFNGLXDESTROYWINDOWPROC __glewXDestroyWindow = NULL;\r\nPFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable = NULL;\r\nPFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib = NULL;\r\nPFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs = NULL;\r\nPFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent = NULL;\r\nPFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig = NULL;\r\nPFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent = NULL;\r\nPFNGLXQUERYCONTEXTPROC __glewXQueryContext = NULL;\r\nPFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable = NULL;\r\nPFNGLXSELECTEVENTPROC __glewXSelectEvent = NULL;\r\n\r\nPFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC __glewXBlitContextFramebufferAMD = NULL;\r\nPFNGLXCREATEASSOCIATEDCONTEXTAMDPROC __glewXCreateAssociatedContextAMD = NULL;\r\nPFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC __glewXCreateAssociatedContextAttribsAMD = NULL;\r\nPFNGLXDELETEASSOCIATEDCONTEXTAMDPROC __glewXDeleteAssociatedContextAMD = NULL;\r\nPFNGLXGETCONTEXTGPUIDAMDPROC __glewXGetContextGPUIDAMD = NULL;\r\nPFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC __glewXGetCurrentAssociatedContextAMD = NULL;\r\nPFNGLXGETGPUIDSAMDPROC __glewXGetGPUIDsAMD = NULL;\r\nPFNGLXGETGPUINFOAMDPROC __glewXGetGPUInfoAMD = NULL;\r\nPFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC __glewXMakeAssociatedContextCurrentAMD = NULL;\r\n\r\nPFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB = NULL;\r\n\r\nPFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI = NULL;\r\nPFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI = NULL;\r\nPFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI = NULL;\r\n\r\nPFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT = NULL;\r\nPFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT = NULL;\r\nPFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT = NULL;\r\nPFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT = NULL;\r\n\r\nPFNGLXSWAPINTERVALEXTPROC __glewXSwapIntervalEXT = NULL;\r\n\r\nPFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT = NULL;\r\nPFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT = NULL;\r\n\r\nPFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA = NULL;\r\n\r\nPFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA = NULL;\r\n\r\nPFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA = NULL;\r\n\r\nPFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC __glewXQueryCurrentRendererIntegerMESA = NULL;\r\nPFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC __glewXQueryCurrentRendererStringMESA = NULL;\r\nPFNGLXQUERYRENDERERINTEGERMESAPROC __glewXQueryRendererIntegerMESA = NULL;\r\nPFNGLXQUERYRENDERERSTRINGMESAPROC __glewXQueryRendererStringMESA = NULL;\r\n\r\nPFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA = NULL;\r\n\r\nPFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA = NULL;\r\n\r\nPFNGLXGETSWAPINTERVALMESAPROC __glewXGetSwapIntervalMESA = NULL;\r\nPFNGLXSWAPINTERVALMESAPROC __glewXSwapIntervalMESA = NULL;\r\n\r\nPFNGLXCOPYBUFFERSUBDATANVPROC __glewXCopyBufferSubDataNV = NULL;\r\nPFNGLXNAMEDCOPYBUFFERSUBDATANVPROC __glewXNamedCopyBufferSubDataNV = NULL;\r\n\r\nPFNGLXCOPYIMAGESUBDATANVPROC __glewXCopyImageSubDataNV = NULL;\r\n\r\nPFNGLXDELAYBEFORESWAPNVPROC __glewXDelayBeforeSwapNV = NULL;\r\n\r\nPFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV = NULL;\r\nPFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV = NULL;\r\n\r\nPFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV = NULL;\r\nPFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV = NULL;\r\nPFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV = NULL;\r\nPFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV = NULL;\r\nPFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV = NULL;\r\nPFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV = NULL;\r\n\r\nPFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV = NULL;\r\nPFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV = NULL;\r\n\r\nPFNGLXBINDVIDEOCAPTUREDEVICENVPROC __glewXBindVideoCaptureDeviceNV = NULL;\r\nPFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC __glewXEnumerateVideoCaptureDevicesNV = NULL;\r\nPFNGLXLOCKVIDEOCAPTUREDEVICENVPROC __glewXLockVideoCaptureDeviceNV = NULL;\r\nPFNGLXQUERYVIDEOCAPTUREDEVICENVPROC __glewXQueryVideoCaptureDeviceNV = NULL;\r\nPFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC __glewXReleaseVideoCaptureDeviceNV = NULL;\r\n\r\nPFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV = NULL;\r\nPFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV = NULL;\r\nPFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV = NULL;\r\nPFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV = NULL;\r\nPFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV = NULL;\r\nPFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV = NULL;\r\n\r\nPFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML = NULL;\r\nPFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML = NULL;\r\nPFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML = NULL;\r\nPFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML = NULL;\r\nPFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML = NULL;\r\n\r\nPFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX = NULL;\r\nPFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX = NULL;\r\nPFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX = NULL;\r\nPFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX = NULL;\r\nPFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX = NULL;\r\nPFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX = NULL;\r\n\r\nPFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX = NULL;\r\nPFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX = NULL;\r\nPFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX = NULL;\r\nPFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX = NULL;\r\nPFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX = NULL;\r\nPFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX = NULL;\r\nPFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX = NULL;\r\nPFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX = NULL;\r\n\r\nPFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX = NULL;\r\nPFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX = NULL;\r\nPFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX = NULL;\r\nPFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX = NULL;\r\nPFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX = NULL;\r\n\r\nPFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX = NULL;\r\nPFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX = NULL;\r\n\r\nPFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX = NULL;\r\n\r\nPFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX = NULL;\r\nPFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX = NULL;\r\nPFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX = NULL;\r\nPFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX = NULL;\r\nPFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX = NULL;\r\n\r\nPFNGLXCUSHIONSGIPROC __glewXCushionSGI = NULL;\r\n\r\nPFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI = NULL;\r\nPFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI = NULL;\r\n\r\nPFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI = NULL;\r\n\r\nPFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI = NULL;\r\nPFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI = NULL;\r\n\r\nPFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN = NULL;\r\n\r\nPFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN = NULL;\r\nPFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN = NULL;\r\n\r\nGLboolean __GLXEW_VERSION_1_0 = GL_FALSE;\r\nGLboolean __GLXEW_VERSION_1_1 = GL_FALSE;\r\nGLboolean __GLXEW_VERSION_1_2 = GL_FALSE;\r\nGLboolean __GLXEW_VERSION_1_3 = GL_FALSE;\r\nGLboolean __GLXEW_VERSION_1_4 = GL_FALSE;\r\nGLboolean __GLXEW_3DFX_multisample = GL_FALSE;\r\nGLboolean __GLXEW_AMD_gpu_association = GL_FALSE;\r\nGLboolean __GLXEW_ARB_context_flush_control = GL_FALSE;\r\nGLboolean __GLXEW_ARB_create_context = GL_FALSE;\r\nGLboolean __GLXEW_ARB_create_context_no_error = GL_FALSE;\r\nGLboolean __GLXEW_ARB_create_context_profile = GL_FALSE;\r\nGLboolean __GLXEW_ARB_create_context_robustness = GL_FALSE;\r\nGLboolean __GLXEW_ARB_fbconfig_float = GL_FALSE;\r\nGLboolean __GLXEW_ARB_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __GLXEW_ARB_get_proc_address = GL_FALSE;\r\nGLboolean __GLXEW_ARB_multisample = GL_FALSE;\r\nGLboolean __GLXEW_ARB_robustness_application_isolation = GL_FALSE;\r\nGLboolean __GLXEW_ARB_robustness_share_group_isolation = GL_FALSE;\r\nGLboolean __GLXEW_ARB_vertex_buffer_object = GL_FALSE;\r\nGLboolean __GLXEW_ATI_pixel_format_float = GL_FALSE;\r\nGLboolean __GLXEW_ATI_render_texture = GL_FALSE;\r\nGLboolean __GLXEW_EXT_buffer_age = GL_FALSE;\r\nGLboolean __GLXEW_EXT_create_context_es2_profile = GL_FALSE;\r\nGLboolean __GLXEW_EXT_create_context_es_profile = GL_FALSE;\r\nGLboolean __GLXEW_EXT_fbconfig_packed_float = GL_FALSE;\r\nGLboolean __GLXEW_EXT_framebuffer_sRGB = GL_FALSE;\r\nGLboolean __GLXEW_EXT_import_context = GL_FALSE;\r\nGLboolean __GLXEW_EXT_libglvnd = GL_FALSE;\r\nGLboolean __GLXEW_EXT_scene_marker = GL_FALSE;\r\nGLboolean __GLXEW_EXT_stereo_tree = GL_FALSE;\r\nGLboolean __GLXEW_EXT_swap_control = GL_FALSE;\r\nGLboolean __GLXEW_EXT_swap_control_tear = GL_FALSE;\r\nGLboolean __GLXEW_EXT_texture_from_pixmap = GL_FALSE;\r\nGLboolean __GLXEW_EXT_visual_info = GL_FALSE;\r\nGLboolean __GLXEW_EXT_visual_rating = GL_FALSE;\r\nGLboolean __GLXEW_INTEL_swap_event = GL_FALSE;\r\nGLboolean __GLXEW_MESA_agp_offset = GL_FALSE;\r\nGLboolean __GLXEW_MESA_copy_sub_buffer = GL_FALSE;\r\nGLboolean __GLXEW_MESA_pixmap_colormap = GL_FALSE;\r\nGLboolean __GLXEW_MESA_query_renderer = GL_FALSE;\r\nGLboolean __GLXEW_MESA_release_buffers = GL_FALSE;\r\nGLboolean __GLXEW_MESA_set_3dfx_mode = GL_FALSE;\r\nGLboolean __GLXEW_MESA_swap_control = GL_FALSE;\r\nGLboolean __GLXEW_NV_copy_buffer = GL_FALSE;\r\nGLboolean __GLXEW_NV_copy_image = GL_FALSE;\r\nGLboolean __GLXEW_NV_delay_before_swap = GL_FALSE;\r\nGLboolean __GLXEW_NV_float_buffer = GL_FALSE;\r\nGLboolean __GLXEW_NV_multisample_coverage = GL_FALSE;\r\nGLboolean __GLXEW_NV_present_video = GL_FALSE;\r\nGLboolean __GLXEW_NV_robustness_video_memory_purge = GL_FALSE;\r\nGLboolean __GLXEW_NV_swap_group = GL_FALSE;\r\nGLboolean __GLXEW_NV_vertex_array_range = GL_FALSE;\r\nGLboolean __GLXEW_NV_video_capture = GL_FALSE;\r\nGLboolean __GLXEW_NV_video_out = GL_FALSE;\r\nGLboolean __GLXEW_OML_swap_method = GL_FALSE;\r\nGLboolean __GLXEW_OML_sync_control = GL_FALSE;\r\nGLboolean __GLXEW_SGIS_blended_overlay = GL_FALSE;\r\nGLboolean __GLXEW_SGIS_color_range = GL_FALSE;\r\nGLboolean __GLXEW_SGIS_multisample = GL_FALSE;\r\nGLboolean __GLXEW_SGIS_shared_multisample = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_fbconfig = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_hyperpipe = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_pbuffer = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_swap_barrier = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_swap_group = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_video_resize = GL_FALSE;\r\nGLboolean __GLXEW_SGIX_visual_select_group = GL_FALSE;\r\nGLboolean __GLXEW_SGI_cushion = GL_FALSE;\r\nGLboolean __GLXEW_SGI_make_current_read = GL_FALSE;\r\nGLboolean __GLXEW_SGI_swap_control = GL_FALSE;\r\nGLboolean __GLXEW_SGI_video_sync = GL_FALSE;\r\nGLboolean __GLXEW_SUN_get_transparent_index = GL_FALSE;\r\nGLboolean __GLXEW_SUN_video_resize = GL_FALSE;\r\n#ifdef GLX_VERSION_1_2\r\n\r\nstatic GLboolean _glewInit_GLX_VERSION_1_2 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)\"glXGetCurrentDisplay\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_VERSION_1_2 */\r\n\r\n#ifdef GLX_VERSION_1_3\r\n\r\nstatic GLboolean _glewInit_GLX_VERSION_1_3 ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC)glewGetProcAddress((const GLubyte*)\"glXChooseFBConfig\")) == NULL) || r;\r\n  r = ((glXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC)glewGetProcAddress((const GLubyte*)\"glXCreateNewContext\")) == NULL) || r;\r\n  r = ((glXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glXCreatePbuffer\")) == NULL) || r;\r\n  r = ((glXCreatePixmap = (PFNGLXCREATEPIXMAPPROC)glewGetProcAddress((const GLubyte*)\"glXCreatePixmap\")) == NULL) || r;\r\n  r = ((glXCreateWindow = (PFNGLXCREATEWINDOWPROC)glewGetProcAddress((const GLubyte*)\"glXCreateWindow\")) == NULL) || r;\r\n  r = ((glXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC)glewGetProcAddress((const GLubyte*)\"glXDestroyPbuffer\")) == NULL) || r;\r\n  r = ((glXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC)glewGetProcAddress((const GLubyte*)\"glXDestroyPixmap\")) == NULL) || r;\r\n  r = ((glXDestroyWindow = (PFNGLXDESTROYWINDOWPROC)glewGetProcAddress((const GLubyte*)\"glXDestroyWindow\")) == NULL) || r;\r\n  r = ((glXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC)glewGetProcAddress((const GLubyte*)\"glXGetCurrentReadDrawable\")) == NULL) || r;\r\n  r = ((glXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)\"glXGetFBConfigAttrib\")) == NULL) || r;\r\n  r = ((glXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC)glewGetProcAddress((const GLubyte*)\"glXGetFBConfigs\")) == NULL) || r;\r\n  r = ((glXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC)glewGetProcAddress((const GLubyte*)\"glXGetSelectedEvent\")) == NULL) || r;\r\n  r = ((glXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)glewGetProcAddress((const GLubyte*)\"glXGetVisualFromFBConfig\")) == NULL) || r;\r\n  r = ((glXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC)glewGetProcAddress((const GLubyte*)\"glXMakeContextCurrent\")) == NULL) || r;\r\n  r = ((glXQueryContext = (PFNGLXQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)\"glXQueryContext\")) == NULL) || r;\r\n  r = ((glXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC)glewGetProcAddress((const GLubyte*)\"glXQueryDrawable\")) == NULL) || r;\r\n  r = ((glXSelectEvent = (PFNGLXSELECTEVENTPROC)glewGetProcAddress((const GLubyte*)\"glXSelectEvent\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_VERSION_1_3 */\r\n\r\n#ifdef GLX_AMD_gpu_association\r\n\r\nstatic GLboolean _glewInit_GLX_AMD_gpu_association ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBlitContextFramebufferAMD = (PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)glewGetProcAddress((const GLubyte*)\"glXBlitContextFramebufferAMD\")) == NULL) || r;\r\n  r = ((glXCreateAssociatedContextAMD = (PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"glXCreateAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((glXCreateAssociatedContextAttribsAMD = (PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)glewGetProcAddress((const GLubyte*)\"glXCreateAssociatedContextAttribsAMD\")) == NULL) || r;\r\n  r = ((glXDeleteAssociatedContextAMD = (PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"glXDeleteAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((glXGetContextGPUIDAMD = (PFNGLXGETCONTEXTGPUIDAMDPROC)glewGetProcAddress((const GLubyte*)\"glXGetContextGPUIDAMD\")) == NULL) || r;\r\n  r = ((glXGetCurrentAssociatedContextAMD = (PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC)glewGetProcAddress((const GLubyte*)\"glXGetCurrentAssociatedContextAMD\")) == NULL) || r;\r\n  r = ((glXGetGPUIDsAMD = (PFNGLXGETGPUIDSAMDPROC)glewGetProcAddress((const GLubyte*)\"glXGetGPUIDsAMD\")) == NULL) || r;\r\n  r = ((glXGetGPUInfoAMD = (PFNGLXGETGPUINFOAMDPROC)glewGetProcAddress((const GLubyte*)\"glXGetGPUInfoAMD\")) == NULL) || r;\r\n  r = ((glXMakeAssociatedContextCurrentAMD = (PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)glewGetProcAddress((const GLubyte*)\"glXMakeAssociatedContextCurrentAMD\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_AMD_gpu_association */\r\n\r\n#ifdef GLX_ARB_create_context\r\n\r\nstatic GLboolean _glewInit_GLX_ARB_create_context ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)\"glXCreateContextAttribsARB\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_ARB_create_context */\r\n\r\n#ifdef GLX_ATI_render_texture\r\n\r\nstatic GLboolean _glewInit_GLX_ATI_render_texture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindTexImageATI = (PFNGLXBINDTEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)\"glXBindTexImageATI\")) == NULL) || r;\r\n  r = ((glXDrawableAttribATI = (PFNGLXDRAWABLEATTRIBATIPROC)glewGetProcAddress((const GLubyte*)\"glXDrawableAttribATI\")) == NULL) || r;\r\n  r = ((glXReleaseTexImageATI = (PFNGLXRELEASETEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseTexImageATI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_ATI_render_texture */\r\n\r\n#ifdef GLX_EXT_import_context\r\n\r\nstatic GLboolean _glewInit_GLX_EXT_import_context ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)\"glXFreeContextEXT\")) == NULL) || r;\r\n  r = ((glXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC)glewGetProcAddress((const GLubyte*)\"glXGetContextIDEXT\")) == NULL) || r;\r\n  r = ((glXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)\"glXImportContextEXT\")) == NULL) || r;\r\n  r = ((glXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC)glewGetProcAddress((const GLubyte*)\"glXQueryContextInfoEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_EXT_import_context */\r\n\r\n#ifdef GLX_EXT_swap_control\r\n\r\nstatic GLboolean _glewInit_GLX_EXT_swap_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)\"glXSwapIntervalEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_EXT_swap_control */\r\n\r\n#ifdef GLX_EXT_texture_from_pixmap\r\n\r\nstatic GLboolean _glewInit_GLX_EXT_texture_from_pixmap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glXBindTexImageEXT\")) == NULL) || r;\r\n  r = ((glXReleaseTexImageEXT = (PFNGLXRELEASETEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseTexImageEXT\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_EXT_texture_from_pixmap */\r\n\r\n#ifdef GLX_MESA_agp_offset\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_agp_offset ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC)glewGetProcAddress((const GLubyte*)\"glXGetAGPOffsetMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_agp_offset */\r\n\r\n#ifdef GLX_MESA_copy_sub_buffer\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_copy_sub_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC)glewGetProcAddress((const GLubyte*)\"glXCopySubBufferMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_copy_sub_buffer */\r\n\r\n#ifdef GLX_MESA_pixmap_colormap\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_pixmap_colormap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC)glewGetProcAddress((const GLubyte*)\"glXCreateGLXPixmapMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_pixmap_colormap */\r\n\r\n#ifdef GLX_MESA_query_renderer\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_query_renderer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXQueryCurrentRendererIntegerMESA = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)\"glXQueryCurrentRendererIntegerMESA\")) == NULL) || r;\r\n  r = ((glXQueryCurrentRendererStringMESA = (PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)\"glXQueryCurrentRendererStringMESA\")) == NULL) || r;\r\n  r = ((glXQueryRendererIntegerMESA = (PFNGLXQUERYRENDERERINTEGERMESAPROC)glewGetProcAddress((const GLubyte*)\"glXQueryRendererIntegerMESA\")) == NULL) || r;\r\n  r = ((glXQueryRendererStringMESA = (PFNGLXQUERYRENDERERSTRINGMESAPROC)glewGetProcAddress((const GLubyte*)\"glXQueryRendererStringMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_query_renderer */\r\n\r\n#ifdef GLX_MESA_release_buffers\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_release_buffers ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseBuffersMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_release_buffers */\r\n\r\n#ifdef GLX_MESA_set_3dfx_mode\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_set_3dfx_mode ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC)glewGetProcAddress((const GLubyte*)\"glXSet3DfxModeMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_set_3dfx_mode */\r\n\r\n#ifdef GLX_MESA_swap_control\r\n\r\nstatic GLboolean _glewInit_GLX_MESA_swap_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetSwapIntervalMESA = (PFNGLXGETSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)\"glXGetSwapIntervalMESA\")) == NULL) || r;\r\n  r = ((glXSwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC)glewGetProcAddress((const GLubyte*)\"glXSwapIntervalMESA\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_MESA_swap_control */\r\n\r\n#ifdef GLX_NV_copy_buffer\r\n\r\nstatic GLboolean _glewInit_GLX_NV_copy_buffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCopyBufferSubDataNV = (PFNGLXCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glXCopyBufferSubDataNV\")) == NULL) || r;\r\n  r = ((glXNamedCopyBufferSubDataNV = (PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glXNamedCopyBufferSubDataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_copy_buffer */\r\n\r\n#ifdef GLX_NV_copy_image\r\n\r\nstatic GLboolean _glewInit_GLX_NV_copy_image ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCopyImageSubDataNV = (PFNGLXCOPYIMAGESUBDATANVPROC)glewGetProcAddress((const GLubyte*)\"glXCopyImageSubDataNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_copy_image */\r\n\r\n#ifdef GLX_NV_delay_before_swap\r\n\r\nstatic GLboolean _glewInit_GLX_NV_delay_before_swap ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXDelayBeforeSwapNV = (PFNGLXDELAYBEFORESWAPNVPROC)glewGetProcAddress((const GLubyte*)\"glXDelayBeforeSwapNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_delay_before_swap */\r\n\r\n#ifdef GLX_NV_present_video\r\n\r\nstatic GLboolean _glewInit_GLX_NV_present_video ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindVideoDeviceNV = (PFNGLXBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXBindVideoDeviceNV\")) == NULL) || r;\r\n  r = ((glXEnumerateVideoDevicesNV = (PFNGLXENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)\"glXEnumerateVideoDevicesNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_present_video */\r\n\r\n#ifdef GLX_NV_swap_group\r\n\r\nstatic GLboolean _glewInit_GLX_NV_swap_group ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindSwapBarrierNV = (PFNGLXBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)\"glXBindSwapBarrierNV\")) == NULL) || r;\r\n  r = ((glXJoinSwapGroupNV = (PFNGLXJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)\"glXJoinSwapGroupNV\")) == NULL) || r;\r\n  r = ((glXQueryFrameCountNV = (PFNGLXQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"glXQueryFrameCountNV\")) == NULL) || r;\r\n  r = ((glXQueryMaxSwapGroupsNV = (PFNGLXQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)\"glXQueryMaxSwapGroupsNV\")) == NULL) || r;\r\n  r = ((glXQuerySwapGroupNV = (PFNGLXQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)\"glXQuerySwapGroupNV\")) == NULL) || r;\r\n  r = ((glXResetFrameCountNV = (PFNGLXRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)\"glXResetFrameCountNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_swap_group */\r\n\r\n#ifdef GLX_NV_vertex_array_range\r\n\r\nstatic GLboolean _glewInit_GLX_NV_vertex_array_range ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXAllocateMemoryNV = (PFNGLXALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)\"glXAllocateMemoryNV\")) == NULL) || r;\r\n  r = ((glXFreeMemoryNV = (PFNGLXFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)\"glXFreeMemoryNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_vertex_array_range */\r\n\r\n#ifdef GLX_NV_video_capture\r\n\r\nstatic GLboolean _glewInit_GLX_NV_video_capture ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindVideoCaptureDeviceNV = (PFNGLXBINDVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXBindVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((glXEnumerateVideoCaptureDevicesNV = (PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC)glewGetProcAddress((const GLubyte*)\"glXEnumerateVideoCaptureDevicesNV\")) == NULL) || r;\r\n  r = ((glXLockVideoCaptureDeviceNV = (PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXLockVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((glXQueryVideoCaptureDeviceNV = (PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXQueryVideoCaptureDeviceNV\")) == NULL) || r;\r\n  r = ((glXReleaseVideoCaptureDeviceNV = (PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseVideoCaptureDeviceNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_video_capture */\r\n\r\n#ifdef GLX_NV_video_out\r\n\r\nstatic GLboolean _glewInit_GLX_NV_video_out ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindVideoImageNV = (PFNGLXBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)\"glXBindVideoImageNV\")) == NULL) || r;\r\n  r = ((glXGetVideoDeviceNV = (PFNGLXGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXGetVideoDeviceNV\")) == NULL) || r;\r\n  r = ((glXGetVideoInfoNV = (PFNGLXGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)\"glXGetVideoInfoNV\")) == NULL) || r;\r\n  r = ((glXReleaseVideoDeviceNV = (PFNGLXRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseVideoDeviceNV\")) == NULL) || r;\r\n  r = ((glXReleaseVideoImageNV = (PFNGLXRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)\"glXReleaseVideoImageNV\")) == NULL) || r;\r\n  r = ((glXSendPbufferToVideoNV = (PFNGLXSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)\"glXSendPbufferToVideoNV\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_NV_video_out */\r\n\r\n#ifdef GLX_OML_sync_control\r\n\r\nstatic GLboolean _glewInit_GLX_OML_sync_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)\"glXGetMscRateOML\")) == NULL) || r;\r\n  r = ((glXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)\"glXGetSyncValuesOML\")) == NULL) || r;\r\n  r = ((glXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)\"glXSwapBuffersMscOML\")) == NULL) || r;\r\n  r = ((glXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)\"glXWaitForMscOML\")) == NULL) || r;\r\n  r = ((glXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)\"glXWaitForSbcOML\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_OML_sync_control */\r\n\r\n#ifdef GLX_SGIX_fbconfig\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_fbconfig ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXChooseFBConfigSGIX\")) == NULL) || r;\r\n  r = ((glXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXCreateContextWithConfigSGIX\")) == NULL) || r;\r\n  r = ((glXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXCreateGLXPixmapWithConfigSGIX\")) == NULL) || r;\r\n  r = ((glXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXGetFBConfigAttribSGIX\")) == NULL) || r;\r\n  r = ((glXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXGetFBConfigFromVisualSGIX\")) == NULL) || r;\r\n  r = ((glXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXGetVisualFromFBConfigSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_fbconfig */\r\n\r\n#ifdef GLX_SGIX_hyperpipe\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_hyperpipe ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC)glewGetProcAddress((const GLubyte*)\"glXBindHyperpipeSGIX\")) == NULL) || r;\r\n  r = ((glXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXDestroyHyperpipeConfigSGIX\")) == NULL) || r;\r\n  r = ((glXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXHyperpipeAttribSGIX\")) == NULL) || r;\r\n  r = ((glXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXHyperpipeConfigSGIX\")) == NULL) || r;\r\n  r = ((glXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryHyperpipeAttribSGIX\")) == NULL) || r;\r\n  r = ((glXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryHyperpipeBestAttribSGIX\")) == NULL) || r;\r\n  r = ((glXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryHyperpipeConfigSGIX\")) == NULL) || r;\r\n  r = ((glXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryHyperpipeNetworkSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_hyperpipe */\r\n\r\n#ifdef GLX_SGIX_pbuffer\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_pbuffer ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXCreateGLXPbufferSGIX\")) == NULL) || r;\r\n  r = ((glXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXDestroyGLXPbufferSGIX\")) == NULL) || r;\r\n  r = ((glXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXGetSelectedEventSGIX\")) == NULL) || r;\r\n  r = ((glXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryGLXPbufferSGIX\")) == NULL) || r;\r\n  r = ((glXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXSelectEventSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_pbuffer */\r\n\r\n#ifdef GLX_SGIX_swap_barrier\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_swap_barrier ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXBindSwapBarrierSGIX\")) == NULL) || r;\r\n  r = ((glXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryMaxSwapBarriersSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_swap_barrier */\r\n\r\n#ifdef GLX_SGIX_swap_group\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_swap_group ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXJoinSwapGroupSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_swap_group */\r\n\r\n#ifdef GLX_SGIX_video_resize\r\n\r\nstatic GLboolean _glewInit_GLX_SGIX_video_resize ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXBindChannelToWindowSGIX\")) == NULL) || r;\r\n  r = ((glXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXChannelRectSGIX\")) == NULL) || r;\r\n  r = ((glXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXChannelRectSyncSGIX\")) == NULL) || r;\r\n  r = ((glXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryChannelDeltasSGIX\")) == NULL) || r;\r\n  r = ((glXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)\"glXQueryChannelRectSGIX\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGIX_video_resize */\r\n\r\n#ifdef GLX_SGI_cushion\r\n\r\nstatic GLboolean _glewInit_GLX_SGI_cushion ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXCushionSGI = (PFNGLXCUSHIONSGIPROC)glewGetProcAddress((const GLubyte*)\"glXCushionSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGI_cushion */\r\n\r\n#ifdef GLX_SGI_make_current_read\r\n\r\nstatic GLboolean _glewInit_GLX_SGI_make_current_read ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC)glewGetProcAddress((const GLubyte*)\"glXGetCurrentReadDrawableSGI\")) == NULL) || r;\r\n  r = ((glXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC)glewGetProcAddress((const GLubyte*)\"glXMakeCurrentReadSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGI_make_current_read */\r\n\r\n#ifdef GLX_SGI_swap_control\r\n\r\nstatic GLboolean _glewInit_GLX_SGI_swap_control ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glewGetProcAddress((const GLubyte*)\"glXSwapIntervalSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGI_swap_control */\r\n\r\n#ifdef GLX_SGI_video_sync\r\n\r\nstatic GLboolean _glewInit_GLX_SGI_video_sync ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)\"glXGetVideoSyncSGI\")) == NULL) || r;\r\n  r = ((glXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)\"glXWaitVideoSyncSGI\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SGI_video_sync */\r\n\r\n#ifdef GLX_SUN_get_transparent_index\r\n\r\nstatic GLboolean _glewInit_GLX_SUN_get_transparent_index ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC)glewGetProcAddress((const GLubyte*)\"glXGetTransparentIndexSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SUN_get_transparent_index */\r\n\r\n#ifdef GLX_SUN_video_resize\r\n\r\nstatic GLboolean _glewInit_GLX_SUN_video_resize ()\r\n{\r\n  GLboolean r = GL_FALSE;\r\n\r\n  r = ((glXGetVideoResizeSUN = (PFNGLXGETVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)\"glXGetVideoResizeSUN\")) == NULL) || r;\r\n  r = ((glXVideoResizeSUN = (PFNGLXVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)\"glXVideoResizeSUN\")) == NULL) || r;\r\n\r\n  return r;\r\n}\r\n\r\n#endif /* GLX_SUN_video_resize */\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nGLboolean glxewGetExtension (const char* name)\r\n{    \r\n  const GLubyte* start;\r\n  const GLubyte* end;\r\n\r\n  if (glXGetCurrentDisplay == NULL) return GL_FALSE;\r\n  start = (const GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS);\r\n  if (0 == start) return GL_FALSE;\r\n  end = start + _glewStrLen(start);\r\n  return _glewSearchExtension(name, start, end);\r\n}\r\n\r\nGLenum glxewInit ()\r\n{\r\n  Display* display;\r\n  int major, minor;\r\n  const GLubyte* extStart;\r\n  const GLubyte* extEnd;\r\n  /* initialize core GLX 1.2 */\r\n  if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY;\r\n  /* check for a display */\r\n  display = glXGetCurrentDisplay();\r\n  if (display == NULL) return GLEW_ERROR_NO_GLX_DISPLAY;\r\n  /* initialize flags */\r\n  GLXEW_VERSION_1_0 = GL_TRUE;\r\n  GLXEW_VERSION_1_1 = GL_TRUE;\r\n  GLXEW_VERSION_1_2 = GL_TRUE;\r\n  GLXEW_VERSION_1_3 = GL_TRUE;\r\n  GLXEW_VERSION_1_4 = GL_TRUE;\r\n  /* query GLX version */\r\n  glXQueryVersion(display, &major, &minor);\r\n  if (major == 1 && minor <= 3)\r\n  {\r\n    switch (minor)\r\n    {\r\n      case 3:\r\n      GLXEW_VERSION_1_4 = GL_FALSE;\r\n      break;\r\n      case 2:\r\n      GLXEW_VERSION_1_4 = GL_FALSE;\r\n      GLXEW_VERSION_1_3 = GL_FALSE;\r\n      break;\r\n      default:\r\n      return GLEW_ERROR_GLX_VERSION_11_ONLY;\r\n      break;\r\n    }\r\n  }\r\n  /* query GLX extension string */\r\n  extStart = 0;\r\n  if (glXGetCurrentDisplay != NULL)\r\n    extStart = (const GLubyte*)glXGetClientString(display, GLX_EXTENSIONS);\r\n  if (extStart == 0)\r\n    extStart = (const GLubyte *)\"\";\r\n  extEnd = extStart + _glewStrLen(extStart);\r\n  /* initialize extensions */\r\n#ifdef GLX_VERSION_1_3\r\n  if (glewExperimental || GLXEW_VERSION_1_3) GLXEW_VERSION_1_3 = !_glewInit_GLX_VERSION_1_3();\r\n#endif /* GLX_VERSION_1_3 */\r\n#ifdef GLX_3DFX_multisample\r\n  GLXEW_3DFX_multisample = _glewSearchExtension(\"GLX_3DFX_multisample\", extStart, extEnd);\r\n#endif /* GLX_3DFX_multisample */\r\n#ifdef GLX_AMD_gpu_association\r\n  GLXEW_AMD_gpu_association = _glewSearchExtension(\"GLX_AMD_gpu_association\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_AMD_gpu_association) GLXEW_AMD_gpu_association = !_glewInit_GLX_AMD_gpu_association();\r\n#endif /* GLX_AMD_gpu_association */\r\n#ifdef GLX_ARB_context_flush_control\r\n  GLXEW_ARB_context_flush_control = _glewSearchExtension(\"GLX_ARB_context_flush_control\", extStart, extEnd);\r\n#endif /* GLX_ARB_context_flush_control */\r\n#ifdef GLX_ARB_create_context\r\n  GLXEW_ARB_create_context = _glewSearchExtension(\"GLX_ARB_create_context\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_ARB_create_context) GLXEW_ARB_create_context = !_glewInit_GLX_ARB_create_context();\r\n#endif /* GLX_ARB_create_context */\r\n#ifdef GLX_ARB_create_context_no_error\r\n  GLXEW_ARB_create_context_no_error = _glewSearchExtension(\"GLX_ARB_create_context_no_error\", extStart, extEnd);\r\n#endif /* GLX_ARB_create_context_no_error */\r\n#ifdef GLX_ARB_create_context_profile\r\n  GLXEW_ARB_create_context_profile = _glewSearchExtension(\"GLX_ARB_create_context_profile\", extStart, extEnd);\r\n#endif /* GLX_ARB_create_context_profile */\r\n#ifdef GLX_ARB_create_context_robustness\r\n  GLXEW_ARB_create_context_robustness = _glewSearchExtension(\"GLX_ARB_create_context_robustness\", extStart, extEnd);\r\n#endif /* GLX_ARB_create_context_robustness */\r\n#ifdef GLX_ARB_fbconfig_float\r\n  GLXEW_ARB_fbconfig_float = _glewSearchExtension(\"GLX_ARB_fbconfig_float\", extStart, extEnd);\r\n#endif /* GLX_ARB_fbconfig_float */\r\n#ifdef GLX_ARB_framebuffer_sRGB\r\n  GLXEW_ARB_framebuffer_sRGB = _glewSearchExtension(\"GLX_ARB_framebuffer_sRGB\", extStart, extEnd);\r\n#endif /* GLX_ARB_framebuffer_sRGB */\r\n#ifdef GLX_ARB_get_proc_address\r\n  GLXEW_ARB_get_proc_address = _glewSearchExtension(\"GLX_ARB_get_proc_address\", extStart, extEnd);\r\n#endif /* GLX_ARB_get_proc_address */\r\n#ifdef GLX_ARB_multisample\r\n  GLXEW_ARB_multisample = _glewSearchExtension(\"GLX_ARB_multisample\", extStart, extEnd);\r\n#endif /* GLX_ARB_multisample */\r\n#ifdef GLX_ARB_robustness_application_isolation\r\n  GLXEW_ARB_robustness_application_isolation = _glewSearchExtension(\"GLX_ARB_robustness_application_isolation\", extStart, extEnd);\r\n#endif /* GLX_ARB_robustness_application_isolation */\r\n#ifdef GLX_ARB_robustness_share_group_isolation\r\n  GLXEW_ARB_robustness_share_group_isolation = _glewSearchExtension(\"GLX_ARB_robustness_share_group_isolation\", extStart, extEnd);\r\n#endif /* GLX_ARB_robustness_share_group_isolation */\r\n#ifdef GLX_ARB_vertex_buffer_object\r\n  GLXEW_ARB_vertex_buffer_object = _glewSearchExtension(\"GLX_ARB_vertex_buffer_object\", extStart, extEnd);\r\n#endif /* GLX_ARB_vertex_buffer_object */\r\n#ifdef GLX_ATI_pixel_format_float\r\n  GLXEW_ATI_pixel_format_float = _glewSearchExtension(\"GLX_ATI_pixel_format_float\", extStart, extEnd);\r\n#endif /* GLX_ATI_pixel_format_float */\r\n#ifdef GLX_ATI_render_texture\r\n  GLXEW_ATI_render_texture = _glewSearchExtension(\"GLX_ATI_render_texture\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_ATI_render_texture) GLXEW_ATI_render_texture = !_glewInit_GLX_ATI_render_texture();\r\n#endif /* GLX_ATI_render_texture */\r\n#ifdef GLX_EXT_buffer_age\r\n  GLXEW_EXT_buffer_age = _glewSearchExtension(\"GLX_EXT_buffer_age\", extStart, extEnd);\r\n#endif /* GLX_EXT_buffer_age */\r\n#ifdef GLX_EXT_create_context_es2_profile\r\n  GLXEW_EXT_create_context_es2_profile = _glewSearchExtension(\"GLX_EXT_create_context_es2_profile\", extStart, extEnd);\r\n#endif /* GLX_EXT_create_context_es2_profile */\r\n#ifdef GLX_EXT_create_context_es_profile\r\n  GLXEW_EXT_create_context_es_profile = _glewSearchExtension(\"GLX_EXT_create_context_es_profile\", extStart, extEnd);\r\n#endif /* GLX_EXT_create_context_es_profile */\r\n#ifdef GLX_EXT_fbconfig_packed_float\r\n  GLXEW_EXT_fbconfig_packed_float = _glewSearchExtension(\"GLX_EXT_fbconfig_packed_float\", extStart, extEnd);\r\n#endif /* GLX_EXT_fbconfig_packed_float */\r\n#ifdef GLX_EXT_framebuffer_sRGB\r\n  GLXEW_EXT_framebuffer_sRGB = _glewSearchExtension(\"GLX_EXT_framebuffer_sRGB\", extStart, extEnd);\r\n#endif /* GLX_EXT_framebuffer_sRGB */\r\n#ifdef GLX_EXT_import_context\r\n  GLXEW_EXT_import_context = _glewSearchExtension(\"GLX_EXT_import_context\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_EXT_import_context) GLXEW_EXT_import_context = !_glewInit_GLX_EXT_import_context();\r\n#endif /* GLX_EXT_import_context */\r\n#ifdef GLX_EXT_libglvnd\r\n  GLXEW_EXT_libglvnd = _glewSearchExtension(\"GLX_EXT_libglvnd\", extStart, extEnd);\r\n#endif /* GLX_EXT_libglvnd */\r\n#ifdef GLX_EXT_scene_marker\r\n  GLXEW_EXT_scene_marker = _glewSearchExtension(\"GLX_EXT_scene_marker\", extStart, extEnd);\r\n#endif /* GLX_EXT_scene_marker */\r\n#ifdef GLX_EXT_stereo_tree\r\n  GLXEW_EXT_stereo_tree = _glewSearchExtension(\"GLX_EXT_stereo_tree\", extStart, extEnd);\r\n#endif /* GLX_EXT_stereo_tree */\r\n#ifdef GLX_EXT_swap_control\r\n  GLXEW_EXT_swap_control = _glewSearchExtension(\"GLX_EXT_swap_control\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_EXT_swap_control) GLXEW_EXT_swap_control = !_glewInit_GLX_EXT_swap_control();\r\n#endif /* GLX_EXT_swap_control */\r\n#ifdef GLX_EXT_swap_control_tear\r\n  GLXEW_EXT_swap_control_tear = _glewSearchExtension(\"GLX_EXT_swap_control_tear\", extStart, extEnd);\r\n#endif /* GLX_EXT_swap_control_tear */\r\n#ifdef GLX_EXT_texture_from_pixmap\r\n  GLXEW_EXT_texture_from_pixmap = _glewSearchExtension(\"GLX_EXT_texture_from_pixmap\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_EXT_texture_from_pixmap) GLXEW_EXT_texture_from_pixmap = !_glewInit_GLX_EXT_texture_from_pixmap();\r\n#endif /* GLX_EXT_texture_from_pixmap */\r\n#ifdef GLX_EXT_visual_info\r\n  GLXEW_EXT_visual_info = _glewSearchExtension(\"GLX_EXT_visual_info\", extStart, extEnd);\r\n#endif /* GLX_EXT_visual_info */\r\n#ifdef GLX_EXT_visual_rating\r\n  GLXEW_EXT_visual_rating = _glewSearchExtension(\"GLX_EXT_visual_rating\", extStart, extEnd);\r\n#endif /* GLX_EXT_visual_rating */\r\n#ifdef GLX_INTEL_swap_event\r\n  GLXEW_INTEL_swap_event = _glewSearchExtension(\"GLX_INTEL_swap_event\", extStart, extEnd);\r\n#endif /* GLX_INTEL_swap_event */\r\n#ifdef GLX_MESA_agp_offset\r\n  GLXEW_MESA_agp_offset = _glewSearchExtension(\"GLX_MESA_agp_offset\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_agp_offset) GLXEW_MESA_agp_offset = !_glewInit_GLX_MESA_agp_offset();\r\n#endif /* GLX_MESA_agp_offset */\r\n#ifdef GLX_MESA_copy_sub_buffer\r\n  GLXEW_MESA_copy_sub_buffer = _glewSearchExtension(\"GLX_MESA_copy_sub_buffer\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_copy_sub_buffer) GLXEW_MESA_copy_sub_buffer = !_glewInit_GLX_MESA_copy_sub_buffer();\r\n#endif /* GLX_MESA_copy_sub_buffer */\r\n#ifdef GLX_MESA_pixmap_colormap\r\n  GLXEW_MESA_pixmap_colormap = _glewSearchExtension(\"GLX_MESA_pixmap_colormap\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_pixmap_colormap) GLXEW_MESA_pixmap_colormap = !_glewInit_GLX_MESA_pixmap_colormap();\r\n#endif /* GLX_MESA_pixmap_colormap */\r\n#ifdef GLX_MESA_query_renderer\r\n  GLXEW_MESA_query_renderer = _glewSearchExtension(\"GLX_MESA_query_renderer\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_query_renderer) GLXEW_MESA_query_renderer = !_glewInit_GLX_MESA_query_renderer();\r\n#endif /* GLX_MESA_query_renderer */\r\n#ifdef GLX_MESA_release_buffers\r\n  GLXEW_MESA_release_buffers = _glewSearchExtension(\"GLX_MESA_release_buffers\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_release_buffers) GLXEW_MESA_release_buffers = !_glewInit_GLX_MESA_release_buffers();\r\n#endif /* GLX_MESA_release_buffers */\r\n#ifdef GLX_MESA_set_3dfx_mode\r\n  GLXEW_MESA_set_3dfx_mode = _glewSearchExtension(\"GLX_MESA_set_3dfx_mode\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_set_3dfx_mode) GLXEW_MESA_set_3dfx_mode = !_glewInit_GLX_MESA_set_3dfx_mode();\r\n#endif /* GLX_MESA_set_3dfx_mode */\r\n#ifdef GLX_MESA_swap_control\r\n  GLXEW_MESA_swap_control = _glewSearchExtension(\"GLX_MESA_swap_control\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_MESA_swap_control) GLXEW_MESA_swap_control = !_glewInit_GLX_MESA_swap_control();\r\n#endif /* GLX_MESA_swap_control */\r\n#ifdef GLX_NV_copy_buffer\r\n  GLXEW_NV_copy_buffer = _glewSearchExtension(\"GLX_NV_copy_buffer\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_copy_buffer) GLXEW_NV_copy_buffer = !_glewInit_GLX_NV_copy_buffer();\r\n#endif /* GLX_NV_copy_buffer */\r\n#ifdef GLX_NV_copy_image\r\n  GLXEW_NV_copy_image = _glewSearchExtension(\"GLX_NV_copy_image\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_copy_image) GLXEW_NV_copy_image = !_glewInit_GLX_NV_copy_image();\r\n#endif /* GLX_NV_copy_image */\r\n#ifdef GLX_NV_delay_before_swap\r\n  GLXEW_NV_delay_before_swap = _glewSearchExtension(\"GLX_NV_delay_before_swap\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_delay_before_swap) GLXEW_NV_delay_before_swap = !_glewInit_GLX_NV_delay_before_swap();\r\n#endif /* GLX_NV_delay_before_swap */\r\n#ifdef GLX_NV_float_buffer\r\n  GLXEW_NV_float_buffer = _glewSearchExtension(\"GLX_NV_float_buffer\", extStart, extEnd);\r\n#endif /* GLX_NV_float_buffer */\r\n#ifdef GLX_NV_multisample_coverage\r\n  GLXEW_NV_multisample_coverage = _glewSearchExtension(\"GLX_NV_multisample_coverage\", extStart, extEnd);\r\n#endif /* GLX_NV_multisample_coverage */\r\n#ifdef GLX_NV_present_video\r\n  GLXEW_NV_present_video = _glewSearchExtension(\"GLX_NV_present_video\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_present_video) GLXEW_NV_present_video = !_glewInit_GLX_NV_present_video();\r\n#endif /* GLX_NV_present_video */\r\n#ifdef GLX_NV_robustness_video_memory_purge\r\n  GLXEW_NV_robustness_video_memory_purge = _glewSearchExtension(\"GLX_NV_robustness_video_memory_purge\", extStart, extEnd);\r\n#endif /* GLX_NV_robustness_video_memory_purge */\r\n#ifdef GLX_NV_swap_group\r\n  GLXEW_NV_swap_group = _glewSearchExtension(\"GLX_NV_swap_group\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_swap_group) GLXEW_NV_swap_group = !_glewInit_GLX_NV_swap_group();\r\n#endif /* GLX_NV_swap_group */\r\n#ifdef GLX_NV_vertex_array_range\r\n  GLXEW_NV_vertex_array_range = _glewSearchExtension(\"GLX_NV_vertex_array_range\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_vertex_array_range) GLXEW_NV_vertex_array_range = !_glewInit_GLX_NV_vertex_array_range();\r\n#endif /* GLX_NV_vertex_array_range */\r\n#ifdef GLX_NV_video_capture\r\n  GLXEW_NV_video_capture = _glewSearchExtension(\"GLX_NV_video_capture\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_video_capture) GLXEW_NV_video_capture = !_glewInit_GLX_NV_video_capture();\r\n#endif /* GLX_NV_video_capture */\r\n#ifdef GLX_NV_video_out\r\n  GLXEW_NV_video_out = _glewSearchExtension(\"GLX_NV_video_out\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_NV_video_out) GLXEW_NV_video_out = !_glewInit_GLX_NV_video_out();\r\n#endif /* GLX_NV_video_out */\r\n#ifdef GLX_OML_swap_method\r\n  GLXEW_OML_swap_method = _glewSearchExtension(\"GLX_OML_swap_method\", extStart, extEnd);\r\n#endif /* GLX_OML_swap_method */\r\n#ifdef GLX_OML_sync_control\r\n  GLXEW_OML_sync_control = _glewSearchExtension(\"GLX_OML_sync_control\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_OML_sync_control) GLXEW_OML_sync_control = !_glewInit_GLX_OML_sync_control();\r\n#endif /* GLX_OML_sync_control */\r\n#ifdef GLX_SGIS_blended_overlay\r\n  GLXEW_SGIS_blended_overlay = _glewSearchExtension(\"GLX_SGIS_blended_overlay\", extStart, extEnd);\r\n#endif /* GLX_SGIS_blended_overlay */\r\n#ifdef GLX_SGIS_color_range\r\n  GLXEW_SGIS_color_range = _glewSearchExtension(\"GLX_SGIS_color_range\", extStart, extEnd);\r\n#endif /* GLX_SGIS_color_range */\r\n#ifdef GLX_SGIS_multisample\r\n  GLXEW_SGIS_multisample = _glewSearchExtension(\"GLX_SGIS_multisample\", extStart, extEnd);\r\n#endif /* GLX_SGIS_multisample */\r\n#ifdef GLX_SGIS_shared_multisample\r\n  GLXEW_SGIS_shared_multisample = _glewSearchExtension(\"GLX_SGIS_shared_multisample\", extStart, extEnd);\r\n#endif /* GLX_SGIS_shared_multisample */\r\n#ifdef GLX_SGIX_fbconfig\r\n  GLXEW_SGIX_fbconfig = _glewSearchExtension(\"GLX_SGIX_fbconfig\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_fbconfig) GLXEW_SGIX_fbconfig = !_glewInit_GLX_SGIX_fbconfig();\r\n#endif /* GLX_SGIX_fbconfig */\r\n#ifdef GLX_SGIX_hyperpipe\r\n  GLXEW_SGIX_hyperpipe = _glewSearchExtension(\"GLX_SGIX_hyperpipe\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_hyperpipe) GLXEW_SGIX_hyperpipe = !_glewInit_GLX_SGIX_hyperpipe();\r\n#endif /* GLX_SGIX_hyperpipe */\r\n#ifdef GLX_SGIX_pbuffer\r\n  GLXEW_SGIX_pbuffer = _glewSearchExtension(\"GLX_SGIX_pbuffer\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_pbuffer) GLXEW_SGIX_pbuffer = !_glewInit_GLX_SGIX_pbuffer();\r\n#endif /* GLX_SGIX_pbuffer */\r\n#ifdef GLX_SGIX_swap_barrier\r\n  GLXEW_SGIX_swap_barrier = _glewSearchExtension(\"GLX_SGIX_swap_barrier\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_swap_barrier) GLXEW_SGIX_swap_barrier = !_glewInit_GLX_SGIX_swap_barrier();\r\n#endif /* GLX_SGIX_swap_barrier */\r\n#ifdef GLX_SGIX_swap_group\r\n  GLXEW_SGIX_swap_group = _glewSearchExtension(\"GLX_SGIX_swap_group\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_swap_group) GLXEW_SGIX_swap_group = !_glewInit_GLX_SGIX_swap_group();\r\n#endif /* GLX_SGIX_swap_group */\r\n#ifdef GLX_SGIX_video_resize\r\n  GLXEW_SGIX_video_resize = _glewSearchExtension(\"GLX_SGIX_video_resize\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGIX_video_resize) GLXEW_SGIX_video_resize = !_glewInit_GLX_SGIX_video_resize();\r\n#endif /* GLX_SGIX_video_resize */\r\n#ifdef GLX_SGIX_visual_select_group\r\n  GLXEW_SGIX_visual_select_group = _glewSearchExtension(\"GLX_SGIX_visual_select_group\", extStart, extEnd);\r\n#endif /* GLX_SGIX_visual_select_group */\r\n#ifdef GLX_SGI_cushion\r\n  GLXEW_SGI_cushion = _glewSearchExtension(\"GLX_SGI_cushion\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGI_cushion) GLXEW_SGI_cushion = !_glewInit_GLX_SGI_cushion();\r\n#endif /* GLX_SGI_cushion */\r\n#ifdef GLX_SGI_make_current_read\r\n  GLXEW_SGI_make_current_read = _glewSearchExtension(\"GLX_SGI_make_current_read\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGI_make_current_read) GLXEW_SGI_make_current_read = !_glewInit_GLX_SGI_make_current_read();\r\n#endif /* GLX_SGI_make_current_read */\r\n#ifdef GLX_SGI_swap_control\r\n  GLXEW_SGI_swap_control = _glewSearchExtension(\"GLX_SGI_swap_control\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGI_swap_control) GLXEW_SGI_swap_control = !_glewInit_GLX_SGI_swap_control();\r\n#endif /* GLX_SGI_swap_control */\r\n#ifdef GLX_SGI_video_sync\r\n  GLXEW_SGI_video_sync = _glewSearchExtension(\"GLX_SGI_video_sync\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SGI_video_sync) GLXEW_SGI_video_sync = !_glewInit_GLX_SGI_video_sync();\r\n#endif /* GLX_SGI_video_sync */\r\n#ifdef GLX_SUN_get_transparent_index\r\n  GLXEW_SUN_get_transparent_index = _glewSearchExtension(\"GLX_SUN_get_transparent_index\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SUN_get_transparent_index) GLXEW_SUN_get_transparent_index = !_glewInit_GLX_SUN_get_transparent_index();\r\n#endif /* GLX_SUN_get_transparent_index */\r\n#ifdef GLX_SUN_video_resize\r\n  GLXEW_SUN_video_resize = _glewSearchExtension(\"GLX_SUN_video_resize\", extStart, extEnd);\r\n  if (glewExperimental || GLXEW_SUN_video_resize) GLXEW_SUN_video_resize = !_glewInit_GLX_SUN_video_resize();\r\n#endif /* GLX_SUN_video_resize */\r\n\r\n  return GLEW_OK;\r\n}\r\n\r\n#endif /* !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX)) */\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nconst GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error)\r\n{\r\n  static const GLubyte* _glewErrorString[] =\r\n  {\r\n    (const GLubyte*)\"No error\",\r\n    (const GLubyte*)\"Missing GL version\",\r\n    (const GLubyte*)\"GL 1.1 and up are not supported\",\r\n    (const GLubyte*)\"GLX 1.2 and up are not supported\",\r\n    (const GLubyte*)\"Unknown error\"\r\n  };\r\n  const size_t max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1;\r\n  return _glewErrorString[(size_t)error > max_error ? max_error : (size_t)error];\r\n}\r\n\r\nconst GLubyte * GLEWAPIENTRY glewGetString (GLenum name)\r\n{\r\n  static const GLubyte* _glewString[] =\r\n  {\r\n    (const GLubyte*)NULL,\r\n    (const GLubyte*)\"2.1.0\",\r\n    (const GLubyte*)\"2\",\r\n    (const GLubyte*)\"1\",\r\n    (const GLubyte*)\"0\"\r\n  };\r\n  const size_t max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;\r\n  return _glewString[(size_t)name > max_string ? 0 : (size_t)name];\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nGLboolean glewExperimental = GL_FALSE;\r\n\r\nGLenum GLEWAPIENTRY glewInit (void)\r\n{\r\n  GLenum r;\r\n#if defined(GLEW_EGL)\r\n  PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;\r\n#endif\r\n  r = glewContextInit();\r\n  if ( r != 0 ) return r;\r\n#if defined(GLEW_EGL)\r\n  getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress(\"eglGetCurrentDisplay\");\r\n  return eglewInit(getCurrentDisplay());\r\n#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__)\r\n  return r;\r\n#elif defined(_WIN32)\r\n  return wglewInit();\r\n#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */\r\n  return glxewInit();\r\n#else\r\n  return r;\r\n#endif /* _WIN32 */\r\n}\r\n\r\n#if defined(_WIN32) && defined(GLEW_BUILD) && defined(__GNUC__)\r\n/* GCC requires a DLL entry point even without any standard library included. */\r\n/* Types extracted from windows.h to avoid polluting the rest of the file. */\r\nint __stdcall DllMainCRTStartup(void* instance, unsigned reason, void* reserved)\r\n{\r\n  (void) instance;\r\n  (void) reason;\r\n  (void) reserved;\r\n  return 1;\r\n}\r\n#endif\r\nGLboolean GLEWAPIENTRY glewIsSupported (const char* name)\r\n{\r\n  const GLubyte* pos = (const GLubyte*)name;\r\n  GLuint len = _glewStrLen(pos);\r\n  GLboolean ret = GL_TRUE;\r\n  while (ret && len > 0)\r\n  {\r\n    if (_glewStrSame1(&pos, &len, (const GLubyte*)\"GL_\", 3))\r\n    {\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"VERSION_\", 8))\r\n      {\r\n#ifdef GL_VERSION_1_2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_2\", 3))\r\n        {\r\n          ret = GLEW_VERSION_1_2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_1_2_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_2_1\", 5))\r\n        {\r\n          ret = GLEW_VERSION_1_2_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_1_3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_3\", 3))\r\n        {\r\n          ret = GLEW_VERSION_1_3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_1_4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_4\", 3))\r\n        {\r\n          ret = GLEW_VERSION_1_4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_1_5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_5\", 3))\r\n        {\r\n          ret = GLEW_VERSION_1_5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_2_0\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"2_0\", 3))\r\n        {\r\n          ret = GLEW_VERSION_2_0;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_2_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"2_1\", 3))\r\n        {\r\n          ret = GLEW_VERSION_2_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_3_0\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3_0\", 3))\r\n        {\r\n          ret = GLEW_VERSION_3_0;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_3_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3_1\", 3))\r\n        {\r\n          ret = GLEW_VERSION_3_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_3_2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3_2\", 3))\r\n        {\r\n          ret = GLEW_VERSION_3_2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_3_3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3_3\", 3))\r\n        {\r\n          ret = GLEW_VERSION_3_3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_0\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_0\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_0;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_1\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_2\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_3\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_4\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_5\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_VERSION_4_6\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"4_6\", 3))\r\n        {\r\n          ret = GLEW_VERSION_4_6;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"3DFX_\", 5))\r\n      {\r\n#ifdef GL_3DFX_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLEW_3DFX_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_3DFX_tbuffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"tbuffer\", 7))\r\n        {\r\n          ret = GLEW_3DFX_tbuffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_3DFX_texture_compression_FXT1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_FXT1\", 24))\r\n        {\r\n          ret = GLEW_3DFX_texture_compression_FXT1;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"AMD_\", 4))\r\n      {\r\n#ifdef GL_AMD_blend_minmax_factor\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_minmax_factor\", 19))\r\n        {\r\n          ret = GLEW_AMD_blend_minmax_factor;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_compressed_3DC_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compressed_3DC_texture\", 22))\r\n        {\r\n          ret = GLEW_AMD_compressed_3DC_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_compressed_ATC_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compressed_ATC_texture\", 22))\r\n        {\r\n          ret = GLEW_AMD_compressed_ATC_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_conservative_depth\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_depth\", 18))\r\n        {\r\n          ret = GLEW_AMD_conservative_depth;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_debug_output\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug_output\", 12))\r\n        {\r\n          ret = GLEW_AMD_debug_output;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_depth_clamp_separate\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_clamp_separate\", 20))\r\n        {\r\n          ret = GLEW_AMD_depth_clamp_separate;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_draw_buffers_blend\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers_blend\", 18))\r\n        {\r\n          ret = GLEW_AMD_draw_buffers_blend;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sample_positions\", 28))\r\n        {\r\n          ret = GLEW_AMD_framebuffer_sample_positions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_gcn_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gcn_shader\", 10))\r\n        {\r\n          ret = GLEW_AMD_gcn_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_half_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader_half_float\", 21))\r\n        {\r\n          ret = GLEW_AMD_gpu_shader_half_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int16\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader_int16\", 16))\r\n        {\r\n          ret = GLEW_AMD_gpu_shader_int16;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_gpu_shader_int64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader_int64\", 16))\r\n        {\r\n          ret = GLEW_AMD_gpu_shader_int64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_interleaved_elements\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"interleaved_elements\", 20))\r\n        {\r\n          ret = GLEW_AMD_interleaved_elements;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_multi_draw_indirect\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multi_draw_indirect\", 19))\r\n        {\r\n          ret = GLEW_AMD_multi_draw_indirect;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_name_gen_delete\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"name_gen_delete\", 15))\r\n        {\r\n          ret = GLEW_AMD_name_gen_delete;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_occlusion_query_event\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_query_event\", 21))\r\n        {\r\n          ret = GLEW_AMD_occlusion_query_event;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_performance_monitor\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"performance_monitor\", 19))\r\n        {\r\n          ret = GLEW_AMD_performance_monitor;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_pinned_memory\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pinned_memory\", 13))\r\n        {\r\n          ret = GLEW_AMD_pinned_memory;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_program_binary_Z400\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"program_binary_Z400\", 19))\r\n        {\r\n          ret = GLEW_AMD_program_binary_Z400;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_query_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"query_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_AMD_query_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_sample_positions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sample_positions\", 16))\r\n        {\r\n          ret = GLEW_AMD_sample_positions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_seamless_cubemap_per_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"seamless_cubemap_per_texture\", 28))\r\n        {\r\n          ret = GLEW_AMD_seamless_cubemap_per_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_atomic_counter_ops\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_counter_ops\", 25))\r\n        {\r\n          ret = GLEW_AMD_shader_atomic_counter_ops;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_ballot\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_ballot\", 13))\r\n        {\r\n          ret = GLEW_AMD_shader_ballot;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_explicit_vertex_parameter\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_explicit_vertex_parameter\", 32))\r\n        {\r\n          ret = GLEW_AMD_shader_explicit_vertex_parameter;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_export\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_stencil_export\", 21))\r\n        {\r\n          ret = GLEW_AMD_shader_stencil_export;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_stencil_value_export\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_stencil_value_export\", 27))\r\n        {\r\n          ret = GLEW_AMD_shader_stencil_value_export;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_shader_trinary_minmax\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_trinary_minmax\", 21))\r\n        {\r\n          ret = GLEW_AMD_shader_trinary_minmax;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_sparse_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture\", 14))\r\n        {\r\n          ret = GLEW_AMD_sparse_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_stencil_operation_extended\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stencil_operation_extended\", 26))\r\n        {\r\n          ret = GLEW_AMD_stencil_operation_extended;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_texture_gather_bias_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_gather_bias_lod\", 23))\r\n        {\r\n          ret = GLEW_AMD_texture_gather_bias_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_texture_texture4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_texture4\", 16))\r\n        {\r\n          ret = GLEW_AMD_texture_texture4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_transform_feedback3_lines_triangles\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback3_lines_triangles\", 35))\r\n        {\r\n          ret = GLEW_AMD_transform_feedback3_lines_triangles;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_transform_feedback4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback4\", 19))\r\n        {\r\n          ret = GLEW_AMD_transform_feedback4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_layer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader_layer\", 19))\r\n        {\r\n          ret = GLEW_AMD_vertex_shader_layer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader_tessellator\", 25))\r\n        {\r\n          ret = GLEW_AMD_vertex_shader_tessellator;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_AMD_vertex_shader_viewport_index\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader_viewport_index\", 28))\r\n        {\r\n          ret = GLEW_AMD_vertex_shader_viewport_index;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ANDROID_\", 8))\r\n      {\r\n#ifdef GL_ANDROID_extension_pack_es31a\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extension_pack_es31a\", 20))\r\n        {\r\n          ret = GLEW_ANDROID_extension_pack_es31a;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ANGLE_\", 6))\r\n      {\r\n#ifdef GL_ANGLE_depth_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_texture\", 13))\r\n        {\r\n          ret = GLEW_ANGLE_depth_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_blit\", 16))\r\n        {\r\n          ret = GLEW_ANGLE_framebuffer_blit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample\", 23))\r\n        {\r\n          ret = GLEW_ANGLE_framebuffer_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_instanced_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"instanced_arrays\", 16))\r\n        {\r\n          ret = GLEW_ANGLE_instanced_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_pack_reverse_row_order\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pack_reverse_row_order\", 22))\r\n        {\r\n          ret = GLEW_ANGLE_pack_reverse_row_order;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_program_binary\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"program_binary\", 14))\r\n        {\r\n          ret = GLEW_ANGLE_program_binary;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_dxt1\", 24))\r\n        {\r\n          ret = GLEW_ANGLE_texture_compression_dxt1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_dxt3\", 24))\r\n        {\r\n          ret = GLEW_ANGLE_texture_compression_dxt3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_texture_compression_dxt5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_dxt5\", 24))\r\n        {\r\n          ret = GLEW_ANGLE_texture_compression_dxt5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_texture_usage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_usage\", 13))\r\n        {\r\n          ret = GLEW_ANGLE_texture_usage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_timer_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"timer_query\", 11))\r\n        {\r\n          ret = GLEW_ANGLE_timer_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ANGLE_translated_shader_source\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"translated_shader_source\", 24))\r\n        {\r\n          ret = GLEW_ANGLE_translated_shader_source;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"APPLE_\", 6))\r\n      {\r\n#ifdef GL_APPLE_aux_depth_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"aux_depth_stencil\", 17))\r\n        {\r\n          ret = GLEW_APPLE_aux_depth_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_client_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"client_storage\", 14))\r\n        {\r\n          ret = GLEW_APPLE_client_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_clip_distance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_distance\", 13))\r\n        {\r\n          ret = GLEW_APPLE_clip_distance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_color_buffer_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_buffer_packed_float\", 25))\r\n        {\r\n          ret = GLEW_APPLE_color_buffer_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_copy_texture_levels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_texture_levels\", 19))\r\n        {\r\n          ret = GLEW_APPLE_copy_texture_levels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_element_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"element_array\", 13))\r\n        {\r\n          ret = GLEW_APPLE_element_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_fence\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fence\", 5))\r\n        {\r\n          ret = GLEW_APPLE_fence;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_float_pixels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"float_pixels\", 12))\r\n        {\r\n          ret = GLEW_APPLE_float_pixels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_flush_buffer_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"flush_buffer_range\", 18))\r\n        {\r\n          ret = GLEW_APPLE_flush_buffer_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample\", 23))\r\n        {\r\n          ret = GLEW_APPLE_framebuffer_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_object_purgeable\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"object_purgeable\", 16))\r\n        {\r\n          ret = GLEW_APPLE_object_purgeable;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_pixel_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_buffer\", 12))\r\n        {\r\n          ret = GLEW_APPLE_pixel_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_rgb_422\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"rgb_422\", 7))\r\n        {\r\n          ret = GLEW_APPLE_rgb_422;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_row_bytes\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"row_bytes\", 9))\r\n        {\r\n          ret = GLEW_APPLE_row_bytes;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_specular_vector\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"specular_vector\", 15))\r\n        {\r\n          ret = GLEW_APPLE_specular_vector;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sync\", 4))\r\n        {\r\n          ret = GLEW_APPLE_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_texture_2D_limited_npot\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_2D_limited_npot\", 23))\r\n        {\r\n          ret = GLEW_APPLE_texture_2D_limited_npot;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_texture_format_BGRA8888\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_format_BGRA8888\", 23))\r\n        {\r\n          ret = GLEW_APPLE_texture_format_BGRA8888;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_texture_max_level\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_max_level\", 17))\r\n        {\r\n          ret = GLEW_APPLE_texture_max_level;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_texture_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_packed_float\", 20))\r\n        {\r\n          ret = GLEW_APPLE_texture_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_texture_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_range\", 13))\r\n        {\r\n          ret = GLEW_APPLE_texture_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_transform_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_hint\", 14))\r\n        {\r\n          ret = GLEW_APPLE_transform_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_object\", 19))\r\n        {\r\n          ret = GLEW_APPLE_vertex_array_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_vertex_array_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_range\", 18))\r\n        {\r\n          ret = GLEW_APPLE_vertex_array_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program_evaluators\", 25))\r\n        {\r\n          ret = GLEW_APPLE_vertex_program_evaluators;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_APPLE_ycbcr_422\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ycbcr_422\", 9))\r\n        {\r\n          ret = GLEW_APPLE_ycbcr_422;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ARB_\", 4))\r\n      {\r\n#ifdef GL_ARB_ES2_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES2_compatibility\", 17))\r\n        {\r\n          ret = GLEW_ARB_ES2_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES3_1_compatibility\", 19))\r\n        {\r\n          ret = GLEW_ARB_ES3_1_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES3_2_compatibility\", 19))\r\n        {\r\n          ret = GLEW_ARB_ES3_2_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_ES3_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES3_compatibility\", 17))\r\n        {\r\n          ret = GLEW_ARB_ES3_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_arrays_of_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"arrays_of_arrays\", 16))\r\n        {\r\n          ret = GLEW_ARB_arrays_of_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_base_instance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"base_instance\", 13))\r\n        {\r\n          ret = GLEW_ARB_base_instance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_bindless_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bindless_texture\", 16))\r\n        {\r\n          ret = GLEW_ARB_bindless_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_blend_func_extended\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_func_extended\", 19))\r\n        {\r\n          ret = GLEW_ARB_blend_func_extended;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_buffer_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_storage\", 14))\r\n        {\r\n          ret = GLEW_ARB_buffer_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_cl_event\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cl_event\", 8))\r\n        {\r\n          ret = GLEW_ARB_cl_event;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_clear_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clear_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_ARB_clear_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_clear_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clear_texture\", 13))\r\n        {\r\n          ret = GLEW_ARB_clear_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_clip_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_control\", 12))\r\n        {\r\n          ret = GLEW_ARB_clip_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_color_buffer_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_buffer_float\", 18))\r\n        {\r\n          ret = GLEW_ARB_color_buffer_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compatibility\", 13))\r\n        {\r\n          ret = GLEW_ARB_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_compressed_texture_pixel_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compressed_texture_pixel_storage\", 32))\r\n        {\r\n          ret = GLEW_ARB_compressed_texture_pixel_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_compute_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compute_shader\", 14))\r\n        {\r\n          ret = GLEW_ARB_compute_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_compute_variable_group_size\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compute_variable_group_size\", 27))\r\n        {\r\n          ret = GLEW_ARB_compute_variable_group_size;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_conditional_render_inverted\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conditional_render_inverted\", 27))\r\n        {\r\n          ret = GLEW_ARB_conditional_render_inverted;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_conservative_depth\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_depth\", 18))\r\n        {\r\n          ret = GLEW_ARB_conservative_depth;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_copy_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_buffer\", 11))\r\n        {\r\n          ret = GLEW_ARB_copy_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_copy_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_image\", 10))\r\n        {\r\n          ret = GLEW_ARB_copy_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_cull_distance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cull_distance\", 13))\r\n        {\r\n          ret = GLEW_ARB_cull_distance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_debug_output\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug_output\", 12))\r\n        {\r\n          ret = GLEW_ARB_debug_output;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_depth_buffer_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_buffer_float\", 18))\r\n        {\r\n          ret = GLEW_ARB_depth_buffer_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_depth_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_clamp\", 11))\r\n        {\r\n          ret = GLEW_ARB_depth_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_depth_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_texture\", 13))\r\n        {\r\n          ret = GLEW_ARB_depth_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_derivative_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"derivative_control\", 18))\r\n        {\r\n          ret = GLEW_ARB_derivative_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_direct_state_access\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"direct_state_access\", 19))\r\n        {\r\n          ret = GLEW_ARB_direct_state_access;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers\", 12))\r\n        {\r\n          ret = GLEW_ARB_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_draw_buffers_blend\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers_blend\", 18))\r\n        {\r\n          ret = GLEW_ARB_draw_buffers_blend;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_elements_base_vertex\", 25))\r\n        {\r\n          ret = GLEW_ARB_draw_elements_base_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_draw_indirect\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_indirect\", 13))\r\n        {\r\n          ret = GLEW_ARB_draw_indirect;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_draw_instanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_instanced\", 14))\r\n        {\r\n          ret = GLEW_ARB_draw_instanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_enhanced_layouts\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"enhanced_layouts\", 16))\r\n        {\r\n          ret = GLEW_ARB_enhanced_layouts;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_explicit_attrib_location\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"explicit_attrib_location\", 24))\r\n        {\r\n          ret = GLEW_ARB_explicit_attrib_location;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_explicit_uniform_location\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"explicit_uniform_location\", 25))\r\n        {\r\n          ret = GLEW_ARB_explicit_uniform_location;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_coord_conventions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_coord_conventions\", 26))\r\n        {\r\n          ret = GLEW_ARB_fragment_coord_conventions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_layer_viewport\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_layer_viewport\", 23))\r\n        {\r\n          ret = GLEW_ARB_fragment_layer_viewport;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_program\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program\", 16))\r\n        {\r\n          ret = GLEW_ARB_fragment_program;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_program_shadow\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program_shadow\", 23))\r\n        {\r\n          ret = GLEW_ARB_fragment_program_shadow;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_shader\", 15))\r\n        {\r\n          ret = GLEW_ARB_fragment_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_fragment_shader_interlock\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_shader_interlock\", 25))\r\n        {\r\n          ret = GLEW_ARB_fragment_shader_interlock;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_no_attachments\", 26))\r\n        {\r\n          ret = GLEW_ARB_framebuffer_no_attachments;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_framebuffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_object\", 18))\r\n        {\r\n          ret = GLEW_ARB_framebuffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = GLEW_ARB_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_geometry_shader4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_shader4\", 16))\r\n        {\r\n          ret = GLEW_ARB_geometry_shader4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_get_program_binary\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"get_program_binary\", 18))\r\n        {\r\n          ret = GLEW_ARB_get_program_binary;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_get_texture_sub_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"get_texture_sub_image\", 21))\r\n        {\r\n          ret = GLEW_ARB_get_texture_sub_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_gl_spirv\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_spirv\", 8))\r\n        {\r\n          ret = GLEW_ARB_gl_spirv;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_gpu_shader5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader5\", 11))\r\n        {\r\n          ret = GLEW_ARB_gpu_shader5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader_fp64\", 15))\r\n        {\r\n          ret = GLEW_ARB_gpu_shader_fp64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_gpu_shader_int64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader_int64\", 16))\r\n        {\r\n          ret = GLEW_ARB_gpu_shader_int64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_half_float_pixel\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"half_float_pixel\", 16))\r\n        {\r\n          ret = GLEW_ARB_half_float_pixel;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_half_float_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"half_float_vertex\", 17))\r\n        {\r\n          ret = GLEW_ARB_half_float_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_imaging\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"imaging\", 7))\r\n        {\r\n          ret = GLEW_ARB_imaging;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_indirect_parameters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"indirect_parameters\", 19))\r\n        {\r\n          ret = GLEW_ARB_indirect_parameters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_instanced_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"instanced_arrays\", 16))\r\n        {\r\n          ret = GLEW_ARB_instanced_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_internalformat_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"internalformat_query\", 20))\r\n        {\r\n          ret = GLEW_ARB_internalformat_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_internalformat_query2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"internalformat_query2\", 21))\r\n        {\r\n          ret = GLEW_ARB_internalformat_query2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_invalidate_subdata\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"invalidate_subdata\", 18))\r\n        {\r\n          ret = GLEW_ARB_invalidate_subdata;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_map_buffer_alignment\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"map_buffer_alignment\", 20))\r\n        {\r\n          ret = GLEW_ARB_map_buffer_alignment;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_map_buffer_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"map_buffer_range\", 16))\r\n        {\r\n          ret = GLEW_ARB_map_buffer_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_matrix_palette\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"matrix_palette\", 14))\r\n        {\r\n          ret = GLEW_ARB_matrix_palette;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_multi_bind\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multi_bind\", 10))\r\n        {\r\n          ret = GLEW_ARB_multi_bind;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_multi_draw_indirect\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multi_draw_indirect\", 19))\r\n        {\r\n          ret = GLEW_ARB_multi_draw_indirect;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLEW_ARB_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_multitexture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multitexture\", 12))\r\n        {\r\n          ret = GLEW_ARB_multitexture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_occlusion_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_query\", 15))\r\n        {\r\n          ret = GLEW_ARB_occlusion_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_occlusion_query2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_query2\", 16))\r\n        {\r\n          ret = GLEW_ARB_occlusion_query2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_parallel_shader_compile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"parallel_shader_compile\", 23))\r\n        {\r\n          ret = GLEW_ARB_parallel_shader_compile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_pipeline_statistics_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pipeline_statistics_query\", 25))\r\n        {\r\n          ret = GLEW_ARB_pipeline_statistics_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_pixel_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_ARB_pixel_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_point_parameters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_parameters\", 16))\r\n        {\r\n          ret = GLEW_ARB_point_parameters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_point_sprite\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_sprite\", 12))\r\n        {\r\n          ret = GLEW_ARB_point_sprite;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"polygon_offset_clamp\", 20))\r\n        {\r\n          ret = GLEW_ARB_polygon_offset_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_post_depth_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"post_depth_coverage\", 19))\r\n        {\r\n          ret = GLEW_ARB_post_depth_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_program_interface_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"program_interface_query\", 23))\r\n        {\r\n          ret = GLEW_ARB_program_interface_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_provoking_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"provoking_vertex\", 16))\r\n        {\r\n          ret = GLEW_ARB_provoking_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_query_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"query_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_ARB_query_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_robust_buffer_access_behavior\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robust_buffer_access_behavior\", 29))\r\n        {\r\n          ret = GLEW_ARB_robust_buffer_access_behavior;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_robustness\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness\", 10))\r\n        {\r\n          ret = GLEW_ARB_robustness;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_robustness_application_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_application_isolation\", 32))\r\n        {\r\n          ret = GLEW_ARB_robustness_application_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_robustness_share_group_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_share_group_isolation\", 32))\r\n        {\r\n          ret = GLEW_ARB_robustness_share_group_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sample_locations\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sample_locations\", 16))\r\n        {\r\n          ret = GLEW_ARB_sample_locations;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sample_shading\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sample_shading\", 14))\r\n        {\r\n          ret = GLEW_ARB_sample_shading;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sampler_objects\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sampler_objects\", 15))\r\n        {\r\n          ret = GLEW_ARB_sampler_objects;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_seamless_cube_map\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"seamless_cube_map\", 17))\r\n        {\r\n          ret = GLEW_ARB_seamless_cube_map;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_seamless_cubemap_per_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"seamless_cubemap_per_texture\", 28))\r\n        {\r\n          ret = GLEW_ARB_seamless_cubemap_per_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_separate_shader_objects\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"separate_shader_objects\", 23))\r\n        {\r\n          ret = GLEW_ARB_separate_shader_objects;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counter_ops\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_counter_ops\", 25))\r\n        {\r\n          ret = GLEW_ARB_shader_atomic_counter_ops;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_atomic_counters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_counters\", 22))\r\n        {\r\n          ret = GLEW_ARB_shader_atomic_counters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_ballot\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_ballot\", 13))\r\n        {\r\n          ret = GLEW_ARB_shader_ballot;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_bit_encoding\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_bit_encoding\", 19))\r\n        {\r\n          ret = GLEW_ARB_shader_bit_encoding;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_clock\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_clock\", 12))\r\n        {\r\n          ret = GLEW_ARB_shader_clock;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_draw_parameters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_draw_parameters\", 22))\r\n        {\r\n          ret = GLEW_ARB_shader_draw_parameters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_group_vote\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_group_vote\", 17))\r\n        {\r\n          ret = GLEW_ARB_shader_group_vote;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_image_load_store\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_image_load_store\", 23))\r\n        {\r\n          ret = GLEW_ARB_shader_image_load_store;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_image_size\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_image_size\", 17))\r\n        {\r\n          ret = GLEW_ARB_shader_image_size;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_objects\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_objects\", 14))\r\n        {\r\n          ret = GLEW_ARB_shader_objects;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_precision\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_precision\", 16))\r\n        {\r\n          ret = GLEW_ARB_shader_precision;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_stencil_export\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_stencil_export\", 21))\r\n        {\r\n          ret = GLEW_ARB_shader_stencil_export;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_storage_buffer_object\", 28))\r\n        {\r\n          ret = GLEW_ARB_shader_storage_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_subroutine\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_subroutine\", 17))\r\n        {\r\n          ret = GLEW_ARB_shader_subroutine;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_texture_image_samples\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_texture_image_samples\", 28))\r\n        {\r\n          ret = GLEW_ARB_shader_texture_image_samples;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_texture_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_texture_lod\", 18))\r\n        {\r\n          ret = GLEW_ARB_shader_texture_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shader_viewport_layer_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_viewport_layer_array\", 27))\r\n        {\r\n          ret = GLEW_ARB_shader_viewport_layer_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shading_language_100\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shading_language_100\", 20))\r\n        {\r\n          ret = GLEW_ARB_shading_language_100;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shading_language_420pack\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shading_language_420pack\", 24))\r\n        {\r\n          ret = GLEW_ARB_shading_language_420pack;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shading_language_include\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shading_language_include\", 24))\r\n        {\r\n          ret = GLEW_ARB_shading_language_include;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shading_language_packing\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shading_language_packing\", 24))\r\n        {\r\n          ret = GLEW_ARB_shading_language_packing;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shadow\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow\", 6))\r\n        {\r\n          ret = GLEW_ARB_shadow;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_shadow_ambient\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_ambient\", 14))\r\n        {\r\n          ret = GLEW_ARB_shadow_ambient;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sparse_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_buffer\", 13))\r\n        {\r\n          ret = GLEW_ARB_sparse_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sparse_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture\", 14))\r\n        {\r\n          ret = GLEW_ARB_sparse_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sparse_texture2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture2\", 15))\r\n        {\r\n          ret = GLEW_ARB_sparse_texture2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sparse_texture_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture_clamp\", 20))\r\n        {\r\n          ret = GLEW_ARB_sparse_texture_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_spirv_extensions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"spirv_extensions\", 16))\r\n        {\r\n          ret = GLEW_ARB_spirv_extensions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_stencil_texturing\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stencil_texturing\", 17))\r\n        {\r\n          ret = GLEW_ARB_stencil_texturing;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sync\", 4))\r\n        {\r\n          ret = GLEW_ARB_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_tessellation_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"tessellation_shader\", 19))\r\n        {\r\n          ret = GLEW_ARB_tessellation_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_barrier\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_barrier\", 15))\r\n        {\r\n          ret = GLEW_ARB_texture_barrier;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_border_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_border_clamp\", 20))\r\n        {\r\n          ret = GLEW_ARB_texture_border_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_buffer_object\", 21))\r\n        {\r\n          ret = GLEW_ARB_texture_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_object_rgb32\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_buffer_object_rgb32\", 27))\r\n        {\r\n          ret = GLEW_ARB_texture_buffer_object_rgb32;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_buffer_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_buffer_range\", 20))\r\n        {\r\n          ret = GLEW_ARB_texture_buffer_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_compression\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression\", 19))\r\n        {\r\n          ret = GLEW_ARB_texture_compression;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_compression_bptc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_bptc\", 24))\r\n        {\r\n          ret = GLEW_ARB_texture_compression_bptc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_compression_rgtc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_rgtc\", 24))\r\n        {\r\n          ret = GLEW_ARB_texture_compression_rgtc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_cube_map\", 16))\r\n        {\r\n          ret = GLEW_ARB_texture_cube_map;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_cube_map_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_cube_map_array\", 22))\r\n        {\r\n          ret = GLEW_ARB_texture_cube_map_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_env_add\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_add\", 15))\r\n        {\r\n          ret = GLEW_ARB_texture_env_add;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_env_combine\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_combine\", 19))\r\n        {\r\n          ret = GLEW_ARB_texture_env_combine;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_env_crossbar\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_crossbar\", 20))\r\n        {\r\n          ret = GLEW_ARB_texture_env_crossbar;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_env_dot3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_dot3\", 16))\r\n        {\r\n          ret = GLEW_ARB_texture_env_dot3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_filter_anisotropic\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_filter_anisotropic\", 26))\r\n        {\r\n          ret = GLEW_ARB_texture_filter_anisotropic;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_filter_minmax\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_filter_minmax\", 21))\r\n        {\r\n          ret = GLEW_ARB_texture_filter_minmax;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_float\", 13))\r\n        {\r\n          ret = GLEW_ARB_texture_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_gather\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_gather\", 14))\r\n        {\r\n          ret = GLEW_ARB_texture_gather;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_mirror_clamp_to_edge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mirror_clamp_to_edge\", 28))\r\n        {\r\n          ret = GLEW_ARB_texture_mirror_clamp_to_edge;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_mirrored_repeat\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mirrored_repeat\", 23))\r\n        {\r\n          ret = GLEW_ARB_texture_mirrored_repeat;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_multisample\", 19))\r\n        {\r\n          ret = GLEW_ARB_texture_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_non_power_of_two\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_non_power_of_two\", 24))\r\n        {\r\n          ret = GLEW_ARB_texture_non_power_of_two;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_query_levels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_query_levels\", 20))\r\n        {\r\n          ret = GLEW_ARB_texture_query_levels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_query_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_query_lod\", 17))\r\n        {\r\n          ret = GLEW_ARB_texture_query_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rectangle\", 17))\r\n        {\r\n          ret = GLEW_ARB_texture_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_rg\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rg\", 10))\r\n        {\r\n          ret = GLEW_ARB_texture_rg;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_rgb10_a2ui\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rgb10_a2ui\", 18))\r\n        {\r\n          ret = GLEW_ARB_texture_rgb10_a2ui;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_stencil8\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_stencil8\", 16))\r\n        {\r\n          ret = GLEW_ARB_texture_stencil8;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_storage\", 15))\r\n        {\r\n          ret = GLEW_ARB_texture_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_storage_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_storage_multisample\", 27))\r\n        {\r\n          ret = GLEW_ARB_texture_storage_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_swizzle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_swizzle\", 15))\r\n        {\r\n          ret = GLEW_ARB_texture_swizzle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_texture_view\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_view\", 12))\r\n        {\r\n          ret = GLEW_ARB_texture_view;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_timer_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"timer_query\", 11))\r\n        {\r\n          ret = GLEW_ARB_timer_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_transform_feedback2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback2\", 19))\r\n        {\r\n          ret = GLEW_ARB_transform_feedback2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_transform_feedback3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback3\", 19))\r\n        {\r\n          ret = GLEW_ARB_transform_feedback3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback_instanced\", 28))\r\n        {\r\n          ret = GLEW_ARB_transform_feedback_instanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_transform_feedback_overflow_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback_overflow_query\", 33))\r\n        {\r\n          ret = GLEW_ARB_transform_feedback_overflow_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_transpose_matrix\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transpose_matrix\", 16))\r\n        {\r\n          ret = GLEW_ARB_transpose_matrix;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_uniform_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"uniform_buffer_object\", 21))\r\n        {\r\n          ret = GLEW_ARB_uniform_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_array_bgra\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_bgra\", 17))\r\n        {\r\n          ret = GLEW_ARB_vertex_array_bgra;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_array_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_object\", 19))\r\n        {\r\n          ret = GLEW_ARB_vertex_array_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_attrib_64bit\", 19))\r\n        {\r\n          ret = GLEW_ARB_vertex_attrib_64bit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_attrib_binding\", 21))\r\n        {\r\n          ret = GLEW_ARB_vertex_attrib_binding;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_blend\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_blend\", 12))\r\n        {\r\n          ret = GLEW_ARB_vertex_blend;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_buffer_object\", 20))\r\n        {\r\n          ret = GLEW_ARB_vertex_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_program\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program\", 14))\r\n        {\r\n          ret = GLEW_ARB_vertex_program;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader\", 13))\r\n        {\r\n          ret = GLEW_ARB_vertex_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_type_10f_11f_11f_rev\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_type_10f_11f_11f_rev\", 27))\r\n        {\r\n          ret = GLEW_ARB_vertex_type_10f_11f_11f_rev;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_type_2_10_10_10_rev\", 26))\r\n        {\r\n          ret = GLEW_ARB_vertex_type_2_10_10_10_rev;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_viewport_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"viewport_array\", 14))\r\n        {\r\n          ret = GLEW_ARB_viewport_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARB_window_pos\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"window_pos\", 10))\r\n        {\r\n          ret = GLEW_ARB_window_pos;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ARM_\", 4))\r\n      {\r\n#ifdef GL_ARM_mali_program_binary\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mali_program_binary\", 19))\r\n        {\r\n          ret = GLEW_ARM_mali_program_binary;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARM_mali_shader_binary\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mali_shader_binary\", 18))\r\n        {\r\n          ret = GLEW_ARM_mali_shader_binary;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARM_rgba8\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"rgba8\", 5))\r\n        {\r\n          ret = GLEW_ARM_rgba8;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_framebuffer_fetch\", 24))\r\n        {\r\n          ret = GLEW_ARM_shader_framebuffer_fetch;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_framebuffer_fetch_depth_stencil\", 38))\r\n        {\r\n          ret = GLEW_ARM_shader_framebuffer_fetch_depth_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ATIX_\", 5))\r\n      {\r\n#ifdef GL_ATIX_point_sprites\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_sprites\", 13))\r\n        {\r\n          ret = GLEW_ATIX_point_sprites;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATIX_texture_env_combine3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_combine3\", 20))\r\n        {\r\n          ret = GLEW_ATIX_texture_env_combine3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATIX_texture_env_route\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_route\", 17))\r\n        {\r\n          ret = GLEW_ATIX_texture_env_route;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATIX_vertex_shader_output_point_size\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader_output_point_size\", 31))\r\n        {\r\n          ret = GLEW_ATIX_vertex_shader_output_point_size;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ATI_\", 4))\r\n      {\r\n#ifdef GL_ATI_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers\", 12))\r\n        {\r\n          ret = GLEW_ATI_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_element_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"element_array\", 13))\r\n        {\r\n          ret = GLEW_ATI_element_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_envmap_bumpmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"envmap_bumpmap\", 14))\r\n        {\r\n          ret = GLEW_ATI_envmap_bumpmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_fragment_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_shader\", 15))\r\n        {\r\n          ret = GLEW_ATI_fragment_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_map_object_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"map_object_buffer\", 17))\r\n        {\r\n          ret = GLEW_ATI_map_object_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_meminfo\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"meminfo\", 7))\r\n        {\r\n          ret = GLEW_ATI_meminfo;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_pn_triangles\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pn_triangles\", 12))\r\n        {\r\n          ret = GLEW_ATI_pn_triangles;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_separate_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"separate_stencil\", 16))\r\n        {\r\n          ret = GLEW_ATI_separate_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_shader_texture_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_texture_lod\", 18))\r\n        {\r\n          ret = GLEW_ATI_shader_texture_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_text_fragment_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"text_fragment_shader\", 20))\r\n        {\r\n          ret = GLEW_ATI_text_fragment_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_texture_compression_3dc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_3dc\", 23))\r\n        {\r\n          ret = GLEW_ATI_texture_compression_3dc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_texture_env_combine3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_combine3\", 20))\r\n        {\r\n          ret = GLEW_ATI_texture_env_combine3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_texture_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_float\", 13))\r\n        {\r\n          ret = GLEW_ATI_texture_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_texture_mirror_once\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mirror_once\", 19))\r\n        {\r\n          ret = GLEW_ATI_texture_mirror_once;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_vertex_array_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_object\", 19))\r\n        {\r\n          ret = GLEW_ATI_vertex_array_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_attrib_array_object\", 26))\r\n        {\r\n          ret = GLEW_ATI_vertex_attrib_array_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_ATI_vertex_streams\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_streams\", 14))\r\n        {\r\n          ret = GLEW_ATI_vertex_streams;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"EGL_\", 4))\r\n      {\r\n#ifdef GL_EGL_KHR_context_flush_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"KHR_context_flush_control\", 25))\r\n        {\r\n          ret = GLEW_EGL_KHR_context_flush_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EGL_NV_robustness_video_memory_purge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"NV_robustness_video_memory_purge\", 32))\r\n        {\r\n          ret = GLEW_EGL_NV_robustness_video_memory_purge;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"EXT_\", 4))\r\n      {\r\n#ifdef GL_EXT_422_pixels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"422_pixels\", 10))\r\n        {\r\n          ret = GLEW_EXT_422_pixels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_Cg_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"Cg_shader\", 9))\r\n        {\r\n          ret = GLEW_EXT_Cg_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_EGL_image_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"EGL_image_array\", 15))\r\n        {\r\n          ret = GLEW_EXT_EGL_image_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_YUV_target\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"YUV_target\", 10))\r\n        {\r\n          ret = GLEW_EXT_YUV_target;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_abgr\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"abgr\", 4))\r\n        {\r\n          ret = GLEW_EXT_abgr;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_base_instance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"base_instance\", 13))\r\n        {\r\n          ret = GLEW_EXT_base_instance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_bgra\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bgra\", 4))\r\n        {\r\n          ret = GLEW_EXT_bgra;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_bindable_uniform\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bindable_uniform\", 16))\r\n        {\r\n          ret = GLEW_EXT_bindable_uniform;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_color\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_color\", 11))\r\n        {\r\n          ret = GLEW_EXT_blend_color;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_equation_separate\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_separate\", 23))\r\n        {\r\n          ret = GLEW_EXT_blend_equation_separate;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_func_extended\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_func_extended\", 19))\r\n        {\r\n          ret = GLEW_EXT_blend_func_extended;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_func_separate\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_func_separate\", 19))\r\n        {\r\n          ret = GLEW_EXT_blend_func_separate;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_logic_op\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_logic_op\", 14))\r\n        {\r\n          ret = GLEW_EXT_blend_logic_op;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_minmax\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_minmax\", 12))\r\n        {\r\n          ret = GLEW_EXT_blend_minmax;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_blend_subtract\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_subtract\", 14))\r\n        {\r\n          ret = GLEW_EXT_blend_subtract;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_buffer_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_storage\", 14))\r\n        {\r\n          ret = GLEW_EXT_buffer_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_clear_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clear_texture\", 13))\r\n        {\r\n          ret = GLEW_EXT_clear_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_clip_cull_distance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_cull_distance\", 18))\r\n        {\r\n          ret = GLEW_EXT_clip_cull_distance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_clip_volume_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_volume_hint\", 16))\r\n        {\r\n          ret = GLEW_EXT_clip_volume_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_cmyka\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cmyka\", 5))\r\n        {\r\n          ret = GLEW_EXT_cmyka;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_color_buffer_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_buffer_float\", 18))\r\n        {\r\n          ret = GLEW_EXT_color_buffer_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_color_buffer_half_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_buffer_half_float\", 23))\r\n        {\r\n          ret = GLEW_EXT_color_buffer_half_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_color_subtable\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_subtable\", 14))\r\n        {\r\n          ret = GLEW_EXT_color_subtable;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_compiled_vertex_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compiled_vertex_array\", 21))\r\n        {\r\n          ret = GLEW_EXT_compiled_vertex_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compressed_ETC1_RGB8_sub_texture\", 32))\r\n        {\r\n          ret = GLEW_EXT_compressed_ETC1_RGB8_sub_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_conservative_depth\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_depth\", 18))\r\n        {\r\n          ret = GLEW_EXT_conservative_depth;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_convolution\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"convolution\", 11))\r\n        {\r\n          ret = GLEW_EXT_convolution;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_coordinate_frame\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"coordinate_frame\", 16))\r\n        {\r\n          ret = GLEW_EXT_coordinate_frame;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_copy_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_image\", 10))\r\n        {\r\n          ret = GLEW_EXT_copy_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_copy_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_texture\", 12))\r\n        {\r\n          ret = GLEW_EXT_copy_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_cull_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cull_vertex\", 11))\r\n        {\r\n          ret = GLEW_EXT_cull_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_debug_label\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug_label\", 11))\r\n        {\r\n          ret = GLEW_EXT_debug_label;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_debug_marker\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug_marker\", 12))\r\n        {\r\n          ret = GLEW_EXT_debug_marker;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_depth_bounds_test\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_bounds_test\", 17))\r\n        {\r\n          ret = GLEW_EXT_depth_bounds_test;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_direct_state_access\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"direct_state_access\", 19))\r\n        {\r\n          ret = GLEW_EXT_direct_state_access;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_discard_framebuffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"discard_framebuffer\", 19))\r\n        {\r\n          ret = GLEW_EXT_discard_framebuffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers\", 12))\r\n        {\r\n          ret = GLEW_EXT_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_buffers2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers2\", 13))\r\n        {\r\n          ret = GLEW_EXT_draw_buffers2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers_indexed\", 20))\r\n        {\r\n          ret = GLEW_EXT_draw_buffers_indexed;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_elements_base_vertex\", 25))\r\n        {\r\n          ret = GLEW_EXT_draw_elements_base_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_instanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_instanced\", 14))\r\n        {\r\n          ret = GLEW_EXT_draw_instanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_draw_range_elements\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_range_elements\", 19))\r\n        {\r\n          ret = GLEW_EXT_draw_range_elements;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_external_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"external_buffer\", 15))\r\n        {\r\n          ret = GLEW_EXT_external_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_float_blend\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"float_blend\", 11))\r\n        {\r\n          ret = GLEW_EXT_float_blend;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_fog_coord\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_coord\", 9))\r\n        {\r\n          ret = GLEW_EXT_fog_coord;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_frag_depth\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"frag_depth\", 10))\r\n        {\r\n          ret = GLEW_EXT_frag_depth;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_fragment_lighting\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_lighting\", 17))\r\n        {\r\n          ret = GLEW_EXT_fragment_lighting;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_framebuffer_blit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_blit\", 16))\r\n        {\r\n          ret = GLEW_EXT_framebuffer_blit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample\", 23))\r\n        {\r\n          ret = GLEW_EXT_framebuffer_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_framebuffer_multisample_blit_scaled\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample_blit_scaled\", 35))\r\n        {\r\n          ret = GLEW_EXT_framebuffer_multisample_blit_scaled;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_framebuffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_object\", 18))\r\n        {\r\n          ret = GLEW_EXT_framebuffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = GLEW_EXT_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_geometry_point_size\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_point_size\", 19))\r\n        {\r\n          ret = GLEW_EXT_geometry_point_size;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_geometry_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_shader\", 15))\r\n        {\r\n          ret = GLEW_EXT_geometry_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_geometry_shader4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_shader4\", 16))\r\n        {\r\n          ret = GLEW_EXT_geometry_shader4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_gpu_program_parameters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_program_parameters\", 22))\r\n        {\r\n          ret = GLEW_EXT_gpu_program_parameters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_gpu_shader4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader4\", 11))\r\n        {\r\n          ret = GLEW_EXT_gpu_shader4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_gpu_shader5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader5\", 11))\r\n        {\r\n          ret = GLEW_EXT_gpu_shader5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_histogram\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"histogram\", 9))\r\n        {\r\n          ret = GLEW_EXT_histogram;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_index_array_formats\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"index_array_formats\", 19))\r\n        {\r\n          ret = GLEW_EXT_index_array_formats;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_index_func\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"index_func\", 10))\r\n        {\r\n          ret = GLEW_EXT_index_func;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_index_material\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"index_material\", 14))\r\n        {\r\n          ret = GLEW_EXT_index_material;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_index_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"index_texture\", 13))\r\n        {\r\n          ret = GLEW_EXT_index_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_instanced_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"instanced_arrays\", 16))\r\n        {\r\n          ret = GLEW_EXT_instanced_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_light_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"light_texture\", 13))\r\n        {\r\n          ret = GLEW_EXT_light_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_map_buffer_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"map_buffer_range\", 16))\r\n        {\r\n          ret = GLEW_EXT_map_buffer_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_memory_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"memory_object\", 13))\r\n        {\r\n          ret = GLEW_EXT_memory_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_memory_object_fd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"memory_object_fd\", 16))\r\n        {\r\n          ret = GLEW_EXT_memory_object_fd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_memory_object_win32\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"memory_object_win32\", 19))\r\n        {\r\n          ret = GLEW_EXT_memory_object_win32;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_misc_attribute\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"misc_attribute\", 14))\r\n        {\r\n          ret = GLEW_EXT_misc_attribute;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multi_draw_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multi_draw_arrays\", 17))\r\n        {\r\n          ret = GLEW_EXT_multi_draw_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multi_draw_indirect\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multi_draw_indirect\", 19))\r\n        {\r\n          ret = GLEW_EXT_multi_draw_indirect;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multiple_textures\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiple_textures\", 17))\r\n        {\r\n          ret = GLEW_EXT_multiple_textures;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLEW_EXT_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multisample_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample_compatibility\", 25))\r\n        {\r\n          ret = GLEW_EXT_multisample_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisampled_render_to_texture\", 30))\r\n        {\r\n          ret = GLEW_EXT_multisampled_render_to_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multisampled_render_to_texture2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisampled_render_to_texture2\", 31))\r\n        {\r\n          ret = GLEW_EXT_multisampled_render_to_texture2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiview_draw_buffers\", 22))\r\n        {\r\n          ret = GLEW_EXT_multiview_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_packed_depth_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_depth_stencil\", 20))\r\n        {\r\n          ret = GLEW_EXT_packed_depth_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_float\", 12))\r\n        {\r\n          ret = GLEW_EXT_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_packed_pixels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_pixels\", 13))\r\n        {\r\n          ret = GLEW_EXT_packed_pixels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_paletted_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"paletted_texture\", 16))\r\n        {\r\n          ret = GLEW_EXT_paletted_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_pixel_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_EXT_pixel_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_pixel_transform\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_transform\", 15))\r\n        {\r\n          ret = GLEW_EXT_pixel_transform;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_pixel_transform_color_table\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_transform_color_table\", 27))\r\n        {\r\n          ret = GLEW_EXT_pixel_transform_color_table;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_point_parameters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_parameters\", 16))\r\n        {\r\n          ret = GLEW_EXT_point_parameters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_polygon_offset\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"polygon_offset\", 14))\r\n        {\r\n          ret = GLEW_EXT_polygon_offset;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"polygon_offset_clamp\", 20))\r\n        {\r\n          ret = GLEW_EXT_polygon_offset_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_post_depth_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"post_depth_coverage\", 19))\r\n        {\r\n          ret = GLEW_EXT_post_depth_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_provoking_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"provoking_vertex\", 16))\r\n        {\r\n          ret = GLEW_EXT_provoking_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_pvrtc_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pvrtc_sRGB\", 10))\r\n        {\r\n          ret = GLEW_EXT_pvrtc_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_raster_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"raster_multisample\", 18))\r\n        {\r\n          ret = GLEW_EXT_raster_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_read_format_bgra\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"read_format_bgra\", 16))\r\n        {\r\n          ret = GLEW_EXT_read_format_bgra;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_render_snorm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_snorm\", 12))\r\n        {\r\n          ret = GLEW_EXT_render_snorm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_rescale_normal\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"rescale_normal\", 14))\r\n        {\r\n          ret = GLEW_EXT_rescale_normal;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sRGB\", 4))\r\n        {\r\n          ret = GLEW_EXT_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_sRGB_write_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sRGB_write_control\", 18))\r\n        {\r\n          ret = GLEW_EXT_sRGB_write_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_scene_marker\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"scene_marker\", 12))\r\n        {\r\n          ret = GLEW_EXT_scene_marker;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_secondary_color\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"secondary_color\", 15))\r\n        {\r\n          ret = GLEW_EXT_secondary_color;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_semaphore\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"semaphore\", 9))\r\n        {\r\n          ret = GLEW_EXT_semaphore;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_semaphore_fd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"semaphore_fd\", 12))\r\n        {\r\n          ret = GLEW_EXT_semaphore_fd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_semaphore_win32\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"semaphore_win32\", 15))\r\n        {\r\n          ret = GLEW_EXT_semaphore_win32;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_separate_shader_objects\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"separate_shader_objects\", 23))\r\n        {\r\n          ret = GLEW_EXT_separate_shader_objects;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_separate_specular_color\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"separate_specular_color\", 23))\r\n        {\r\n          ret = GLEW_EXT_separate_specular_color;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_framebuffer_fetch\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_framebuffer_fetch\", 24))\r\n        {\r\n          ret = GLEW_EXT_shader_framebuffer_fetch;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_group_vote\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_group_vote\", 17))\r\n        {\r\n          ret = GLEW_EXT_shader_group_vote;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_formatted\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_image_load_formatted\", 27))\r\n        {\r\n          ret = GLEW_EXT_shader_image_load_formatted;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_image_load_store\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_image_load_store\", 23))\r\n        {\r\n          ret = GLEW_EXT_shader_image_load_store;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_implicit_conversions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_implicit_conversions\", 27))\r\n        {\r\n          ret = GLEW_EXT_shader_implicit_conversions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_integer_mix\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_integer_mix\", 18))\r\n        {\r\n          ret = GLEW_EXT_shader_integer_mix;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_io_blocks\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_io_blocks\", 16))\r\n        {\r\n          ret = GLEW_EXT_shader_io_blocks;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_non_constant_global_initializers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_non_constant_global_initializers\", 39))\r\n        {\r\n          ret = GLEW_EXT_shader_non_constant_global_initializers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_pixel_local_storage\", 26))\r\n        {\r\n          ret = GLEW_EXT_shader_pixel_local_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_pixel_local_storage2\", 27))\r\n        {\r\n          ret = GLEW_EXT_shader_pixel_local_storage2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shader_texture_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_texture_lod\", 18))\r\n        {\r\n          ret = GLEW_EXT_shader_texture_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shadow_funcs\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_funcs\", 12))\r\n        {\r\n          ret = GLEW_EXT_shadow_funcs;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shadow_samplers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_samplers\", 15))\r\n        {\r\n          ret = GLEW_EXT_shadow_samplers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_shared_texture_palette\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shared_texture_palette\", 22))\r\n        {\r\n          ret = GLEW_EXT_shared_texture_palette;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_sparse_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture\", 14))\r\n        {\r\n          ret = GLEW_EXT_sparse_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_sparse_texture2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sparse_texture2\", 15))\r\n        {\r\n          ret = GLEW_EXT_sparse_texture2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_stencil_clear_tag\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stencil_clear_tag\", 17))\r\n        {\r\n          ret = GLEW_EXT_stencil_clear_tag;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_stencil_two_side\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stencil_two_side\", 16))\r\n        {\r\n          ret = GLEW_EXT_stencil_two_side;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_stencil_wrap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stencil_wrap\", 12))\r\n        {\r\n          ret = GLEW_EXT_stencil_wrap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_subtexture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"subtexture\", 10))\r\n        {\r\n          ret = GLEW_EXT_subtexture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture\", 7))\r\n        {\r\n          ret = GLEW_EXT_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture3D\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture3D\", 9))\r\n        {\r\n          ret = GLEW_EXT_texture3D;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_array\", 13))\r\n        {\r\n          ret = GLEW_EXT_texture_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_buffer_object\", 21))\r\n        {\r\n          ret = GLEW_EXT_texture_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_astc_decode_mode\", 36))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_astc_decode_mode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_astc_decode_mode_rgb9e5\", 43))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_bptc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_bptc\", 24))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_bptc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_dxt1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_dxt1\", 24))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_dxt1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_latc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_latc\", 24))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_latc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_rgtc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_rgtc\", 24))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_rgtc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_compression_s3tc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_s3tc\", 24))\r\n        {\r\n          ret = GLEW_EXT_texture_compression_s3tc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_cube_map\", 16))\r\n        {\r\n          ret = GLEW_EXT_texture_cube_map;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_cube_map_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_cube_map_array\", 22))\r\n        {\r\n          ret = GLEW_EXT_texture_cube_map_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_edge_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_edge_clamp\", 18))\r\n        {\r\n          ret = GLEW_EXT_texture_edge_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_env\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env\", 11))\r\n        {\r\n          ret = GLEW_EXT_texture_env;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_env_add\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_add\", 15))\r\n        {\r\n          ret = GLEW_EXT_texture_env_add;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_env_combine\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_combine\", 19))\r\n        {\r\n          ret = GLEW_EXT_texture_env_combine;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_env_dot3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_dot3\", 16))\r\n        {\r\n          ret = GLEW_EXT_texture_env_dot3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_filter_anisotropic\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_filter_anisotropic\", 26))\r\n        {\r\n          ret = GLEW_EXT_texture_filter_anisotropic;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_filter_minmax\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_filter_minmax\", 21))\r\n        {\r\n          ret = GLEW_EXT_texture_filter_minmax;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_format_BGRA8888\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_format_BGRA8888\", 23))\r\n        {\r\n          ret = GLEW_EXT_texture_format_BGRA8888;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_integer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_integer\", 15))\r\n        {\r\n          ret = GLEW_EXT_texture_integer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_lod_bias\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_lod_bias\", 16))\r\n        {\r\n          ret = GLEW_EXT_texture_lod_bias;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_mirror_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mirror_clamp\", 20))\r\n        {\r\n          ret = GLEW_EXT_texture_mirror_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_norm16\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_norm16\", 14))\r\n        {\r\n          ret = GLEW_EXT_texture_norm16;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_object\", 14))\r\n        {\r\n          ret = GLEW_EXT_texture_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_perturb_normal\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_perturb_normal\", 22))\r\n        {\r\n          ret = GLEW_EXT_texture_perturb_normal;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rectangle\", 17))\r\n        {\r\n          ret = GLEW_EXT_texture_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_rg\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rg\", 10))\r\n        {\r\n          ret = GLEW_EXT_texture_rg;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_sRGB\", 12))\r\n        {\r\n          ret = GLEW_EXT_texture_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_R8\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_sRGB_R8\", 15))\r\n        {\r\n          ret = GLEW_EXT_texture_sRGB_R8;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_RG8\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_sRGB_RG8\", 16))\r\n        {\r\n          ret = GLEW_EXT_texture_sRGB_RG8;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_sRGB_decode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_sRGB_decode\", 19))\r\n        {\r\n          ret = GLEW_EXT_texture_sRGB_decode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_shared_exponent\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_shared_exponent\", 23))\r\n        {\r\n          ret = GLEW_EXT_texture_shared_exponent;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_snorm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_snorm\", 13))\r\n        {\r\n          ret = GLEW_EXT_texture_snorm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_storage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_storage\", 15))\r\n        {\r\n          ret = GLEW_EXT_texture_storage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_swizzle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_swizzle\", 15))\r\n        {\r\n          ret = GLEW_EXT_texture_swizzle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_type_2_10_10_10_REV\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_type_2_10_10_10_REV\", 27))\r\n        {\r\n          ret = GLEW_EXT_texture_type_2_10_10_10_REV;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_texture_view\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_view\", 12))\r\n        {\r\n          ret = GLEW_EXT_texture_view;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_timer_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"timer_query\", 11))\r\n        {\r\n          ret = GLEW_EXT_timer_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_transform_feedback\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback\", 18))\r\n        {\r\n          ret = GLEW_EXT_transform_feedback;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_unpack_subimage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"unpack_subimage\", 15))\r\n        {\r\n          ret = GLEW_EXT_unpack_subimage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array\", 12))\r\n        {\r\n          ret = GLEW_EXT_vertex_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_array_bgra\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_bgra\", 17))\r\n        {\r\n          ret = GLEW_EXT_vertex_array_bgra;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_setXXX\", 19))\r\n        {\r\n          ret = GLEW_EXT_vertex_array_setXXX;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_attrib_64bit\", 19))\r\n        {\r\n          ret = GLEW_EXT_vertex_attrib_64bit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_shader\", 13))\r\n        {\r\n          ret = GLEW_EXT_vertex_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_vertex_weighting\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_weighting\", 16))\r\n        {\r\n          ret = GLEW_EXT_vertex_weighting;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"win32_keyed_mutex\", 17))\r\n        {\r\n          ret = GLEW_EXT_win32_keyed_mutex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_window_rectangles\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"window_rectangles\", 17))\r\n        {\r\n          ret = GLEW_EXT_window_rectangles;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_EXT_x11_sync_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"x11_sync_object\", 15))\r\n        {\r\n          ret = GLEW_EXT_x11_sync_object;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"GREMEDY_\", 8))\r\n      {\r\n#ifdef GL_GREMEDY_frame_terminator\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"frame_terminator\", 16))\r\n        {\r\n          ret = GLEW_GREMEDY_frame_terminator;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_GREMEDY_string_marker\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"string_marker\", 13))\r\n        {\r\n          ret = GLEW_GREMEDY_string_marker;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"HP_\", 3))\r\n      {\r\n#ifdef GL_HP_convolution_border_modes\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"convolution_border_modes\", 24))\r\n        {\r\n          ret = GLEW_HP_convolution_border_modes;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_HP_image_transform\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_transform\", 15))\r\n        {\r\n          ret = GLEW_HP_image_transform;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_HP_occlusion_test\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_test\", 14))\r\n        {\r\n          ret = GLEW_HP_occlusion_test;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_HP_texture_lighting\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_lighting\", 16))\r\n        {\r\n          ret = GLEW_HP_texture_lighting;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"IBM_\", 4))\r\n      {\r\n#ifdef GL_IBM_cull_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cull_vertex\", 11))\r\n        {\r\n          ret = GLEW_IBM_cull_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multimode_draw_arrays\", 21))\r\n        {\r\n          ret = GLEW_IBM_multimode_draw_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_IBM_rasterpos_clip\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"rasterpos_clip\", 14))\r\n        {\r\n          ret = GLEW_IBM_rasterpos_clip;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_IBM_static_data\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"static_data\", 11))\r\n        {\r\n          ret = GLEW_IBM_static_data;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_IBM_texture_mirrored_repeat\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mirrored_repeat\", 23))\r\n        {\r\n          ret = GLEW_IBM_texture_mirrored_repeat;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_IBM_vertex_array_lists\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_lists\", 18))\r\n        {\r\n          ret = GLEW_IBM_vertex_array_lists;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"INGR_\", 5))\r\n      {\r\n#ifdef GL_INGR_color_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_clamp\", 11))\r\n        {\r\n          ret = GLEW_INGR_color_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INGR_interlace_read\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"interlace_read\", 14))\r\n        {\r\n          ret = GLEW_INGR_interlace_read;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"INTEL_\", 6))\r\n      {\r\n#ifdef GL_INTEL_conservative_rasterization\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_rasterization\", 26))\r\n        {\r\n          ret = GLEW_INTEL_conservative_rasterization;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_fragment_shader_ordering\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_shader_ordering\", 24))\r\n        {\r\n          ret = GLEW_INTEL_fragment_shader_ordering;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_framebuffer_CMAA\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_CMAA\", 16))\r\n        {\r\n          ret = GLEW_INTEL_framebuffer_CMAA;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_map_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"map_texture\", 11))\r\n        {\r\n          ret = GLEW_INTEL_map_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_parallel_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"parallel_arrays\", 15))\r\n        {\r\n          ret = GLEW_INTEL_parallel_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_performance_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"performance_query\", 17))\r\n        {\r\n          ret = GLEW_INTEL_performance_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_INTEL_texture_scissor\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_scissor\", 15))\r\n        {\r\n          ret = GLEW_INTEL_texture_scissor;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"KHR_\", 4))\r\n      {\r\n#ifdef GL_KHR_blend_equation_advanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_advanced\", 23))\r\n        {\r\n          ret = GLEW_KHR_blend_equation_advanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_blend_equation_advanced_coherent\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_advanced_coherent\", 32))\r\n        {\r\n          ret = GLEW_KHR_blend_equation_advanced_coherent;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_context_flush_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"context_flush_control\", 21))\r\n        {\r\n          ret = GLEW_KHR_context_flush_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_debug\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug\", 5))\r\n        {\r\n          ret = GLEW_KHR_debug;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_no_error\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"no_error\", 8))\r\n        {\r\n          ret = GLEW_KHR_no_error;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_parallel_shader_compile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"parallel_shader_compile\", 23))\r\n        {\r\n          ret = GLEW_KHR_parallel_shader_compile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_robust_buffer_access_behavior\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robust_buffer_access_behavior\", 29))\r\n        {\r\n          ret = GLEW_KHR_robust_buffer_access_behavior;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_robustness\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness\", 10))\r\n        {\r\n          ret = GLEW_KHR_robustness;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_hdr\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_astc_hdr\", 28))\r\n        {\r\n          ret = GLEW_KHR_texture_compression_astc_hdr;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_ldr\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_astc_ldr\", 28))\r\n        {\r\n          ret = GLEW_KHR_texture_compression_astc_ldr;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_KHR_texture_compression_astc_sliced_3d\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_astc_sliced_3d\", 34))\r\n        {\r\n          ret = GLEW_KHR_texture_compression_astc_sliced_3d;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"KTX_\", 4))\r\n      {\r\n#ifdef GL_KTX_buffer_region\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_region\", 13))\r\n        {\r\n          ret = GLEW_KTX_buffer_region;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"MESAX_\", 6))\r\n      {\r\n#ifdef GL_MESAX_texture_stack\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_stack\", 13))\r\n        {\r\n          ret = GLEW_MESAX_texture_stack;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"MESA_\", 5))\r\n      {\r\n#ifdef GL_MESA_pack_invert\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pack_invert\", 11))\r\n        {\r\n          ret = GLEW_MESA_pack_invert;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_MESA_resize_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"resize_buffers\", 14))\r\n        {\r\n          ret = GLEW_MESA_resize_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_MESA_shader_integer_functions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_integer_functions\", 24))\r\n        {\r\n          ret = GLEW_MESA_shader_integer_functions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_MESA_window_pos\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"window_pos\", 10))\r\n        {\r\n          ret = GLEW_MESA_window_pos;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_MESA_ycbcr_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ycbcr_texture\", 13))\r\n        {\r\n          ret = GLEW_MESA_ycbcr_texture;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NVX_\", 4))\r\n      {\r\n#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_advanced_multi_draw_buffers\", 42))\r\n        {\r\n          ret = GLEW_NVX_blend_equation_advanced_multi_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NVX_conditional_render\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conditional_render\", 18))\r\n        {\r\n          ret = GLEW_NVX_conditional_render;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NVX_gpu_memory_info\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_memory_info\", 15))\r\n        {\r\n          ret = GLEW_NVX_gpu_memory_info;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"linked_gpu_multicast\", 20))\r\n        {\r\n          ret = GLEW_NVX_linked_gpu_multicast;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NV_\", 3))\r\n      {\r\n#ifdef GL_NV_3dvision_settings\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3dvision_settings\", 17))\r\n        {\r\n          ret = GLEW_NV_3dvision_settings;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_EGL_stream_consumer_external\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"EGL_stream_consumer_external\", 28))\r\n        {\r\n          ret = GLEW_NV_EGL_stream_consumer_external;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_alpha_to_coverage_dither_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"alpha_to_coverage_dither_control\", 32))\r\n        {\r\n          ret = GLEW_NV_alpha_to_coverage_dither_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_bgr\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bgr\", 3))\r\n        {\r\n          ret = GLEW_NV_bgr;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bindless_multi_draw_indirect\", 28))\r\n        {\r\n          ret = GLEW_NV_bindless_multi_draw_indirect;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bindless_multi_draw_indirect_count\", 34))\r\n        {\r\n          ret = GLEW_NV_bindless_multi_draw_indirect_count;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_bindless_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bindless_texture\", 16))\r\n        {\r\n          ret = GLEW_NV_bindless_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_advanced\", 23))\r\n        {\r\n          ret = GLEW_NV_blend_equation_advanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_blend_equation_advanced_coherent\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_equation_advanced_coherent\", 32))\r\n        {\r\n          ret = GLEW_NV_blend_equation_advanced_coherent;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_blend_minmax_factor\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_minmax_factor\", 19))\r\n        {\r\n          ret = GLEW_NV_blend_minmax_factor;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_blend_square\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_square\", 12))\r\n        {\r\n          ret = GLEW_NV_blend_square;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_clip_space_w_scaling\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_space_w_scaling\", 20))\r\n        {\r\n          ret = GLEW_NV_clip_space_w_scaling;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_command_list\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"command_list\", 12))\r\n        {\r\n          ret = GLEW_NV_command_list;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_compute_program5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"compute_program5\", 16))\r\n        {\r\n          ret = GLEW_NV_compute_program5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_conditional_render\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conditional_render\", 18))\r\n        {\r\n          ret = GLEW_NV_conditional_render;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_conservative_raster\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_raster\", 19))\r\n        {\r\n          ret = GLEW_NV_conservative_raster;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_conservative_raster_dilate\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_raster_dilate\", 26))\r\n        {\r\n          ret = GLEW_NV_conservative_raster_dilate;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"conservative_raster_pre_snap_triangles\", 38))\r\n        {\r\n          ret = GLEW_NV_conservative_raster_pre_snap_triangles;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_copy_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_buffer\", 11))\r\n        {\r\n          ret = GLEW_NV_copy_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_copy_depth_to_color\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_depth_to_color\", 19))\r\n        {\r\n          ret = GLEW_NV_copy_depth_to_color;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_copy_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_image\", 10))\r\n        {\r\n          ret = GLEW_NV_copy_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_deep_texture3D\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"deep_texture3D\", 14))\r\n        {\r\n          ret = GLEW_NV_deep_texture3D;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_depth_buffer_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_buffer_float\", 18))\r\n        {\r\n          ret = GLEW_NV_depth_buffer_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_depth_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_clamp\", 11))\r\n        {\r\n          ret = GLEW_NV_depth_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_depth_range_unclamped\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_range_unclamped\", 21))\r\n        {\r\n          ret = GLEW_NV_depth_range_unclamped;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_draw_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_buffers\", 12))\r\n        {\r\n          ret = GLEW_NV_draw_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_draw_instanced\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_instanced\", 14))\r\n        {\r\n          ret = GLEW_NV_draw_instanced;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_draw_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_texture\", 12))\r\n        {\r\n          ret = GLEW_NV_draw_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_draw_vulkan_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"draw_vulkan_image\", 17))\r\n        {\r\n          ret = GLEW_NV_draw_vulkan_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_evaluators\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"evaluators\", 10))\r\n        {\r\n          ret = GLEW_NV_evaluators;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_explicit_attrib_location\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"explicit_attrib_location\", 24))\r\n        {\r\n          ret = GLEW_NV_explicit_attrib_location;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_explicit_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"explicit_multisample\", 20))\r\n        {\r\n          ret = GLEW_NV_explicit_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fbo_color_attachments\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fbo_color_attachments\", 21))\r\n        {\r\n          ret = GLEW_NV_fbo_color_attachments;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fence\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fence\", 5))\r\n        {\r\n          ret = GLEW_NV_fence;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fill_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fill_rectangle\", 14))\r\n        {\r\n          ret = GLEW_NV_fill_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_float_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"float_buffer\", 12))\r\n        {\r\n          ret = GLEW_NV_float_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fog_distance\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_distance\", 12))\r\n        {\r\n          ret = GLEW_NV_fog_distance;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_coverage_to_color\", 26))\r\n        {\r\n          ret = GLEW_NV_fragment_coverage_to_color;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_program\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program\", 16))\r\n        {\r\n          ret = GLEW_NV_fragment_program;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_program2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program2\", 17))\r\n        {\r\n          ret = GLEW_NV_fragment_program2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_program4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program4\", 17))\r\n        {\r\n          ret = GLEW_NV_fragment_program4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_program_option\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_program_option\", 23))\r\n        {\r\n          ret = GLEW_NV_fragment_program_option;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_fragment_shader_interlock\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_shader_interlock\", 25))\r\n        {\r\n          ret = GLEW_NV_fragment_shader_interlock;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_framebuffer_blit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_blit\", 16))\r\n        {\r\n          ret = GLEW_NV_framebuffer_blit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_framebuffer_mixed_samples\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_mixed_samples\", 25))\r\n        {\r\n          ret = GLEW_NV_framebuffer_mixed_samples;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample\", 23))\r\n        {\r\n          ret = GLEW_NV_framebuffer_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_multisample_coverage\", 32))\r\n        {\r\n          ret = GLEW_NV_framebuffer_multisample_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_generate_mipmap_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"generate_mipmap_sRGB\", 20))\r\n        {\r\n          ret = GLEW_NV_generate_mipmap_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_geometry_program4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_program4\", 17))\r\n        {\r\n          ret = GLEW_NV_geometry_program4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_geometry_shader4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_shader4\", 16))\r\n        {\r\n          ret = GLEW_NV_geometry_shader4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_geometry_shader_passthrough\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"geometry_shader_passthrough\", 27))\r\n        {\r\n          ret = GLEW_NV_geometry_shader_passthrough;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_multicast\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_multicast\", 13))\r\n        {\r\n          ret = GLEW_NV_gpu_multicast;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_program4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_program4\", 12))\r\n        {\r\n          ret = GLEW_NV_gpu_program4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_program5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_program5\", 12))\r\n        {\r\n          ret = GLEW_NV_gpu_program5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_program5_mem_extended\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_program5_mem_extended\", 25))\r\n        {\r\n          ret = GLEW_NV_gpu_program5_mem_extended;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_program_fp64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_program_fp64\", 16))\r\n        {\r\n          ret = GLEW_NV_gpu_program_fp64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_gpu_shader5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_shader5\", 11))\r\n        {\r\n          ret = GLEW_NV_gpu_shader5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_half_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"half_float\", 10))\r\n        {\r\n          ret = GLEW_NV_half_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_image_formats\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_formats\", 13))\r\n        {\r\n          ret = GLEW_NV_image_formats;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_instanced_arrays\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"instanced_arrays\", 16))\r\n        {\r\n          ret = GLEW_NV_instanced_arrays;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_internalformat_sample_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"internalformat_sample_query\", 27))\r\n        {\r\n          ret = GLEW_NV_internalformat_sample_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_light_max_exponent\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"light_max_exponent\", 18))\r\n        {\r\n          ret = GLEW_NV_light_max_exponent;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_multisample_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample_coverage\", 20))\r\n        {\r\n          ret = GLEW_NV_multisample_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_multisample_filter_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample_filter_hint\", 23))\r\n        {\r\n          ret = GLEW_NV_multisample_filter_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_non_square_matrices\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"non_square_matrices\", 19))\r\n        {\r\n          ret = GLEW_NV_non_square_matrices;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_occlusion_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_query\", 15))\r\n        {\r\n          ret = GLEW_NV_occlusion_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_pack_subimage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pack_subimage\", 13))\r\n        {\r\n          ret = GLEW_NV_pack_subimage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_packed_depth_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_depth_stencil\", 20))\r\n        {\r\n          ret = GLEW_NV_packed_depth_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_float\", 12))\r\n        {\r\n          ret = GLEW_NV_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_packed_float_linear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_float_linear\", 19))\r\n        {\r\n          ret = GLEW_NV_packed_float_linear;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"parameter_buffer_object\", 23))\r\n        {\r\n          ret = GLEW_NV_parameter_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_parameter_buffer_object2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"parameter_buffer_object2\", 24))\r\n        {\r\n          ret = GLEW_NV_parameter_buffer_object2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_path_rendering\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"path_rendering\", 14))\r\n        {\r\n          ret = GLEW_NV_path_rendering;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_path_rendering_shared_edge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"path_rendering_shared_edge\", 26))\r\n        {\r\n          ret = GLEW_NV_path_rendering_shared_edge;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_pixel_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_buffer_object\", 19))\r\n        {\r\n          ret = GLEW_NV_pixel_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_pixel_data_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_data_range\", 16))\r\n        {\r\n          ret = GLEW_NV_pixel_data_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_platform_binary\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_binary\", 15))\r\n        {\r\n          ret = GLEW_NV_platform_binary;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_point_sprite\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_sprite\", 12))\r\n        {\r\n          ret = GLEW_NV_point_sprite;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_polygon_mode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"polygon_mode\", 12))\r\n        {\r\n          ret = GLEW_NV_polygon_mode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_present_video\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"present_video\", 13))\r\n        {\r\n          ret = GLEW_NV_present_video;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_primitive_restart\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"primitive_restart\", 17))\r\n        {\r\n          ret = GLEW_NV_primitive_restart;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_read_depth\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"read_depth\", 10))\r\n        {\r\n          ret = GLEW_NV_read_depth;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_read_depth_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"read_depth_stencil\", 18))\r\n        {\r\n          ret = GLEW_NV_read_depth_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_read_stencil\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"read_stencil\", 12))\r\n        {\r\n          ret = GLEW_NV_read_stencil;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_register_combiners\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"register_combiners\", 18))\r\n        {\r\n          ret = GLEW_NV_register_combiners;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_register_combiners2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"register_combiners2\", 19))\r\n        {\r\n          ret = GLEW_NV_register_combiners2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_robustness_video_memory_purge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_video_memory_purge\", 29))\r\n        {\r\n          ret = GLEW_NV_robustness_video_memory_purge;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_sRGB_formats\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sRGB_formats\", 12))\r\n        {\r\n          ret = GLEW_NV_sRGB_formats;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_sample_locations\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sample_locations\", 16))\r\n        {\r\n          ret = GLEW_NV_sample_locations;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_sample_mask_override_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sample_mask_override_coverage\", 29))\r\n        {\r\n          ret = GLEW_NV_sample_mask_override_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_atomic_counters\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_counters\", 22))\r\n        {\r\n          ret = GLEW_NV_shader_atomic_counters;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_float\", 19))\r\n        {\r\n          ret = GLEW_NV_shader_atomic_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_atomic_float64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_float64\", 21))\r\n        {\r\n          ret = GLEW_NV_shader_atomic_float64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_atomic_fp16_vector\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_fp16_vector\", 25))\r\n        {\r\n          ret = GLEW_NV_shader_atomic_fp16_vector;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_atomic_int64\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_atomic_int64\", 19))\r\n        {\r\n          ret = GLEW_NV_shader_atomic_int64;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_buffer_load\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_buffer_load\", 18))\r\n        {\r\n          ret = GLEW_NV_shader_buffer_load;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_noperspective_interpolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_noperspective_interpolation\", 34))\r\n        {\r\n          ret = GLEW_NV_shader_noperspective_interpolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_storage_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_storage_buffer_object\", 28))\r\n        {\r\n          ret = GLEW_NV_shader_storage_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_thread_group\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_thread_group\", 19))\r\n        {\r\n          ret = GLEW_NV_shader_thread_group;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shader_thread_shuffle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_thread_shuffle\", 21))\r\n        {\r\n          ret = GLEW_NV_shader_thread_shuffle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_samplers_array\", 21))\r\n        {\r\n          ret = GLEW_NV_shadow_samplers_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_shadow_samplers_cube\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_samplers_cube\", 20))\r\n        {\r\n          ret = GLEW_NV_shadow_samplers_cube;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_stereo_view_rendering\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stereo_view_rendering\", 21))\r\n        {\r\n          ret = GLEW_NV_stereo_view_rendering;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_tessellation_program5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"tessellation_program5\", 21))\r\n        {\r\n          ret = GLEW_NV_tessellation_program5;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texgen_emboss\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texgen_emboss\", 13))\r\n        {\r\n          ret = GLEW_NV_texgen_emboss;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texgen_reflection\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texgen_reflection\", 17))\r\n        {\r\n          ret = GLEW_NV_texgen_reflection;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_array\", 13))\r\n        {\r\n          ret = GLEW_NV_texture_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_barrier\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_barrier\", 15))\r\n        {\r\n          ret = GLEW_NV_texture_barrier;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_border_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_border_clamp\", 20))\r\n        {\r\n          ret = GLEW_NV_texture_border_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_compression_latc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_latc\", 24))\r\n        {\r\n          ret = GLEW_NV_texture_compression_latc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_s3tc\", 24))\r\n        {\r\n          ret = GLEW_NV_texture_compression_s3tc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_compression_s3tc_update\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_s3tc_update\", 31))\r\n        {\r\n          ret = GLEW_NV_texture_compression_s3tc_update;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_compression_vtc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_compression_vtc\", 23))\r\n        {\r\n          ret = GLEW_NV_texture_compression_vtc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_env_combine4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_env_combine4\", 20))\r\n        {\r\n          ret = GLEW_NV_texture_env_combine4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_expand_normal\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_expand_normal\", 21))\r\n        {\r\n          ret = GLEW_NV_texture_expand_normal;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_multisample\", 19))\r\n        {\r\n          ret = GLEW_NV_texture_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_npot_2D_mipmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_npot_2D_mipmap\", 22))\r\n        {\r\n          ret = GLEW_NV_texture_npot_2D_mipmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rectangle\", 17))\r\n        {\r\n          ret = GLEW_NV_texture_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_rectangle_compressed\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_rectangle_compressed\", 28))\r\n        {\r\n          ret = GLEW_NV_texture_rectangle_compressed;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_shader\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_shader\", 14))\r\n        {\r\n          ret = GLEW_NV_texture_shader;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_shader2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_shader2\", 15))\r\n        {\r\n          ret = GLEW_NV_texture_shader2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_texture_shader3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_shader3\", 15))\r\n        {\r\n          ret = GLEW_NV_texture_shader3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_transform_feedback\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback\", 18))\r\n        {\r\n          ret = GLEW_NV_transform_feedback;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_transform_feedback2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"transform_feedback2\", 19))\r\n        {\r\n          ret = GLEW_NV_transform_feedback2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_uniform_buffer_unified_memory\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"uniform_buffer_unified_memory\", 29))\r\n        {\r\n          ret = GLEW_NV_uniform_buffer_unified_memory;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vdpau_interop\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vdpau_interop\", 13))\r\n        {\r\n          ret = GLEW_NV_vdpau_interop;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_array_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_range\", 18))\r\n        {\r\n          ret = GLEW_NV_vertex_array_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_array_range2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_range2\", 19))\r\n        {\r\n          ret = GLEW_NV_vertex_array_range2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_attrib_integer_64bit\", 27))\r\n        {\r\n          ret = GLEW_NV_vertex_attrib_integer_64bit;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_buffer_unified_memory\", 28))\r\n        {\r\n          ret = GLEW_NV_vertex_buffer_unified_memory;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program\", 14))\r\n        {\r\n          ret = GLEW_NV_vertex_program;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program1_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program1_1\", 17))\r\n        {\r\n          ret = GLEW_NV_vertex_program1_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program2\", 15))\r\n        {\r\n          ret = GLEW_NV_vertex_program2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program2_option\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program2_option\", 22))\r\n        {\r\n          ret = GLEW_NV_vertex_program2_option;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program3\", 15))\r\n        {\r\n          ret = GLEW_NV_vertex_program3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_vertex_program4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_program4\", 15))\r\n        {\r\n          ret = GLEW_NV_vertex_program4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_video_capture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_capture\", 13))\r\n        {\r\n          ret = GLEW_NV_video_capture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_viewport_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"viewport_array\", 14))\r\n        {\r\n          ret = GLEW_NV_viewport_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_viewport_array2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"viewport_array2\", 15))\r\n        {\r\n          ret = GLEW_NV_viewport_array2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_NV_viewport_swizzle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"viewport_swizzle\", 16))\r\n        {\r\n          ret = GLEW_NV_viewport_swizzle;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"OES_\", 4))\r\n      {\r\n#ifdef GL_OES_byte_coordinates\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"byte_coordinates\", 16))\r\n        {\r\n          ret = GLEW_OES_byte_coordinates;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"OML_\", 4))\r\n      {\r\n#ifdef GL_OML_interlace\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"interlace\", 9))\r\n        {\r\n          ret = GLEW_OML_interlace;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_OML_resample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"resample\", 8))\r\n        {\r\n          ret = GLEW_OML_resample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_OML_subsample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"subsample\", 9))\r\n        {\r\n          ret = GLEW_OML_subsample;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"OVR_\", 4))\r\n      {\r\n#ifdef GL_OVR_multiview\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiview\", 9))\r\n        {\r\n          ret = GLEW_OVR_multiview;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_OVR_multiview2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiview2\", 10))\r\n        {\r\n          ret = GLEW_OVR_multiview2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiview_multisampled_render_to_texture\", 40))\r\n        {\r\n          ret = GLEW_OVR_multiview_multisampled_render_to_texture;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"PGI_\", 4))\r\n      {\r\n#ifdef GL_PGI_misc_hints\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"misc_hints\", 10))\r\n        {\r\n          ret = GLEW_PGI_misc_hints;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_PGI_vertex_hints\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_hints\", 12))\r\n        {\r\n          ret = GLEW_PGI_vertex_hints;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"QCOM_\", 5))\r\n      {\r\n#ifdef GL_QCOM_alpha_test\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"alpha_test\", 10))\r\n        {\r\n          ret = GLEW_QCOM_alpha_test;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_binning_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"binning_control\", 15))\r\n        {\r\n          ret = GLEW_QCOM_binning_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_driver_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"driver_control\", 14))\r\n        {\r\n          ret = GLEW_QCOM_driver_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_extended_get\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extended_get\", 12))\r\n        {\r\n          ret = GLEW_QCOM_extended_get;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_extended_get2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extended_get2\", 13))\r\n        {\r\n          ret = GLEW_QCOM_extended_get2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_foveated\", 20))\r\n        {\r\n          ret = GLEW_QCOM_framebuffer_foveated;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_perfmon_global_mode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"perfmon_global_mode\", 19))\r\n        {\r\n          ret = GLEW_QCOM_perfmon_global_mode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shader_framebuffer_fetch_noncoherent\", 36))\r\n        {\r\n          ret = GLEW_QCOM_shader_framebuffer_fetch_noncoherent;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_tiled_rendering\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"tiled_rendering\", 15))\r\n        {\r\n          ret = GLEW_QCOM_tiled_rendering;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_QCOM_writeonly_rendering\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"writeonly_rendering\", 19))\r\n        {\r\n          ret = GLEW_QCOM_writeonly_rendering;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"REGAL_\", 6))\r\n      {\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES1_0_compatibility\", 19))\r\n        {\r\n          ret = GLEW_REGAL_ES1_0_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ES1_1_compatibility\", 19))\r\n        {\r\n          ret = GLEW_REGAL_ES1_1_compatibility;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_enable\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"enable\", 6))\r\n        {\r\n          ret = GLEW_REGAL_enable;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_error_string\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"error_string\", 12))\r\n        {\r\n          ret = GLEW_REGAL_error_string;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_extension_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extension_query\", 15))\r\n        {\r\n          ret = GLEW_REGAL_extension_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_log\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"log\", 3))\r\n        {\r\n          ret = GLEW_REGAL_log;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_REGAL_proc_address\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"proc_address\", 12))\r\n        {\r\n          ret = GLEW_REGAL_proc_address;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"REND_\", 5))\r\n      {\r\n#ifdef GL_REND_screen_coordinates\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"screen_coordinates\", 18))\r\n        {\r\n          ret = GLEW_REND_screen_coordinates;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"S3_\", 3))\r\n      {\r\n#ifdef GL_S3_s3tc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"s3tc\", 4))\r\n        {\r\n          ret = GLEW_S3_s3tc;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGIS_\", 5))\r\n      {\r\n#ifdef GL_SGIS_clip_band_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clip_band_hint\", 14))\r\n        {\r\n          ret = GLEW_SGIS_clip_band_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_color_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_range\", 11))\r\n        {\r\n          ret = GLEW_SGIS_color_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_detail_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"detail_texture\", 14))\r\n        {\r\n          ret = GLEW_SGIS_detail_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_fog_function\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_function\", 12))\r\n        {\r\n          ret = GLEW_SGIS_fog_function;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_generate_mipmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"generate_mipmap\", 15))\r\n        {\r\n          ret = GLEW_SGIS_generate_mipmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_line_texgen\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"line_texgen\", 11))\r\n        {\r\n          ret = GLEW_SGIS_line_texgen;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLEW_SGIS_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_multitexture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multitexture\", 12))\r\n        {\r\n          ret = GLEW_SGIS_multitexture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_pixel_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_texture\", 13))\r\n        {\r\n          ret = GLEW_SGIS_pixel_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_point_line_texgen\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"point_line_texgen\", 17))\r\n        {\r\n          ret = GLEW_SGIS_point_line_texgen;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_shared_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shared_multisample\", 18))\r\n        {\r\n          ret = GLEW_SGIS_shared_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_sharpen_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sharpen_texture\", 15))\r\n        {\r\n          ret = GLEW_SGIS_sharpen_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture4D\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture4D\", 9))\r\n        {\r\n          ret = GLEW_SGIS_texture4D;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture_border_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_border_clamp\", 20))\r\n        {\r\n          ret = GLEW_SGIS_texture_border_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture_edge_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_edge_clamp\", 18))\r\n        {\r\n          ret = GLEW_SGIS_texture_edge_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture_filter4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_filter4\", 15))\r\n        {\r\n          ret = GLEW_SGIS_texture_filter4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_lod\", 11))\r\n        {\r\n          ret = GLEW_SGIS_texture_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIS_texture_select\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_select\", 14))\r\n        {\r\n          ret = GLEW_SGIS_texture_select;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGIX_\", 5))\r\n      {\r\n#ifdef GL_SGIX_async\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"async\", 5))\r\n        {\r\n          ret = GLEW_SGIX_async;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_async_histogram\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"async_histogram\", 15))\r\n        {\r\n          ret = GLEW_SGIX_async_histogram;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_async_pixel\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"async_pixel\", 11))\r\n        {\r\n          ret = GLEW_SGIX_async_pixel;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_bali_g_instruments\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bali_g_instruments\", 18))\r\n        {\r\n          ret = GLEW_SGIX_bali_g_instruments;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_bali_r_instruments\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bali_r_instruments\", 18))\r\n        {\r\n          ret = GLEW_SGIX_bali_r_instruments;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_bali_timer_instruments\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"bali_timer_instruments\", 22))\r\n        {\r\n          ret = GLEW_SGIX_bali_timer_instruments;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_blend_alpha_minmax\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_alpha_minmax\", 18))\r\n        {\r\n          ret = GLEW_SGIX_blend_alpha_minmax;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_blend_cadd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_cadd\", 10))\r\n        {\r\n          ret = GLEW_SGIX_blend_cadd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_blend_cmultiply\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blend_cmultiply\", 15))\r\n        {\r\n          ret = GLEW_SGIX_blend_cmultiply;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_calligraphic_fragment\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"calligraphic_fragment\", 21))\r\n        {\r\n          ret = GLEW_SGIX_calligraphic_fragment;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_clipmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clipmap\", 7))\r\n        {\r\n          ret = GLEW_SGIX_clipmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_color_matrix_accuracy\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_matrix_accuracy\", 21))\r\n        {\r\n          ret = GLEW_SGIX_color_matrix_accuracy;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_color_table_index_mode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_table_index_mode\", 22))\r\n        {\r\n          ret = GLEW_SGIX_color_table_index_mode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_complex_polar\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"complex_polar\", 13))\r\n        {\r\n          ret = GLEW_SGIX_complex_polar;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_convolution_accuracy\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"convolution_accuracy\", 20))\r\n        {\r\n          ret = GLEW_SGIX_convolution_accuracy;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_cube_map\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cube_map\", 8))\r\n        {\r\n          ret = GLEW_SGIX_cube_map;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_cylinder_texgen\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cylinder_texgen\", 15))\r\n        {\r\n          ret = GLEW_SGIX_cylinder_texgen;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_datapipe\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"datapipe\", 8))\r\n        {\r\n          ret = GLEW_SGIX_datapipe;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_decimation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"decimation\", 10))\r\n        {\r\n          ret = GLEW_SGIX_decimation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_depth_pass_instrument\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_pass_instrument\", 21))\r\n        {\r\n          ret = GLEW_SGIX_depth_pass_instrument;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_depth_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_texture\", 13))\r\n        {\r\n          ret = GLEW_SGIX_depth_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_dvc\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"dvc\", 3))\r\n        {\r\n          ret = GLEW_SGIX_dvc;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_flush_raster\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"flush_raster\", 12))\r\n        {\r\n          ret = GLEW_SGIX_flush_raster;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_blend\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_blend\", 9))\r\n        {\r\n          ret = GLEW_SGIX_fog_blend;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_factor_to_alpha\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_factor_to_alpha\", 19))\r\n        {\r\n          ret = GLEW_SGIX_fog_factor_to_alpha;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_layers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_layers\", 10))\r\n        {\r\n          ret = GLEW_SGIX_fog_layers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_offset\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_offset\", 10))\r\n        {\r\n          ret = GLEW_SGIX_fog_offset;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_patchy\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_patchy\", 10))\r\n        {\r\n          ret = GLEW_SGIX_fog_patchy;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_scale\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_scale\", 9))\r\n        {\r\n          ret = GLEW_SGIX_fog_scale;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fog_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fog_texture\", 11))\r\n        {\r\n          ret = GLEW_SGIX_fog_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fragment_lighting_space\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_lighting_space\", 23))\r\n        {\r\n          ret = GLEW_SGIX_fragment_lighting_space;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragment_specular_lighting\", 26))\r\n        {\r\n          ret = GLEW_SGIX_fragment_specular_lighting;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_fragments_instrument\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fragments_instrument\", 20))\r\n        {\r\n          ret = GLEW_SGIX_fragments_instrument;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_framezoom\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framezoom\", 9))\r\n        {\r\n          ret = GLEW_SGIX_framezoom;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_icc_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"icc_texture\", 11))\r\n        {\r\n          ret = GLEW_SGIX_icc_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_igloo_interface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"igloo_interface\", 15))\r\n        {\r\n          ret = GLEW_SGIX_igloo_interface;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_image_compression\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_compression\", 17))\r\n        {\r\n          ret = GLEW_SGIX_image_compression;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_impact_pixel_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"impact_pixel_texture\", 20))\r\n        {\r\n          ret = GLEW_SGIX_impact_pixel_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_instrument_error\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"instrument_error\", 16))\r\n        {\r\n          ret = GLEW_SGIX_instrument_error;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_interlace\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"interlace\", 9))\r\n        {\r\n          ret = GLEW_SGIX_interlace;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_ir_instrument1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ir_instrument1\", 14))\r\n        {\r\n          ret = GLEW_SGIX_ir_instrument1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_line_quality_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"line_quality_hint\", 17))\r\n        {\r\n          ret = GLEW_SGIX_line_quality_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_list_priority\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"list_priority\", 13))\r\n        {\r\n          ret = GLEW_SGIX_list_priority;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_mpeg1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mpeg1\", 5))\r\n        {\r\n          ret = GLEW_SGIX_mpeg1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_mpeg2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mpeg2\", 5))\r\n        {\r\n          ret = GLEW_SGIX_mpeg2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"nonlinear_lighting_pervertex\", 28))\r\n        {\r\n          ret = GLEW_SGIX_nonlinear_lighting_pervertex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_nurbs_eval\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"nurbs_eval\", 10))\r\n        {\r\n          ret = GLEW_SGIX_nurbs_eval;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_occlusion_instrument\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"occlusion_instrument\", 20))\r\n        {\r\n          ret = GLEW_SGIX_occlusion_instrument;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_packed_6bytes\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"packed_6bytes\", 13))\r\n        {\r\n          ret = GLEW_SGIX_packed_6bytes;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_texture\", 13))\r\n        {\r\n          ret = GLEW_SGIX_pixel_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_bits\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_texture_bits\", 18))\r\n        {\r\n          ret = GLEW_SGIX_pixel_texture_bits;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_pixel_texture_lod\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_texture_lod\", 17))\r\n        {\r\n          ret = GLEW_SGIX_pixel_texture_lod;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_pixel_tiles\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_tiles\", 11))\r\n        {\r\n          ret = GLEW_SGIX_pixel_tiles;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_polynomial_ffd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"polynomial_ffd\", 14))\r\n        {\r\n          ret = GLEW_SGIX_polynomial_ffd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_quad_mesh\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"quad_mesh\", 9))\r\n        {\r\n          ret = GLEW_SGIX_quad_mesh;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_reference_plane\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"reference_plane\", 15))\r\n        {\r\n          ret = GLEW_SGIX_reference_plane;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_resample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"resample\", 8))\r\n        {\r\n          ret = GLEW_SGIX_resample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_scalebias_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"scalebias_hint\", 14))\r\n        {\r\n          ret = GLEW_SGIX_scalebias_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_shadow\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow\", 6))\r\n        {\r\n          ret = GLEW_SGIX_shadow;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_shadow_ambient\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shadow_ambient\", 14))\r\n        {\r\n          ret = GLEW_SGIX_shadow_ambient;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_slim\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"slim\", 4))\r\n        {\r\n          ret = GLEW_SGIX_slim;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_spotlight_cutoff\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"spotlight_cutoff\", 16))\r\n        {\r\n          ret = GLEW_SGIX_spotlight_cutoff;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_sprite\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sprite\", 6))\r\n        {\r\n          ret = GLEW_SGIX_sprite;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_subdiv_patch\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"subdiv_patch\", 12))\r\n        {\r\n          ret = GLEW_SGIX_subdiv_patch;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_subsample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"subsample\", 9))\r\n        {\r\n          ret = GLEW_SGIX_subsample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"tag_sample_buffer\", 17))\r\n        {\r\n          ret = GLEW_SGIX_tag_sample_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_add_env\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_add_env\", 15))\r\n        {\r\n          ret = GLEW_SGIX_texture_add_env;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_coordinate_clamp\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_coordinate_clamp\", 24))\r\n        {\r\n          ret = GLEW_SGIX_texture_coordinate_clamp;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_lod_bias\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_lod_bias\", 16))\r\n        {\r\n          ret = GLEW_SGIX_texture_lod_bias;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_mipmap_anisotropic\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_mipmap_anisotropic\", 26))\r\n        {\r\n          ret = GLEW_SGIX_texture_mipmap_anisotropic;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_multi_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_multi_buffer\", 20))\r\n        {\r\n          ret = GLEW_SGIX_texture_multi_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_phase\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_phase\", 13))\r\n        {\r\n          ret = GLEW_SGIX_texture_phase;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_range\", 13))\r\n        {\r\n          ret = GLEW_SGIX_texture_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_scale_bias\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_scale_bias\", 18))\r\n        {\r\n          ret = GLEW_SGIX_texture_scale_bias;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_texture_supersample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_supersample\", 19))\r\n        {\r\n          ret = GLEW_SGIX_texture_supersample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_vector_ops\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vector_ops\", 10))\r\n        {\r\n          ret = GLEW_SGIX_vector_ops;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_vertex_array_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_object\", 19))\r\n        {\r\n          ret = GLEW_SGIX_vertex_array_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_preclip\", 14))\r\n        {\r\n          ret = GLEW_SGIX_vertex_preclip;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_vertex_preclip_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_preclip_hint\", 19))\r\n        {\r\n          ret = GLEW_SGIX_vertex_preclip_hint;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_ycrcb\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ycrcb\", 5))\r\n        {\r\n          ret = GLEW_SGIX_ycrcb;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_ycrcb_subsample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ycrcb_subsample\", 15))\r\n        {\r\n          ret = GLEW_SGIX_ycrcb_subsample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGIX_ycrcba\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"ycrcba\", 6))\r\n        {\r\n          ret = GLEW_SGIX_ycrcba;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGI_\", 4))\r\n      {\r\n#ifdef GL_SGI_color_matrix\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_matrix\", 12))\r\n        {\r\n          ret = GLEW_SGI_color_matrix;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGI_color_table\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_table\", 11))\r\n        {\r\n          ret = GLEW_SGI_color_table;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGI_complex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"complex\", 7))\r\n        {\r\n          ret = GLEW_SGI_complex;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGI_complex_type\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"complex_type\", 12))\r\n        {\r\n          ret = GLEW_SGI_complex_type;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGI_fft\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fft\", 3))\r\n        {\r\n          ret = GLEW_SGI_fft;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SGI_texture_color_table\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_color_table\", 19))\r\n        {\r\n          ret = GLEW_SGI_texture_color_table;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SUNX_\", 5))\r\n      {\r\n#ifdef GL_SUNX_constant_data\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"constant_data\", 13))\r\n        {\r\n          ret = GLEW_SUNX_constant_data;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SUN_\", 4))\r\n      {\r\n#ifdef GL_SUN_convolution_border_modes\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"convolution_border_modes\", 24))\r\n        {\r\n          ret = GLEW_SUN_convolution_border_modes;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_global_alpha\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"global_alpha\", 12))\r\n        {\r\n          ret = GLEW_SUN_global_alpha;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_mesh_array\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mesh_array\", 10))\r\n        {\r\n          ret = GLEW_SUN_mesh_array;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_read_video_pixels\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"read_video_pixels\", 17))\r\n        {\r\n          ret = GLEW_SUN_read_video_pixels;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_slice_accum\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"slice_accum\", 11))\r\n        {\r\n          ret = GLEW_SUN_slice_accum;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_triangle_list\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"triangle_list\", 13))\r\n        {\r\n          ret = GLEW_SUN_triangle_list;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_SUN_vertex\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex\", 6))\r\n        {\r\n          ret = GLEW_SUN_vertex;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"WIN_\", 4))\r\n      {\r\n#ifdef GL_WIN_phong_shading\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"phong_shading\", 13))\r\n        {\r\n          ret = GLEW_WIN_phong_shading;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_WIN_scene_markerXXX\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"scene_markerXXX\", 15))\r\n        {\r\n          ret = GLEW_WIN_scene_markerXXX;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_WIN_specular_fog\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"specular_fog\", 12))\r\n        {\r\n          ret = GLEW_WIN_specular_fog;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GL_WIN_swap_hint\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_hint\", 9))\r\n        {\r\n          ret = GLEW_WIN_swap_hint;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n    }\r\n    ret = (len == 0);\r\n  }\r\n  return ret;\r\n}\r\n\r\n#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)\r\n\r\nGLboolean GLEWAPIENTRY wglewIsSupported (const char* name)\r\n{\r\n  const GLubyte* pos = (const GLubyte*)name;\r\n  GLuint len = _glewStrLen(pos);\r\n  GLboolean ret = GL_TRUE;\r\n  while (ret && len > 0)\r\n  {\r\n    if (_glewStrSame1(&pos, &len, (const GLubyte*)\"WGL_\", 4))\r\n    {\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"3DFX_\", 5))\r\n      {\r\n#ifdef WGL_3DFX_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = WGLEW_3DFX_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"3DL_\", 4))\r\n      {\r\n#ifdef WGL_3DL_stereo_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stereo_control\", 14))\r\n        {\r\n          ret = WGLEW_3DL_stereo_control;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"AMD_\", 4))\r\n      {\r\n#ifdef WGL_AMD_gpu_association\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_association\", 15))\r\n        {\r\n          ret = WGLEW_AMD_gpu_association;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ARB_\", 4))\r\n      {\r\n#ifdef WGL_ARB_buffer_region\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_region\", 13))\r\n        {\r\n          ret = WGLEW_ARB_buffer_region;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_context_flush_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"context_flush_control\", 21))\r\n        {\r\n          ret = WGLEW_ARB_context_flush_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_create_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context\", 14))\r\n        {\r\n          ret = WGLEW_ARB_create_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_create_context_no_error\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_no_error\", 23))\r\n        {\r\n          ret = WGLEW_ARB_create_context_no_error;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_create_context_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_profile\", 22))\r\n        {\r\n          ret = WGLEW_ARB_create_context_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_create_context_robustness\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_robustness\", 25))\r\n        {\r\n          ret = WGLEW_ARB_create_context_robustness;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_extensions_string\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extensions_string\", 17))\r\n        {\r\n          ret = WGLEW_ARB_extensions_string;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = WGLEW_ARB_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_make_current_read\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"make_current_read\", 17))\r\n        {\r\n          ret = WGLEW_ARB_make_current_read;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = WGLEW_ARB_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_pbuffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pbuffer\", 7))\r\n        {\r\n          ret = WGLEW_ARB_pbuffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_pixel_format\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format\", 12))\r\n        {\r\n          ret = WGLEW_ARB_pixel_format;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_pixel_format_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format_float\", 18))\r\n        {\r\n          ret = WGLEW_ARB_pixel_format_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_render_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_texture\", 14))\r\n        {\r\n          ret = WGLEW_ARB_render_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_robustness_application_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_application_isolation\", 32))\r\n        {\r\n          ret = WGLEW_ARB_robustness_application_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ARB_robustness_share_group_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_share_group_isolation\", 32))\r\n        {\r\n          ret = WGLEW_ARB_robustness_share_group_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ATI_\", 4))\r\n      {\r\n#ifdef WGL_ATI_pixel_format_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format_float\", 18))\r\n        {\r\n          ret = WGLEW_ATI_pixel_format_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_ATI_render_texture_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_texture_rectangle\", 24))\r\n        {\r\n          ret = WGLEW_ATI_render_texture_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"EXT_\", 4))\r\n      {\r\n#ifdef WGL_EXT_colorspace\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"colorspace\", 10))\r\n        {\r\n          ret = WGLEW_EXT_colorspace;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_create_context_es2_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_es2_profile\", 26))\r\n        {\r\n          ret = WGLEW_EXT_create_context_es2_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_create_context_es_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_es_profile\", 25))\r\n        {\r\n          ret = WGLEW_EXT_create_context_es_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_depth_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_float\", 11))\r\n        {\r\n          ret = WGLEW_EXT_depth_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_display_color_table\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"display_color_table\", 19))\r\n        {\r\n          ret = WGLEW_EXT_display_color_table;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_extensions_string\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"extensions_string\", 17))\r\n        {\r\n          ret = WGLEW_EXT_extensions_string;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = WGLEW_EXT_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_make_current_read\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"make_current_read\", 17))\r\n        {\r\n          ret = WGLEW_EXT_make_current_read;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = WGLEW_EXT_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_pbuffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pbuffer\", 7))\r\n        {\r\n          ret = WGLEW_EXT_pbuffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_pixel_format\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format\", 12))\r\n        {\r\n          ret = WGLEW_EXT_pixel_format;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_pixel_format_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format_packed_float\", 25))\r\n        {\r\n          ret = WGLEW_EXT_pixel_format_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_swap_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control\", 12))\r\n        {\r\n          ret = WGLEW_EXT_swap_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_EXT_swap_control_tear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control_tear\", 17))\r\n        {\r\n          ret = WGLEW_EXT_swap_control_tear;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"I3D_\", 4))\r\n      {\r\n#ifdef WGL_I3D_digital_video_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"digital_video_control\", 21))\r\n        {\r\n          ret = WGLEW_I3D_digital_video_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_I3D_gamma\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gamma\", 5))\r\n        {\r\n          ret = WGLEW_I3D_gamma;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_I3D_genlock\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"genlock\", 7))\r\n        {\r\n          ret = WGLEW_I3D_genlock;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_I3D_image_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_buffer\", 12))\r\n        {\r\n          ret = WGLEW_I3D_image_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_I3D_swap_frame_lock\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_frame_lock\", 15))\r\n        {\r\n          ret = WGLEW_I3D_swap_frame_lock;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_I3D_swap_frame_usage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_frame_usage\", 16))\r\n        {\r\n          ret = WGLEW_I3D_swap_frame_usage;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NV_\", 3))\r\n      {\r\n#ifdef WGL_NV_DX_interop\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"DX_interop\", 10))\r\n        {\r\n          ret = WGLEW_NV_DX_interop;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_DX_interop2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"DX_interop2\", 11))\r\n        {\r\n          ret = WGLEW_NV_DX_interop2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_copy_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_image\", 10))\r\n        {\r\n          ret = WGLEW_NV_copy_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_delay_before_swap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"delay_before_swap\", 17))\r\n        {\r\n          ret = WGLEW_NV_delay_before_swap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_float_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"float_buffer\", 12))\r\n        {\r\n          ret = WGLEW_NV_float_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_gpu_affinity\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_affinity\", 12))\r\n        {\r\n          ret = WGLEW_NV_gpu_affinity;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_multisample_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample_coverage\", 20))\r\n        {\r\n          ret = WGLEW_NV_multisample_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_present_video\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"present_video\", 13))\r\n        {\r\n          ret = WGLEW_NV_present_video;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_render_depth_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_depth_texture\", 20))\r\n        {\r\n          ret = WGLEW_NV_render_depth_texture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_render_texture_rectangle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_texture_rectangle\", 24))\r\n        {\r\n          ret = WGLEW_NV_render_texture_rectangle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_swap_group\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_group\", 10))\r\n        {\r\n          ret = WGLEW_NV_swap_group;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_vertex_array_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_range\", 18))\r\n        {\r\n          ret = WGLEW_NV_vertex_array_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_video_capture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_capture\", 13))\r\n        {\r\n          ret = WGLEW_NV_video_capture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef WGL_NV_video_output\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_output\", 12))\r\n        {\r\n          ret = WGLEW_NV_video_output;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"OML_\", 4))\r\n      {\r\n#ifdef WGL_OML_sync_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sync_control\", 12))\r\n        {\r\n          ret = WGLEW_OML_sync_control;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n    }\r\n    ret = (len == 0);\r\n  }\r\n  return ret;\r\n}\r\n\r\n#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\n\r\nGLboolean glxewIsSupported (const char* name)\r\n{\r\n  const GLubyte* pos = (const GLubyte*)name;\r\n  GLuint len = _glewStrLen(pos);\r\n  GLboolean ret = GL_TRUE;\r\n  while (ret && len > 0)\r\n  {\r\n    if(_glewStrSame1(&pos, &len, (const GLubyte*)\"GLX_\", 4))\r\n    {\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"VERSION_\", 8))\r\n      {\r\n#ifdef GLX_VERSION_1_2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_2\", 3))\r\n        {\r\n          ret = GLXEW_VERSION_1_2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_VERSION_1_3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_3\", 3))\r\n        {\r\n          ret = GLXEW_VERSION_1_3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_VERSION_1_4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_4\", 3))\r\n        {\r\n          ret = GLXEW_VERSION_1_4;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"3DFX_\", 5))\r\n      {\r\n#ifdef GLX_3DFX_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLXEW_3DFX_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"AMD_\", 4))\r\n      {\r\n#ifdef GLX_AMD_gpu_association\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gpu_association\", 15))\r\n        {\r\n          ret = GLXEW_AMD_gpu_association;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ARB_\", 4))\r\n      {\r\n#ifdef GLX_ARB_context_flush_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"context_flush_control\", 21))\r\n        {\r\n          ret = GLXEW_ARB_context_flush_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_create_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context\", 14))\r\n        {\r\n          ret = GLXEW_ARB_create_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_create_context_no_error\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_no_error\", 23))\r\n        {\r\n          ret = GLXEW_ARB_create_context_no_error;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_create_context_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_profile\", 22))\r\n        {\r\n          ret = GLXEW_ARB_create_context_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_create_context_robustness\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_robustness\", 25))\r\n        {\r\n          ret = GLXEW_ARB_create_context_robustness;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_fbconfig_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fbconfig_float\", 14))\r\n        {\r\n          ret = GLXEW_ARB_fbconfig_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = GLXEW_ARB_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_get_proc_address\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"get_proc_address\", 16))\r\n        {\r\n          ret = GLXEW_ARB_get_proc_address;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLXEW_ARB_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_robustness_application_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_application_isolation\", 32))\r\n        {\r\n          ret = GLXEW_ARB_robustness_application_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_robustness_share_group_isolation\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_share_group_isolation\", 32))\r\n        {\r\n          ret = GLXEW_ARB_robustness_share_group_isolation;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ARB_vertex_buffer_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_buffer_object\", 20))\r\n        {\r\n          ret = GLXEW_ARB_vertex_buffer_object;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ATI_\", 4))\r\n      {\r\n#ifdef GLX_ATI_pixel_format_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format_float\", 18))\r\n        {\r\n          ret = GLXEW_ATI_pixel_format_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_ATI_render_texture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"render_texture\", 14))\r\n        {\r\n          ret = GLXEW_ATI_render_texture;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"EXT_\", 4))\r\n      {\r\n#ifdef GLX_EXT_buffer_age\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_age\", 10))\r\n        {\r\n          ret = GLXEW_EXT_buffer_age;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_create_context_es2_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_es2_profile\", 26))\r\n        {\r\n          ret = GLXEW_EXT_create_context_es2_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_create_context_es_profile\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_es_profile\", 25))\r\n        {\r\n          ret = GLXEW_EXT_create_context_es_profile;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_fbconfig_packed_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fbconfig_packed_float\", 21))\r\n        {\r\n          ret = GLXEW_EXT_fbconfig_packed_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_framebuffer_sRGB\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_sRGB\", 16))\r\n        {\r\n          ret = GLXEW_EXT_framebuffer_sRGB;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_import_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"import_context\", 14))\r\n        {\r\n          ret = GLXEW_EXT_import_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_libglvnd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"libglvnd\", 8))\r\n        {\r\n          ret = GLXEW_EXT_libglvnd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_scene_marker\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"scene_marker\", 12))\r\n        {\r\n          ret = GLXEW_EXT_scene_marker;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_stereo_tree\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stereo_tree\", 11))\r\n        {\r\n          ret = GLXEW_EXT_stereo_tree;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_swap_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control\", 12))\r\n        {\r\n          ret = GLXEW_EXT_swap_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_swap_control_tear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control_tear\", 17))\r\n        {\r\n          ret = GLXEW_EXT_swap_control_tear;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_texture_from_pixmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_from_pixmap\", 19))\r\n        {\r\n          ret = GLXEW_EXT_texture_from_pixmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_visual_info\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"visual_info\", 11))\r\n        {\r\n          ret = GLXEW_EXT_visual_info;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_EXT_visual_rating\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"visual_rating\", 13))\r\n        {\r\n          ret = GLXEW_EXT_visual_rating;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"INTEL_\", 6))\r\n      {\r\n#ifdef GLX_INTEL_swap_event\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_event\", 10))\r\n        {\r\n          ret = GLXEW_INTEL_swap_event;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"MESA_\", 5))\r\n      {\r\n#ifdef GLX_MESA_agp_offset\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"agp_offset\", 10))\r\n        {\r\n          ret = GLXEW_MESA_agp_offset;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_copy_sub_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_sub_buffer\", 15))\r\n        {\r\n          ret = GLXEW_MESA_copy_sub_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_pixmap_colormap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixmap_colormap\", 15))\r\n        {\r\n          ret = GLXEW_MESA_pixmap_colormap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_query_renderer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"query_renderer\", 14))\r\n        {\r\n          ret = GLXEW_MESA_query_renderer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_release_buffers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"release_buffers\", 15))\r\n        {\r\n          ret = GLXEW_MESA_release_buffers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_set_3dfx_mode\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"set_3dfx_mode\", 13))\r\n        {\r\n          ret = GLXEW_MESA_set_3dfx_mode;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_MESA_swap_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control\", 12))\r\n        {\r\n          ret = GLXEW_MESA_swap_control;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NV_\", 3))\r\n      {\r\n#ifdef GLX_NV_copy_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_buffer\", 11))\r\n        {\r\n          ret = GLXEW_NV_copy_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_copy_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"copy_image\", 10))\r\n        {\r\n          ret = GLXEW_NV_copy_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_delay_before_swap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"delay_before_swap\", 17))\r\n        {\r\n          ret = GLXEW_NV_delay_before_swap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_float_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"float_buffer\", 12))\r\n        {\r\n          ret = GLXEW_NV_float_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_multisample_coverage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample_coverage\", 20))\r\n        {\r\n          ret = GLXEW_NV_multisample_coverage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_present_video\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"present_video\", 13))\r\n        {\r\n          ret = GLXEW_NV_present_video;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_robustness_video_memory_purge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_video_memory_purge\", 29))\r\n        {\r\n          ret = GLXEW_NV_robustness_video_memory_purge;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_swap_group\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_group\", 10))\r\n        {\r\n          ret = GLXEW_NV_swap_group;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_vertex_array_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vertex_array_range\", 18))\r\n        {\r\n          ret = GLXEW_NV_vertex_array_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_video_capture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_capture\", 13))\r\n        {\r\n          ret = GLXEW_NV_video_capture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_NV_video_out\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_out\", 9))\r\n        {\r\n          ret = GLXEW_NV_video_out;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"OML_\", 4))\r\n      {\r\n#ifdef GLX_OML_swap_method\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_method\", 11))\r\n        {\r\n          ret = GLXEW_OML_swap_method;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_OML_sync_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sync_control\", 12))\r\n        {\r\n          ret = GLXEW_OML_sync_control;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGIS_\", 5))\r\n      {\r\n#ifdef GLX_SGIS_blended_overlay\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blended_overlay\", 15))\r\n        {\r\n          ret = GLXEW_SGIS_blended_overlay;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIS_color_range\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"color_range\", 11))\r\n        {\r\n          ret = GLXEW_SGIS_color_range;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIS_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multisample\", 11))\r\n        {\r\n          ret = GLXEW_SGIS_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIS_shared_multisample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"shared_multisample\", 18))\r\n        {\r\n          ret = GLXEW_SGIS_shared_multisample;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGIX_\", 5))\r\n      {\r\n#ifdef GLX_SGIX_fbconfig\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fbconfig\", 8))\r\n        {\r\n          ret = GLXEW_SGIX_fbconfig;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_hyperpipe\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"hyperpipe\", 9))\r\n        {\r\n          ret = GLXEW_SGIX_hyperpipe;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_pbuffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pbuffer\", 7))\r\n        {\r\n          ret = GLXEW_SGIX_pbuffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_swap_barrier\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_barrier\", 12))\r\n        {\r\n          ret = GLXEW_SGIX_swap_barrier;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_swap_group\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_group\", 10))\r\n        {\r\n          ret = GLXEW_SGIX_swap_group;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_video_resize\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_resize\", 12))\r\n        {\r\n          ret = GLXEW_SGIX_video_resize;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGIX_visual_select_group\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"visual_select_group\", 19))\r\n        {\r\n          ret = GLXEW_SGIX_visual_select_group;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SGI_\", 4))\r\n      {\r\n#ifdef GLX_SGI_cushion\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cushion\", 7))\r\n        {\r\n          ret = GLXEW_SGI_cushion;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGI_make_current_read\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"make_current_read\", 17))\r\n        {\r\n          ret = GLXEW_SGI_make_current_read;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGI_swap_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_control\", 12))\r\n        {\r\n          ret = GLXEW_SGI_swap_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SGI_video_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_sync\", 10))\r\n        {\r\n          ret = GLXEW_SGI_video_sync;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"SUN_\", 4))\r\n      {\r\n#ifdef GLX_SUN_get_transparent_index\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"get_transparent_index\", 21))\r\n        {\r\n          ret = GLXEW_SUN_get_transparent_index;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef GLX_SUN_video_resize\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"video_resize\", 12))\r\n        {\r\n          ret = GLXEW_SUN_video_resize;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n    }\r\n    ret = (len == 0);\r\n  }\r\n  return ret;\r\n}\r\n\r\n#elif defined(GLEW_EGL)\r\n\r\nGLboolean eglewIsSupported (const char* name)\r\n{\r\n  const GLubyte* pos = (const GLubyte*)name;\r\n  GLuint len = _glewStrLen(pos);\r\n  GLboolean ret = GL_TRUE;\r\n  while (ret && len > 0)\r\n  {\r\n    if(_glewStrSame1(&pos, &len, (const GLubyte*)\"EGL_\", 4))\r\n    {\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"VERSION_\", 8))\r\n      {\r\n#ifdef EGL_VERSION_1_0\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_0\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_0;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_VERSION_1_1\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_1\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_1;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_VERSION_1_2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_2\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_VERSION_1_3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_3\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_VERSION_1_4\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_4\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_4;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_VERSION_1_5\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"1_5\", 3))\r\n        {\r\n          ret = EGLEW_VERSION_1_5;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ANDROID_\", 8))\r\n      {\r\n#ifdef EGL_ANDROID_blob_cache\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"blob_cache\", 10))\r\n        {\r\n          ret = EGLEW_ANDROID_blob_cache;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_create_native_client_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_native_client_buffer\", 27))\r\n        {\r\n          ret = EGLEW_ANDROID_create_native_client_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_framebuffer_target\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"framebuffer_target\", 18))\r\n        {\r\n          ret = EGLEW_ANDROID_framebuffer_target;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_front_buffer_auto_refresh\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"front_buffer_auto_refresh\", 25))\r\n        {\r\n          ret = EGLEW_ANDROID_front_buffer_auto_refresh;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_image_native_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_native_buffer\", 19))\r\n        {\r\n          ret = EGLEW_ANDROID_image_native_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_native_fence_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"native_fence_sync\", 17))\r\n        {\r\n          ret = EGLEW_ANDROID_native_fence_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_presentation_time\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"presentation_time\", 17))\r\n        {\r\n          ret = EGLEW_ANDROID_presentation_time;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANDROID_recordable\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"recordable\", 10))\r\n        {\r\n          ret = EGLEW_ANDROID_recordable;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ANGLE_\", 6))\r\n      {\r\n#ifdef EGL_ANGLE_d3d_share_handle_client_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"d3d_share_handle_client_buffer\", 30))\r\n        {\r\n          ret = EGLEW_ANGLE_d3d_share_handle_client_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANGLE_device_d3d\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_d3d\", 10))\r\n        {\r\n          ret = EGLEW_ANGLE_device_d3d;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANGLE_query_surface_pointer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"query_surface_pointer\", 21))\r\n        {\r\n          ret = EGLEW_ANGLE_query_surface_pointer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"surface_d3d_texture_2d_share_handle\", 35))\r\n        {\r\n          ret = EGLEW_ANGLE_surface_d3d_texture_2d_share_handle;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ANGLE_window_fixed_size\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"window_fixed_size\", 17))\r\n        {\r\n          ret = EGLEW_ANGLE_window_fixed_size;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"ARM_\", 4))\r\n      {\r\n#ifdef EGL_ARM_implicit_external_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"implicit_external_sync\", 22))\r\n        {\r\n          ret = EGLEW_ARM_implicit_external_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_ARM_pixmap_multisample_discard\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixmap_multisample_discard\", 26))\r\n        {\r\n          ret = EGLEW_ARM_pixmap_multisample_discard;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"EXT_\", 4))\r\n      {\r\n#ifdef EGL_EXT_buffer_age\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"buffer_age\", 10))\r\n        {\r\n          ret = EGLEW_EXT_buffer_age;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_client_extensions\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"client_extensions\", 17))\r\n        {\r\n          ret = EGLEW_EXT_client_extensions;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_create_context_robustness\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_robustness\", 25))\r\n        {\r\n          ret = EGLEW_EXT_create_context_robustness;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_device_base\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_base\", 11))\r\n        {\r\n          ret = EGLEW_EXT_device_base;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_device_drm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_drm\", 10))\r\n        {\r\n          ret = EGLEW_EXT_device_drm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_device_enumeration\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_enumeration\", 18))\r\n        {\r\n          ret = EGLEW_EXT_device_enumeration;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_device_openwf\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_openwf\", 13))\r\n        {\r\n          ret = EGLEW_EXT_device_openwf;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_device_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_query\", 12))\r\n        {\r\n          ret = EGLEW_EXT_device_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_linear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_colorspace_bt2020_linear\", 27))\r\n        {\r\n          ret = EGLEW_EXT_gl_colorspace_bt2020_linear;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_pq\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_colorspace_bt2020_pq\", 23))\r\n        {\r\n          ret = EGLEW_EXT_gl_colorspace_bt2020_pq;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_gl_colorspace_scrgb_linear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_colorspace_scrgb_linear\", 26))\r\n        {\r\n          ret = EGLEW_EXT_gl_colorspace_scrgb_linear;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_image_dma_buf_import\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_dma_buf_import\", 20))\r\n        {\r\n          ret = EGLEW_EXT_image_dma_buf_import;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_image_dma_buf_import_modifiers\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_dma_buf_import_modifiers\", 30))\r\n        {\r\n          ret = EGLEW_EXT_image_dma_buf_import_modifiers;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_multiview_window\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"multiview_window\", 16))\r\n        {\r\n          ret = EGLEW_EXT_multiview_window;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_output_base\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"output_base\", 11))\r\n        {\r\n          ret = EGLEW_EXT_output_base;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_output_drm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"output_drm\", 10))\r\n        {\r\n          ret = EGLEW_EXT_output_drm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_output_openwf\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"output_openwf\", 13))\r\n        {\r\n          ret = EGLEW_EXT_output_openwf;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_pixel_format_float\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"pixel_format_float\", 18))\r\n        {\r\n          ret = EGLEW_EXT_pixel_format_float;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_platform_base\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_base\", 13))\r\n        {\r\n          ret = EGLEW_EXT_platform_base;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_platform_device\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_device\", 15))\r\n        {\r\n          ret = EGLEW_EXT_platform_device;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_platform_wayland\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_wayland\", 16))\r\n        {\r\n          ret = EGLEW_EXT_platform_wayland;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_platform_x11\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_x11\", 12))\r\n        {\r\n          ret = EGLEW_EXT_platform_x11;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_protected_content\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"protected_content\", 17))\r\n        {\r\n          ret = EGLEW_EXT_protected_content;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_protected_surface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"protected_surface\", 17))\r\n        {\r\n          ret = EGLEW_EXT_protected_surface;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_stream_consumer_egloutput\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_consumer_egloutput\", 25))\r\n        {\r\n          ret = EGLEW_EXT_stream_consumer_egloutput;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_surface_SMPTE2086_metadata\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"surface_SMPTE2086_metadata\", 26))\r\n        {\r\n          ret = EGLEW_EXT_surface_SMPTE2086_metadata;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_swap_buffers_with_damage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_buffers_with_damage\", 24))\r\n        {\r\n          ret = EGLEW_EXT_swap_buffers_with_damage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_EXT_yuv_surface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"yuv_surface\", 11))\r\n        {\r\n          ret = EGLEW_EXT_yuv_surface;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"HI_\", 3))\r\n      {\r\n#ifdef EGL_HI_clientpixmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"clientpixmap\", 12))\r\n        {\r\n          ret = EGLEW_HI_clientpixmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_HI_colorformats\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"colorformats\", 12))\r\n        {\r\n          ret = EGLEW_HI_colorformats;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"IMG_\", 4))\r\n      {\r\n#ifdef EGL_IMG_context_priority\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"context_priority\", 16))\r\n        {\r\n          ret = EGLEW_IMG_context_priority;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_IMG_image_plane_attribs\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_plane_attribs\", 19))\r\n        {\r\n          ret = EGLEW_IMG_image_plane_attribs;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"KHR_\", 4))\r\n      {\r\n#ifdef EGL_KHR_cl_event\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cl_event\", 8))\r\n        {\r\n          ret = EGLEW_KHR_cl_event;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_cl_event2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cl_event2\", 9))\r\n        {\r\n          ret = EGLEW_KHR_cl_event2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_client_get_all_proc_addresses\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"client_get_all_proc_addresses\", 29))\r\n        {\r\n          ret = EGLEW_KHR_client_get_all_proc_addresses;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_config_attribs\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"config_attribs\", 14))\r\n        {\r\n          ret = EGLEW_KHR_config_attribs;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_context_flush_control\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"context_flush_control\", 21))\r\n        {\r\n          ret = EGLEW_KHR_context_flush_control;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_create_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context\", 14))\r\n        {\r\n          ret = EGLEW_KHR_create_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_create_context_no_error\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"create_context_no_error\", 23))\r\n        {\r\n          ret = EGLEW_KHR_create_context_no_error;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_debug\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"debug\", 5))\r\n        {\r\n          ret = EGLEW_KHR_debug;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_fence_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"fence_sync\", 10))\r\n        {\r\n          ret = EGLEW_KHR_fence_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_get_all_proc_addresses\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"get_all_proc_addresses\", 22))\r\n        {\r\n          ret = EGLEW_KHR_get_all_proc_addresses;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_gl_colorspace\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_colorspace\", 13))\r\n        {\r\n          ret = EGLEW_KHR_gl_colorspace;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_gl_renderbuffer_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_renderbuffer_image\", 21))\r\n        {\r\n          ret = EGLEW_KHR_gl_renderbuffer_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_gl_texture_2D_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_texture_2D_image\", 19))\r\n        {\r\n          ret = EGLEW_KHR_gl_texture_2D_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_gl_texture_3D_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_texture_3D_image\", 19))\r\n        {\r\n          ret = EGLEW_KHR_gl_texture_3D_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_gl_texture_cubemap_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"gl_texture_cubemap_image\", 24))\r\n        {\r\n          ret = EGLEW_KHR_gl_texture_cubemap_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image\", 5))\r\n        {\r\n          ret = EGLEW_KHR_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_image_base\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_base\", 10))\r\n        {\r\n          ret = EGLEW_KHR_image_base;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_image_pixmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_pixmap\", 12))\r\n        {\r\n          ret = EGLEW_KHR_image_pixmap;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_lock_surface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"lock_surface\", 12))\r\n        {\r\n          ret = EGLEW_KHR_lock_surface;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_lock_surface2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"lock_surface2\", 13))\r\n        {\r\n          ret = EGLEW_KHR_lock_surface2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_lock_surface3\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"lock_surface3\", 13))\r\n        {\r\n          ret = EGLEW_KHR_lock_surface3;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_mutable_render_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"mutable_render_buffer\", 21))\r\n        {\r\n          ret = EGLEW_KHR_mutable_render_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_no_config_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"no_config_context\", 17))\r\n        {\r\n          ret = EGLEW_KHR_no_config_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_partial_update\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"partial_update\", 14))\r\n        {\r\n          ret = EGLEW_KHR_partial_update;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_platform_android\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_android\", 16))\r\n        {\r\n          ret = EGLEW_KHR_platform_android;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_platform_gbm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_gbm\", 12))\r\n        {\r\n          ret = EGLEW_KHR_platform_gbm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_platform_wayland\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_wayland\", 16))\r\n        {\r\n          ret = EGLEW_KHR_platform_wayland;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_platform_x11\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_x11\", 12))\r\n        {\r\n          ret = EGLEW_KHR_platform_x11;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_reusable_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"reusable_sync\", 13))\r\n        {\r\n          ret = EGLEW_KHR_reusable_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream\", 6))\r\n        {\r\n          ret = EGLEW_KHR_stream;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_attrib\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_attrib\", 13))\r\n        {\r\n          ret = EGLEW_KHR_stream_attrib;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_consumer_gltexture\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_consumer_gltexture\", 25))\r\n        {\r\n          ret = EGLEW_KHR_stream_consumer_gltexture;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_cross_process_fd\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_process_fd\", 23))\r\n        {\r\n          ret = EGLEW_KHR_stream_cross_process_fd;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_fifo\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_fifo\", 11))\r\n        {\r\n          ret = EGLEW_KHR_stream_fifo;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_producer_aldatalocator\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_producer_aldatalocator\", 29))\r\n        {\r\n          ret = EGLEW_KHR_stream_producer_aldatalocator;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_stream_producer_eglsurface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_producer_eglsurface\", 26))\r\n        {\r\n          ret = EGLEW_KHR_stream_producer_eglsurface;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_surfaceless_context\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"surfaceless_context\", 19))\r\n        {\r\n          ret = EGLEW_KHR_surfaceless_context;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_swap_buffers_with_damage\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_buffers_with_damage\", 24))\r\n        {\r\n          ret = EGLEW_KHR_swap_buffers_with_damage;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_vg_parent_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"vg_parent_image\", 15))\r\n        {\r\n          ret = EGLEW_KHR_vg_parent_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_KHR_wait_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"wait_sync\", 9))\r\n        {\r\n          ret = EGLEW_KHR_wait_sync;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"MESA_\", 5))\r\n      {\r\n#ifdef EGL_MESA_drm_image\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"drm_image\", 9))\r\n        {\r\n          ret = EGLEW_MESA_drm_image;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_MESA_image_dma_buf_export\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_dma_buf_export\", 20))\r\n        {\r\n          ret = EGLEW_MESA_image_dma_buf_export;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_MESA_platform_gbm\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_gbm\", 12))\r\n        {\r\n          ret = EGLEW_MESA_platform_gbm;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_MESA_platform_surfaceless\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"platform_surfaceless\", 20))\r\n        {\r\n          ret = EGLEW_MESA_platform_surfaceless;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NOK_\", 4))\r\n      {\r\n#ifdef EGL_NOK_swap_region\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_region\", 11))\r\n        {\r\n          ret = EGLEW_NOK_swap_region;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NOK_swap_region2\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"swap_region2\", 12))\r\n        {\r\n          ret = EGLEW_NOK_swap_region2;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NOK_texture_from_pixmap\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"texture_from_pixmap\", 19))\r\n        {\r\n          ret = EGLEW_NOK_texture_from_pixmap;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"NV_\", 3))\r\n      {\r\n#ifdef EGL_NV_3dvision_surface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"3dvision_surface\", 16))\r\n        {\r\n          ret = EGLEW_NV_3dvision_surface;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_coverage_sample\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"coverage_sample\", 15))\r\n        {\r\n          ret = EGLEW_NV_coverage_sample;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_coverage_sample_resolve\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"coverage_sample_resolve\", 23))\r\n        {\r\n          ret = EGLEW_NV_coverage_sample_resolve;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_cuda_event\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"cuda_event\", 10))\r\n        {\r\n          ret = EGLEW_NV_cuda_event;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_depth_nonlinear\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"depth_nonlinear\", 15))\r\n        {\r\n          ret = EGLEW_NV_depth_nonlinear;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_device_cuda\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"device_cuda\", 11))\r\n        {\r\n          ret = EGLEW_NV_device_cuda;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_native_query\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"native_query\", 12))\r\n        {\r\n          ret = EGLEW_NV_native_query;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_post_convert_rounding\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"post_convert_rounding\", 21))\r\n        {\r\n          ret = EGLEW_NV_post_convert_rounding;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_post_sub_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"post_sub_buffer\", 15))\r\n        {\r\n          ret = EGLEW_NV_post_sub_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_robustness_video_memory_purge\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"robustness_video_memory_purge\", 29))\r\n        {\r\n          ret = EGLEW_NV_robustness_video_memory_purge;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_consumer_gltexture_yuv\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_consumer_gltexture_yuv\", 29))\r\n        {\r\n          ret = EGLEW_NV_stream_consumer_gltexture_yuv;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_cross_display\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_display\", 20))\r\n        {\r\n          ret = EGLEW_NV_stream_cross_display;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_cross_object\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_object\", 19))\r\n        {\r\n          ret = EGLEW_NV_stream_cross_object;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_cross_partition\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_partition\", 22))\r\n        {\r\n          ret = EGLEW_NV_stream_cross_partition;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_cross_process\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_process\", 20))\r\n        {\r\n          ret = EGLEW_NV_stream_cross_process;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_cross_system\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_cross_system\", 19))\r\n        {\r\n          ret = EGLEW_NV_stream_cross_system;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_fifo_next\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_fifo_next\", 16))\r\n        {\r\n          ret = EGLEW_NV_stream_fifo_next;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_fifo_synchronous\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_fifo_synchronous\", 23))\r\n        {\r\n          ret = EGLEW_NV_stream_fifo_synchronous;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_frame_limits\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_frame_limits\", 19))\r\n        {\r\n          ret = EGLEW_NV_stream_frame_limits;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_metadata\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_metadata\", 15))\r\n        {\r\n          ret = EGLEW_NV_stream_metadata;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_remote\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_remote\", 13))\r\n        {\r\n          ret = EGLEW_NV_stream_remote;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_reset\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_reset\", 12))\r\n        {\r\n          ret = EGLEW_NV_stream_reset;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_socket\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_socket\", 13))\r\n        {\r\n          ret = EGLEW_NV_stream_socket;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_socket_inet\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_socket_inet\", 18))\r\n        {\r\n          ret = EGLEW_NV_stream_socket_inet;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_socket_unix\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_socket_unix\", 18))\r\n        {\r\n          ret = EGLEW_NV_stream_socket_unix;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_stream_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"stream_sync\", 11))\r\n        {\r\n          ret = EGLEW_NV_stream_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_sync\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"sync\", 4))\r\n        {\r\n          ret = EGLEW_NV_sync;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_NV_system_time\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"system_time\", 11))\r\n        {\r\n          ret = EGLEW_NV_system_time;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n      if (_glewStrSame2(&pos, &len, (const GLubyte*)\"TIZEN_\", 6))\r\n      {\r\n#ifdef EGL_TIZEN_image_native_buffer\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_native_buffer\", 19))\r\n        {\r\n          ret = EGLEW_TIZEN_image_native_buffer;\r\n          continue;\r\n        }\r\n#endif\r\n#ifdef EGL_TIZEN_image_native_surface\r\n        if (_glewStrSame3(&pos, &len, (const GLubyte*)\"image_native_surface\", 20))\r\n        {\r\n          ret = EGLEW_TIZEN_image_native_surface;\r\n          continue;\r\n        }\r\n#endif\r\n      }\r\n    }\r\n    ret = (len == 0);\r\n  }\r\n  return ret;\r\n}\r\n\r\n#endif /* _WIN32 */\r\n"
  },
  {
    "path": "custom_backend/glfw/glew/glewinfo.c",
    "content": "/*\r\n** The OpenGL Extension Wrangler Library\r\n** Copyright (C) 2008-2017, Nigel Stewart <nigels[]users sourceforge net>\r\n** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>\r\n** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>\r\n** Copyright (C) 2002, Lev Povalahev\r\n** All rights reserved.\r\n** \r\n** Redistribution and use in source and binary forms, with or without \r\n** modification, are permitted provided that the following conditions are met:\r\n** \r\n** * Redistributions of source code must retain the above copyright notice, \r\n**   this list of conditions and the following disclaimer.\r\n** * Redistributions in binary form must reproduce the above copyright notice, \r\n**   this list of conditions and the following disclaimer in the documentation \r\n**   and/or other materials provided with the distribution.\r\n** * The name of the author may be used to endorse or promote products \r\n**   derived from this software without specific prior written permission.\r\n**\r\n** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" \r\n** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE \r\n** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE \r\n** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR \r\n** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF \r\n** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\r\n** THE POSSIBILITY OF SUCH DAMAGE.\r\n*/\r\n\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <string.h>\r\n#include <GL/glew.h>\r\n#if defined(GLEW_EGL)\r\n#include <GL/eglew.h>\r\n#elif defined(GLEW_OSMESA)\r\n#define GLAPI extern\r\n#include <GL/osmesa.h>\r\n#elif defined(_WIN32)\r\n#include <GL/wglew.h>\r\n#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)\r\n#include <GL/glxew.h>\r\n#endif\r\n\r\n#if defined(__APPLE__)\r\n#include <AvailabilityMacros.h>\r\n#endif\r\n\r\n#ifdef GLEW_REGAL\r\n#include <GL/Regal.h>\r\n#endif\r\n\r\nstatic FILE* f;\r\n\r\n/* Command-line parameters for GL context creation */\r\n\r\nstruct createParams\r\n{\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n  int         pixelformat;\r\n#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)\r\n  const char* display;\r\n  int         visual;\r\n#endif\r\n  int         major, minor;  /* GL context version number */\r\n\r\n  /* https://www.opengl.org/registry/specs/ARB/glx_create_context.txt */\r\n  int         profile;       /* core = 1, compatibility = 2 */\r\n  int         flags;         /* debug = 1, forward compatible = 2 */\r\n};\r\n\r\nGLboolean glewCreateContext (struct createParams *params);\r\n\r\nGLboolean glewParseArgs (int argc, char** argv, struct createParams *);\r\n\r\nvoid glewDestroyContext ();\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nstatic void glewPrintExt (const char* name, GLboolean def1, GLboolean def2, GLboolean def3)\r\n{\r\n  unsigned int i;\r\n  fprintf(f, \"\\n%s:\", name);\r\n  for (i=0; i<62-strlen(name); i++) fprintf(f, \" \");\r\n  fprintf(f, \"%s \", def1 ? \"OK\" : \"MISSING\");\r\n  if (def1 != def2)\r\n    fprintf(f, \"[%s] \", def2 ? \"OK\" : \"MISSING\");\r\n  if (def1 != def3)\r\n    fprintf(f, \"[%s]\\n\", def3 ? \"OK\" : \"MISSING\");\r\n  else\r\n    fprintf(f, \"\\n\");\r\n  for (i=0; i<strlen(name)+1; i++) fprintf(f, \"-\");\r\n  fprintf(f, \"\\n\");\r\n  fflush(f);\r\n}\r\n\r\nstatic void glewInfoFunc (const char* name, GLint undefined)\r\n{\r\n  unsigned int i;\r\n  fprintf(f, \"  %s:\", name);\r\n  for (i=0; i<60-strlen(name); i++) fprintf(f, \" \");\r\n  fprintf(f, \"%s\\n\", undefined ? \"MISSING\" : \"OK\");\r\n  fflush(f);\r\n}\r\n\r\n/* ----------------------------- GL_VERSION_1_1 ---------------------------- */\r\n\r\n#ifdef GL_VERSION_1_1\r\n\r\nstatic void _glewInfo_GL_VERSION_1_1 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_1\", GLEW_VERSION_1_1, GLEW_VERSION_1_1, GLEW_VERSION_1_1);\r\n}\r\n\r\n#endif /* GL_VERSION_1_1 */\r\n\r\n#ifdef GL_VERSION_1_2\r\n\r\nstatic void _glewInfo_GL_VERSION_1_2 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_2\", GLEW_VERSION_1_2, GLEW_VERSION_1_2, GLEW_VERSION_1_2);\r\n\r\n  glewInfoFunc(\"glCopyTexSubImage3D\", glCopyTexSubImage3D == NULL);\r\n  glewInfoFunc(\"glDrawRangeElements\", glDrawRangeElements == NULL);\r\n  glewInfoFunc(\"glTexImage3D\", glTexImage3D == NULL);\r\n  glewInfoFunc(\"glTexSubImage3D\", glTexSubImage3D == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_1_2 */\r\n\r\n#ifdef GL_VERSION_1_2_1\r\n\r\nstatic void _glewInfo_GL_VERSION_1_2_1 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_2_1\", GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1, GLEW_VERSION_1_2_1);\r\n}\r\n\r\n#endif /* GL_VERSION_1_2_1 */\r\n\r\n#ifdef GL_VERSION_1_3\r\n\r\nstatic void _glewInfo_GL_VERSION_1_3 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_3\", GLEW_VERSION_1_3, GLEW_VERSION_1_3, GLEW_VERSION_1_3);\r\n\r\n  glewInfoFunc(\"glActiveTexture\", glActiveTexture == NULL);\r\n  glewInfoFunc(\"glClientActiveTexture\", glClientActiveTexture == NULL);\r\n  glewInfoFunc(\"glCompressedTexImage1D\", glCompressedTexImage1D == NULL);\r\n  glewInfoFunc(\"glCompressedTexImage2D\", glCompressedTexImage2D == NULL);\r\n  glewInfoFunc(\"glCompressedTexImage3D\", glCompressedTexImage3D == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage1D\", glCompressedTexSubImage1D == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage2D\", glCompressedTexSubImage2D == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage3D\", glCompressedTexSubImage3D == NULL);\r\n  glewInfoFunc(\"glGetCompressedTexImage\", glGetCompressedTexImage == NULL);\r\n  glewInfoFunc(\"glLoadTransposeMatrixd\", glLoadTransposeMatrixd == NULL);\r\n  glewInfoFunc(\"glLoadTransposeMatrixf\", glLoadTransposeMatrixf == NULL);\r\n  glewInfoFunc(\"glMultTransposeMatrixd\", glMultTransposeMatrixd == NULL);\r\n  glewInfoFunc(\"glMultTransposeMatrixf\", glMultTransposeMatrixf == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1d\", glMultiTexCoord1d == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1dv\", glMultiTexCoord1dv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1f\", glMultiTexCoord1f == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1fv\", glMultiTexCoord1fv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1i\", glMultiTexCoord1i == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1iv\", glMultiTexCoord1iv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1s\", glMultiTexCoord1s == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1sv\", glMultiTexCoord1sv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2d\", glMultiTexCoord2d == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2dv\", glMultiTexCoord2dv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2f\", glMultiTexCoord2f == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2fv\", glMultiTexCoord2fv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2i\", glMultiTexCoord2i == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2iv\", glMultiTexCoord2iv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2s\", glMultiTexCoord2s == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2sv\", glMultiTexCoord2sv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3d\", glMultiTexCoord3d == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3dv\", glMultiTexCoord3dv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3f\", glMultiTexCoord3f == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3fv\", glMultiTexCoord3fv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3i\", glMultiTexCoord3i == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3iv\", glMultiTexCoord3iv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3s\", glMultiTexCoord3s == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3sv\", glMultiTexCoord3sv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4d\", glMultiTexCoord4d == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4dv\", glMultiTexCoord4dv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4f\", glMultiTexCoord4f == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4fv\", glMultiTexCoord4fv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4i\", glMultiTexCoord4i == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4iv\", glMultiTexCoord4iv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4s\", glMultiTexCoord4s == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4sv\", glMultiTexCoord4sv == NULL);\r\n  glewInfoFunc(\"glSampleCoverage\", glSampleCoverage == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_1_3 */\r\n\r\n#ifdef GL_VERSION_1_4\r\n\r\nstatic void _glewInfo_GL_VERSION_1_4 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_4\", GLEW_VERSION_1_4, GLEW_VERSION_1_4, GLEW_VERSION_1_4);\r\n\r\n  glewInfoFunc(\"glBlendColor\", glBlendColor == NULL);\r\n  glewInfoFunc(\"glBlendEquation\", glBlendEquation == NULL);\r\n  glewInfoFunc(\"glBlendFuncSeparate\", glBlendFuncSeparate == NULL);\r\n  glewInfoFunc(\"glFogCoordPointer\", glFogCoordPointer == NULL);\r\n  glewInfoFunc(\"glFogCoordd\", glFogCoordd == NULL);\r\n  glewInfoFunc(\"glFogCoorddv\", glFogCoorddv == NULL);\r\n  glewInfoFunc(\"glFogCoordf\", glFogCoordf == NULL);\r\n  glewInfoFunc(\"glFogCoordfv\", glFogCoordfv == NULL);\r\n  glewInfoFunc(\"glMultiDrawArrays\", glMultiDrawArrays == NULL);\r\n  glewInfoFunc(\"glMultiDrawElements\", glMultiDrawElements == NULL);\r\n  glewInfoFunc(\"glPointParameterf\", glPointParameterf == NULL);\r\n  glewInfoFunc(\"glPointParameterfv\", glPointParameterfv == NULL);\r\n  glewInfoFunc(\"glPointParameteri\", glPointParameteri == NULL);\r\n  glewInfoFunc(\"glPointParameteriv\", glPointParameteriv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3b\", glSecondaryColor3b == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3bv\", glSecondaryColor3bv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3d\", glSecondaryColor3d == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3dv\", glSecondaryColor3dv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3f\", glSecondaryColor3f == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3fv\", glSecondaryColor3fv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3i\", glSecondaryColor3i == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3iv\", glSecondaryColor3iv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3s\", glSecondaryColor3s == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3sv\", glSecondaryColor3sv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ub\", glSecondaryColor3ub == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ubv\", glSecondaryColor3ubv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ui\", glSecondaryColor3ui == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3uiv\", glSecondaryColor3uiv == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3us\", glSecondaryColor3us == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3usv\", glSecondaryColor3usv == NULL);\r\n  glewInfoFunc(\"glSecondaryColorPointer\", glSecondaryColorPointer == NULL);\r\n  glewInfoFunc(\"glWindowPos2d\", glWindowPos2d == NULL);\r\n  glewInfoFunc(\"glWindowPos2dv\", glWindowPos2dv == NULL);\r\n  glewInfoFunc(\"glWindowPos2f\", glWindowPos2f == NULL);\r\n  glewInfoFunc(\"glWindowPos2fv\", glWindowPos2fv == NULL);\r\n  glewInfoFunc(\"glWindowPos2i\", glWindowPos2i == NULL);\r\n  glewInfoFunc(\"glWindowPos2iv\", glWindowPos2iv == NULL);\r\n  glewInfoFunc(\"glWindowPos2s\", glWindowPos2s == NULL);\r\n  glewInfoFunc(\"glWindowPos2sv\", glWindowPos2sv == NULL);\r\n  glewInfoFunc(\"glWindowPos3d\", glWindowPos3d == NULL);\r\n  glewInfoFunc(\"glWindowPos3dv\", glWindowPos3dv == NULL);\r\n  glewInfoFunc(\"glWindowPos3f\", glWindowPos3f == NULL);\r\n  glewInfoFunc(\"glWindowPos3fv\", glWindowPos3fv == NULL);\r\n  glewInfoFunc(\"glWindowPos3i\", glWindowPos3i == NULL);\r\n  glewInfoFunc(\"glWindowPos3iv\", glWindowPos3iv == NULL);\r\n  glewInfoFunc(\"glWindowPos3s\", glWindowPos3s == NULL);\r\n  glewInfoFunc(\"glWindowPos3sv\", glWindowPos3sv == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_1_4 */\r\n\r\n#ifdef GL_VERSION_1_5\r\n\r\nstatic void _glewInfo_GL_VERSION_1_5 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_1_5\", GLEW_VERSION_1_5, GLEW_VERSION_1_5, GLEW_VERSION_1_5);\r\n\r\n  glewInfoFunc(\"glBeginQuery\", glBeginQuery == NULL);\r\n  glewInfoFunc(\"glBindBuffer\", glBindBuffer == NULL);\r\n  glewInfoFunc(\"glBufferData\", glBufferData == NULL);\r\n  glewInfoFunc(\"glBufferSubData\", glBufferSubData == NULL);\r\n  glewInfoFunc(\"glDeleteBuffers\", glDeleteBuffers == NULL);\r\n  glewInfoFunc(\"glDeleteQueries\", glDeleteQueries == NULL);\r\n  glewInfoFunc(\"glEndQuery\", glEndQuery == NULL);\r\n  glewInfoFunc(\"glGenBuffers\", glGenBuffers == NULL);\r\n  glewInfoFunc(\"glGenQueries\", glGenQueries == NULL);\r\n  glewInfoFunc(\"glGetBufferParameteriv\", glGetBufferParameteriv == NULL);\r\n  glewInfoFunc(\"glGetBufferPointerv\", glGetBufferPointerv == NULL);\r\n  glewInfoFunc(\"glGetBufferSubData\", glGetBufferSubData == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectiv\", glGetQueryObjectiv == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectuiv\", glGetQueryObjectuiv == NULL);\r\n  glewInfoFunc(\"glGetQueryiv\", glGetQueryiv == NULL);\r\n  glewInfoFunc(\"glIsBuffer\", glIsBuffer == NULL);\r\n  glewInfoFunc(\"glIsQuery\", glIsQuery == NULL);\r\n  glewInfoFunc(\"glMapBuffer\", glMapBuffer == NULL);\r\n  glewInfoFunc(\"glUnmapBuffer\", glUnmapBuffer == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_1_5 */\r\n\r\n#ifdef GL_VERSION_2_0\r\n\r\nstatic void _glewInfo_GL_VERSION_2_0 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_2_0\", GLEW_VERSION_2_0, GLEW_VERSION_2_0, GLEW_VERSION_2_0);\r\n\r\n  glewInfoFunc(\"glAttachShader\", glAttachShader == NULL);\r\n  glewInfoFunc(\"glBindAttribLocation\", glBindAttribLocation == NULL);\r\n  glewInfoFunc(\"glBlendEquationSeparate\", glBlendEquationSeparate == NULL);\r\n  glewInfoFunc(\"glCompileShader\", glCompileShader == NULL);\r\n  glewInfoFunc(\"glCreateProgram\", glCreateProgram == NULL);\r\n  glewInfoFunc(\"glCreateShader\", glCreateShader == NULL);\r\n  glewInfoFunc(\"glDeleteProgram\", glDeleteProgram == NULL);\r\n  glewInfoFunc(\"glDeleteShader\", glDeleteShader == NULL);\r\n  glewInfoFunc(\"glDetachShader\", glDetachShader == NULL);\r\n  glewInfoFunc(\"glDisableVertexAttribArray\", glDisableVertexAttribArray == NULL);\r\n  glewInfoFunc(\"glDrawBuffers\", glDrawBuffers == NULL);\r\n  glewInfoFunc(\"glEnableVertexAttribArray\", glEnableVertexAttribArray == NULL);\r\n  glewInfoFunc(\"glGetActiveAttrib\", glGetActiveAttrib == NULL);\r\n  glewInfoFunc(\"glGetActiveUniform\", glGetActiveUniform == NULL);\r\n  glewInfoFunc(\"glGetAttachedShaders\", glGetAttachedShaders == NULL);\r\n  glewInfoFunc(\"glGetAttribLocation\", glGetAttribLocation == NULL);\r\n  glewInfoFunc(\"glGetProgramInfoLog\", glGetProgramInfoLog == NULL);\r\n  glewInfoFunc(\"glGetProgramiv\", glGetProgramiv == NULL);\r\n  glewInfoFunc(\"glGetShaderInfoLog\", glGetShaderInfoLog == NULL);\r\n  glewInfoFunc(\"glGetShaderSource\", glGetShaderSource == NULL);\r\n  glewInfoFunc(\"glGetShaderiv\", glGetShaderiv == NULL);\r\n  glewInfoFunc(\"glGetUniformLocation\", glGetUniformLocation == NULL);\r\n  glewInfoFunc(\"glGetUniformfv\", glGetUniformfv == NULL);\r\n  glewInfoFunc(\"glGetUniformiv\", glGetUniformiv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribPointerv\", glGetVertexAttribPointerv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribdv\", glGetVertexAttribdv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribfv\", glGetVertexAttribfv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribiv\", glGetVertexAttribiv == NULL);\r\n  glewInfoFunc(\"glIsProgram\", glIsProgram == NULL);\r\n  glewInfoFunc(\"glIsShader\", glIsShader == NULL);\r\n  glewInfoFunc(\"glLinkProgram\", glLinkProgram == NULL);\r\n  glewInfoFunc(\"glShaderSource\", glShaderSource == NULL);\r\n  glewInfoFunc(\"glStencilFuncSeparate\", glStencilFuncSeparate == NULL);\r\n  glewInfoFunc(\"glStencilMaskSeparate\", glStencilMaskSeparate == NULL);\r\n  glewInfoFunc(\"glStencilOpSeparate\", glStencilOpSeparate == NULL);\r\n  glewInfoFunc(\"glUniform1f\", glUniform1f == NULL);\r\n  glewInfoFunc(\"glUniform1fv\", glUniform1fv == NULL);\r\n  glewInfoFunc(\"glUniform1i\", glUniform1i == NULL);\r\n  glewInfoFunc(\"glUniform1iv\", glUniform1iv == NULL);\r\n  glewInfoFunc(\"glUniform2f\", glUniform2f == NULL);\r\n  glewInfoFunc(\"glUniform2fv\", glUniform2fv == NULL);\r\n  glewInfoFunc(\"glUniform2i\", glUniform2i == NULL);\r\n  glewInfoFunc(\"glUniform2iv\", glUniform2iv == NULL);\r\n  glewInfoFunc(\"glUniform3f\", glUniform3f == NULL);\r\n  glewInfoFunc(\"glUniform3fv\", glUniform3fv == NULL);\r\n  glewInfoFunc(\"glUniform3i\", glUniform3i == NULL);\r\n  glewInfoFunc(\"glUniform3iv\", glUniform3iv == NULL);\r\n  glewInfoFunc(\"glUniform4f\", glUniform4f == NULL);\r\n  glewInfoFunc(\"glUniform4fv\", glUniform4fv == NULL);\r\n  glewInfoFunc(\"glUniform4i\", glUniform4i == NULL);\r\n  glewInfoFunc(\"glUniform4iv\", glUniform4iv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2fv\", glUniformMatrix2fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3fv\", glUniformMatrix3fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4fv\", glUniformMatrix4fv == NULL);\r\n  glewInfoFunc(\"glUseProgram\", glUseProgram == NULL);\r\n  glewInfoFunc(\"glValidateProgram\", glValidateProgram == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1d\", glVertexAttrib1d == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1dv\", glVertexAttrib1dv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1f\", glVertexAttrib1f == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1fv\", glVertexAttrib1fv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1s\", glVertexAttrib1s == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1sv\", glVertexAttrib1sv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2d\", glVertexAttrib2d == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2dv\", glVertexAttrib2dv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2f\", glVertexAttrib2f == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2fv\", glVertexAttrib2fv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2s\", glVertexAttrib2s == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2sv\", glVertexAttrib2sv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3d\", glVertexAttrib3d == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3dv\", glVertexAttrib3dv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3f\", glVertexAttrib3f == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3fv\", glVertexAttrib3fv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3s\", glVertexAttrib3s == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3sv\", glVertexAttrib3sv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nbv\", glVertexAttrib4Nbv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Niv\", glVertexAttrib4Niv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nsv\", glVertexAttrib4Nsv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nub\", glVertexAttrib4Nub == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nubv\", glVertexAttrib4Nubv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nuiv\", glVertexAttrib4Nuiv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4Nusv\", glVertexAttrib4Nusv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4bv\", glVertexAttrib4bv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4d\", glVertexAttrib4d == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4dv\", glVertexAttrib4dv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4f\", glVertexAttrib4f == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4fv\", glVertexAttrib4fv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4iv\", glVertexAttrib4iv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4s\", glVertexAttrib4s == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4sv\", glVertexAttrib4sv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4ubv\", glVertexAttrib4ubv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4uiv\", glVertexAttrib4uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4usv\", glVertexAttrib4usv == NULL);\r\n  glewInfoFunc(\"glVertexAttribPointer\", glVertexAttribPointer == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_2_0 */\r\n\r\n#ifdef GL_VERSION_2_1\r\n\r\nstatic void _glewInfo_GL_VERSION_2_1 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_2_1\", GLEW_VERSION_2_1, GLEW_VERSION_2_1, GLEW_VERSION_2_1);\r\n\r\n  glewInfoFunc(\"glUniformMatrix2x3fv\", glUniformMatrix2x3fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2x4fv\", glUniformMatrix2x4fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x2fv\", glUniformMatrix3x2fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x4fv\", glUniformMatrix3x4fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x2fv\", glUniformMatrix4x2fv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x3fv\", glUniformMatrix4x3fv == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_2_1 */\r\n\r\n#ifdef GL_VERSION_3_0\r\n\r\nstatic void _glewInfo_GL_VERSION_3_0 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_3_0\", GLEW_VERSION_3_0, GLEW_VERSION_3_0, GLEW_VERSION_3_0);\r\n\r\n  glewInfoFunc(\"glBeginConditionalRender\", glBeginConditionalRender == NULL);\r\n  glewInfoFunc(\"glBeginTransformFeedback\", glBeginTransformFeedback == NULL);\r\n  glewInfoFunc(\"glBindFragDataLocation\", glBindFragDataLocation == NULL);\r\n  glewInfoFunc(\"glClampColor\", glClampColor == NULL);\r\n  glewInfoFunc(\"glClearBufferfi\", glClearBufferfi == NULL);\r\n  glewInfoFunc(\"glClearBufferfv\", glClearBufferfv == NULL);\r\n  glewInfoFunc(\"glClearBufferiv\", glClearBufferiv == NULL);\r\n  glewInfoFunc(\"glClearBufferuiv\", glClearBufferuiv == NULL);\r\n  glewInfoFunc(\"glColorMaski\", glColorMaski == NULL);\r\n  glewInfoFunc(\"glDisablei\", glDisablei == NULL);\r\n  glewInfoFunc(\"glEnablei\", glEnablei == NULL);\r\n  glewInfoFunc(\"glEndConditionalRender\", glEndConditionalRender == NULL);\r\n  glewInfoFunc(\"glEndTransformFeedback\", glEndTransformFeedback == NULL);\r\n  glewInfoFunc(\"glGetBooleani_v\", glGetBooleani_v == NULL);\r\n  glewInfoFunc(\"glGetFragDataLocation\", glGetFragDataLocation == NULL);\r\n  glewInfoFunc(\"glGetStringi\", glGetStringi == NULL);\r\n  glewInfoFunc(\"glGetTexParameterIiv\", glGetTexParameterIiv == NULL);\r\n  glewInfoFunc(\"glGetTexParameterIuiv\", glGetTexParameterIuiv == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbackVarying\", glGetTransformFeedbackVarying == NULL);\r\n  glewInfoFunc(\"glGetUniformuiv\", glGetUniformuiv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribIiv\", glGetVertexAttribIiv == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribIuiv\", glGetVertexAttribIuiv == NULL);\r\n  glewInfoFunc(\"glIsEnabledi\", glIsEnabledi == NULL);\r\n  glewInfoFunc(\"glTexParameterIiv\", glTexParameterIiv == NULL);\r\n  glewInfoFunc(\"glTexParameterIuiv\", glTexParameterIuiv == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackVaryings\", glTransformFeedbackVaryings == NULL);\r\n  glewInfoFunc(\"glUniform1ui\", glUniform1ui == NULL);\r\n  glewInfoFunc(\"glUniform1uiv\", glUniform1uiv == NULL);\r\n  glewInfoFunc(\"glUniform2ui\", glUniform2ui == NULL);\r\n  glewInfoFunc(\"glUniform2uiv\", glUniform2uiv == NULL);\r\n  glewInfoFunc(\"glUniform3ui\", glUniform3ui == NULL);\r\n  glewInfoFunc(\"glUniform3uiv\", glUniform3uiv == NULL);\r\n  glewInfoFunc(\"glUniform4ui\", glUniform4ui == NULL);\r\n  glewInfoFunc(\"glUniform4uiv\", glUniform4uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1i\", glVertexAttribI1i == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1iv\", glVertexAttribI1iv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1ui\", glVertexAttribI1ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1uiv\", glVertexAttribI1uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2i\", glVertexAttribI2i == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2iv\", glVertexAttribI2iv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2ui\", glVertexAttribI2ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2uiv\", glVertexAttribI2uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3i\", glVertexAttribI3i == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3iv\", glVertexAttribI3iv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3ui\", glVertexAttribI3ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3uiv\", glVertexAttribI3uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4bv\", glVertexAttribI4bv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4i\", glVertexAttribI4i == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4iv\", glVertexAttribI4iv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4sv\", glVertexAttribI4sv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4ubv\", glVertexAttribI4ubv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4ui\", glVertexAttribI4ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4uiv\", glVertexAttribI4uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4usv\", glVertexAttribI4usv == NULL);\r\n  glewInfoFunc(\"glVertexAttribIPointer\", glVertexAttribIPointer == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_3_0 */\r\n\r\n#ifdef GL_VERSION_3_1\r\n\r\nstatic void _glewInfo_GL_VERSION_3_1 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_3_1\", GLEW_VERSION_3_1, GLEW_VERSION_3_1, GLEW_VERSION_3_1);\r\n\r\n  glewInfoFunc(\"glDrawArraysInstanced\", glDrawArraysInstanced == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstanced\", glDrawElementsInstanced == NULL);\r\n  glewInfoFunc(\"glPrimitiveRestartIndex\", glPrimitiveRestartIndex == NULL);\r\n  glewInfoFunc(\"glTexBuffer\", glTexBuffer == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_3_1 */\r\n\r\n#ifdef GL_VERSION_3_2\r\n\r\nstatic void _glewInfo_GL_VERSION_3_2 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_3_2\", GLEW_VERSION_3_2, GLEW_VERSION_3_2, GLEW_VERSION_3_2);\r\n\r\n  glewInfoFunc(\"glFramebufferTexture\", glFramebufferTexture == NULL);\r\n  glewInfoFunc(\"glGetBufferParameteri64v\", glGetBufferParameteri64v == NULL);\r\n  glewInfoFunc(\"glGetInteger64i_v\", glGetInteger64i_v == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_3_2 */\r\n\r\n#ifdef GL_VERSION_3_3\r\n\r\nstatic void _glewInfo_GL_VERSION_3_3 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_3_3\", GLEW_VERSION_3_3, GLEW_VERSION_3_3, GLEW_VERSION_3_3);\r\n\r\n  glewInfoFunc(\"glVertexAttribDivisor\", glVertexAttribDivisor == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_3_3 */\r\n\r\n#ifdef GL_VERSION_4_0\r\n\r\nstatic void _glewInfo_GL_VERSION_4_0 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_0\", GLEW_VERSION_4_0, GLEW_VERSION_4_0, GLEW_VERSION_4_0);\r\n\r\n  glewInfoFunc(\"glBlendEquationSeparatei\", glBlendEquationSeparatei == NULL);\r\n  glewInfoFunc(\"glBlendEquationi\", glBlendEquationi == NULL);\r\n  glewInfoFunc(\"glBlendFuncSeparatei\", glBlendFuncSeparatei == NULL);\r\n  glewInfoFunc(\"glBlendFunci\", glBlendFunci == NULL);\r\n  glewInfoFunc(\"glMinSampleShading\", glMinSampleShading == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_4_0 */\r\n\r\n#ifdef GL_VERSION_4_1\r\n\r\nstatic void _glewInfo_GL_VERSION_4_1 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_1\", GLEW_VERSION_4_1, GLEW_VERSION_4_1, GLEW_VERSION_4_1);\r\n}\r\n\r\n#endif /* GL_VERSION_4_1 */\r\n\r\n#ifdef GL_VERSION_4_2\r\n\r\nstatic void _glewInfo_GL_VERSION_4_2 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_2\", GLEW_VERSION_4_2, GLEW_VERSION_4_2, GLEW_VERSION_4_2);\r\n}\r\n\r\n#endif /* GL_VERSION_4_2 */\r\n\r\n#ifdef GL_VERSION_4_3\r\n\r\nstatic void _glewInfo_GL_VERSION_4_3 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_3\", GLEW_VERSION_4_3, GLEW_VERSION_4_3, GLEW_VERSION_4_3);\r\n}\r\n\r\n#endif /* GL_VERSION_4_3 */\r\n\r\n#ifdef GL_VERSION_4_4\r\n\r\nstatic void _glewInfo_GL_VERSION_4_4 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_4\", GLEW_VERSION_4_4, GLEW_VERSION_4_4, GLEW_VERSION_4_4);\r\n}\r\n\r\n#endif /* GL_VERSION_4_4 */\r\n\r\n#ifdef GL_VERSION_4_5\r\n\r\nstatic void _glewInfo_GL_VERSION_4_5 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_5\", GLEW_VERSION_4_5, GLEW_VERSION_4_5, GLEW_VERSION_4_5);\r\n\r\n  glewInfoFunc(\"glGetGraphicsResetStatus\", glGetGraphicsResetStatus == NULL);\r\n  glewInfoFunc(\"glGetnCompressedTexImage\", glGetnCompressedTexImage == NULL);\r\n  glewInfoFunc(\"glGetnTexImage\", glGetnTexImage == NULL);\r\n  glewInfoFunc(\"glGetnUniformdv\", glGetnUniformdv == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_4_5 */\r\n\r\n#ifdef GL_VERSION_4_6\r\n\r\nstatic void _glewInfo_GL_VERSION_4_6 (void)\r\n{\r\n  glewPrintExt(\"GL_VERSION_4_6\", GLEW_VERSION_4_6, GLEW_VERSION_4_6, GLEW_VERSION_4_6);\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectCount\", glMultiDrawArraysIndirectCount == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectCount\", glMultiDrawElementsIndirectCount == NULL);\r\n  glewInfoFunc(\"glSpecializeShader\", glSpecializeShader == NULL);\r\n}\r\n\r\n#endif /* GL_VERSION_4_6 */\r\n\r\n#ifdef GL_3DFX_multisample\r\n\r\nstatic void _glewInfo_GL_3DFX_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_3DFX_multisample\", GLEW_3DFX_multisample, glewIsSupported(\"GL_3DFX_multisample\"), glewGetExtension(\"GL_3DFX_multisample\"));\r\n}\r\n\r\n#endif /* GL_3DFX_multisample */\r\n\r\n#ifdef GL_3DFX_tbuffer\r\n\r\nstatic void _glewInfo_GL_3DFX_tbuffer (void)\r\n{\r\n  glewPrintExt(\"GL_3DFX_tbuffer\", GLEW_3DFX_tbuffer, glewIsSupported(\"GL_3DFX_tbuffer\"), glewGetExtension(\"GL_3DFX_tbuffer\"));\r\n\r\n  glewInfoFunc(\"glTbufferMask3DFX\", glTbufferMask3DFX == NULL);\r\n}\r\n\r\n#endif /* GL_3DFX_tbuffer */\r\n\r\n#ifdef GL_3DFX_texture_compression_FXT1\r\n\r\nstatic void _glewInfo_GL_3DFX_texture_compression_FXT1 (void)\r\n{\r\n  glewPrintExt(\"GL_3DFX_texture_compression_FXT1\", GLEW_3DFX_texture_compression_FXT1, glewIsSupported(\"GL_3DFX_texture_compression_FXT1\"), glewGetExtension(\"GL_3DFX_texture_compression_FXT1\"));\r\n}\r\n\r\n#endif /* GL_3DFX_texture_compression_FXT1 */\r\n\r\n#ifdef GL_AMD_blend_minmax_factor\r\n\r\nstatic void _glewInfo_GL_AMD_blend_minmax_factor (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_blend_minmax_factor\", GLEW_AMD_blend_minmax_factor, glewIsSupported(\"GL_AMD_blend_minmax_factor\"), glewGetExtension(\"GL_AMD_blend_minmax_factor\"));\r\n}\r\n\r\n#endif /* GL_AMD_blend_minmax_factor */\r\n\r\n#ifdef GL_AMD_compressed_3DC_texture\r\n\r\nstatic void _glewInfo_GL_AMD_compressed_3DC_texture (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_compressed_3DC_texture\", GLEW_AMD_compressed_3DC_texture, glewIsSupported(\"GL_AMD_compressed_3DC_texture\"), glewGetExtension(\"GL_AMD_compressed_3DC_texture\"));\r\n}\r\n\r\n#endif /* GL_AMD_compressed_3DC_texture */\r\n\r\n#ifdef GL_AMD_compressed_ATC_texture\r\n\r\nstatic void _glewInfo_GL_AMD_compressed_ATC_texture (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_compressed_ATC_texture\", GLEW_AMD_compressed_ATC_texture, glewIsSupported(\"GL_AMD_compressed_ATC_texture\"), glewGetExtension(\"GL_AMD_compressed_ATC_texture\"));\r\n}\r\n\r\n#endif /* GL_AMD_compressed_ATC_texture */\r\n\r\n#ifdef GL_AMD_conservative_depth\r\n\r\nstatic void _glewInfo_GL_AMD_conservative_depth (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_conservative_depth\", GLEW_AMD_conservative_depth, glewIsSupported(\"GL_AMD_conservative_depth\"), glewGetExtension(\"GL_AMD_conservative_depth\"));\r\n}\r\n\r\n#endif /* GL_AMD_conservative_depth */\r\n\r\n#ifdef GL_AMD_debug_output\r\n\r\nstatic void _glewInfo_GL_AMD_debug_output (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_debug_output\", GLEW_AMD_debug_output, glewIsSupported(\"GL_AMD_debug_output\"), glewGetExtension(\"GL_AMD_debug_output\"));\r\n\r\n  glewInfoFunc(\"glDebugMessageCallbackAMD\", glDebugMessageCallbackAMD == NULL);\r\n  glewInfoFunc(\"glDebugMessageEnableAMD\", glDebugMessageEnableAMD == NULL);\r\n  glewInfoFunc(\"glDebugMessageInsertAMD\", glDebugMessageInsertAMD == NULL);\r\n  glewInfoFunc(\"glGetDebugMessageLogAMD\", glGetDebugMessageLogAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_debug_output */\r\n\r\n#ifdef GL_AMD_depth_clamp_separate\r\n\r\nstatic void _glewInfo_GL_AMD_depth_clamp_separate (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_depth_clamp_separate\", GLEW_AMD_depth_clamp_separate, glewIsSupported(\"GL_AMD_depth_clamp_separate\"), glewGetExtension(\"GL_AMD_depth_clamp_separate\"));\r\n}\r\n\r\n#endif /* GL_AMD_depth_clamp_separate */\r\n\r\n#ifdef GL_AMD_draw_buffers_blend\r\n\r\nstatic void _glewInfo_GL_AMD_draw_buffers_blend (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_draw_buffers_blend\", GLEW_AMD_draw_buffers_blend, glewIsSupported(\"GL_AMD_draw_buffers_blend\"), glewGetExtension(\"GL_AMD_draw_buffers_blend\"));\r\n\r\n  glewInfoFunc(\"glBlendEquationIndexedAMD\", glBlendEquationIndexedAMD == NULL);\r\n  glewInfoFunc(\"glBlendEquationSeparateIndexedAMD\", glBlendEquationSeparateIndexedAMD == NULL);\r\n  glewInfoFunc(\"glBlendFuncIndexedAMD\", glBlendFuncIndexedAMD == NULL);\r\n  glewInfoFunc(\"glBlendFuncSeparateIndexedAMD\", glBlendFuncSeparateIndexedAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_draw_buffers_blend */\r\n\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n\r\nstatic void _glewInfo_GL_AMD_framebuffer_sample_positions (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_framebuffer_sample_positions\", GLEW_AMD_framebuffer_sample_positions, glewIsSupported(\"GL_AMD_framebuffer_sample_positions\"), glewGetExtension(\"GL_AMD_framebuffer_sample_positions\"));\r\n\r\n  glewInfoFunc(\"glFramebufferSamplePositionsfvAMD\", glFramebufferSamplePositionsfvAMD == NULL);\r\n  glewInfoFunc(\"glGetFramebufferParameterfvAMD\", glGetFramebufferParameterfvAMD == NULL);\r\n  glewInfoFunc(\"glGetNamedFramebufferParameterfvAMD\", glGetNamedFramebufferParameterfvAMD == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferSamplePositionsfvAMD\", glNamedFramebufferSamplePositionsfvAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_framebuffer_sample_positions */\r\n\r\n#ifdef GL_AMD_gcn_shader\r\n\r\nstatic void _glewInfo_GL_AMD_gcn_shader (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_gcn_shader\", GLEW_AMD_gcn_shader, glewIsSupported(\"GL_AMD_gcn_shader\"), glewGetExtension(\"GL_AMD_gcn_shader\"));\r\n}\r\n\r\n#endif /* GL_AMD_gcn_shader */\r\n\r\n#ifdef GL_AMD_gpu_shader_half_float\r\n\r\nstatic void _glewInfo_GL_AMD_gpu_shader_half_float (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_gpu_shader_half_float\", GLEW_AMD_gpu_shader_half_float, glewIsSupported(\"GL_AMD_gpu_shader_half_float\"), glewGetExtension(\"GL_AMD_gpu_shader_half_float\"));\r\n}\r\n\r\n#endif /* GL_AMD_gpu_shader_half_float */\r\n\r\n#ifdef GL_AMD_gpu_shader_int16\r\n\r\nstatic void _glewInfo_GL_AMD_gpu_shader_int16 (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_gpu_shader_int16\", GLEW_AMD_gpu_shader_int16, glewIsSupported(\"GL_AMD_gpu_shader_int16\"), glewGetExtension(\"GL_AMD_gpu_shader_int16\"));\r\n}\r\n\r\n#endif /* GL_AMD_gpu_shader_int16 */\r\n\r\n#ifdef GL_AMD_gpu_shader_int64\r\n\r\nstatic void _glewInfo_GL_AMD_gpu_shader_int64 (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_gpu_shader_int64\", GLEW_AMD_gpu_shader_int64, glewIsSupported(\"GL_AMD_gpu_shader_int64\"), glewGetExtension(\"GL_AMD_gpu_shader_int64\"));\r\n}\r\n\r\n#endif /* GL_AMD_gpu_shader_int64 */\r\n\r\n#ifdef GL_AMD_interleaved_elements\r\n\r\nstatic void _glewInfo_GL_AMD_interleaved_elements (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_interleaved_elements\", GLEW_AMD_interleaved_elements, glewIsSupported(\"GL_AMD_interleaved_elements\"), glewGetExtension(\"GL_AMD_interleaved_elements\"));\r\n\r\n  glewInfoFunc(\"glVertexAttribParameteriAMD\", glVertexAttribParameteriAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_interleaved_elements */\r\n\r\n#ifdef GL_AMD_multi_draw_indirect\r\n\r\nstatic void _glewInfo_GL_AMD_multi_draw_indirect (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_multi_draw_indirect\", GLEW_AMD_multi_draw_indirect, glewIsSupported(\"GL_AMD_multi_draw_indirect\"), glewGetExtension(\"GL_AMD_multi_draw_indirect\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectAMD\", glMultiDrawArraysIndirectAMD == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectAMD\", glMultiDrawElementsIndirectAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_multi_draw_indirect */\r\n\r\n#ifdef GL_AMD_name_gen_delete\r\n\r\nstatic void _glewInfo_GL_AMD_name_gen_delete (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_name_gen_delete\", GLEW_AMD_name_gen_delete, glewIsSupported(\"GL_AMD_name_gen_delete\"), glewGetExtension(\"GL_AMD_name_gen_delete\"));\r\n\r\n  glewInfoFunc(\"glDeleteNamesAMD\", glDeleteNamesAMD == NULL);\r\n  glewInfoFunc(\"glGenNamesAMD\", glGenNamesAMD == NULL);\r\n  glewInfoFunc(\"glIsNameAMD\", glIsNameAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_name_gen_delete */\r\n\r\n#ifdef GL_AMD_occlusion_query_event\r\n\r\nstatic void _glewInfo_GL_AMD_occlusion_query_event (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_occlusion_query_event\", GLEW_AMD_occlusion_query_event, glewIsSupported(\"GL_AMD_occlusion_query_event\"), glewGetExtension(\"GL_AMD_occlusion_query_event\"));\r\n\r\n  glewInfoFunc(\"glQueryObjectParameteruiAMD\", glQueryObjectParameteruiAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_occlusion_query_event */\r\n\r\n#ifdef GL_AMD_performance_monitor\r\n\r\nstatic void _glewInfo_GL_AMD_performance_monitor (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_performance_monitor\", GLEW_AMD_performance_monitor, glewIsSupported(\"GL_AMD_performance_monitor\"), glewGetExtension(\"GL_AMD_performance_monitor\"));\r\n\r\n  glewInfoFunc(\"glBeginPerfMonitorAMD\", glBeginPerfMonitorAMD == NULL);\r\n  glewInfoFunc(\"glDeletePerfMonitorsAMD\", glDeletePerfMonitorsAMD == NULL);\r\n  glewInfoFunc(\"glEndPerfMonitorAMD\", glEndPerfMonitorAMD == NULL);\r\n  glewInfoFunc(\"glGenPerfMonitorsAMD\", glGenPerfMonitorsAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorCounterDataAMD\", glGetPerfMonitorCounterDataAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorCounterInfoAMD\", glGetPerfMonitorCounterInfoAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorCounterStringAMD\", glGetPerfMonitorCounterStringAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorCountersAMD\", glGetPerfMonitorCountersAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorGroupStringAMD\", glGetPerfMonitorGroupStringAMD == NULL);\r\n  glewInfoFunc(\"glGetPerfMonitorGroupsAMD\", glGetPerfMonitorGroupsAMD == NULL);\r\n  glewInfoFunc(\"glSelectPerfMonitorCountersAMD\", glSelectPerfMonitorCountersAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_performance_monitor */\r\n\r\n#ifdef GL_AMD_pinned_memory\r\n\r\nstatic void _glewInfo_GL_AMD_pinned_memory (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_pinned_memory\", GLEW_AMD_pinned_memory, glewIsSupported(\"GL_AMD_pinned_memory\"), glewGetExtension(\"GL_AMD_pinned_memory\"));\r\n}\r\n\r\n#endif /* GL_AMD_pinned_memory */\r\n\r\n#ifdef GL_AMD_program_binary_Z400\r\n\r\nstatic void _glewInfo_GL_AMD_program_binary_Z400 (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_program_binary_Z400\", GLEW_AMD_program_binary_Z400, glewIsSupported(\"GL_AMD_program_binary_Z400\"), glewGetExtension(\"GL_AMD_program_binary_Z400\"));\r\n}\r\n\r\n#endif /* GL_AMD_program_binary_Z400 */\r\n\r\n#ifdef GL_AMD_query_buffer_object\r\n\r\nstatic void _glewInfo_GL_AMD_query_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_query_buffer_object\", GLEW_AMD_query_buffer_object, glewIsSupported(\"GL_AMD_query_buffer_object\"), glewGetExtension(\"GL_AMD_query_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_AMD_query_buffer_object */\r\n\r\n#ifdef GL_AMD_sample_positions\r\n\r\nstatic void _glewInfo_GL_AMD_sample_positions (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_sample_positions\", GLEW_AMD_sample_positions, glewIsSupported(\"GL_AMD_sample_positions\"), glewGetExtension(\"GL_AMD_sample_positions\"));\r\n\r\n  glewInfoFunc(\"glSetMultisamplefvAMD\", glSetMultisamplefvAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_sample_positions */\r\n\r\n#ifdef GL_AMD_seamless_cubemap_per_texture\r\n\r\nstatic void _glewInfo_GL_AMD_seamless_cubemap_per_texture (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_seamless_cubemap_per_texture\", GLEW_AMD_seamless_cubemap_per_texture, glewIsSupported(\"GL_AMD_seamless_cubemap_per_texture\"), glewGetExtension(\"GL_AMD_seamless_cubemap_per_texture\"));\r\n}\r\n\r\n#endif /* GL_AMD_seamless_cubemap_per_texture */\r\n\r\n#ifdef GL_AMD_shader_atomic_counter_ops\r\n\r\nstatic void _glewInfo_GL_AMD_shader_atomic_counter_ops (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_atomic_counter_ops\", GLEW_AMD_shader_atomic_counter_ops, glewIsSupported(\"GL_AMD_shader_atomic_counter_ops\"), glewGetExtension(\"GL_AMD_shader_atomic_counter_ops\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_atomic_counter_ops */\r\n\r\n#ifdef GL_AMD_shader_ballot\r\n\r\nstatic void _glewInfo_GL_AMD_shader_ballot (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_ballot\", GLEW_AMD_shader_ballot, glewIsSupported(\"GL_AMD_shader_ballot\"), glewGetExtension(\"GL_AMD_shader_ballot\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_ballot */\r\n\r\n#ifdef GL_AMD_shader_explicit_vertex_parameter\r\n\r\nstatic void _glewInfo_GL_AMD_shader_explicit_vertex_parameter (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_explicit_vertex_parameter\", GLEW_AMD_shader_explicit_vertex_parameter, glewIsSupported(\"GL_AMD_shader_explicit_vertex_parameter\"), glewGetExtension(\"GL_AMD_shader_explicit_vertex_parameter\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_explicit_vertex_parameter */\r\n\r\n#ifdef GL_AMD_shader_stencil_export\r\n\r\nstatic void _glewInfo_GL_AMD_shader_stencil_export (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_stencil_export\", GLEW_AMD_shader_stencil_export, glewIsSupported(\"GL_AMD_shader_stencil_export\"), glewGetExtension(\"GL_AMD_shader_stencil_export\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_stencil_export */\r\n\r\n#ifdef GL_AMD_shader_stencil_value_export\r\n\r\nstatic void _glewInfo_GL_AMD_shader_stencil_value_export (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_stencil_value_export\", GLEW_AMD_shader_stencil_value_export, glewIsSupported(\"GL_AMD_shader_stencil_value_export\"), glewGetExtension(\"GL_AMD_shader_stencil_value_export\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_stencil_value_export */\r\n\r\n#ifdef GL_AMD_shader_trinary_minmax\r\n\r\nstatic void _glewInfo_GL_AMD_shader_trinary_minmax (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_shader_trinary_minmax\", GLEW_AMD_shader_trinary_minmax, glewIsSupported(\"GL_AMD_shader_trinary_minmax\"), glewGetExtension(\"GL_AMD_shader_trinary_minmax\"));\r\n}\r\n\r\n#endif /* GL_AMD_shader_trinary_minmax */\r\n\r\n#ifdef GL_AMD_sparse_texture\r\n\r\nstatic void _glewInfo_GL_AMD_sparse_texture (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_sparse_texture\", GLEW_AMD_sparse_texture, glewIsSupported(\"GL_AMD_sparse_texture\"), glewGetExtension(\"GL_AMD_sparse_texture\"));\r\n\r\n  glewInfoFunc(\"glTexStorageSparseAMD\", glTexStorageSparseAMD == NULL);\r\n  glewInfoFunc(\"glTextureStorageSparseAMD\", glTextureStorageSparseAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_sparse_texture */\r\n\r\n#ifdef GL_AMD_stencil_operation_extended\r\n\r\nstatic void _glewInfo_GL_AMD_stencil_operation_extended (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_stencil_operation_extended\", GLEW_AMD_stencil_operation_extended, glewIsSupported(\"GL_AMD_stencil_operation_extended\"), glewGetExtension(\"GL_AMD_stencil_operation_extended\"));\r\n\r\n  glewInfoFunc(\"glStencilOpValueAMD\", glStencilOpValueAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_stencil_operation_extended */\r\n\r\n#ifdef GL_AMD_texture_gather_bias_lod\r\n\r\nstatic void _glewInfo_GL_AMD_texture_gather_bias_lod (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_texture_gather_bias_lod\", GLEW_AMD_texture_gather_bias_lod, glewIsSupported(\"GL_AMD_texture_gather_bias_lod\"), glewGetExtension(\"GL_AMD_texture_gather_bias_lod\"));\r\n}\r\n\r\n#endif /* GL_AMD_texture_gather_bias_lod */\r\n\r\n#ifdef GL_AMD_texture_texture4\r\n\r\nstatic void _glewInfo_GL_AMD_texture_texture4 (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_texture_texture4\", GLEW_AMD_texture_texture4, glewIsSupported(\"GL_AMD_texture_texture4\"), glewGetExtension(\"GL_AMD_texture_texture4\"));\r\n}\r\n\r\n#endif /* GL_AMD_texture_texture4 */\r\n\r\n#ifdef GL_AMD_transform_feedback3_lines_triangles\r\n\r\nstatic void _glewInfo_GL_AMD_transform_feedback3_lines_triangles (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_transform_feedback3_lines_triangles\", GLEW_AMD_transform_feedback3_lines_triangles, glewIsSupported(\"GL_AMD_transform_feedback3_lines_triangles\"), glewGetExtension(\"GL_AMD_transform_feedback3_lines_triangles\"));\r\n}\r\n\r\n#endif /* GL_AMD_transform_feedback3_lines_triangles */\r\n\r\n#ifdef GL_AMD_transform_feedback4\r\n\r\nstatic void _glewInfo_GL_AMD_transform_feedback4 (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_transform_feedback4\", GLEW_AMD_transform_feedback4, glewIsSupported(\"GL_AMD_transform_feedback4\"), glewGetExtension(\"GL_AMD_transform_feedback4\"));\r\n}\r\n\r\n#endif /* GL_AMD_transform_feedback4 */\r\n\r\n#ifdef GL_AMD_vertex_shader_layer\r\n\r\nstatic void _glewInfo_GL_AMD_vertex_shader_layer (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_vertex_shader_layer\", GLEW_AMD_vertex_shader_layer, glewIsSupported(\"GL_AMD_vertex_shader_layer\"), glewGetExtension(\"GL_AMD_vertex_shader_layer\"));\r\n}\r\n\r\n#endif /* GL_AMD_vertex_shader_layer */\r\n\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n\r\nstatic void _glewInfo_GL_AMD_vertex_shader_tessellator (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_vertex_shader_tessellator\", GLEW_AMD_vertex_shader_tessellator, glewIsSupported(\"GL_AMD_vertex_shader_tessellator\"), glewGetExtension(\"GL_AMD_vertex_shader_tessellator\"));\r\n\r\n  glewInfoFunc(\"glTessellationFactorAMD\", glTessellationFactorAMD == NULL);\r\n  glewInfoFunc(\"glTessellationModeAMD\", glTessellationModeAMD == NULL);\r\n}\r\n\r\n#endif /* GL_AMD_vertex_shader_tessellator */\r\n\r\n#ifdef GL_AMD_vertex_shader_viewport_index\r\n\r\nstatic void _glewInfo_GL_AMD_vertex_shader_viewport_index (void)\r\n{\r\n  glewPrintExt(\"GL_AMD_vertex_shader_viewport_index\", GLEW_AMD_vertex_shader_viewport_index, glewIsSupported(\"GL_AMD_vertex_shader_viewport_index\"), glewGetExtension(\"GL_AMD_vertex_shader_viewport_index\"));\r\n}\r\n\r\n#endif /* GL_AMD_vertex_shader_viewport_index */\r\n\r\n#ifdef GL_ANDROID_extension_pack_es31a\r\n\r\nstatic void _glewInfo_GL_ANDROID_extension_pack_es31a (void)\r\n{\r\n  glewPrintExt(\"GL_ANDROID_extension_pack_es31a\", GLEW_ANDROID_extension_pack_es31a, glewIsSupported(\"GL_ANDROID_extension_pack_es31a\"), glewGetExtension(\"GL_ANDROID_extension_pack_es31a\"));\r\n}\r\n\r\n#endif /* GL_ANDROID_extension_pack_es31a */\r\n\r\n#ifdef GL_ANGLE_depth_texture\r\n\r\nstatic void _glewInfo_GL_ANGLE_depth_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_depth_texture\", GLEW_ANGLE_depth_texture, glewIsSupported(\"GL_ANGLE_depth_texture\"), glewGetExtension(\"GL_ANGLE_depth_texture\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_depth_texture */\r\n\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n\r\nstatic void _glewInfo_GL_ANGLE_framebuffer_blit (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_framebuffer_blit\", GLEW_ANGLE_framebuffer_blit, glewIsSupported(\"GL_ANGLE_framebuffer_blit\"), glewGetExtension(\"GL_ANGLE_framebuffer_blit\"));\r\n\r\n  glewInfoFunc(\"glBlitFramebufferANGLE\", glBlitFramebufferANGLE == NULL);\r\n}\r\n\r\n#endif /* GL_ANGLE_framebuffer_blit */\r\n\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n\r\nstatic void _glewInfo_GL_ANGLE_framebuffer_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_framebuffer_multisample\", GLEW_ANGLE_framebuffer_multisample, glewIsSupported(\"GL_ANGLE_framebuffer_multisample\"), glewGetExtension(\"GL_ANGLE_framebuffer_multisample\"));\r\n\r\n  glewInfoFunc(\"glRenderbufferStorageMultisampleANGLE\", glRenderbufferStorageMultisampleANGLE == NULL);\r\n}\r\n\r\n#endif /* GL_ANGLE_framebuffer_multisample */\r\n\r\n#ifdef GL_ANGLE_instanced_arrays\r\n\r\nstatic void _glewInfo_GL_ANGLE_instanced_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_instanced_arrays\", GLEW_ANGLE_instanced_arrays, glewIsSupported(\"GL_ANGLE_instanced_arrays\"), glewGetExtension(\"GL_ANGLE_instanced_arrays\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedANGLE\", glDrawArraysInstancedANGLE == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedANGLE\", glDrawElementsInstancedANGLE == NULL);\r\n  glewInfoFunc(\"glVertexAttribDivisorANGLE\", glVertexAttribDivisorANGLE == NULL);\r\n}\r\n\r\n#endif /* GL_ANGLE_instanced_arrays */\r\n\r\n#ifdef GL_ANGLE_pack_reverse_row_order\r\n\r\nstatic void _glewInfo_GL_ANGLE_pack_reverse_row_order (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_pack_reverse_row_order\", GLEW_ANGLE_pack_reverse_row_order, glewIsSupported(\"GL_ANGLE_pack_reverse_row_order\"), glewGetExtension(\"GL_ANGLE_pack_reverse_row_order\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_pack_reverse_row_order */\r\n\r\n#ifdef GL_ANGLE_program_binary\r\n\r\nstatic void _glewInfo_GL_ANGLE_program_binary (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_program_binary\", GLEW_ANGLE_program_binary, glewIsSupported(\"GL_ANGLE_program_binary\"), glewGetExtension(\"GL_ANGLE_program_binary\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_program_binary */\r\n\r\n#ifdef GL_ANGLE_texture_compression_dxt1\r\n\r\nstatic void _glewInfo_GL_ANGLE_texture_compression_dxt1 (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_texture_compression_dxt1\", GLEW_ANGLE_texture_compression_dxt1, glewIsSupported(\"GL_ANGLE_texture_compression_dxt1\"), glewGetExtension(\"GL_ANGLE_texture_compression_dxt1\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_texture_compression_dxt1 */\r\n\r\n#ifdef GL_ANGLE_texture_compression_dxt3\r\n\r\nstatic void _glewInfo_GL_ANGLE_texture_compression_dxt3 (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_texture_compression_dxt3\", GLEW_ANGLE_texture_compression_dxt3, glewIsSupported(\"GL_ANGLE_texture_compression_dxt3\"), glewGetExtension(\"GL_ANGLE_texture_compression_dxt3\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_texture_compression_dxt3 */\r\n\r\n#ifdef GL_ANGLE_texture_compression_dxt5\r\n\r\nstatic void _glewInfo_GL_ANGLE_texture_compression_dxt5 (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_texture_compression_dxt5\", GLEW_ANGLE_texture_compression_dxt5, glewIsSupported(\"GL_ANGLE_texture_compression_dxt5\"), glewGetExtension(\"GL_ANGLE_texture_compression_dxt5\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_texture_compression_dxt5 */\r\n\r\n#ifdef GL_ANGLE_texture_usage\r\n\r\nstatic void _glewInfo_GL_ANGLE_texture_usage (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_texture_usage\", GLEW_ANGLE_texture_usage, glewIsSupported(\"GL_ANGLE_texture_usage\"), glewGetExtension(\"GL_ANGLE_texture_usage\"));\r\n}\r\n\r\n#endif /* GL_ANGLE_texture_usage */\r\n\r\n#ifdef GL_ANGLE_timer_query\r\n\r\nstatic void _glewInfo_GL_ANGLE_timer_query (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_timer_query\", GLEW_ANGLE_timer_query, glewIsSupported(\"GL_ANGLE_timer_query\"), glewGetExtension(\"GL_ANGLE_timer_query\"));\r\n\r\n  glewInfoFunc(\"glBeginQueryANGLE\", glBeginQueryANGLE == NULL);\r\n  glewInfoFunc(\"glDeleteQueriesANGLE\", glDeleteQueriesANGLE == NULL);\r\n  glewInfoFunc(\"glEndQueryANGLE\", glEndQueryANGLE == NULL);\r\n  glewInfoFunc(\"glGenQueriesANGLE\", glGenQueriesANGLE == NULL);\r\n  glewInfoFunc(\"glGetQueryObjecti64vANGLE\", glGetQueryObjecti64vANGLE == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectivANGLE\", glGetQueryObjectivANGLE == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectui64vANGLE\", glGetQueryObjectui64vANGLE == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectuivANGLE\", glGetQueryObjectuivANGLE == NULL);\r\n  glewInfoFunc(\"glGetQueryivANGLE\", glGetQueryivANGLE == NULL);\r\n  glewInfoFunc(\"glIsQueryANGLE\", glIsQueryANGLE == NULL);\r\n  glewInfoFunc(\"glQueryCounterANGLE\", glQueryCounterANGLE == NULL);\r\n}\r\n\r\n#endif /* GL_ANGLE_timer_query */\r\n\r\n#ifdef GL_ANGLE_translated_shader_source\r\n\r\nstatic void _glewInfo_GL_ANGLE_translated_shader_source (void)\r\n{\r\n  glewPrintExt(\"GL_ANGLE_translated_shader_source\", GLEW_ANGLE_translated_shader_source, glewIsSupported(\"GL_ANGLE_translated_shader_source\"), glewGetExtension(\"GL_ANGLE_translated_shader_source\"));\r\n\r\n  glewInfoFunc(\"glGetTranslatedShaderSourceANGLE\", glGetTranslatedShaderSourceANGLE == NULL);\r\n}\r\n\r\n#endif /* GL_ANGLE_translated_shader_source */\r\n\r\n#ifdef GL_APPLE_aux_depth_stencil\r\n\r\nstatic void _glewInfo_GL_APPLE_aux_depth_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_aux_depth_stencil\", GLEW_APPLE_aux_depth_stencil, glewIsSupported(\"GL_APPLE_aux_depth_stencil\"), glewGetExtension(\"GL_APPLE_aux_depth_stencil\"));\r\n}\r\n\r\n#endif /* GL_APPLE_aux_depth_stencil */\r\n\r\n#ifdef GL_APPLE_client_storage\r\n\r\nstatic void _glewInfo_GL_APPLE_client_storage (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_client_storage\", GLEW_APPLE_client_storage, glewIsSupported(\"GL_APPLE_client_storage\"), glewGetExtension(\"GL_APPLE_client_storage\"));\r\n}\r\n\r\n#endif /* GL_APPLE_client_storage */\r\n\r\n#ifdef GL_APPLE_clip_distance\r\n\r\nstatic void _glewInfo_GL_APPLE_clip_distance (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_clip_distance\", GLEW_APPLE_clip_distance, glewIsSupported(\"GL_APPLE_clip_distance\"), glewGetExtension(\"GL_APPLE_clip_distance\"));\r\n}\r\n\r\n#endif /* GL_APPLE_clip_distance */\r\n\r\n#ifdef GL_APPLE_color_buffer_packed_float\r\n\r\nstatic void _glewInfo_GL_APPLE_color_buffer_packed_float (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_color_buffer_packed_float\", GLEW_APPLE_color_buffer_packed_float, glewIsSupported(\"GL_APPLE_color_buffer_packed_float\"), glewGetExtension(\"GL_APPLE_color_buffer_packed_float\"));\r\n}\r\n\r\n#endif /* GL_APPLE_color_buffer_packed_float */\r\n\r\n#ifdef GL_APPLE_copy_texture_levels\r\n\r\nstatic void _glewInfo_GL_APPLE_copy_texture_levels (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_copy_texture_levels\", GLEW_APPLE_copy_texture_levels, glewIsSupported(\"GL_APPLE_copy_texture_levels\"), glewGetExtension(\"GL_APPLE_copy_texture_levels\"));\r\n\r\n  glewInfoFunc(\"glCopyTextureLevelsAPPLE\", glCopyTextureLevelsAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_copy_texture_levels */\r\n\r\n#ifdef GL_APPLE_element_array\r\n\r\nstatic void _glewInfo_GL_APPLE_element_array (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_element_array\", GLEW_APPLE_element_array, glewIsSupported(\"GL_APPLE_element_array\"), glewGetExtension(\"GL_APPLE_element_array\"));\r\n\r\n  glewInfoFunc(\"glDrawElementArrayAPPLE\", glDrawElementArrayAPPLE == NULL);\r\n  glewInfoFunc(\"glDrawRangeElementArrayAPPLE\", glDrawRangeElementArrayAPPLE == NULL);\r\n  glewInfoFunc(\"glElementPointerAPPLE\", glElementPointerAPPLE == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementArrayAPPLE\", glMultiDrawElementArrayAPPLE == NULL);\r\n  glewInfoFunc(\"glMultiDrawRangeElementArrayAPPLE\", glMultiDrawRangeElementArrayAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_element_array */\r\n\r\n#ifdef GL_APPLE_fence\r\n\r\nstatic void _glewInfo_GL_APPLE_fence (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_fence\", GLEW_APPLE_fence, glewIsSupported(\"GL_APPLE_fence\"), glewGetExtension(\"GL_APPLE_fence\"));\r\n\r\n  glewInfoFunc(\"glDeleteFencesAPPLE\", glDeleteFencesAPPLE == NULL);\r\n  glewInfoFunc(\"glFinishFenceAPPLE\", glFinishFenceAPPLE == NULL);\r\n  glewInfoFunc(\"glFinishObjectAPPLE\", glFinishObjectAPPLE == NULL);\r\n  glewInfoFunc(\"glGenFencesAPPLE\", glGenFencesAPPLE == NULL);\r\n  glewInfoFunc(\"glIsFenceAPPLE\", glIsFenceAPPLE == NULL);\r\n  glewInfoFunc(\"glSetFenceAPPLE\", glSetFenceAPPLE == NULL);\r\n  glewInfoFunc(\"glTestFenceAPPLE\", glTestFenceAPPLE == NULL);\r\n  glewInfoFunc(\"glTestObjectAPPLE\", glTestObjectAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_fence */\r\n\r\n#ifdef GL_APPLE_float_pixels\r\n\r\nstatic void _glewInfo_GL_APPLE_float_pixels (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_float_pixels\", GLEW_APPLE_float_pixels, glewIsSupported(\"GL_APPLE_float_pixels\"), glewGetExtension(\"GL_APPLE_float_pixels\"));\r\n}\r\n\r\n#endif /* GL_APPLE_float_pixels */\r\n\r\n#ifdef GL_APPLE_flush_buffer_range\r\n\r\nstatic void _glewInfo_GL_APPLE_flush_buffer_range (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_flush_buffer_range\", GLEW_APPLE_flush_buffer_range, glewIsSupported(\"GL_APPLE_flush_buffer_range\"), glewGetExtension(\"GL_APPLE_flush_buffer_range\"));\r\n\r\n  glewInfoFunc(\"glBufferParameteriAPPLE\", glBufferParameteriAPPLE == NULL);\r\n  glewInfoFunc(\"glFlushMappedBufferRangeAPPLE\", glFlushMappedBufferRangeAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_flush_buffer_range */\r\n\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n\r\nstatic void _glewInfo_GL_APPLE_framebuffer_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_framebuffer_multisample\", GLEW_APPLE_framebuffer_multisample, glewIsSupported(\"GL_APPLE_framebuffer_multisample\"), glewGetExtension(\"GL_APPLE_framebuffer_multisample\"));\r\n\r\n  glewInfoFunc(\"glRenderbufferStorageMultisampleAPPLE\", glRenderbufferStorageMultisampleAPPLE == NULL);\r\n  glewInfoFunc(\"glResolveMultisampleFramebufferAPPLE\", glResolveMultisampleFramebufferAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_framebuffer_multisample */\r\n\r\n#ifdef GL_APPLE_object_purgeable\r\n\r\nstatic void _glewInfo_GL_APPLE_object_purgeable (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_object_purgeable\", GLEW_APPLE_object_purgeable, glewIsSupported(\"GL_APPLE_object_purgeable\"), glewGetExtension(\"GL_APPLE_object_purgeable\"));\r\n\r\n  glewInfoFunc(\"glGetObjectParameterivAPPLE\", glGetObjectParameterivAPPLE == NULL);\r\n  glewInfoFunc(\"glObjectPurgeableAPPLE\", glObjectPurgeableAPPLE == NULL);\r\n  glewInfoFunc(\"glObjectUnpurgeableAPPLE\", glObjectUnpurgeableAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_object_purgeable */\r\n\r\n#ifdef GL_APPLE_pixel_buffer\r\n\r\nstatic void _glewInfo_GL_APPLE_pixel_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_pixel_buffer\", GLEW_APPLE_pixel_buffer, glewIsSupported(\"GL_APPLE_pixel_buffer\"), glewGetExtension(\"GL_APPLE_pixel_buffer\"));\r\n}\r\n\r\n#endif /* GL_APPLE_pixel_buffer */\r\n\r\n#ifdef GL_APPLE_rgb_422\r\n\r\nstatic void _glewInfo_GL_APPLE_rgb_422 (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_rgb_422\", GLEW_APPLE_rgb_422, glewIsSupported(\"GL_APPLE_rgb_422\"), glewGetExtension(\"GL_APPLE_rgb_422\"));\r\n}\r\n\r\n#endif /* GL_APPLE_rgb_422 */\r\n\r\n#ifdef GL_APPLE_row_bytes\r\n\r\nstatic void _glewInfo_GL_APPLE_row_bytes (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_row_bytes\", GLEW_APPLE_row_bytes, glewIsSupported(\"GL_APPLE_row_bytes\"), glewGetExtension(\"GL_APPLE_row_bytes\"));\r\n}\r\n\r\n#endif /* GL_APPLE_row_bytes */\r\n\r\n#ifdef GL_APPLE_specular_vector\r\n\r\nstatic void _glewInfo_GL_APPLE_specular_vector (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_specular_vector\", GLEW_APPLE_specular_vector, glewIsSupported(\"GL_APPLE_specular_vector\"), glewGetExtension(\"GL_APPLE_specular_vector\"));\r\n}\r\n\r\n#endif /* GL_APPLE_specular_vector */\r\n\r\n#ifdef GL_APPLE_sync\r\n\r\nstatic void _glewInfo_GL_APPLE_sync (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_sync\", GLEW_APPLE_sync, glewIsSupported(\"GL_APPLE_sync\"), glewGetExtension(\"GL_APPLE_sync\"));\r\n\r\n  glewInfoFunc(\"glClientWaitSyncAPPLE\", glClientWaitSyncAPPLE == NULL);\r\n  glewInfoFunc(\"glDeleteSyncAPPLE\", glDeleteSyncAPPLE == NULL);\r\n  glewInfoFunc(\"glFenceSyncAPPLE\", glFenceSyncAPPLE == NULL);\r\n  glewInfoFunc(\"glGetInteger64vAPPLE\", glGetInteger64vAPPLE == NULL);\r\n  glewInfoFunc(\"glGetSyncivAPPLE\", glGetSyncivAPPLE == NULL);\r\n  glewInfoFunc(\"glIsSyncAPPLE\", glIsSyncAPPLE == NULL);\r\n  glewInfoFunc(\"glWaitSyncAPPLE\", glWaitSyncAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_sync */\r\n\r\n#ifdef GL_APPLE_texture_2D_limited_npot\r\n\r\nstatic void _glewInfo_GL_APPLE_texture_2D_limited_npot (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_texture_2D_limited_npot\", GLEW_APPLE_texture_2D_limited_npot, glewIsSupported(\"GL_APPLE_texture_2D_limited_npot\"), glewGetExtension(\"GL_APPLE_texture_2D_limited_npot\"));\r\n}\r\n\r\n#endif /* GL_APPLE_texture_2D_limited_npot */\r\n\r\n#ifdef GL_APPLE_texture_format_BGRA8888\r\n\r\nstatic void _glewInfo_GL_APPLE_texture_format_BGRA8888 (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_texture_format_BGRA8888\", GLEW_APPLE_texture_format_BGRA8888, glewIsSupported(\"GL_APPLE_texture_format_BGRA8888\"), glewGetExtension(\"GL_APPLE_texture_format_BGRA8888\"));\r\n}\r\n\r\n#endif /* GL_APPLE_texture_format_BGRA8888 */\r\n\r\n#ifdef GL_APPLE_texture_max_level\r\n\r\nstatic void _glewInfo_GL_APPLE_texture_max_level (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_texture_max_level\", GLEW_APPLE_texture_max_level, glewIsSupported(\"GL_APPLE_texture_max_level\"), glewGetExtension(\"GL_APPLE_texture_max_level\"));\r\n}\r\n\r\n#endif /* GL_APPLE_texture_max_level */\r\n\r\n#ifdef GL_APPLE_texture_packed_float\r\n\r\nstatic void _glewInfo_GL_APPLE_texture_packed_float (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_texture_packed_float\", GLEW_APPLE_texture_packed_float, glewIsSupported(\"GL_APPLE_texture_packed_float\"), glewGetExtension(\"GL_APPLE_texture_packed_float\"));\r\n}\r\n\r\n#endif /* GL_APPLE_texture_packed_float */\r\n\r\n#ifdef GL_APPLE_texture_range\r\n\r\nstatic void _glewInfo_GL_APPLE_texture_range (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_texture_range\", GLEW_APPLE_texture_range, glewIsSupported(\"GL_APPLE_texture_range\"), glewGetExtension(\"GL_APPLE_texture_range\"));\r\n\r\n  glewInfoFunc(\"glGetTexParameterPointervAPPLE\", glGetTexParameterPointervAPPLE == NULL);\r\n  glewInfoFunc(\"glTextureRangeAPPLE\", glTextureRangeAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_texture_range */\r\n\r\n#ifdef GL_APPLE_transform_hint\r\n\r\nstatic void _glewInfo_GL_APPLE_transform_hint (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_transform_hint\", GLEW_APPLE_transform_hint, glewIsSupported(\"GL_APPLE_transform_hint\"), glewGetExtension(\"GL_APPLE_transform_hint\"));\r\n}\r\n\r\n#endif /* GL_APPLE_transform_hint */\r\n\r\n#ifdef GL_APPLE_vertex_array_object\r\n\r\nstatic void _glewInfo_GL_APPLE_vertex_array_object (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_vertex_array_object\", GLEW_APPLE_vertex_array_object, glewIsSupported(\"GL_APPLE_vertex_array_object\"), glewGetExtension(\"GL_APPLE_vertex_array_object\"));\r\n\r\n  glewInfoFunc(\"glBindVertexArrayAPPLE\", glBindVertexArrayAPPLE == NULL);\r\n  glewInfoFunc(\"glDeleteVertexArraysAPPLE\", glDeleteVertexArraysAPPLE == NULL);\r\n  glewInfoFunc(\"glGenVertexArraysAPPLE\", glGenVertexArraysAPPLE == NULL);\r\n  glewInfoFunc(\"glIsVertexArrayAPPLE\", glIsVertexArrayAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_array_object */\r\n\r\n#ifdef GL_APPLE_vertex_array_range\r\n\r\nstatic void _glewInfo_GL_APPLE_vertex_array_range (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_vertex_array_range\", GLEW_APPLE_vertex_array_range, glewIsSupported(\"GL_APPLE_vertex_array_range\"), glewGetExtension(\"GL_APPLE_vertex_array_range\"));\r\n\r\n  glewInfoFunc(\"glFlushVertexArrayRangeAPPLE\", glFlushVertexArrayRangeAPPLE == NULL);\r\n  glewInfoFunc(\"glVertexArrayParameteriAPPLE\", glVertexArrayParameteriAPPLE == NULL);\r\n  glewInfoFunc(\"glVertexArrayRangeAPPLE\", glVertexArrayRangeAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_array_range */\r\n\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n\r\nstatic void _glewInfo_GL_APPLE_vertex_program_evaluators (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_vertex_program_evaluators\", GLEW_APPLE_vertex_program_evaluators, glewIsSupported(\"GL_APPLE_vertex_program_evaluators\"), glewGetExtension(\"GL_APPLE_vertex_program_evaluators\"));\r\n\r\n  glewInfoFunc(\"glDisableVertexAttribAPPLE\", glDisableVertexAttribAPPLE == NULL);\r\n  glewInfoFunc(\"glEnableVertexAttribAPPLE\", glEnableVertexAttribAPPLE == NULL);\r\n  glewInfoFunc(\"glIsVertexAttribEnabledAPPLE\", glIsVertexAttribEnabledAPPLE == NULL);\r\n  glewInfoFunc(\"glMapVertexAttrib1dAPPLE\", glMapVertexAttrib1dAPPLE == NULL);\r\n  glewInfoFunc(\"glMapVertexAttrib1fAPPLE\", glMapVertexAttrib1fAPPLE == NULL);\r\n  glewInfoFunc(\"glMapVertexAttrib2dAPPLE\", glMapVertexAttrib2dAPPLE == NULL);\r\n  glewInfoFunc(\"glMapVertexAttrib2fAPPLE\", glMapVertexAttrib2fAPPLE == NULL);\r\n}\r\n\r\n#endif /* GL_APPLE_vertex_program_evaluators */\r\n\r\n#ifdef GL_APPLE_ycbcr_422\r\n\r\nstatic void _glewInfo_GL_APPLE_ycbcr_422 (void)\r\n{\r\n  glewPrintExt(\"GL_APPLE_ycbcr_422\", GLEW_APPLE_ycbcr_422, glewIsSupported(\"GL_APPLE_ycbcr_422\"), glewGetExtension(\"GL_APPLE_ycbcr_422\"));\r\n}\r\n\r\n#endif /* GL_APPLE_ycbcr_422 */\r\n\r\n#ifdef GL_ARB_ES2_compatibility\r\n\r\nstatic void _glewInfo_GL_ARB_ES2_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_ES2_compatibility\", GLEW_ARB_ES2_compatibility, glewIsSupported(\"GL_ARB_ES2_compatibility\"), glewGetExtension(\"GL_ARB_ES2_compatibility\"));\r\n\r\n  glewInfoFunc(\"glClearDepthf\", glClearDepthf == NULL);\r\n  glewInfoFunc(\"glDepthRangef\", glDepthRangef == NULL);\r\n  glewInfoFunc(\"glGetShaderPrecisionFormat\", glGetShaderPrecisionFormat == NULL);\r\n  glewInfoFunc(\"glReleaseShaderCompiler\", glReleaseShaderCompiler == NULL);\r\n  glewInfoFunc(\"glShaderBinary\", glShaderBinary == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_ES2_compatibility */\r\n\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n\r\nstatic void _glewInfo_GL_ARB_ES3_1_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_ES3_1_compatibility\", GLEW_ARB_ES3_1_compatibility, glewIsSupported(\"GL_ARB_ES3_1_compatibility\"), glewGetExtension(\"GL_ARB_ES3_1_compatibility\"));\r\n\r\n  glewInfoFunc(\"glMemoryBarrierByRegion\", glMemoryBarrierByRegion == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_ES3_1_compatibility */\r\n\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n\r\nstatic void _glewInfo_GL_ARB_ES3_2_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_ES3_2_compatibility\", GLEW_ARB_ES3_2_compatibility, glewIsSupported(\"GL_ARB_ES3_2_compatibility\"), glewGetExtension(\"GL_ARB_ES3_2_compatibility\"));\r\n\r\n  glewInfoFunc(\"glPrimitiveBoundingBoxARB\", glPrimitiveBoundingBoxARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_ES3_2_compatibility */\r\n\r\n#ifdef GL_ARB_ES3_compatibility\r\n\r\nstatic void _glewInfo_GL_ARB_ES3_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_ES3_compatibility\", GLEW_ARB_ES3_compatibility, glewIsSupported(\"GL_ARB_ES3_compatibility\"), glewGetExtension(\"GL_ARB_ES3_compatibility\"));\r\n}\r\n\r\n#endif /* GL_ARB_ES3_compatibility */\r\n\r\n#ifdef GL_ARB_arrays_of_arrays\r\n\r\nstatic void _glewInfo_GL_ARB_arrays_of_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_arrays_of_arrays\", GLEW_ARB_arrays_of_arrays, glewIsSupported(\"GL_ARB_arrays_of_arrays\"), glewGetExtension(\"GL_ARB_arrays_of_arrays\"));\r\n}\r\n\r\n#endif /* GL_ARB_arrays_of_arrays */\r\n\r\n#ifdef GL_ARB_base_instance\r\n\r\nstatic void _glewInfo_GL_ARB_base_instance (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_base_instance\", GLEW_ARB_base_instance, glewIsSupported(\"GL_ARB_base_instance\"), glewGetExtension(\"GL_ARB_base_instance\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedBaseInstance\", glDrawArraysInstancedBaseInstance == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseInstance\", glDrawElementsInstancedBaseInstance == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseVertexBaseInstance\", glDrawElementsInstancedBaseVertexBaseInstance == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_base_instance */\r\n\r\n#ifdef GL_ARB_bindless_texture\r\n\r\nstatic void _glewInfo_GL_ARB_bindless_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_bindless_texture\", GLEW_ARB_bindless_texture, glewIsSupported(\"GL_ARB_bindless_texture\"), glewGetExtension(\"GL_ARB_bindless_texture\"));\r\n\r\n  glewInfoFunc(\"glGetImageHandleARB\", glGetImageHandleARB == NULL);\r\n  glewInfoFunc(\"glGetTextureHandleARB\", glGetTextureHandleARB == NULL);\r\n  glewInfoFunc(\"glGetTextureSamplerHandleARB\", glGetTextureSamplerHandleARB == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribLui64vARB\", glGetVertexAttribLui64vARB == NULL);\r\n  glewInfoFunc(\"glIsImageHandleResidentARB\", glIsImageHandleResidentARB == NULL);\r\n  glewInfoFunc(\"glIsTextureHandleResidentARB\", glIsTextureHandleResidentARB == NULL);\r\n  glewInfoFunc(\"glMakeImageHandleNonResidentARB\", glMakeImageHandleNonResidentARB == NULL);\r\n  glewInfoFunc(\"glMakeImageHandleResidentARB\", glMakeImageHandleResidentARB == NULL);\r\n  glewInfoFunc(\"glMakeTextureHandleNonResidentARB\", glMakeTextureHandleNonResidentARB == NULL);\r\n  glewInfoFunc(\"glMakeTextureHandleResidentARB\", glMakeTextureHandleResidentARB == NULL);\r\n  glewInfoFunc(\"glProgramUniformHandleui64ARB\", glProgramUniformHandleui64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniformHandleui64vARB\", glProgramUniformHandleui64vARB == NULL);\r\n  glewInfoFunc(\"glUniformHandleui64ARB\", glUniformHandleui64ARB == NULL);\r\n  glewInfoFunc(\"glUniformHandleui64vARB\", glUniformHandleui64vARB == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1ui64ARB\", glVertexAttribL1ui64ARB == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1ui64vARB\", glVertexAttribL1ui64vARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_bindless_texture */\r\n\r\n#ifdef GL_ARB_blend_func_extended\r\n\r\nstatic void _glewInfo_GL_ARB_blend_func_extended (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_blend_func_extended\", GLEW_ARB_blend_func_extended, glewIsSupported(\"GL_ARB_blend_func_extended\"), glewGetExtension(\"GL_ARB_blend_func_extended\"));\r\n\r\n  glewInfoFunc(\"glBindFragDataLocationIndexed\", glBindFragDataLocationIndexed == NULL);\r\n  glewInfoFunc(\"glGetFragDataIndex\", glGetFragDataIndex == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_blend_func_extended */\r\n\r\n#ifdef GL_ARB_buffer_storage\r\n\r\nstatic void _glewInfo_GL_ARB_buffer_storage (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_buffer_storage\", GLEW_ARB_buffer_storage, glewIsSupported(\"GL_ARB_buffer_storage\"), glewGetExtension(\"GL_ARB_buffer_storage\"));\r\n\r\n  glewInfoFunc(\"glBufferStorage\", glBufferStorage == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_buffer_storage */\r\n\r\n#ifdef GL_ARB_cl_event\r\n\r\nstatic void _glewInfo_GL_ARB_cl_event (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_cl_event\", GLEW_ARB_cl_event, glewIsSupported(\"GL_ARB_cl_event\"), glewGetExtension(\"GL_ARB_cl_event\"));\r\n\r\n  glewInfoFunc(\"glCreateSyncFromCLeventARB\", glCreateSyncFromCLeventARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_cl_event */\r\n\r\n#ifdef GL_ARB_clear_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_clear_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_clear_buffer_object\", GLEW_ARB_clear_buffer_object, glewIsSupported(\"GL_ARB_clear_buffer_object\"), glewGetExtension(\"GL_ARB_clear_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glClearBufferData\", glClearBufferData == NULL);\r\n  glewInfoFunc(\"glClearBufferSubData\", glClearBufferSubData == NULL);\r\n  glewInfoFunc(\"glClearNamedBufferDataEXT\", glClearNamedBufferDataEXT == NULL);\r\n  glewInfoFunc(\"glClearNamedBufferSubDataEXT\", glClearNamedBufferSubDataEXT == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_clear_buffer_object */\r\n\r\n#ifdef GL_ARB_clear_texture\r\n\r\nstatic void _glewInfo_GL_ARB_clear_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_clear_texture\", GLEW_ARB_clear_texture, glewIsSupported(\"GL_ARB_clear_texture\"), glewGetExtension(\"GL_ARB_clear_texture\"));\r\n\r\n  glewInfoFunc(\"glClearTexImage\", glClearTexImage == NULL);\r\n  glewInfoFunc(\"glClearTexSubImage\", glClearTexSubImage == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_clear_texture */\r\n\r\n#ifdef GL_ARB_clip_control\r\n\r\nstatic void _glewInfo_GL_ARB_clip_control (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_clip_control\", GLEW_ARB_clip_control, glewIsSupported(\"GL_ARB_clip_control\"), glewGetExtension(\"GL_ARB_clip_control\"));\r\n\r\n  glewInfoFunc(\"glClipControl\", glClipControl == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_clip_control */\r\n\r\n#ifdef GL_ARB_color_buffer_float\r\n\r\nstatic void _glewInfo_GL_ARB_color_buffer_float (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_color_buffer_float\", GLEW_ARB_color_buffer_float, glewIsSupported(\"GL_ARB_color_buffer_float\"), glewGetExtension(\"GL_ARB_color_buffer_float\"));\r\n\r\n  glewInfoFunc(\"glClampColorARB\", glClampColorARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_color_buffer_float */\r\n\r\n#ifdef GL_ARB_compatibility\r\n\r\nstatic void _glewInfo_GL_ARB_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_compatibility\", GLEW_ARB_compatibility, glewIsSupported(\"GL_ARB_compatibility\"), glewGetExtension(\"GL_ARB_compatibility\"));\r\n}\r\n\r\n#endif /* GL_ARB_compatibility */\r\n\r\n#ifdef GL_ARB_compressed_texture_pixel_storage\r\n\r\nstatic void _glewInfo_GL_ARB_compressed_texture_pixel_storage (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_compressed_texture_pixel_storage\", GLEW_ARB_compressed_texture_pixel_storage, glewIsSupported(\"GL_ARB_compressed_texture_pixel_storage\"), glewGetExtension(\"GL_ARB_compressed_texture_pixel_storage\"));\r\n}\r\n\r\n#endif /* GL_ARB_compressed_texture_pixel_storage */\r\n\r\n#ifdef GL_ARB_compute_shader\r\n\r\nstatic void _glewInfo_GL_ARB_compute_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_compute_shader\", GLEW_ARB_compute_shader, glewIsSupported(\"GL_ARB_compute_shader\"), glewGetExtension(\"GL_ARB_compute_shader\"));\r\n\r\n  glewInfoFunc(\"glDispatchCompute\", glDispatchCompute == NULL);\r\n  glewInfoFunc(\"glDispatchComputeIndirect\", glDispatchComputeIndirect == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_compute_shader */\r\n\r\n#ifdef GL_ARB_compute_variable_group_size\r\n\r\nstatic void _glewInfo_GL_ARB_compute_variable_group_size (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_compute_variable_group_size\", GLEW_ARB_compute_variable_group_size, glewIsSupported(\"GL_ARB_compute_variable_group_size\"), glewGetExtension(\"GL_ARB_compute_variable_group_size\"));\r\n\r\n  glewInfoFunc(\"glDispatchComputeGroupSizeARB\", glDispatchComputeGroupSizeARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_compute_variable_group_size */\r\n\r\n#ifdef GL_ARB_conditional_render_inverted\r\n\r\nstatic void _glewInfo_GL_ARB_conditional_render_inverted (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_conditional_render_inverted\", GLEW_ARB_conditional_render_inverted, glewIsSupported(\"GL_ARB_conditional_render_inverted\"), glewGetExtension(\"GL_ARB_conditional_render_inverted\"));\r\n}\r\n\r\n#endif /* GL_ARB_conditional_render_inverted */\r\n\r\n#ifdef GL_ARB_conservative_depth\r\n\r\nstatic void _glewInfo_GL_ARB_conservative_depth (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_conservative_depth\", GLEW_ARB_conservative_depth, glewIsSupported(\"GL_ARB_conservative_depth\"), glewGetExtension(\"GL_ARB_conservative_depth\"));\r\n}\r\n\r\n#endif /* GL_ARB_conservative_depth */\r\n\r\n#ifdef GL_ARB_copy_buffer\r\n\r\nstatic void _glewInfo_GL_ARB_copy_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_copy_buffer\", GLEW_ARB_copy_buffer, glewIsSupported(\"GL_ARB_copy_buffer\"), glewGetExtension(\"GL_ARB_copy_buffer\"));\r\n\r\n  glewInfoFunc(\"glCopyBufferSubData\", glCopyBufferSubData == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_copy_buffer */\r\n\r\n#ifdef GL_ARB_copy_image\r\n\r\nstatic void _glewInfo_GL_ARB_copy_image (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_copy_image\", GLEW_ARB_copy_image, glewIsSupported(\"GL_ARB_copy_image\"), glewGetExtension(\"GL_ARB_copy_image\"));\r\n\r\n  glewInfoFunc(\"glCopyImageSubData\", glCopyImageSubData == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_copy_image */\r\n\r\n#ifdef GL_ARB_cull_distance\r\n\r\nstatic void _glewInfo_GL_ARB_cull_distance (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_cull_distance\", GLEW_ARB_cull_distance, glewIsSupported(\"GL_ARB_cull_distance\"), glewGetExtension(\"GL_ARB_cull_distance\"));\r\n}\r\n\r\n#endif /* GL_ARB_cull_distance */\r\n\r\n#ifdef GL_ARB_debug_output\r\n\r\nstatic void _glewInfo_GL_ARB_debug_output (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_debug_output\", GLEW_ARB_debug_output, glewIsSupported(\"GL_ARB_debug_output\"), glewGetExtension(\"GL_ARB_debug_output\"));\r\n\r\n  glewInfoFunc(\"glDebugMessageCallbackARB\", glDebugMessageCallbackARB == NULL);\r\n  glewInfoFunc(\"glDebugMessageControlARB\", glDebugMessageControlARB == NULL);\r\n  glewInfoFunc(\"glDebugMessageInsertARB\", glDebugMessageInsertARB == NULL);\r\n  glewInfoFunc(\"glGetDebugMessageLogARB\", glGetDebugMessageLogARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_debug_output */\r\n\r\n#ifdef GL_ARB_depth_buffer_float\r\n\r\nstatic void _glewInfo_GL_ARB_depth_buffer_float (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_depth_buffer_float\", GLEW_ARB_depth_buffer_float, glewIsSupported(\"GL_ARB_depth_buffer_float\"), glewGetExtension(\"GL_ARB_depth_buffer_float\"));\r\n}\r\n\r\n#endif /* GL_ARB_depth_buffer_float */\r\n\r\n#ifdef GL_ARB_depth_clamp\r\n\r\nstatic void _glewInfo_GL_ARB_depth_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_depth_clamp\", GLEW_ARB_depth_clamp, glewIsSupported(\"GL_ARB_depth_clamp\"), glewGetExtension(\"GL_ARB_depth_clamp\"));\r\n}\r\n\r\n#endif /* GL_ARB_depth_clamp */\r\n\r\n#ifdef GL_ARB_depth_texture\r\n\r\nstatic void _glewInfo_GL_ARB_depth_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_depth_texture\", GLEW_ARB_depth_texture, glewIsSupported(\"GL_ARB_depth_texture\"), glewGetExtension(\"GL_ARB_depth_texture\"));\r\n}\r\n\r\n#endif /* GL_ARB_depth_texture */\r\n\r\n#ifdef GL_ARB_derivative_control\r\n\r\nstatic void _glewInfo_GL_ARB_derivative_control (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_derivative_control\", GLEW_ARB_derivative_control, glewIsSupported(\"GL_ARB_derivative_control\"), glewGetExtension(\"GL_ARB_derivative_control\"));\r\n}\r\n\r\n#endif /* GL_ARB_derivative_control */\r\n\r\n#ifdef GL_ARB_direct_state_access\r\n\r\nstatic void _glewInfo_GL_ARB_direct_state_access (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_direct_state_access\", GLEW_ARB_direct_state_access, glewIsSupported(\"GL_ARB_direct_state_access\"), glewGetExtension(\"GL_ARB_direct_state_access\"));\r\n\r\n  glewInfoFunc(\"glBindTextureUnit\", glBindTextureUnit == NULL);\r\n  glewInfoFunc(\"glBlitNamedFramebuffer\", glBlitNamedFramebuffer == NULL);\r\n  glewInfoFunc(\"glCheckNamedFramebufferStatus\", glCheckNamedFramebufferStatus == NULL);\r\n  glewInfoFunc(\"glClearNamedBufferData\", glClearNamedBufferData == NULL);\r\n  glewInfoFunc(\"glClearNamedBufferSubData\", glClearNamedBufferSubData == NULL);\r\n  glewInfoFunc(\"glClearNamedFramebufferfi\", glClearNamedFramebufferfi == NULL);\r\n  glewInfoFunc(\"glClearNamedFramebufferfv\", glClearNamedFramebufferfv == NULL);\r\n  glewInfoFunc(\"glClearNamedFramebufferiv\", glClearNamedFramebufferiv == NULL);\r\n  glewInfoFunc(\"glClearNamedFramebufferuiv\", glClearNamedFramebufferuiv == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage1D\", glCompressedTextureSubImage1D == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage2D\", glCompressedTextureSubImage2D == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage3D\", glCompressedTextureSubImage3D == NULL);\r\n  glewInfoFunc(\"glCopyNamedBufferSubData\", glCopyNamedBufferSubData == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage1D\", glCopyTextureSubImage1D == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage2D\", glCopyTextureSubImage2D == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage3D\", glCopyTextureSubImage3D == NULL);\r\n  glewInfoFunc(\"glCreateBuffers\", glCreateBuffers == NULL);\r\n  glewInfoFunc(\"glCreateFramebuffers\", glCreateFramebuffers == NULL);\r\n  glewInfoFunc(\"glCreateProgramPipelines\", glCreateProgramPipelines == NULL);\r\n  glewInfoFunc(\"glCreateQueries\", glCreateQueries == NULL);\r\n  glewInfoFunc(\"glCreateRenderbuffers\", glCreateRenderbuffers == NULL);\r\n  glewInfoFunc(\"glCreateSamplers\", glCreateSamplers == NULL);\r\n  glewInfoFunc(\"glCreateTextures\", glCreateTextures == NULL);\r\n  glewInfoFunc(\"glCreateTransformFeedbacks\", glCreateTransformFeedbacks == NULL);\r\n  glewInfoFunc(\"glCreateVertexArrays\", glCreateVertexArrays == NULL);\r\n  glewInfoFunc(\"glDisableVertexArrayAttrib\", glDisableVertexArrayAttrib == NULL);\r\n  glewInfoFunc(\"glEnableVertexArrayAttrib\", glEnableVertexArrayAttrib == NULL);\r\n  glewInfoFunc(\"glFlushMappedNamedBufferRange\", glFlushMappedNamedBufferRange == NULL);\r\n  glewInfoFunc(\"glGenerateTextureMipmap\", glGenerateTextureMipmap == NULL);\r\n  glewInfoFunc(\"glGetCompressedTextureImage\", glGetCompressedTextureImage == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferParameteri64v\", glGetNamedBufferParameteri64v == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferParameteriv\", glGetNamedBufferParameteriv == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferPointerv\", glGetNamedBufferPointerv == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferSubData\", glGetNamedBufferSubData == NULL);\r\n  glewInfoFunc(\"glGetNamedFramebufferAttachmentParameteriv\", glGetNamedFramebufferAttachmentParameteriv == NULL);\r\n  glewInfoFunc(\"glGetNamedFramebufferParameteriv\", glGetNamedFramebufferParameteriv == NULL);\r\n  glewInfoFunc(\"glGetNamedRenderbufferParameteriv\", glGetNamedRenderbufferParameteriv == NULL);\r\n  glewInfoFunc(\"glGetQueryBufferObjecti64v\", glGetQueryBufferObjecti64v == NULL);\r\n  glewInfoFunc(\"glGetQueryBufferObjectiv\", glGetQueryBufferObjectiv == NULL);\r\n  glewInfoFunc(\"glGetQueryBufferObjectui64v\", glGetQueryBufferObjectui64v == NULL);\r\n  glewInfoFunc(\"glGetQueryBufferObjectuiv\", glGetQueryBufferObjectuiv == NULL);\r\n  glewInfoFunc(\"glGetTextureImage\", glGetTextureImage == NULL);\r\n  glewInfoFunc(\"glGetTextureLevelParameterfv\", glGetTextureLevelParameterfv == NULL);\r\n  glewInfoFunc(\"glGetTextureLevelParameteriv\", glGetTextureLevelParameteriv == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterIiv\", glGetTextureParameterIiv == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterIuiv\", glGetTextureParameterIuiv == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterfv\", glGetTextureParameterfv == NULL);\r\n  glewInfoFunc(\"glGetTextureParameteriv\", glGetTextureParameteriv == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbacki64_v\", glGetTransformFeedbacki64_v == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbacki_v\", glGetTransformFeedbacki_v == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbackiv\", glGetTransformFeedbackiv == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayIndexed64iv\", glGetVertexArrayIndexed64iv == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayIndexediv\", glGetVertexArrayIndexediv == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayiv\", glGetVertexArrayiv == NULL);\r\n  glewInfoFunc(\"glInvalidateNamedFramebufferData\", glInvalidateNamedFramebufferData == NULL);\r\n  glewInfoFunc(\"glInvalidateNamedFramebufferSubData\", glInvalidateNamedFramebufferSubData == NULL);\r\n  glewInfoFunc(\"glMapNamedBuffer\", glMapNamedBuffer == NULL);\r\n  glewInfoFunc(\"glMapNamedBufferRange\", glMapNamedBufferRange == NULL);\r\n  glewInfoFunc(\"glNamedBufferData\", glNamedBufferData == NULL);\r\n  glewInfoFunc(\"glNamedBufferStorage\", glNamedBufferStorage == NULL);\r\n  glewInfoFunc(\"glNamedBufferSubData\", glNamedBufferSubData == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferDrawBuffer\", glNamedFramebufferDrawBuffer == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferDrawBuffers\", glNamedFramebufferDrawBuffers == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferParameteri\", glNamedFramebufferParameteri == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferReadBuffer\", glNamedFramebufferReadBuffer == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferRenderbuffer\", glNamedFramebufferRenderbuffer == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTexture\", glNamedFramebufferTexture == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTextureLayer\", glNamedFramebufferTextureLayer == NULL);\r\n  glewInfoFunc(\"glNamedRenderbufferStorage\", glNamedRenderbufferStorage == NULL);\r\n  glewInfoFunc(\"glNamedRenderbufferStorageMultisample\", glNamedRenderbufferStorageMultisample == NULL);\r\n  glewInfoFunc(\"glTextureBuffer\", glTextureBuffer == NULL);\r\n  glewInfoFunc(\"glTextureBufferRange\", glTextureBufferRange == NULL);\r\n  glewInfoFunc(\"glTextureParameterIiv\", glTextureParameterIiv == NULL);\r\n  glewInfoFunc(\"glTextureParameterIuiv\", glTextureParameterIuiv == NULL);\r\n  glewInfoFunc(\"glTextureParameterf\", glTextureParameterf == NULL);\r\n  glewInfoFunc(\"glTextureParameterfv\", glTextureParameterfv == NULL);\r\n  glewInfoFunc(\"glTextureParameteri\", glTextureParameteri == NULL);\r\n  glewInfoFunc(\"glTextureParameteriv\", glTextureParameteriv == NULL);\r\n  glewInfoFunc(\"glTextureStorage1D\", glTextureStorage1D == NULL);\r\n  glewInfoFunc(\"glTextureStorage2D\", glTextureStorage2D == NULL);\r\n  glewInfoFunc(\"glTextureStorage2DMultisample\", glTextureStorage2DMultisample == NULL);\r\n  glewInfoFunc(\"glTextureStorage3D\", glTextureStorage3D == NULL);\r\n  glewInfoFunc(\"glTextureStorage3DMultisample\", glTextureStorage3DMultisample == NULL);\r\n  glewInfoFunc(\"glTextureSubImage1D\", glTextureSubImage1D == NULL);\r\n  glewInfoFunc(\"glTextureSubImage2D\", glTextureSubImage2D == NULL);\r\n  glewInfoFunc(\"glTextureSubImage3D\", glTextureSubImage3D == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackBufferBase\", glTransformFeedbackBufferBase == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackBufferRange\", glTransformFeedbackBufferRange == NULL);\r\n  glewInfoFunc(\"glUnmapNamedBuffer\", glUnmapNamedBuffer == NULL);\r\n  glewInfoFunc(\"glVertexArrayAttribBinding\", glVertexArrayAttribBinding == NULL);\r\n  glewInfoFunc(\"glVertexArrayAttribFormat\", glVertexArrayAttribFormat == NULL);\r\n  glewInfoFunc(\"glVertexArrayAttribIFormat\", glVertexArrayAttribIFormat == NULL);\r\n  glewInfoFunc(\"glVertexArrayAttribLFormat\", glVertexArrayAttribLFormat == NULL);\r\n  glewInfoFunc(\"glVertexArrayBindingDivisor\", glVertexArrayBindingDivisor == NULL);\r\n  glewInfoFunc(\"glVertexArrayElementBuffer\", glVertexArrayElementBuffer == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexBuffer\", glVertexArrayVertexBuffer == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexBuffers\", glVertexArrayVertexBuffers == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_direct_state_access */\r\n\r\n#ifdef GL_ARB_draw_buffers\r\n\r\nstatic void _glewInfo_GL_ARB_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_draw_buffers\", GLEW_ARB_draw_buffers, glewIsSupported(\"GL_ARB_draw_buffers\"), glewGetExtension(\"GL_ARB_draw_buffers\"));\r\n\r\n  glewInfoFunc(\"glDrawBuffersARB\", glDrawBuffersARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_draw_buffers */\r\n\r\n#ifdef GL_ARB_draw_buffers_blend\r\n\r\nstatic void _glewInfo_GL_ARB_draw_buffers_blend (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_draw_buffers_blend\", GLEW_ARB_draw_buffers_blend, glewIsSupported(\"GL_ARB_draw_buffers_blend\"), glewGetExtension(\"GL_ARB_draw_buffers_blend\"));\r\n\r\n  glewInfoFunc(\"glBlendEquationSeparateiARB\", glBlendEquationSeparateiARB == NULL);\r\n  glewInfoFunc(\"glBlendEquationiARB\", glBlendEquationiARB == NULL);\r\n  glewInfoFunc(\"glBlendFuncSeparateiARB\", glBlendFuncSeparateiARB == NULL);\r\n  glewInfoFunc(\"glBlendFunciARB\", glBlendFunciARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_draw_buffers_blend */\r\n\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n\r\nstatic void _glewInfo_GL_ARB_draw_elements_base_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_draw_elements_base_vertex\", GLEW_ARB_draw_elements_base_vertex, glewIsSupported(\"GL_ARB_draw_elements_base_vertex\"), glewGetExtension(\"GL_ARB_draw_elements_base_vertex\"));\r\n\r\n  glewInfoFunc(\"glDrawElementsBaseVertex\", glDrawElementsBaseVertex == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseVertex\", glDrawElementsInstancedBaseVertex == NULL);\r\n  glewInfoFunc(\"glDrawRangeElementsBaseVertex\", glDrawRangeElementsBaseVertex == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsBaseVertex\", glMultiDrawElementsBaseVertex == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_draw_elements_base_vertex */\r\n\r\n#ifdef GL_ARB_draw_indirect\r\n\r\nstatic void _glewInfo_GL_ARB_draw_indirect (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_draw_indirect\", GLEW_ARB_draw_indirect, glewIsSupported(\"GL_ARB_draw_indirect\"), glewGetExtension(\"GL_ARB_draw_indirect\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysIndirect\", glDrawArraysIndirect == NULL);\r\n  glewInfoFunc(\"glDrawElementsIndirect\", glDrawElementsIndirect == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_draw_indirect */\r\n\r\n#ifdef GL_ARB_draw_instanced\r\n\r\nstatic void _glewInfo_GL_ARB_draw_instanced (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_draw_instanced\", GLEW_ARB_draw_instanced, glewIsSupported(\"GL_ARB_draw_instanced\"), glewGetExtension(\"GL_ARB_draw_instanced\"));\r\n}\r\n\r\n#endif /* GL_ARB_draw_instanced */\r\n\r\n#ifdef GL_ARB_enhanced_layouts\r\n\r\nstatic void _glewInfo_GL_ARB_enhanced_layouts (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_enhanced_layouts\", GLEW_ARB_enhanced_layouts, glewIsSupported(\"GL_ARB_enhanced_layouts\"), glewGetExtension(\"GL_ARB_enhanced_layouts\"));\r\n}\r\n\r\n#endif /* GL_ARB_enhanced_layouts */\r\n\r\n#ifdef GL_ARB_explicit_attrib_location\r\n\r\nstatic void _glewInfo_GL_ARB_explicit_attrib_location (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_explicit_attrib_location\", GLEW_ARB_explicit_attrib_location, glewIsSupported(\"GL_ARB_explicit_attrib_location\"), glewGetExtension(\"GL_ARB_explicit_attrib_location\"));\r\n}\r\n\r\n#endif /* GL_ARB_explicit_attrib_location */\r\n\r\n#ifdef GL_ARB_explicit_uniform_location\r\n\r\nstatic void _glewInfo_GL_ARB_explicit_uniform_location (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_explicit_uniform_location\", GLEW_ARB_explicit_uniform_location, glewIsSupported(\"GL_ARB_explicit_uniform_location\"), glewGetExtension(\"GL_ARB_explicit_uniform_location\"));\r\n}\r\n\r\n#endif /* GL_ARB_explicit_uniform_location */\r\n\r\n#ifdef GL_ARB_fragment_coord_conventions\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_coord_conventions (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_coord_conventions\", GLEW_ARB_fragment_coord_conventions, glewIsSupported(\"GL_ARB_fragment_coord_conventions\"), glewGetExtension(\"GL_ARB_fragment_coord_conventions\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_coord_conventions */\r\n\r\n#ifdef GL_ARB_fragment_layer_viewport\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_layer_viewport (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_layer_viewport\", GLEW_ARB_fragment_layer_viewport, glewIsSupported(\"GL_ARB_fragment_layer_viewport\"), glewGetExtension(\"GL_ARB_fragment_layer_viewport\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_layer_viewport */\r\n\r\n#ifdef GL_ARB_fragment_program\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_program (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_program\", GLEW_ARB_fragment_program, glewIsSupported(\"GL_ARB_fragment_program\"), glewGetExtension(\"GL_ARB_fragment_program\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_program */\r\n\r\n#ifdef GL_ARB_fragment_program_shadow\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_program_shadow (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_program_shadow\", GLEW_ARB_fragment_program_shadow, glewIsSupported(\"GL_ARB_fragment_program_shadow\"), glewGetExtension(\"GL_ARB_fragment_program_shadow\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_program_shadow */\r\n\r\n#ifdef GL_ARB_fragment_shader\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_shader\", GLEW_ARB_fragment_shader, glewIsSupported(\"GL_ARB_fragment_shader\"), glewGetExtension(\"GL_ARB_fragment_shader\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_shader */\r\n\r\n#ifdef GL_ARB_fragment_shader_interlock\r\n\r\nstatic void _glewInfo_GL_ARB_fragment_shader_interlock (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_fragment_shader_interlock\", GLEW_ARB_fragment_shader_interlock, glewIsSupported(\"GL_ARB_fragment_shader_interlock\"), glewGetExtension(\"GL_ARB_fragment_shader_interlock\"));\r\n}\r\n\r\n#endif /* GL_ARB_fragment_shader_interlock */\r\n\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n\r\nstatic void _glewInfo_GL_ARB_framebuffer_no_attachments (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_framebuffer_no_attachments\", GLEW_ARB_framebuffer_no_attachments, glewIsSupported(\"GL_ARB_framebuffer_no_attachments\"), glewGetExtension(\"GL_ARB_framebuffer_no_attachments\"));\r\n\r\n  glewInfoFunc(\"glFramebufferParameteri\", glFramebufferParameteri == NULL);\r\n  glewInfoFunc(\"glGetFramebufferParameteriv\", glGetFramebufferParameteriv == NULL);\r\n  glewInfoFunc(\"glGetNamedFramebufferParameterivEXT\", glGetNamedFramebufferParameterivEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferParameteriEXT\", glNamedFramebufferParameteriEXT == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_framebuffer_no_attachments */\r\n\r\n#ifdef GL_ARB_framebuffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_framebuffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_framebuffer_object\", GLEW_ARB_framebuffer_object, glewIsSupported(\"GL_ARB_framebuffer_object\"), glewGetExtension(\"GL_ARB_framebuffer_object\"));\r\n\r\n  glewInfoFunc(\"glBindFramebuffer\", glBindFramebuffer == NULL);\r\n  glewInfoFunc(\"glBindRenderbuffer\", glBindRenderbuffer == NULL);\r\n  glewInfoFunc(\"glBlitFramebuffer\", glBlitFramebuffer == NULL);\r\n  glewInfoFunc(\"glCheckFramebufferStatus\", glCheckFramebufferStatus == NULL);\r\n  glewInfoFunc(\"glDeleteFramebuffers\", glDeleteFramebuffers == NULL);\r\n  glewInfoFunc(\"glDeleteRenderbuffers\", glDeleteRenderbuffers == NULL);\r\n  glewInfoFunc(\"glFramebufferRenderbuffer\", glFramebufferRenderbuffer == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture1D\", glFramebufferTexture1D == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture2D\", glFramebufferTexture2D == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture3D\", glFramebufferTexture3D == NULL);\r\n  glewInfoFunc(\"glFramebufferTextureLayer\", glFramebufferTextureLayer == NULL);\r\n  glewInfoFunc(\"glGenFramebuffers\", glGenFramebuffers == NULL);\r\n  glewInfoFunc(\"glGenRenderbuffers\", glGenRenderbuffers == NULL);\r\n  glewInfoFunc(\"glGenerateMipmap\", glGenerateMipmap == NULL);\r\n  glewInfoFunc(\"glGetFramebufferAttachmentParameteriv\", glGetFramebufferAttachmentParameteriv == NULL);\r\n  glewInfoFunc(\"glGetRenderbufferParameteriv\", glGetRenderbufferParameteriv == NULL);\r\n  glewInfoFunc(\"glIsFramebuffer\", glIsFramebuffer == NULL);\r\n  glewInfoFunc(\"glIsRenderbuffer\", glIsRenderbuffer == NULL);\r\n  glewInfoFunc(\"glRenderbufferStorage\", glRenderbufferStorage == NULL);\r\n  glewInfoFunc(\"glRenderbufferStorageMultisample\", glRenderbufferStorageMultisample == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_framebuffer_object */\r\n\r\n#ifdef GL_ARB_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_GL_ARB_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_framebuffer_sRGB\", GLEW_ARB_framebuffer_sRGB, glewIsSupported(\"GL_ARB_framebuffer_sRGB\"), glewGetExtension(\"GL_ARB_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* GL_ARB_framebuffer_sRGB */\r\n\r\n#ifdef GL_ARB_geometry_shader4\r\n\r\nstatic void _glewInfo_GL_ARB_geometry_shader4 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_geometry_shader4\", GLEW_ARB_geometry_shader4, glewIsSupported(\"GL_ARB_geometry_shader4\"), glewGetExtension(\"GL_ARB_geometry_shader4\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTextureARB\", glFramebufferTextureARB == NULL);\r\n  glewInfoFunc(\"glFramebufferTextureFaceARB\", glFramebufferTextureFaceARB == NULL);\r\n  glewInfoFunc(\"glFramebufferTextureLayerARB\", glFramebufferTextureLayerARB == NULL);\r\n  glewInfoFunc(\"glProgramParameteriARB\", glProgramParameteriARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_geometry_shader4 */\r\n\r\n#ifdef GL_ARB_get_program_binary\r\n\r\nstatic void _glewInfo_GL_ARB_get_program_binary (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_get_program_binary\", GLEW_ARB_get_program_binary, glewIsSupported(\"GL_ARB_get_program_binary\"), glewGetExtension(\"GL_ARB_get_program_binary\"));\r\n\r\n  glewInfoFunc(\"glGetProgramBinary\", glGetProgramBinary == NULL);\r\n  glewInfoFunc(\"glProgramBinary\", glProgramBinary == NULL);\r\n  glewInfoFunc(\"glProgramParameteri\", glProgramParameteri == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_get_program_binary */\r\n\r\n#ifdef GL_ARB_get_texture_sub_image\r\n\r\nstatic void _glewInfo_GL_ARB_get_texture_sub_image (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_get_texture_sub_image\", GLEW_ARB_get_texture_sub_image, glewIsSupported(\"GL_ARB_get_texture_sub_image\"), glewGetExtension(\"GL_ARB_get_texture_sub_image\"));\r\n\r\n  glewInfoFunc(\"glGetCompressedTextureSubImage\", glGetCompressedTextureSubImage == NULL);\r\n  glewInfoFunc(\"glGetTextureSubImage\", glGetTextureSubImage == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_get_texture_sub_image */\r\n\r\n#ifdef GL_ARB_gl_spirv\r\n\r\nstatic void _glewInfo_GL_ARB_gl_spirv (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_gl_spirv\", GLEW_ARB_gl_spirv, glewIsSupported(\"GL_ARB_gl_spirv\"), glewGetExtension(\"GL_ARB_gl_spirv\"));\r\n\r\n  glewInfoFunc(\"glSpecializeShaderARB\", glSpecializeShaderARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_gl_spirv */\r\n\r\n#ifdef GL_ARB_gpu_shader5\r\n\r\nstatic void _glewInfo_GL_ARB_gpu_shader5 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_gpu_shader5\", GLEW_ARB_gpu_shader5, glewIsSupported(\"GL_ARB_gpu_shader5\"), glewGetExtension(\"GL_ARB_gpu_shader5\"));\r\n}\r\n\r\n#endif /* GL_ARB_gpu_shader5 */\r\n\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n\r\nstatic void _glewInfo_GL_ARB_gpu_shader_fp64 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_gpu_shader_fp64\", GLEW_ARB_gpu_shader_fp64, glewIsSupported(\"GL_ARB_gpu_shader_fp64\"), glewGetExtension(\"GL_ARB_gpu_shader_fp64\"));\r\n\r\n  glewInfoFunc(\"glGetUniformdv\", glGetUniformdv == NULL);\r\n  glewInfoFunc(\"glUniform1d\", glUniform1d == NULL);\r\n  glewInfoFunc(\"glUniform1dv\", glUniform1dv == NULL);\r\n  glewInfoFunc(\"glUniform2d\", glUniform2d == NULL);\r\n  glewInfoFunc(\"glUniform2dv\", glUniform2dv == NULL);\r\n  glewInfoFunc(\"glUniform3d\", glUniform3d == NULL);\r\n  glewInfoFunc(\"glUniform3dv\", glUniform3dv == NULL);\r\n  glewInfoFunc(\"glUniform4d\", glUniform4d == NULL);\r\n  glewInfoFunc(\"glUniform4dv\", glUniform4dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2dv\", glUniformMatrix2dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2x3dv\", glUniformMatrix2x3dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2x4dv\", glUniformMatrix2x4dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3dv\", glUniformMatrix3dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x2dv\", glUniformMatrix3x2dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x4dv\", glUniformMatrix3x4dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4dv\", glUniformMatrix4dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x2dv\", glUniformMatrix4x2dv == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x3dv\", glUniformMatrix4x3dv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_gpu_shader_fp64 */\r\n\r\n#ifdef GL_ARB_gpu_shader_int64\r\n\r\nstatic void _glewInfo_GL_ARB_gpu_shader_int64 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_gpu_shader_int64\", GLEW_ARB_gpu_shader_int64, glewIsSupported(\"GL_ARB_gpu_shader_int64\"), glewGetExtension(\"GL_ARB_gpu_shader_int64\"));\r\n\r\n  glewInfoFunc(\"glGetUniformi64vARB\", glGetUniformi64vARB == NULL);\r\n  glewInfoFunc(\"glGetUniformui64vARB\", glGetUniformui64vARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformi64vARB\", glGetnUniformi64vARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformui64vARB\", glGetnUniformui64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform1i64ARB\", glProgramUniform1i64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform1i64vARB\", glProgramUniform1i64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ui64ARB\", glProgramUniform1ui64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ui64vARB\", glProgramUniform1ui64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform2i64ARB\", glProgramUniform2i64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform2i64vARB\", glProgramUniform2i64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ui64ARB\", glProgramUniform2ui64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ui64vARB\", glProgramUniform2ui64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform3i64ARB\", glProgramUniform3i64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform3i64vARB\", glProgramUniform3i64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ui64ARB\", glProgramUniform3ui64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ui64vARB\", glProgramUniform3ui64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform4i64ARB\", glProgramUniform4i64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform4i64vARB\", glProgramUniform4i64vARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ui64ARB\", glProgramUniform4ui64ARB == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ui64vARB\", glProgramUniform4ui64vARB == NULL);\r\n  glewInfoFunc(\"glUniform1i64ARB\", glUniform1i64ARB == NULL);\r\n  glewInfoFunc(\"glUniform1i64vARB\", glUniform1i64vARB == NULL);\r\n  glewInfoFunc(\"glUniform1ui64ARB\", glUniform1ui64ARB == NULL);\r\n  glewInfoFunc(\"glUniform1ui64vARB\", glUniform1ui64vARB == NULL);\r\n  glewInfoFunc(\"glUniform2i64ARB\", glUniform2i64ARB == NULL);\r\n  glewInfoFunc(\"glUniform2i64vARB\", glUniform2i64vARB == NULL);\r\n  glewInfoFunc(\"glUniform2ui64ARB\", glUniform2ui64ARB == NULL);\r\n  glewInfoFunc(\"glUniform2ui64vARB\", glUniform2ui64vARB == NULL);\r\n  glewInfoFunc(\"glUniform3i64ARB\", glUniform3i64ARB == NULL);\r\n  glewInfoFunc(\"glUniform3i64vARB\", glUniform3i64vARB == NULL);\r\n  glewInfoFunc(\"glUniform3ui64ARB\", glUniform3ui64ARB == NULL);\r\n  glewInfoFunc(\"glUniform3ui64vARB\", glUniform3ui64vARB == NULL);\r\n  glewInfoFunc(\"glUniform4i64ARB\", glUniform4i64ARB == NULL);\r\n  glewInfoFunc(\"glUniform4i64vARB\", glUniform4i64vARB == NULL);\r\n  glewInfoFunc(\"glUniform4ui64ARB\", glUniform4ui64ARB == NULL);\r\n  glewInfoFunc(\"glUniform4ui64vARB\", glUniform4ui64vARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_gpu_shader_int64 */\r\n\r\n#ifdef GL_ARB_half_float_pixel\r\n\r\nstatic void _glewInfo_GL_ARB_half_float_pixel (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_half_float_pixel\", GLEW_ARB_half_float_pixel, glewIsSupported(\"GL_ARB_half_float_pixel\"), glewGetExtension(\"GL_ARB_half_float_pixel\"));\r\n}\r\n\r\n#endif /* GL_ARB_half_float_pixel */\r\n\r\n#ifdef GL_ARB_half_float_vertex\r\n\r\nstatic void _glewInfo_GL_ARB_half_float_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_half_float_vertex\", GLEW_ARB_half_float_vertex, glewIsSupported(\"GL_ARB_half_float_vertex\"), glewGetExtension(\"GL_ARB_half_float_vertex\"));\r\n}\r\n\r\n#endif /* GL_ARB_half_float_vertex */\r\n\r\n#ifdef GL_ARB_imaging\r\n\r\nstatic void _glewInfo_GL_ARB_imaging (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_imaging\", GLEW_ARB_imaging, glewIsSupported(\"GL_ARB_imaging\"), glewGetExtension(\"GL_ARB_imaging\"));\r\n\r\n  glewInfoFunc(\"glBlendEquation\", glBlendEquation == NULL);\r\n  glewInfoFunc(\"glColorSubTable\", glColorSubTable == NULL);\r\n  glewInfoFunc(\"glColorTable\", glColorTable == NULL);\r\n  glewInfoFunc(\"glColorTableParameterfv\", glColorTableParameterfv == NULL);\r\n  glewInfoFunc(\"glColorTableParameteriv\", glColorTableParameteriv == NULL);\r\n  glewInfoFunc(\"glConvolutionFilter1D\", glConvolutionFilter1D == NULL);\r\n  glewInfoFunc(\"glConvolutionFilter2D\", glConvolutionFilter2D == NULL);\r\n  glewInfoFunc(\"glConvolutionParameterf\", glConvolutionParameterf == NULL);\r\n  glewInfoFunc(\"glConvolutionParameterfv\", glConvolutionParameterfv == NULL);\r\n  glewInfoFunc(\"glConvolutionParameteri\", glConvolutionParameteri == NULL);\r\n  glewInfoFunc(\"glConvolutionParameteriv\", glConvolutionParameteriv == NULL);\r\n  glewInfoFunc(\"glCopyColorSubTable\", glCopyColorSubTable == NULL);\r\n  glewInfoFunc(\"glCopyColorTable\", glCopyColorTable == NULL);\r\n  glewInfoFunc(\"glCopyConvolutionFilter1D\", glCopyConvolutionFilter1D == NULL);\r\n  glewInfoFunc(\"glCopyConvolutionFilter2D\", glCopyConvolutionFilter2D == NULL);\r\n  glewInfoFunc(\"glGetColorTable\", glGetColorTable == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameterfv\", glGetColorTableParameterfv == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameteriv\", glGetColorTableParameteriv == NULL);\r\n  glewInfoFunc(\"glGetConvolutionFilter\", glGetConvolutionFilter == NULL);\r\n  glewInfoFunc(\"glGetConvolutionParameterfv\", glGetConvolutionParameterfv == NULL);\r\n  glewInfoFunc(\"glGetConvolutionParameteriv\", glGetConvolutionParameteriv == NULL);\r\n  glewInfoFunc(\"glGetHistogram\", glGetHistogram == NULL);\r\n  glewInfoFunc(\"glGetHistogramParameterfv\", glGetHistogramParameterfv == NULL);\r\n  glewInfoFunc(\"glGetHistogramParameteriv\", glGetHistogramParameteriv == NULL);\r\n  glewInfoFunc(\"glGetMinmax\", glGetMinmax == NULL);\r\n  glewInfoFunc(\"glGetMinmaxParameterfv\", glGetMinmaxParameterfv == NULL);\r\n  glewInfoFunc(\"glGetMinmaxParameteriv\", glGetMinmaxParameteriv == NULL);\r\n  glewInfoFunc(\"glGetSeparableFilter\", glGetSeparableFilter == NULL);\r\n  glewInfoFunc(\"glHistogram\", glHistogram == NULL);\r\n  glewInfoFunc(\"glMinmax\", glMinmax == NULL);\r\n  glewInfoFunc(\"glResetHistogram\", glResetHistogram == NULL);\r\n  glewInfoFunc(\"glResetMinmax\", glResetMinmax == NULL);\r\n  glewInfoFunc(\"glSeparableFilter2D\", glSeparableFilter2D == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_imaging */\r\n\r\n#ifdef GL_ARB_indirect_parameters\r\n\r\nstatic void _glewInfo_GL_ARB_indirect_parameters (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_indirect_parameters\", GLEW_ARB_indirect_parameters, glewIsSupported(\"GL_ARB_indirect_parameters\"), glewGetExtension(\"GL_ARB_indirect_parameters\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectCountARB\", glMultiDrawArraysIndirectCountARB == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectCountARB\", glMultiDrawElementsIndirectCountARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_indirect_parameters */\r\n\r\n#ifdef GL_ARB_instanced_arrays\r\n\r\nstatic void _glewInfo_GL_ARB_instanced_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_instanced_arrays\", GLEW_ARB_instanced_arrays, glewIsSupported(\"GL_ARB_instanced_arrays\"), glewGetExtension(\"GL_ARB_instanced_arrays\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedARB\", glDrawArraysInstancedARB == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedARB\", glDrawElementsInstancedARB == NULL);\r\n  glewInfoFunc(\"glVertexAttribDivisorARB\", glVertexAttribDivisorARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_instanced_arrays */\r\n\r\n#ifdef GL_ARB_internalformat_query\r\n\r\nstatic void _glewInfo_GL_ARB_internalformat_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_internalformat_query\", GLEW_ARB_internalformat_query, glewIsSupported(\"GL_ARB_internalformat_query\"), glewGetExtension(\"GL_ARB_internalformat_query\"));\r\n\r\n  glewInfoFunc(\"glGetInternalformativ\", glGetInternalformativ == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_internalformat_query */\r\n\r\n#ifdef GL_ARB_internalformat_query2\r\n\r\nstatic void _glewInfo_GL_ARB_internalformat_query2 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_internalformat_query2\", GLEW_ARB_internalformat_query2, glewIsSupported(\"GL_ARB_internalformat_query2\"), glewGetExtension(\"GL_ARB_internalformat_query2\"));\r\n\r\n  glewInfoFunc(\"glGetInternalformati64v\", glGetInternalformati64v == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_internalformat_query2 */\r\n\r\n#ifdef GL_ARB_invalidate_subdata\r\n\r\nstatic void _glewInfo_GL_ARB_invalidate_subdata (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_invalidate_subdata\", GLEW_ARB_invalidate_subdata, glewIsSupported(\"GL_ARB_invalidate_subdata\"), glewGetExtension(\"GL_ARB_invalidate_subdata\"));\r\n\r\n  glewInfoFunc(\"glInvalidateBufferData\", glInvalidateBufferData == NULL);\r\n  glewInfoFunc(\"glInvalidateBufferSubData\", glInvalidateBufferSubData == NULL);\r\n  glewInfoFunc(\"glInvalidateFramebuffer\", glInvalidateFramebuffer == NULL);\r\n  glewInfoFunc(\"glInvalidateSubFramebuffer\", glInvalidateSubFramebuffer == NULL);\r\n  glewInfoFunc(\"glInvalidateTexImage\", glInvalidateTexImage == NULL);\r\n  glewInfoFunc(\"glInvalidateTexSubImage\", glInvalidateTexSubImage == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_invalidate_subdata */\r\n\r\n#ifdef GL_ARB_map_buffer_alignment\r\n\r\nstatic void _glewInfo_GL_ARB_map_buffer_alignment (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_map_buffer_alignment\", GLEW_ARB_map_buffer_alignment, glewIsSupported(\"GL_ARB_map_buffer_alignment\"), glewGetExtension(\"GL_ARB_map_buffer_alignment\"));\r\n}\r\n\r\n#endif /* GL_ARB_map_buffer_alignment */\r\n\r\n#ifdef GL_ARB_map_buffer_range\r\n\r\nstatic void _glewInfo_GL_ARB_map_buffer_range (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_map_buffer_range\", GLEW_ARB_map_buffer_range, glewIsSupported(\"GL_ARB_map_buffer_range\"), glewGetExtension(\"GL_ARB_map_buffer_range\"));\r\n\r\n  glewInfoFunc(\"glFlushMappedBufferRange\", glFlushMappedBufferRange == NULL);\r\n  glewInfoFunc(\"glMapBufferRange\", glMapBufferRange == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_map_buffer_range */\r\n\r\n#ifdef GL_ARB_matrix_palette\r\n\r\nstatic void _glewInfo_GL_ARB_matrix_palette (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_matrix_palette\", GLEW_ARB_matrix_palette, glewIsSupported(\"GL_ARB_matrix_palette\"), glewGetExtension(\"GL_ARB_matrix_palette\"));\r\n\r\n  glewInfoFunc(\"glCurrentPaletteMatrixARB\", glCurrentPaletteMatrixARB == NULL);\r\n  glewInfoFunc(\"glMatrixIndexPointerARB\", glMatrixIndexPointerARB == NULL);\r\n  glewInfoFunc(\"glMatrixIndexubvARB\", glMatrixIndexubvARB == NULL);\r\n  glewInfoFunc(\"glMatrixIndexuivARB\", glMatrixIndexuivARB == NULL);\r\n  glewInfoFunc(\"glMatrixIndexusvARB\", glMatrixIndexusvARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_matrix_palette */\r\n\r\n#ifdef GL_ARB_multi_bind\r\n\r\nstatic void _glewInfo_GL_ARB_multi_bind (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_multi_bind\", GLEW_ARB_multi_bind, glewIsSupported(\"GL_ARB_multi_bind\"), glewGetExtension(\"GL_ARB_multi_bind\"));\r\n\r\n  glewInfoFunc(\"glBindBuffersBase\", glBindBuffersBase == NULL);\r\n  glewInfoFunc(\"glBindBuffersRange\", glBindBuffersRange == NULL);\r\n  glewInfoFunc(\"glBindImageTextures\", glBindImageTextures == NULL);\r\n  glewInfoFunc(\"glBindSamplers\", glBindSamplers == NULL);\r\n  glewInfoFunc(\"glBindTextures\", glBindTextures == NULL);\r\n  glewInfoFunc(\"glBindVertexBuffers\", glBindVertexBuffers == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_multi_bind */\r\n\r\n#ifdef GL_ARB_multi_draw_indirect\r\n\r\nstatic void _glewInfo_GL_ARB_multi_draw_indirect (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_multi_draw_indirect\", GLEW_ARB_multi_draw_indirect, glewIsSupported(\"GL_ARB_multi_draw_indirect\"), glewGetExtension(\"GL_ARB_multi_draw_indirect\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirect\", glMultiDrawArraysIndirect == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirect\", glMultiDrawElementsIndirect == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_multi_draw_indirect */\r\n\r\n#ifdef GL_ARB_multisample\r\n\r\nstatic void _glewInfo_GL_ARB_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_multisample\", GLEW_ARB_multisample, glewIsSupported(\"GL_ARB_multisample\"), glewGetExtension(\"GL_ARB_multisample\"));\r\n\r\n  glewInfoFunc(\"glSampleCoverageARB\", glSampleCoverageARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_multisample */\r\n\r\n#ifdef GL_ARB_multitexture\r\n\r\nstatic void _glewInfo_GL_ARB_multitexture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_multitexture\", GLEW_ARB_multitexture, glewIsSupported(\"GL_ARB_multitexture\"), glewGetExtension(\"GL_ARB_multitexture\"));\r\n\r\n  glewInfoFunc(\"glActiveTextureARB\", glActiveTextureARB == NULL);\r\n  glewInfoFunc(\"glClientActiveTextureARB\", glClientActiveTextureARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1dARB\", glMultiTexCoord1dARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1dvARB\", glMultiTexCoord1dvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1fARB\", glMultiTexCoord1fARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1fvARB\", glMultiTexCoord1fvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1iARB\", glMultiTexCoord1iARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1ivARB\", glMultiTexCoord1ivARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1sARB\", glMultiTexCoord1sARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1svARB\", glMultiTexCoord1svARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2dARB\", glMultiTexCoord2dARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2dvARB\", glMultiTexCoord2dvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2fARB\", glMultiTexCoord2fARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2fvARB\", glMultiTexCoord2fvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2iARB\", glMultiTexCoord2iARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2ivARB\", glMultiTexCoord2ivARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2sARB\", glMultiTexCoord2sARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2svARB\", glMultiTexCoord2svARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3dARB\", glMultiTexCoord3dARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3dvARB\", glMultiTexCoord3dvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3fARB\", glMultiTexCoord3fARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3fvARB\", glMultiTexCoord3fvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3iARB\", glMultiTexCoord3iARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3ivARB\", glMultiTexCoord3ivARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3sARB\", glMultiTexCoord3sARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3svARB\", glMultiTexCoord3svARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4dARB\", glMultiTexCoord4dARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4dvARB\", glMultiTexCoord4dvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4fARB\", glMultiTexCoord4fARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4fvARB\", glMultiTexCoord4fvARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4iARB\", glMultiTexCoord4iARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4ivARB\", glMultiTexCoord4ivARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4sARB\", glMultiTexCoord4sARB == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4svARB\", glMultiTexCoord4svARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_multitexture */\r\n\r\n#ifdef GL_ARB_occlusion_query\r\n\r\nstatic void _glewInfo_GL_ARB_occlusion_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_occlusion_query\", GLEW_ARB_occlusion_query, glewIsSupported(\"GL_ARB_occlusion_query\"), glewGetExtension(\"GL_ARB_occlusion_query\"));\r\n\r\n  glewInfoFunc(\"glBeginQueryARB\", glBeginQueryARB == NULL);\r\n  glewInfoFunc(\"glDeleteQueriesARB\", glDeleteQueriesARB == NULL);\r\n  glewInfoFunc(\"glEndQueryARB\", glEndQueryARB == NULL);\r\n  glewInfoFunc(\"glGenQueriesARB\", glGenQueriesARB == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectivARB\", glGetQueryObjectivARB == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectuivARB\", glGetQueryObjectuivARB == NULL);\r\n  glewInfoFunc(\"glGetQueryivARB\", glGetQueryivARB == NULL);\r\n  glewInfoFunc(\"glIsQueryARB\", glIsQueryARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_occlusion_query */\r\n\r\n#ifdef GL_ARB_occlusion_query2\r\n\r\nstatic void _glewInfo_GL_ARB_occlusion_query2 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_occlusion_query2\", GLEW_ARB_occlusion_query2, glewIsSupported(\"GL_ARB_occlusion_query2\"), glewGetExtension(\"GL_ARB_occlusion_query2\"));\r\n}\r\n\r\n#endif /* GL_ARB_occlusion_query2 */\r\n\r\n#ifdef GL_ARB_parallel_shader_compile\r\n\r\nstatic void _glewInfo_GL_ARB_parallel_shader_compile (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_parallel_shader_compile\", GLEW_ARB_parallel_shader_compile, glewIsSupported(\"GL_ARB_parallel_shader_compile\"), glewGetExtension(\"GL_ARB_parallel_shader_compile\"));\r\n\r\n  glewInfoFunc(\"glMaxShaderCompilerThreadsARB\", glMaxShaderCompilerThreadsARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_parallel_shader_compile */\r\n\r\n#ifdef GL_ARB_pipeline_statistics_query\r\n\r\nstatic void _glewInfo_GL_ARB_pipeline_statistics_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_pipeline_statistics_query\", GLEW_ARB_pipeline_statistics_query, glewIsSupported(\"GL_ARB_pipeline_statistics_query\"), glewGetExtension(\"GL_ARB_pipeline_statistics_query\"));\r\n}\r\n\r\n#endif /* GL_ARB_pipeline_statistics_query */\r\n\r\n#ifdef GL_ARB_pixel_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_pixel_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_pixel_buffer_object\", GLEW_ARB_pixel_buffer_object, glewIsSupported(\"GL_ARB_pixel_buffer_object\"), glewGetExtension(\"GL_ARB_pixel_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_ARB_pixel_buffer_object */\r\n\r\n#ifdef GL_ARB_point_parameters\r\n\r\nstatic void _glewInfo_GL_ARB_point_parameters (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_point_parameters\", GLEW_ARB_point_parameters, glewIsSupported(\"GL_ARB_point_parameters\"), glewGetExtension(\"GL_ARB_point_parameters\"));\r\n\r\n  glewInfoFunc(\"glPointParameterfARB\", glPointParameterfARB == NULL);\r\n  glewInfoFunc(\"glPointParameterfvARB\", glPointParameterfvARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_point_parameters */\r\n\r\n#ifdef GL_ARB_point_sprite\r\n\r\nstatic void _glewInfo_GL_ARB_point_sprite (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_point_sprite\", GLEW_ARB_point_sprite, glewIsSupported(\"GL_ARB_point_sprite\"), glewGetExtension(\"GL_ARB_point_sprite\"));\r\n}\r\n\r\n#endif /* GL_ARB_point_sprite */\r\n\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n\r\nstatic void _glewInfo_GL_ARB_polygon_offset_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_polygon_offset_clamp\", GLEW_ARB_polygon_offset_clamp, glewIsSupported(\"GL_ARB_polygon_offset_clamp\"), glewGetExtension(\"GL_ARB_polygon_offset_clamp\"));\r\n\r\n  glewInfoFunc(\"glPolygonOffsetClamp\", glPolygonOffsetClamp == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_polygon_offset_clamp */\r\n\r\n#ifdef GL_ARB_post_depth_coverage\r\n\r\nstatic void _glewInfo_GL_ARB_post_depth_coverage (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_post_depth_coverage\", GLEW_ARB_post_depth_coverage, glewIsSupported(\"GL_ARB_post_depth_coverage\"), glewGetExtension(\"GL_ARB_post_depth_coverage\"));\r\n}\r\n\r\n#endif /* GL_ARB_post_depth_coverage */\r\n\r\n#ifdef GL_ARB_program_interface_query\r\n\r\nstatic void _glewInfo_GL_ARB_program_interface_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_program_interface_query\", GLEW_ARB_program_interface_query, glewIsSupported(\"GL_ARB_program_interface_query\"), glewGetExtension(\"GL_ARB_program_interface_query\"));\r\n\r\n  glewInfoFunc(\"glGetProgramInterfaceiv\", glGetProgramInterfaceiv == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceIndex\", glGetProgramResourceIndex == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceLocation\", glGetProgramResourceLocation == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceLocationIndex\", glGetProgramResourceLocationIndex == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceName\", glGetProgramResourceName == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceiv\", glGetProgramResourceiv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_program_interface_query */\r\n\r\n#ifdef GL_ARB_provoking_vertex\r\n\r\nstatic void _glewInfo_GL_ARB_provoking_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_provoking_vertex\", GLEW_ARB_provoking_vertex, glewIsSupported(\"GL_ARB_provoking_vertex\"), glewGetExtension(\"GL_ARB_provoking_vertex\"));\r\n\r\n  glewInfoFunc(\"glProvokingVertex\", glProvokingVertex == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_provoking_vertex */\r\n\r\n#ifdef GL_ARB_query_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_query_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_query_buffer_object\", GLEW_ARB_query_buffer_object, glewIsSupported(\"GL_ARB_query_buffer_object\"), glewGetExtension(\"GL_ARB_query_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_ARB_query_buffer_object */\r\n\r\n#ifdef GL_ARB_robust_buffer_access_behavior\r\n\r\nstatic void _glewInfo_GL_ARB_robust_buffer_access_behavior (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_robust_buffer_access_behavior\", GLEW_ARB_robust_buffer_access_behavior, glewIsSupported(\"GL_ARB_robust_buffer_access_behavior\"), glewGetExtension(\"GL_ARB_robust_buffer_access_behavior\"));\r\n}\r\n\r\n#endif /* GL_ARB_robust_buffer_access_behavior */\r\n\r\n#ifdef GL_ARB_robustness\r\n\r\nstatic void _glewInfo_GL_ARB_robustness (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_robustness\", GLEW_ARB_robustness, glewIsSupported(\"GL_ARB_robustness\"), glewGetExtension(\"GL_ARB_robustness\"));\r\n\r\n  glewInfoFunc(\"glGetGraphicsResetStatusARB\", glGetGraphicsResetStatusARB == NULL);\r\n  glewInfoFunc(\"glGetnColorTableARB\", glGetnColorTableARB == NULL);\r\n  glewInfoFunc(\"glGetnCompressedTexImageARB\", glGetnCompressedTexImageARB == NULL);\r\n  glewInfoFunc(\"glGetnConvolutionFilterARB\", glGetnConvolutionFilterARB == NULL);\r\n  glewInfoFunc(\"glGetnHistogramARB\", glGetnHistogramARB == NULL);\r\n  glewInfoFunc(\"glGetnMapdvARB\", glGetnMapdvARB == NULL);\r\n  glewInfoFunc(\"glGetnMapfvARB\", glGetnMapfvARB == NULL);\r\n  glewInfoFunc(\"glGetnMapivARB\", glGetnMapivARB == NULL);\r\n  glewInfoFunc(\"glGetnMinmaxARB\", glGetnMinmaxARB == NULL);\r\n  glewInfoFunc(\"glGetnPixelMapfvARB\", glGetnPixelMapfvARB == NULL);\r\n  glewInfoFunc(\"glGetnPixelMapuivARB\", glGetnPixelMapuivARB == NULL);\r\n  glewInfoFunc(\"glGetnPixelMapusvARB\", glGetnPixelMapusvARB == NULL);\r\n  glewInfoFunc(\"glGetnPolygonStippleARB\", glGetnPolygonStippleARB == NULL);\r\n  glewInfoFunc(\"glGetnSeparableFilterARB\", glGetnSeparableFilterARB == NULL);\r\n  glewInfoFunc(\"glGetnTexImageARB\", glGetnTexImageARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformdvARB\", glGetnUniformdvARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformfvARB\", glGetnUniformfvARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformivARB\", glGetnUniformivARB == NULL);\r\n  glewInfoFunc(\"glGetnUniformuivARB\", glGetnUniformuivARB == NULL);\r\n  glewInfoFunc(\"glReadnPixelsARB\", glReadnPixelsARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_robustness */\r\n\r\n#ifdef GL_ARB_robustness_application_isolation\r\n\r\nstatic void _glewInfo_GL_ARB_robustness_application_isolation (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_robustness_application_isolation\", GLEW_ARB_robustness_application_isolation, glewIsSupported(\"GL_ARB_robustness_application_isolation\"), glewGetExtension(\"GL_ARB_robustness_application_isolation\"));\r\n}\r\n\r\n#endif /* GL_ARB_robustness_application_isolation */\r\n\r\n#ifdef GL_ARB_robustness_share_group_isolation\r\n\r\nstatic void _glewInfo_GL_ARB_robustness_share_group_isolation (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_robustness_share_group_isolation\", GLEW_ARB_robustness_share_group_isolation, glewIsSupported(\"GL_ARB_robustness_share_group_isolation\"), glewGetExtension(\"GL_ARB_robustness_share_group_isolation\"));\r\n}\r\n\r\n#endif /* GL_ARB_robustness_share_group_isolation */\r\n\r\n#ifdef GL_ARB_sample_locations\r\n\r\nstatic void _glewInfo_GL_ARB_sample_locations (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sample_locations\", GLEW_ARB_sample_locations, glewIsSupported(\"GL_ARB_sample_locations\"), glewGetExtension(\"GL_ARB_sample_locations\"));\r\n\r\n  glewInfoFunc(\"glFramebufferSampleLocationsfvARB\", glFramebufferSampleLocationsfvARB == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferSampleLocationsfvARB\", glNamedFramebufferSampleLocationsfvARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sample_locations */\r\n\r\n#ifdef GL_ARB_sample_shading\r\n\r\nstatic void _glewInfo_GL_ARB_sample_shading (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sample_shading\", GLEW_ARB_sample_shading, glewIsSupported(\"GL_ARB_sample_shading\"), glewGetExtension(\"GL_ARB_sample_shading\"));\r\n\r\n  glewInfoFunc(\"glMinSampleShadingARB\", glMinSampleShadingARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sample_shading */\r\n\r\n#ifdef GL_ARB_sampler_objects\r\n\r\nstatic void _glewInfo_GL_ARB_sampler_objects (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sampler_objects\", GLEW_ARB_sampler_objects, glewIsSupported(\"GL_ARB_sampler_objects\"), glewGetExtension(\"GL_ARB_sampler_objects\"));\r\n\r\n  glewInfoFunc(\"glBindSampler\", glBindSampler == NULL);\r\n  glewInfoFunc(\"glDeleteSamplers\", glDeleteSamplers == NULL);\r\n  glewInfoFunc(\"glGenSamplers\", glGenSamplers == NULL);\r\n  glewInfoFunc(\"glGetSamplerParameterIiv\", glGetSamplerParameterIiv == NULL);\r\n  glewInfoFunc(\"glGetSamplerParameterIuiv\", glGetSamplerParameterIuiv == NULL);\r\n  glewInfoFunc(\"glGetSamplerParameterfv\", glGetSamplerParameterfv == NULL);\r\n  glewInfoFunc(\"glGetSamplerParameteriv\", glGetSamplerParameteriv == NULL);\r\n  glewInfoFunc(\"glIsSampler\", glIsSampler == NULL);\r\n  glewInfoFunc(\"glSamplerParameterIiv\", glSamplerParameterIiv == NULL);\r\n  glewInfoFunc(\"glSamplerParameterIuiv\", glSamplerParameterIuiv == NULL);\r\n  glewInfoFunc(\"glSamplerParameterf\", glSamplerParameterf == NULL);\r\n  glewInfoFunc(\"glSamplerParameterfv\", glSamplerParameterfv == NULL);\r\n  glewInfoFunc(\"glSamplerParameteri\", glSamplerParameteri == NULL);\r\n  glewInfoFunc(\"glSamplerParameteriv\", glSamplerParameteriv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sampler_objects */\r\n\r\n#ifdef GL_ARB_seamless_cube_map\r\n\r\nstatic void _glewInfo_GL_ARB_seamless_cube_map (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_seamless_cube_map\", GLEW_ARB_seamless_cube_map, glewIsSupported(\"GL_ARB_seamless_cube_map\"), glewGetExtension(\"GL_ARB_seamless_cube_map\"));\r\n}\r\n\r\n#endif /* GL_ARB_seamless_cube_map */\r\n\r\n#ifdef GL_ARB_seamless_cubemap_per_texture\r\n\r\nstatic void _glewInfo_GL_ARB_seamless_cubemap_per_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_seamless_cubemap_per_texture\", GLEW_ARB_seamless_cubemap_per_texture, glewIsSupported(\"GL_ARB_seamless_cubemap_per_texture\"), glewGetExtension(\"GL_ARB_seamless_cubemap_per_texture\"));\r\n}\r\n\r\n#endif /* GL_ARB_seamless_cubemap_per_texture */\r\n\r\n#ifdef GL_ARB_separate_shader_objects\r\n\r\nstatic void _glewInfo_GL_ARB_separate_shader_objects (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_separate_shader_objects\", GLEW_ARB_separate_shader_objects, glewIsSupported(\"GL_ARB_separate_shader_objects\"), glewGetExtension(\"GL_ARB_separate_shader_objects\"));\r\n\r\n  glewInfoFunc(\"glActiveShaderProgram\", glActiveShaderProgram == NULL);\r\n  glewInfoFunc(\"glBindProgramPipeline\", glBindProgramPipeline == NULL);\r\n  glewInfoFunc(\"glCreateShaderProgramv\", glCreateShaderProgramv == NULL);\r\n  glewInfoFunc(\"glDeleteProgramPipelines\", glDeleteProgramPipelines == NULL);\r\n  glewInfoFunc(\"glGenProgramPipelines\", glGenProgramPipelines == NULL);\r\n  glewInfoFunc(\"glGetProgramPipelineInfoLog\", glGetProgramPipelineInfoLog == NULL);\r\n  glewInfoFunc(\"glGetProgramPipelineiv\", glGetProgramPipelineiv == NULL);\r\n  glewInfoFunc(\"glIsProgramPipeline\", glIsProgramPipeline == NULL);\r\n  glewInfoFunc(\"glProgramUniform1d\", glProgramUniform1d == NULL);\r\n  glewInfoFunc(\"glProgramUniform1dv\", glProgramUniform1dv == NULL);\r\n  glewInfoFunc(\"glProgramUniform1f\", glProgramUniform1f == NULL);\r\n  glewInfoFunc(\"glProgramUniform1fv\", glProgramUniform1fv == NULL);\r\n  glewInfoFunc(\"glProgramUniform1i\", glProgramUniform1i == NULL);\r\n  glewInfoFunc(\"glProgramUniform1iv\", glProgramUniform1iv == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ui\", glProgramUniform1ui == NULL);\r\n  glewInfoFunc(\"glProgramUniform1uiv\", glProgramUniform1uiv == NULL);\r\n  glewInfoFunc(\"glProgramUniform2d\", glProgramUniform2d == NULL);\r\n  glewInfoFunc(\"glProgramUniform2dv\", glProgramUniform2dv == NULL);\r\n  glewInfoFunc(\"glProgramUniform2f\", glProgramUniform2f == NULL);\r\n  glewInfoFunc(\"glProgramUniform2fv\", glProgramUniform2fv == NULL);\r\n  glewInfoFunc(\"glProgramUniform2i\", glProgramUniform2i == NULL);\r\n  glewInfoFunc(\"glProgramUniform2iv\", glProgramUniform2iv == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ui\", glProgramUniform2ui == NULL);\r\n  glewInfoFunc(\"glProgramUniform2uiv\", glProgramUniform2uiv == NULL);\r\n  glewInfoFunc(\"glProgramUniform3d\", glProgramUniform3d == NULL);\r\n  glewInfoFunc(\"glProgramUniform3dv\", glProgramUniform3dv == NULL);\r\n  glewInfoFunc(\"glProgramUniform3f\", glProgramUniform3f == NULL);\r\n  glewInfoFunc(\"glProgramUniform3fv\", glProgramUniform3fv == NULL);\r\n  glewInfoFunc(\"glProgramUniform3i\", glProgramUniform3i == NULL);\r\n  glewInfoFunc(\"glProgramUniform3iv\", glProgramUniform3iv == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ui\", glProgramUniform3ui == NULL);\r\n  glewInfoFunc(\"glProgramUniform3uiv\", glProgramUniform3uiv == NULL);\r\n  glewInfoFunc(\"glProgramUniform4d\", glProgramUniform4d == NULL);\r\n  glewInfoFunc(\"glProgramUniform4dv\", glProgramUniform4dv == NULL);\r\n  glewInfoFunc(\"glProgramUniform4f\", glProgramUniform4f == NULL);\r\n  glewInfoFunc(\"glProgramUniform4fv\", glProgramUniform4fv == NULL);\r\n  glewInfoFunc(\"glProgramUniform4i\", glProgramUniform4i == NULL);\r\n  glewInfoFunc(\"glProgramUniform4iv\", glProgramUniform4iv == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ui\", glProgramUniform4ui == NULL);\r\n  glewInfoFunc(\"glProgramUniform4uiv\", glProgramUniform4uiv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2dv\", glProgramUniformMatrix2dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2fv\", glProgramUniformMatrix2fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x3dv\", glProgramUniformMatrix2x3dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x3fv\", glProgramUniformMatrix2x3fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x4dv\", glProgramUniformMatrix2x4dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x4fv\", glProgramUniformMatrix2x4fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3dv\", glProgramUniformMatrix3dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3fv\", glProgramUniformMatrix3fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x2dv\", glProgramUniformMatrix3x2dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x2fv\", glProgramUniformMatrix3x2fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x4dv\", glProgramUniformMatrix3x4dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x4fv\", glProgramUniformMatrix3x4fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4dv\", glProgramUniformMatrix4dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4fv\", glProgramUniformMatrix4fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x2dv\", glProgramUniformMatrix4x2dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x2fv\", glProgramUniformMatrix4x2fv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x3dv\", glProgramUniformMatrix4x3dv == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x3fv\", glProgramUniformMatrix4x3fv == NULL);\r\n  glewInfoFunc(\"glUseProgramStages\", glUseProgramStages == NULL);\r\n  glewInfoFunc(\"glValidateProgramPipeline\", glValidateProgramPipeline == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_separate_shader_objects */\r\n\r\n#ifdef GL_ARB_shader_atomic_counter_ops\r\n\r\nstatic void _glewInfo_GL_ARB_shader_atomic_counter_ops (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_atomic_counter_ops\", GLEW_ARB_shader_atomic_counter_ops, glewIsSupported(\"GL_ARB_shader_atomic_counter_ops\"), glewGetExtension(\"GL_ARB_shader_atomic_counter_ops\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_atomic_counter_ops */\r\n\r\n#ifdef GL_ARB_shader_atomic_counters\r\n\r\nstatic void _glewInfo_GL_ARB_shader_atomic_counters (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_atomic_counters\", GLEW_ARB_shader_atomic_counters, glewIsSupported(\"GL_ARB_shader_atomic_counters\"), glewGetExtension(\"GL_ARB_shader_atomic_counters\"));\r\n\r\n  glewInfoFunc(\"glGetActiveAtomicCounterBufferiv\", glGetActiveAtomicCounterBufferiv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shader_atomic_counters */\r\n\r\n#ifdef GL_ARB_shader_ballot\r\n\r\nstatic void _glewInfo_GL_ARB_shader_ballot (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_ballot\", GLEW_ARB_shader_ballot, glewIsSupported(\"GL_ARB_shader_ballot\"), glewGetExtension(\"GL_ARB_shader_ballot\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_ballot */\r\n\r\n#ifdef GL_ARB_shader_bit_encoding\r\n\r\nstatic void _glewInfo_GL_ARB_shader_bit_encoding (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_bit_encoding\", GLEW_ARB_shader_bit_encoding, glewIsSupported(\"GL_ARB_shader_bit_encoding\"), glewGetExtension(\"GL_ARB_shader_bit_encoding\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_bit_encoding */\r\n\r\n#ifdef GL_ARB_shader_clock\r\n\r\nstatic void _glewInfo_GL_ARB_shader_clock (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_clock\", GLEW_ARB_shader_clock, glewIsSupported(\"GL_ARB_shader_clock\"), glewGetExtension(\"GL_ARB_shader_clock\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_clock */\r\n\r\n#ifdef GL_ARB_shader_draw_parameters\r\n\r\nstatic void _glewInfo_GL_ARB_shader_draw_parameters (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_draw_parameters\", GLEW_ARB_shader_draw_parameters, glewIsSupported(\"GL_ARB_shader_draw_parameters\"), glewGetExtension(\"GL_ARB_shader_draw_parameters\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_draw_parameters */\r\n\r\n#ifdef GL_ARB_shader_group_vote\r\n\r\nstatic void _glewInfo_GL_ARB_shader_group_vote (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_group_vote\", GLEW_ARB_shader_group_vote, glewIsSupported(\"GL_ARB_shader_group_vote\"), glewGetExtension(\"GL_ARB_shader_group_vote\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_group_vote */\r\n\r\n#ifdef GL_ARB_shader_image_load_store\r\n\r\nstatic void _glewInfo_GL_ARB_shader_image_load_store (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_image_load_store\", GLEW_ARB_shader_image_load_store, glewIsSupported(\"GL_ARB_shader_image_load_store\"), glewGetExtension(\"GL_ARB_shader_image_load_store\"));\r\n\r\n  glewInfoFunc(\"glBindImageTexture\", glBindImageTexture == NULL);\r\n  glewInfoFunc(\"glMemoryBarrier\", glMemoryBarrier == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shader_image_load_store */\r\n\r\n#ifdef GL_ARB_shader_image_size\r\n\r\nstatic void _glewInfo_GL_ARB_shader_image_size (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_image_size\", GLEW_ARB_shader_image_size, glewIsSupported(\"GL_ARB_shader_image_size\"), glewGetExtension(\"GL_ARB_shader_image_size\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_image_size */\r\n\r\n#ifdef GL_ARB_shader_objects\r\n\r\nstatic void _glewInfo_GL_ARB_shader_objects (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_objects\", GLEW_ARB_shader_objects, glewIsSupported(\"GL_ARB_shader_objects\"), glewGetExtension(\"GL_ARB_shader_objects\"));\r\n\r\n  glewInfoFunc(\"glAttachObjectARB\", glAttachObjectARB == NULL);\r\n  glewInfoFunc(\"glCompileShaderARB\", glCompileShaderARB == NULL);\r\n  glewInfoFunc(\"glCreateProgramObjectARB\", glCreateProgramObjectARB == NULL);\r\n  glewInfoFunc(\"glCreateShaderObjectARB\", glCreateShaderObjectARB == NULL);\r\n  glewInfoFunc(\"glDeleteObjectARB\", glDeleteObjectARB == NULL);\r\n  glewInfoFunc(\"glDetachObjectARB\", glDetachObjectARB == NULL);\r\n  glewInfoFunc(\"glGetActiveUniformARB\", glGetActiveUniformARB == NULL);\r\n  glewInfoFunc(\"glGetAttachedObjectsARB\", glGetAttachedObjectsARB == NULL);\r\n  glewInfoFunc(\"glGetHandleARB\", glGetHandleARB == NULL);\r\n  glewInfoFunc(\"glGetInfoLogARB\", glGetInfoLogARB == NULL);\r\n  glewInfoFunc(\"glGetObjectParameterfvARB\", glGetObjectParameterfvARB == NULL);\r\n  glewInfoFunc(\"glGetObjectParameterivARB\", glGetObjectParameterivARB == NULL);\r\n  glewInfoFunc(\"glGetShaderSourceARB\", glGetShaderSourceARB == NULL);\r\n  glewInfoFunc(\"glGetUniformLocationARB\", glGetUniformLocationARB == NULL);\r\n  glewInfoFunc(\"glGetUniformfvARB\", glGetUniformfvARB == NULL);\r\n  glewInfoFunc(\"glGetUniformivARB\", glGetUniformivARB == NULL);\r\n  glewInfoFunc(\"glLinkProgramARB\", glLinkProgramARB == NULL);\r\n  glewInfoFunc(\"glShaderSourceARB\", glShaderSourceARB == NULL);\r\n  glewInfoFunc(\"glUniform1fARB\", glUniform1fARB == NULL);\r\n  glewInfoFunc(\"glUniform1fvARB\", glUniform1fvARB == NULL);\r\n  glewInfoFunc(\"glUniform1iARB\", glUniform1iARB == NULL);\r\n  glewInfoFunc(\"glUniform1ivARB\", glUniform1ivARB == NULL);\r\n  glewInfoFunc(\"glUniform2fARB\", glUniform2fARB == NULL);\r\n  glewInfoFunc(\"glUniform2fvARB\", glUniform2fvARB == NULL);\r\n  glewInfoFunc(\"glUniform2iARB\", glUniform2iARB == NULL);\r\n  glewInfoFunc(\"glUniform2ivARB\", glUniform2ivARB == NULL);\r\n  glewInfoFunc(\"glUniform3fARB\", glUniform3fARB == NULL);\r\n  glewInfoFunc(\"glUniform3fvARB\", glUniform3fvARB == NULL);\r\n  glewInfoFunc(\"glUniform3iARB\", glUniform3iARB == NULL);\r\n  glewInfoFunc(\"glUniform3ivARB\", glUniform3ivARB == NULL);\r\n  glewInfoFunc(\"glUniform4fARB\", glUniform4fARB == NULL);\r\n  glewInfoFunc(\"glUniform4fvARB\", glUniform4fvARB == NULL);\r\n  glewInfoFunc(\"glUniform4iARB\", glUniform4iARB == NULL);\r\n  glewInfoFunc(\"glUniform4ivARB\", glUniform4ivARB == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2fvARB\", glUniformMatrix2fvARB == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3fvARB\", glUniformMatrix3fvARB == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4fvARB\", glUniformMatrix4fvARB == NULL);\r\n  glewInfoFunc(\"glUseProgramObjectARB\", glUseProgramObjectARB == NULL);\r\n  glewInfoFunc(\"glValidateProgramARB\", glValidateProgramARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shader_objects */\r\n\r\n#ifdef GL_ARB_shader_precision\r\n\r\nstatic void _glewInfo_GL_ARB_shader_precision (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_precision\", GLEW_ARB_shader_precision, glewIsSupported(\"GL_ARB_shader_precision\"), glewGetExtension(\"GL_ARB_shader_precision\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_precision */\r\n\r\n#ifdef GL_ARB_shader_stencil_export\r\n\r\nstatic void _glewInfo_GL_ARB_shader_stencil_export (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_stencil_export\", GLEW_ARB_shader_stencil_export, glewIsSupported(\"GL_ARB_shader_stencil_export\"), glewGetExtension(\"GL_ARB_shader_stencil_export\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_stencil_export */\r\n\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_shader_storage_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_storage_buffer_object\", GLEW_ARB_shader_storage_buffer_object, glewIsSupported(\"GL_ARB_shader_storage_buffer_object\"), glewGetExtension(\"GL_ARB_shader_storage_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glShaderStorageBlockBinding\", glShaderStorageBlockBinding == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shader_storage_buffer_object */\r\n\r\n#ifdef GL_ARB_shader_subroutine\r\n\r\nstatic void _glewInfo_GL_ARB_shader_subroutine (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_subroutine\", GLEW_ARB_shader_subroutine, glewIsSupported(\"GL_ARB_shader_subroutine\"), glewGetExtension(\"GL_ARB_shader_subroutine\"));\r\n\r\n  glewInfoFunc(\"glGetActiveSubroutineName\", glGetActiveSubroutineName == NULL);\r\n  glewInfoFunc(\"glGetActiveSubroutineUniformName\", glGetActiveSubroutineUniformName == NULL);\r\n  glewInfoFunc(\"glGetActiveSubroutineUniformiv\", glGetActiveSubroutineUniformiv == NULL);\r\n  glewInfoFunc(\"glGetProgramStageiv\", glGetProgramStageiv == NULL);\r\n  glewInfoFunc(\"glGetSubroutineIndex\", glGetSubroutineIndex == NULL);\r\n  glewInfoFunc(\"glGetSubroutineUniformLocation\", glGetSubroutineUniformLocation == NULL);\r\n  glewInfoFunc(\"glGetUniformSubroutineuiv\", glGetUniformSubroutineuiv == NULL);\r\n  glewInfoFunc(\"glUniformSubroutinesuiv\", glUniformSubroutinesuiv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shader_subroutine */\r\n\r\n#ifdef GL_ARB_shader_texture_image_samples\r\n\r\nstatic void _glewInfo_GL_ARB_shader_texture_image_samples (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_texture_image_samples\", GLEW_ARB_shader_texture_image_samples, glewIsSupported(\"GL_ARB_shader_texture_image_samples\"), glewGetExtension(\"GL_ARB_shader_texture_image_samples\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_texture_image_samples */\r\n\r\n#ifdef GL_ARB_shader_texture_lod\r\n\r\nstatic void _glewInfo_GL_ARB_shader_texture_lod (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_texture_lod\", GLEW_ARB_shader_texture_lod, glewIsSupported(\"GL_ARB_shader_texture_lod\"), glewGetExtension(\"GL_ARB_shader_texture_lod\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_texture_lod */\r\n\r\n#ifdef GL_ARB_shader_viewport_layer_array\r\n\r\nstatic void _glewInfo_GL_ARB_shader_viewport_layer_array (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shader_viewport_layer_array\", GLEW_ARB_shader_viewport_layer_array, glewIsSupported(\"GL_ARB_shader_viewport_layer_array\"), glewGetExtension(\"GL_ARB_shader_viewport_layer_array\"));\r\n}\r\n\r\n#endif /* GL_ARB_shader_viewport_layer_array */\r\n\r\n#ifdef GL_ARB_shading_language_100\r\n\r\nstatic void _glewInfo_GL_ARB_shading_language_100 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shading_language_100\", GLEW_ARB_shading_language_100, glewIsSupported(\"GL_ARB_shading_language_100\"), glewGetExtension(\"GL_ARB_shading_language_100\"));\r\n}\r\n\r\n#endif /* GL_ARB_shading_language_100 */\r\n\r\n#ifdef GL_ARB_shading_language_420pack\r\n\r\nstatic void _glewInfo_GL_ARB_shading_language_420pack (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shading_language_420pack\", GLEW_ARB_shading_language_420pack, glewIsSupported(\"GL_ARB_shading_language_420pack\"), glewGetExtension(\"GL_ARB_shading_language_420pack\"));\r\n}\r\n\r\n#endif /* GL_ARB_shading_language_420pack */\r\n\r\n#ifdef GL_ARB_shading_language_include\r\n\r\nstatic void _glewInfo_GL_ARB_shading_language_include (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shading_language_include\", GLEW_ARB_shading_language_include, glewIsSupported(\"GL_ARB_shading_language_include\"), glewGetExtension(\"GL_ARB_shading_language_include\"));\r\n\r\n  glewInfoFunc(\"glCompileShaderIncludeARB\", glCompileShaderIncludeARB == NULL);\r\n  glewInfoFunc(\"glDeleteNamedStringARB\", glDeleteNamedStringARB == NULL);\r\n  glewInfoFunc(\"glGetNamedStringARB\", glGetNamedStringARB == NULL);\r\n  glewInfoFunc(\"glGetNamedStringivARB\", glGetNamedStringivARB == NULL);\r\n  glewInfoFunc(\"glIsNamedStringARB\", glIsNamedStringARB == NULL);\r\n  glewInfoFunc(\"glNamedStringARB\", glNamedStringARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_shading_language_include */\r\n\r\n#ifdef GL_ARB_shading_language_packing\r\n\r\nstatic void _glewInfo_GL_ARB_shading_language_packing (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shading_language_packing\", GLEW_ARB_shading_language_packing, glewIsSupported(\"GL_ARB_shading_language_packing\"), glewGetExtension(\"GL_ARB_shading_language_packing\"));\r\n}\r\n\r\n#endif /* GL_ARB_shading_language_packing */\r\n\r\n#ifdef GL_ARB_shadow\r\n\r\nstatic void _glewInfo_GL_ARB_shadow (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shadow\", GLEW_ARB_shadow, glewIsSupported(\"GL_ARB_shadow\"), glewGetExtension(\"GL_ARB_shadow\"));\r\n}\r\n\r\n#endif /* GL_ARB_shadow */\r\n\r\n#ifdef GL_ARB_shadow_ambient\r\n\r\nstatic void _glewInfo_GL_ARB_shadow_ambient (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_shadow_ambient\", GLEW_ARB_shadow_ambient, glewIsSupported(\"GL_ARB_shadow_ambient\"), glewGetExtension(\"GL_ARB_shadow_ambient\"));\r\n}\r\n\r\n#endif /* GL_ARB_shadow_ambient */\r\n\r\n#ifdef GL_ARB_sparse_buffer\r\n\r\nstatic void _glewInfo_GL_ARB_sparse_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sparse_buffer\", GLEW_ARB_sparse_buffer, glewIsSupported(\"GL_ARB_sparse_buffer\"), glewGetExtension(\"GL_ARB_sparse_buffer\"));\r\n\r\n  glewInfoFunc(\"glBufferPageCommitmentARB\", glBufferPageCommitmentARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sparse_buffer */\r\n\r\n#ifdef GL_ARB_sparse_texture\r\n\r\nstatic void _glewInfo_GL_ARB_sparse_texture (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sparse_texture\", GLEW_ARB_sparse_texture, glewIsSupported(\"GL_ARB_sparse_texture\"), glewGetExtension(\"GL_ARB_sparse_texture\"));\r\n\r\n  glewInfoFunc(\"glTexPageCommitmentARB\", glTexPageCommitmentARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sparse_texture */\r\n\r\n#ifdef GL_ARB_sparse_texture2\r\n\r\nstatic void _glewInfo_GL_ARB_sparse_texture2 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sparse_texture2\", GLEW_ARB_sparse_texture2, glewIsSupported(\"GL_ARB_sparse_texture2\"), glewGetExtension(\"GL_ARB_sparse_texture2\"));\r\n}\r\n\r\n#endif /* GL_ARB_sparse_texture2 */\r\n\r\n#ifdef GL_ARB_sparse_texture_clamp\r\n\r\nstatic void _glewInfo_GL_ARB_sparse_texture_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sparse_texture_clamp\", GLEW_ARB_sparse_texture_clamp, glewIsSupported(\"GL_ARB_sparse_texture_clamp\"), glewGetExtension(\"GL_ARB_sparse_texture_clamp\"));\r\n}\r\n\r\n#endif /* GL_ARB_sparse_texture_clamp */\r\n\r\n#ifdef GL_ARB_spirv_extensions\r\n\r\nstatic void _glewInfo_GL_ARB_spirv_extensions (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_spirv_extensions\", GLEW_ARB_spirv_extensions, glewIsSupported(\"GL_ARB_spirv_extensions\"), glewGetExtension(\"GL_ARB_spirv_extensions\"));\r\n}\r\n\r\n#endif /* GL_ARB_spirv_extensions */\r\n\r\n#ifdef GL_ARB_stencil_texturing\r\n\r\nstatic void _glewInfo_GL_ARB_stencil_texturing (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_stencil_texturing\", GLEW_ARB_stencil_texturing, glewIsSupported(\"GL_ARB_stencil_texturing\"), glewGetExtension(\"GL_ARB_stencil_texturing\"));\r\n}\r\n\r\n#endif /* GL_ARB_stencil_texturing */\r\n\r\n#ifdef GL_ARB_sync\r\n\r\nstatic void _glewInfo_GL_ARB_sync (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_sync\", GLEW_ARB_sync, glewIsSupported(\"GL_ARB_sync\"), glewGetExtension(\"GL_ARB_sync\"));\r\n\r\n  glewInfoFunc(\"glClientWaitSync\", glClientWaitSync == NULL);\r\n  glewInfoFunc(\"glDeleteSync\", glDeleteSync == NULL);\r\n  glewInfoFunc(\"glFenceSync\", glFenceSync == NULL);\r\n  glewInfoFunc(\"glGetInteger64v\", glGetInteger64v == NULL);\r\n  glewInfoFunc(\"glGetSynciv\", glGetSynciv == NULL);\r\n  glewInfoFunc(\"glIsSync\", glIsSync == NULL);\r\n  glewInfoFunc(\"glWaitSync\", glWaitSync == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_sync */\r\n\r\n#ifdef GL_ARB_tessellation_shader\r\n\r\nstatic void _glewInfo_GL_ARB_tessellation_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_tessellation_shader\", GLEW_ARB_tessellation_shader, glewIsSupported(\"GL_ARB_tessellation_shader\"), glewGetExtension(\"GL_ARB_tessellation_shader\"));\r\n\r\n  glewInfoFunc(\"glPatchParameterfv\", glPatchParameterfv == NULL);\r\n  glewInfoFunc(\"glPatchParameteri\", glPatchParameteri == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_tessellation_shader */\r\n\r\n#ifdef GL_ARB_texture_barrier\r\n\r\nstatic void _glewInfo_GL_ARB_texture_barrier (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_barrier\", GLEW_ARB_texture_barrier, glewIsSupported(\"GL_ARB_texture_barrier\"), glewGetExtension(\"GL_ARB_texture_barrier\"));\r\n\r\n  glewInfoFunc(\"glTextureBarrier\", glTextureBarrier == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_barrier */\r\n\r\n#ifdef GL_ARB_texture_border_clamp\r\n\r\nstatic void _glewInfo_GL_ARB_texture_border_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_border_clamp\", GLEW_ARB_texture_border_clamp, glewIsSupported(\"GL_ARB_texture_border_clamp\"), glewGetExtension(\"GL_ARB_texture_border_clamp\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_border_clamp */\r\n\r\n#ifdef GL_ARB_texture_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_texture_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_buffer_object\", GLEW_ARB_texture_buffer_object, glewIsSupported(\"GL_ARB_texture_buffer_object\"), glewGetExtension(\"GL_ARB_texture_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glTexBufferARB\", glTexBufferARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_buffer_object */\r\n\r\n#ifdef GL_ARB_texture_buffer_object_rgb32\r\n\r\nstatic void _glewInfo_GL_ARB_texture_buffer_object_rgb32 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_buffer_object_rgb32\", GLEW_ARB_texture_buffer_object_rgb32, glewIsSupported(\"GL_ARB_texture_buffer_object_rgb32\"), glewGetExtension(\"GL_ARB_texture_buffer_object_rgb32\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_buffer_object_rgb32 */\r\n\r\n#ifdef GL_ARB_texture_buffer_range\r\n\r\nstatic void _glewInfo_GL_ARB_texture_buffer_range (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_buffer_range\", GLEW_ARB_texture_buffer_range, glewIsSupported(\"GL_ARB_texture_buffer_range\"), glewGetExtension(\"GL_ARB_texture_buffer_range\"));\r\n\r\n  glewInfoFunc(\"glTexBufferRange\", glTexBufferRange == NULL);\r\n  glewInfoFunc(\"glTextureBufferRangeEXT\", glTextureBufferRangeEXT == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_buffer_range */\r\n\r\n#ifdef GL_ARB_texture_compression\r\n\r\nstatic void _glewInfo_GL_ARB_texture_compression (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_compression\", GLEW_ARB_texture_compression, glewIsSupported(\"GL_ARB_texture_compression\"), glewGetExtension(\"GL_ARB_texture_compression\"));\r\n\r\n  glewInfoFunc(\"glCompressedTexImage1DARB\", glCompressedTexImage1DARB == NULL);\r\n  glewInfoFunc(\"glCompressedTexImage2DARB\", glCompressedTexImage2DARB == NULL);\r\n  glewInfoFunc(\"glCompressedTexImage3DARB\", glCompressedTexImage3DARB == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage1DARB\", glCompressedTexSubImage1DARB == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage2DARB\", glCompressedTexSubImage2DARB == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage3DARB\", glCompressedTexSubImage3DARB == NULL);\r\n  glewInfoFunc(\"glGetCompressedTexImageARB\", glGetCompressedTexImageARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_compression */\r\n\r\n#ifdef GL_ARB_texture_compression_bptc\r\n\r\nstatic void _glewInfo_GL_ARB_texture_compression_bptc (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_compression_bptc\", GLEW_ARB_texture_compression_bptc, glewIsSupported(\"GL_ARB_texture_compression_bptc\"), glewGetExtension(\"GL_ARB_texture_compression_bptc\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_compression_bptc */\r\n\r\n#ifdef GL_ARB_texture_compression_rgtc\r\n\r\nstatic void _glewInfo_GL_ARB_texture_compression_rgtc (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_compression_rgtc\", GLEW_ARB_texture_compression_rgtc, glewIsSupported(\"GL_ARB_texture_compression_rgtc\"), glewGetExtension(\"GL_ARB_texture_compression_rgtc\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_compression_rgtc */\r\n\r\n#ifdef GL_ARB_texture_cube_map\r\n\r\nstatic void _glewInfo_GL_ARB_texture_cube_map (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_cube_map\", GLEW_ARB_texture_cube_map, glewIsSupported(\"GL_ARB_texture_cube_map\"), glewGetExtension(\"GL_ARB_texture_cube_map\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_cube_map */\r\n\r\n#ifdef GL_ARB_texture_cube_map_array\r\n\r\nstatic void _glewInfo_GL_ARB_texture_cube_map_array (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_cube_map_array\", GLEW_ARB_texture_cube_map_array, glewIsSupported(\"GL_ARB_texture_cube_map_array\"), glewGetExtension(\"GL_ARB_texture_cube_map_array\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_cube_map_array */\r\n\r\n#ifdef GL_ARB_texture_env_add\r\n\r\nstatic void _glewInfo_GL_ARB_texture_env_add (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_env_add\", GLEW_ARB_texture_env_add, glewIsSupported(\"GL_ARB_texture_env_add\"), glewGetExtension(\"GL_ARB_texture_env_add\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_env_add */\r\n\r\n#ifdef GL_ARB_texture_env_combine\r\n\r\nstatic void _glewInfo_GL_ARB_texture_env_combine (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_env_combine\", GLEW_ARB_texture_env_combine, glewIsSupported(\"GL_ARB_texture_env_combine\"), glewGetExtension(\"GL_ARB_texture_env_combine\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_env_combine */\r\n\r\n#ifdef GL_ARB_texture_env_crossbar\r\n\r\nstatic void _glewInfo_GL_ARB_texture_env_crossbar (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_env_crossbar\", GLEW_ARB_texture_env_crossbar, glewIsSupported(\"GL_ARB_texture_env_crossbar\"), glewGetExtension(\"GL_ARB_texture_env_crossbar\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_env_crossbar */\r\n\r\n#ifdef GL_ARB_texture_env_dot3\r\n\r\nstatic void _glewInfo_GL_ARB_texture_env_dot3 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_env_dot3\", GLEW_ARB_texture_env_dot3, glewIsSupported(\"GL_ARB_texture_env_dot3\"), glewGetExtension(\"GL_ARB_texture_env_dot3\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_env_dot3 */\r\n\r\n#ifdef GL_ARB_texture_filter_anisotropic\r\n\r\nstatic void _glewInfo_GL_ARB_texture_filter_anisotropic (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_filter_anisotropic\", GLEW_ARB_texture_filter_anisotropic, glewIsSupported(\"GL_ARB_texture_filter_anisotropic\"), glewGetExtension(\"GL_ARB_texture_filter_anisotropic\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_filter_anisotropic */\r\n\r\n#ifdef GL_ARB_texture_filter_minmax\r\n\r\nstatic void _glewInfo_GL_ARB_texture_filter_minmax (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_filter_minmax\", GLEW_ARB_texture_filter_minmax, glewIsSupported(\"GL_ARB_texture_filter_minmax\"), glewGetExtension(\"GL_ARB_texture_filter_minmax\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_filter_minmax */\r\n\r\n#ifdef GL_ARB_texture_float\r\n\r\nstatic void _glewInfo_GL_ARB_texture_float (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_float\", GLEW_ARB_texture_float, glewIsSupported(\"GL_ARB_texture_float\"), glewGetExtension(\"GL_ARB_texture_float\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_float */\r\n\r\n#ifdef GL_ARB_texture_gather\r\n\r\nstatic void _glewInfo_GL_ARB_texture_gather (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_gather\", GLEW_ARB_texture_gather, glewIsSupported(\"GL_ARB_texture_gather\"), glewGetExtension(\"GL_ARB_texture_gather\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_gather */\r\n\r\n#ifdef GL_ARB_texture_mirror_clamp_to_edge\r\n\r\nstatic void _glewInfo_GL_ARB_texture_mirror_clamp_to_edge (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_mirror_clamp_to_edge\", GLEW_ARB_texture_mirror_clamp_to_edge, glewIsSupported(\"GL_ARB_texture_mirror_clamp_to_edge\"), glewGetExtension(\"GL_ARB_texture_mirror_clamp_to_edge\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_mirror_clamp_to_edge */\r\n\r\n#ifdef GL_ARB_texture_mirrored_repeat\r\n\r\nstatic void _glewInfo_GL_ARB_texture_mirrored_repeat (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_mirrored_repeat\", GLEW_ARB_texture_mirrored_repeat, glewIsSupported(\"GL_ARB_texture_mirrored_repeat\"), glewGetExtension(\"GL_ARB_texture_mirrored_repeat\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_mirrored_repeat */\r\n\r\n#ifdef GL_ARB_texture_multisample\r\n\r\nstatic void _glewInfo_GL_ARB_texture_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_multisample\", GLEW_ARB_texture_multisample, glewIsSupported(\"GL_ARB_texture_multisample\"), glewGetExtension(\"GL_ARB_texture_multisample\"));\r\n\r\n  glewInfoFunc(\"glGetMultisamplefv\", glGetMultisamplefv == NULL);\r\n  glewInfoFunc(\"glSampleMaski\", glSampleMaski == NULL);\r\n  glewInfoFunc(\"glTexImage2DMultisample\", glTexImage2DMultisample == NULL);\r\n  glewInfoFunc(\"glTexImage3DMultisample\", glTexImage3DMultisample == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_multisample */\r\n\r\n#ifdef GL_ARB_texture_non_power_of_two\r\n\r\nstatic void _glewInfo_GL_ARB_texture_non_power_of_two (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_non_power_of_two\", GLEW_ARB_texture_non_power_of_two, glewIsSupported(\"GL_ARB_texture_non_power_of_two\"), glewGetExtension(\"GL_ARB_texture_non_power_of_two\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_non_power_of_two */\r\n\r\n#ifdef GL_ARB_texture_query_levels\r\n\r\nstatic void _glewInfo_GL_ARB_texture_query_levels (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_query_levels\", GLEW_ARB_texture_query_levels, glewIsSupported(\"GL_ARB_texture_query_levels\"), glewGetExtension(\"GL_ARB_texture_query_levels\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_query_levels */\r\n\r\n#ifdef GL_ARB_texture_query_lod\r\n\r\nstatic void _glewInfo_GL_ARB_texture_query_lod (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_query_lod\", GLEW_ARB_texture_query_lod, glewIsSupported(\"GL_ARB_texture_query_lod\"), glewGetExtension(\"GL_ARB_texture_query_lod\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_query_lod */\r\n\r\n#ifdef GL_ARB_texture_rectangle\r\n\r\nstatic void _glewInfo_GL_ARB_texture_rectangle (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_rectangle\", GLEW_ARB_texture_rectangle, glewIsSupported(\"GL_ARB_texture_rectangle\"), glewGetExtension(\"GL_ARB_texture_rectangle\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_rectangle */\r\n\r\n#ifdef GL_ARB_texture_rg\r\n\r\nstatic void _glewInfo_GL_ARB_texture_rg (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_rg\", GLEW_ARB_texture_rg, glewIsSupported(\"GL_ARB_texture_rg\"), glewGetExtension(\"GL_ARB_texture_rg\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_rg */\r\n\r\n#ifdef GL_ARB_texture_rgb10_a2ui\r\n\r\nstatic void _glewInfo_GL_ARB_texture_rgb10_a2ui (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_rgb10_a2ui\", GLEW_ARB_texture_rgb10_a2ui, glewIsSupported(\"GL_ARB_texture_rgb10_a2ui\"), glewGetExtension(\"GL_ARB_texture_rgb10_a2ui\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_rgb10_a2ui */\r\n\r\n#ifdef GL_ARB_texture_stencil8\r\n\r\nstatic void _glewInfo_GL_ARB_texture_stencil8 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_stencil8\", GLEW_ARB_texture_stencil8, glewIsSupported(\"GL_ARB_texture_stencil8\"), glewGetExtension(\"GL_ARB_texture_stencil8\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_stencil8 */\r\n\r\n#ifdef GL_ARB_texture_storage\r\n\r\nstatic void _glewInfo_GL_ARB_texture_storage (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_storage\", GLEW_ARB_texture_storage, glewIsSupported(\"GL_ARB_texture_storage\"), glewGetExtension(\"GL_ARB_texture_storage\"));\r\n\r\n  glewInfoFunc(\"glTexStorage1D\", glTexStorage1D == NULL);\r\n  glewInfoFunc(\"glTexStorage2D\", glTexStorage2D == NULL);\r\n  glewInfoFunc(\"glTexStorage3D\", glTexStorage3D == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_storage */\r\n\r\n#ifdef GL_ARB_texture_storage_multisample\r\n\r\nstatic void _glewInfo_GL_ARB_texture_storage_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_storage_multisample\", GLEW_ARB_texture_storage_multisample, glewIsSupported(\"GL_ARB_texture_storage_multisample\"), glewGetExtension(\"GL_ARB_texture_storage_multisample\"));\r\n\r\n  glewInfoFunc(\"glTexStorage2DMultisample\", glTexStorage2DMultisample == NULL);\r\n  glewInfoFunc(\"glTexStorage3DMultisample\", glTexStorage3DMultisample == NULL);\r\n  glewInfoFunc(\"glTextureStorage2DMultisampleEXT\", glTextureStorage2DMultisampleEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorage3DMultisampleEXT\", glTextureStorage3DMultisampleEXT == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_storage_multisample */\r\n\r\n#ifdef GL_ARB_texture_swizzle\r\n\r\nstatic void _glewInfo_GL_ARB_texture_swizzle (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_swizzle\", GLEW_ARB_texture_swizzle, glewIsSupported(\"GL_ARB_texture_swizzle\"), glewGetExtension(\"GL_ARB_texture_swizzle\"));\r\n}\r\n\r\n#endif /* GL_ARB_texture_swizzle */\r\n\r\n#ifdef GL_ARB_texture_view\r\n\r\nstatic void _glewInfo_GL_ARB_texture_view (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_texture_view\", GLEW_ARB_texture_view, glewIsSupported(\"GL_ARB_texture_view\"), glewGetExtension(\"GL_ARB_texture_view\"));\r\n\r\n  glewInfoFunc(\"glTextureView\", glTextureView == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_texture_view */\r\n\r\n#ifdef GL_ARB_timer_query\r\n\r\nstatic void _glewInfo_GL_ARB_timer_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_timer_query\", GLEW_ARB_timer_query, glewIsSupported(\"GL_ARB_timer_query\"), glewGetExtension(\"GL_ARB_timer_query\"));\r\n\r\n  glewInfoFunc(\"glGetQueryObjecti64v\", glGetQueryObjecti64v == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectui64v\", glGetQueryObjectui64v == NULL);\r\n  glewInfoFunc(\"glQueryCounter\", glQueryCounter == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_timer_query */\r\n\r\n#ifdef GL_ARB_transform_feedback2\r\n\r\nstatic void _glewInfo_GL_ARB_transform_feedback2 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_transform_feedback2\", GLEW_ARB_transform_feedback2, glewIsSupported(\"GL_ARB_transform_feedback2\"), glewGetExtension(\"GL_ARB_transform_feedback2\"));\r\n\r\n  glewInfoFunc(\"glBindTransformFeedback\", glBindTransformFeedback == NULL);\r\n  glewInfoFunc(\"glDeleteTransformFeedbacks\", glDeleteTransformFeedbacks == NULL);\r\n  glewInfoFunc(\"glDrawTransformFeedback\", glDrawTransformFeedback == NULL);\r\n  glewInfoFunc(\"glGenTransformFeedbacks\", glGenTransformFeedbacks == NULL);\r\n  glewInfoFunc(\"glIsTransformFeedback\", glIsTransformFeedback == NULL);\r\n  glewInfoFunc(\"glPauseTransformFeedback\", glPauseTransformFeedback == NULL);\r\n  glewInfoFunc(\"glResumeTransformFeedback\", glResumeTransformFeedback == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback2 */\r\n\r\n#ifdef GL_ARB_transform_feedback3\r\n\r\nstatic void _glewInfo_GL_ARB_transform_feedback3 (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_transform_feedback3\", GLEW_ARB_transform_feedback3, glewIsSupported(\"GL_ARB_transform_feedback3\"), glewGetExtension(\"GL_ARB_transform_feedback3\"));\r\n\r\n  glewInfoFunc(\"glBeginQueryIndexed\", glBeginQueryIndexed == NULL);\r\n  glewInfoFunc(\"glDrawTransformFeedbackStream\", glDrawTransformFeedbackStream == NULL);\r\n  glewInfoFunc(\"glEndQueryIndexed\", glEndQueryIndexed == NULL);\r\n  glewInfoFunc(\"glGetQueryIndexediv\", glGetQueryIndexediv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback3 */\r\n\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n\r\nstatic void _glewInfo_GL_ARB_transform_feedback_instanced (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_transform_feedback_instanced\", GLEW_ARB_transform_feedback_instanced, glewIsSupported(\"GL_ARB_transform_feedback_instanced\"), glewGetExtension(\"GL_ARB_transform_feedback_instanced\"));\r\n\r\n  glewInfoFunc(\"glDrawTransformFeedbackInstanced\", glDrawTransformFeedbackInstanced == NULL);\r\n  glewInfoFunc(\"glDrawTransformFeedbackStreamInstanced\", glDrawTransformFeedbackStreamInstanced == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback_instanced */\r\n\r\n#ifdef GL_ARB_transform_feedback_overflow_query\r\n\r\nstatic void _glewInfo_GL_ARB_transform_feedback_overflow_query (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_transform_feedback_overflow_query\", GLEW_ARB_transform_feedback_overflow_query, glewIsSupported(\"GL_ARB_transform_feedback_overflow_query\"), glewGetExtension(\"GL_ARB_transform_feedback_overflow_query\"));\r\n}\r\n\r\n#endif /* GL_ARB_transform_feedback_overflow_query */\r\n\r\n#ifdef GL_ARB_transpose_matrix\r\n\r\nstatic void _glewInfo_GL_ARB_transpose_matrix (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_transpose_matrix\", GLEW_ARB_transpose_matrix, glewIsSupported(\"GL_ARB_transpose_matrix\"), glewGetExtension(\"GL_ARB_transpose_matrix\"));\r\n\r\n  glewInfoFunc(\"glLoadTransposeMatrixdARB\", glLoadTransposeMatrixdARB == NULL);\r\n  glewInfoFunc(\"glLoadTransposeMatrixfARB\", glLoadTransposeMatrixfARB == NULL);\r\n  glewInfoFunc(\"glMultTransposeMatrixdARB\", glMultTransposeMatrixdARB == NULL);\r\n  glewInfoFunc(\"glMultTransposeMatrixfARB\", glMultTransposeMatrixfARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_transpose_matrix */\r\n\r\n#ifdef GL_ARB_uniform_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_uniform_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_uniform_buffer_object\", GLEW_ARB_uniform_buffer_object, glewIsSupported(\"GL_ARB_uniform_buffer_object\"), glewGetExtension(\"GL_ARB_uniform_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glBindBufferBase\", glBindBufferBase == NULL);\r\n  glewInfoFunc(\"glBindBufferRange\", glBindBufferRange == NULL);\r\n  glewInfoFunc(\"glGetActiveUniformBlockName\", glGetActiveUniformBlockName == NULL);\r\n  glewInfoFunc(\"glGetActiveUniformBlockiv\", glGetActiveUniformBlockiv == NULL);\r\n  glewInfoFunc(\"glGetActiveUniformName\", glGetActiveUniformName == NULL);\r\n  glewInfoFunc(\"glGetActiveUniformsiv\", glGetActiveUniformsiv == NULL);\r\n  glewInfoFunc(\"glGetIntegeri_v\", glGetIntegeri_v == NULL);\r\n  glewInfoFunc(\"glGetUniformBlockIndex\", glGetUniformBlockIndex == NULL);\r\n  glewInfoFunc(\"glGetUniformIndices\", glGetUniformIndices == NULL);\r\n  glewInfoFunc(\"glUniformBlockBinding\", glUniformBlockBinding == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_uniform_buffer_object */\r\n\r\n#ifdef GL_ARB_vertex_array_bgra\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_array_bgra (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_array_bgra\", GLEW_ARB_vertex_array_bgra, glewIsSupported(\"GL_ARB_vertex_array_bgra\"), glewGetExtension(\"GL_ARB_vertex_array_bgra\"));\r\n}\r\n\r\n#endif /* GL_ARB_vertex_array_bgra */\r\n\r\n#ifdef GL_ARB_vertex_array_object\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_array_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_array_object\", GLEW_ARB_vertex_array_object, glewIsSupported(\"GL_ARB_vertex_array_object\"), glewGetExtension(\"GL_ARB_vertex_array_object\"));\r\n\r\n  glewInfoFunc(\"glBindVertexArray\", glBindVertexArray == NULL);\r\n  glewInfoFunc(\"glDeleteVertexArrays\", glDeleteVertexArrays == NULL);\r\n  glewInfoFunc(\"glGenVertexArrays\", glGenVertexArrays == NULL);\r\n  glewInfoFunc(\"glIsVertexArray\", glIsVertexArray == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_array_object */\r\n\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_attrib_64bit (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_attrib_64bit\", GLEW_ARB_vertex_attrib_64bit, glewIsSupported(\"GL_ARB_vertex_attrib_64bit\"), glewGetExtension(\"GL_ARB_vertex_attrib_64bit\"));\r\n\r\n  glewInfoFunc(\"glGetVertexAttribLdv\", glGetVertexAttribLdv == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1d\", glVertexAttribL1d == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1dv\", glVertexAttribL1dv == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2d\", glVertexAttribL2d == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2dv\", glVertexAttribL2dv == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3d\", glVertexAttribL3d == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3dv\", glVertexAttribL3dv == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4d\", glVertexAttribL4d == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4dv\", glVertexAttribL4dv == NULL);\r\n  glewInfoFunc(\"glVertexAttribLPointer\", glVertexAttribLPointer == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_attrib_64bit */\r\n\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_attrib_binding (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_attrib_binding\", GLEW_ARB_vertex_attrib_binding, glewIsSupported(\"GL_ARB_vertex_attrib_binding\"), glewGetExtension(\"GL_ARB_vertex_attrib_binding\"));\r\n\r\n  glewInfoFunc(\"glBindVertexBuffer\", glBindVertexBuffer == NULL);\r\n  glewInfoFunc(\"glVertexArrayBindVertexBufferEXT\", glVertexArrayBindVertexBufferEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribBindingEXT\", glVertexArrayVertexAttribBindingEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribFormatEXT\", glVertexArrayVertexAttribFormatEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribIFormatEXT\", glVertexArrayVertexAttribIFormatEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribLFormatEXT\", glVertexArrayVertexAttribLFormatEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexBindingDivisorEXT\", glVertexArrayVertexBindingDivisorEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribBinding\", glVertexAttribBinding == NULL);\r\n  glewInfoFunc(\"glVertexAttribFormat\", glVertexAttribFormat == NULL);\r\n  glewInfoFunc(\"glVertexAttribIFormat\", glVertexAttribIFormat == NULL);\r\n  glewInfoFunc(\"glVertexAttribLFormat\", glVertexAttribLFormat == NULL);\r\n  glewInfoFunc(\"glVertexBindingDivisor\", glVertexBindingDivisor == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_attrib_binding */\r\n\r\n#ifdef GL_ARB_vertex_blend\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_blend (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_blend\", GLEW_ARB_vertex_blend, glewIsSupported(\"GL_ARB_vertex_blend\"), glewGetExtension(\"GL_ARB_vertex_blend\"));\r\n\r\n  glewInfoFunc(\"glVertexBlendARB\", glVertexBlendARB == NULL);\r\n  glewInfoFunc(\"glWeightPointerARB\", glWeightPointerARB == NULL);\r\n  glewInfoFunc(\"glWeightbvARB\", glWeightbvARB == NULL);\r\n  glewInfoFunc(\"glWeightdvARB\", glWeightdvARB == NULL);\r\n  glewInfoFunc(\"glWeightfvARB\", glWeightfvARB == NULL);\r\n  glewInfoFunc(\"glWeightivARB\", glWeightivARB == NULL);\r\n  glewInfoFunc(\"glWeightsvARB\", glWeightsvARB == NULL);\r\n  glewInfoFunc(\"glWeightubvARB\", glWeightubvARB == NULL);\r\n  glewInfoFunc(\"glWeightuivARB\", glWeightuivARB == NULL);\r\n  glewInfoFunc(\"glWeightusvARB\", glWeightusvARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_blend */\r\n\r\n#ifdef GL_ARB_vertex_buffer_object\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_buffer_object\", GLEW_ARB_vertex_buffer_object, glewIsSupported(\"GL_ARB_vertex_buffer_object\"), glewGetExtension(\"GL_ARB_vertex_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glBindBufferARB\", glBindBufferARB == NULL);\r\n  glewInfoFunc(\"glBufferDataARB\", glBufferDataARB == NULL);\r\n  glewInfoFunc(\"glBufferSubDataARB\", glBufferSubDataARB == NULL);\r\n  glewInfoFunc(\"glDeleteBuffersARB\", glDeleteBuffersARB == NULL);\r\n  glewInfoFunc(\"glGenBuffersARB\", glGenBuffersARB == NULL);\r\n  glewInfoFunc(\"glGetBufferParameterivARB\", glGetBufferParameterivARB == NULL);\r\n  glewInfoFunc(\"glGetBufferPointervARB\", glGetBufferPointervARB == NULL);\r\n  glewInfoFunc(\"glGetBufferSubDataARB\", glGetBufferSubDataARB == NULL);\r\n  glewInfoFunc(\"glIsBufferARB\", glIsBufferARB == NULL);\r\n  glewInfoFunc(\"glMapBufferARB\", glMapBufferARB == NULL);\r\n  glewInfoFunc(\"glUnmapBufferARB\", glUnmapBufferARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_buffer_object */\r\n\r\n#ifdef GL_ARB_vertex_program\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_program (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_program\", GLEW_ARB_vertex_program, glewIsSupported(\"GL_ARB_vertex_program\"), glewGetExtension(\"GL_ARB_vertex_program\"));\r\n\r\n  glewInfoFunc(\"glBindProgramARB\", glBindProgramARB == NULL);\r\n  glewInfoFunc(\"glDeleteProgramsARB\", glDeleteProgramsARB == NULL);\r\n  glewInfoFunc(\"glDisableVertexAttribArrayARB\", glDisableVertexAttribArrayARB == NULL);\r\n  glewInfoFunc(\"glEnableVertexAttribArrayARB\", glEnableVertexAttribArrayARB == NULL);\r\n  glewInfoFunc(\"glGenProgramsARB\", glGenProgramsARB == NULL);\r\n  glewInfoFunc(\"glGetProgramEnvParameterdvARB\", glGetProgramEnvParameterdvARB == NULL);\r\n  glewInfoFunc(\"glGetProgramEnvParameterfvARB\", glGetProgramEnvParameterfvARB == NULL);\r\n  glewInfoFunc(\"glGetProgramLocalParameterdvARB\", glGetProgramLocalParameterdvARB == NULL);\r\n  glewInfoFunc(\"glGetProgramLocalParameterfvARB\", glGetProgramLocalParameterfvARB == NULL);\r\n  glewInfoFunc(\"glGetProgramStringARB\", glGetProgramStringARB == NULL);\r\n  glewInfoFunc(\"glGetProgramivARB\", glGetProgramivARB == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribPointervARB\", glGetVertexAttribPointervARB == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribdvARB\", glGetVertexAttribdvARB == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribfvARB\", glGetVertexAttribfvARB == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribivARB\", glGetVertexAttribivARB == NULL);\r\n  glewInfoFunc(\"glIsProgramARB\", glIsProgramARB == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameter4dARB\", glProgramEnvParameter4dARB == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameter4dvARB\", glProgramEnvParameter4dvARB == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameter4fARB\", glProgramEnvParameter4fARB == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameter4fvARB\", glProgramEnvParameter4fvARB == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameter4dARB\", glProgramLocalParameter4dARB == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameter4dvARB\", glProgramLocalParameter4dvARB == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameter4fARB\", glProgramLocalParameter4fARB == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameter4fvARB\", glProgramLocalParameter4fvARB == NULL);\r\n  glewInfoFunc(\"glProgramStringARB\", glProgramStringARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1dARB\", glVertexAttrib1dARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1dvARB\", glVertexAttrib1dvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1fARB\", glVertexAttrib1fARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1fvARB\", glVertexAttrib1fvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1sARB\", glVertexAttrib1sARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1svARB\", glVertexAttrib1svARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2dARB\", glVertexAttrib2dARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2dvARB\", glVertexAttrib2dvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2fARB\", glVertexAttrib2fARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2fvARB\", glVertexAttrib2fvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2sARB\", glVertexAttrib2sARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2svARB\", glVertexAttrib2svARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3dARB\", glVertexAttrib3dARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3dvARB\", glVertexAttrib3dvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3fARB\", glVertexAttrib3fARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3fvARB\", glVertexAttrib3fvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3sARB\", glVertexAttrib3sARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3svARB\", glVertexAttrib3svARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NbvARB\", glVertexAttrib4NbvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NivARB\", glVertexAttrib4NivARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NsvARB\", glVertexAttrib4NsvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NubARB\", glVertexAttrib4NubARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NubvARB\", glVertexAttrib4NubvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NuivARB\", glVertexAttrib4NuivARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4NusvARB\", glVertexAttrib4NusvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4bvARB\", glVertexAttrib4bvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4dARB\", glVertexAttrib4dARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4dvARB\", glVertexAttrib4dvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4fARB\", glVertexAttrib4fARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4fvARB\", glVertexAttrib4fvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4ivARB\", glVertexAttrib4ivARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4sARB\", glVertexAttrib4sARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4svARB\", glVertexAttrib4svARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4ubvARB\", glVertexAttrib4ubvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4uivARB\", glVertexAttrib4uivARB == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4usvARB\", glVertexAttrib4usvARB == NULL);\r\n  glewInfoFunc(\"glVertexAttribPointerARB\", glVertexAttribPointerARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_program */\r\n\r\n#ifdef GL_ARB_vertex_shader\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_shader\", GLEW_ARB_vertex_shader, glewIsSupported(\"GL_ARB_vertex_shader\"), glewGetExtension(\"GL_ARB_vertex_shader\"));\r\n\r\n  glewInfoFunc(\"glBindAttribLocationARB\", glBindAttribLocationARB == NULL);\r\n  glewInfoFunc(\"glGetActiveAttribARB\", glGetActiveAttribARB == NULL);\r\n  glewInfoFunc(\"glGetAttribLocationARB\", glGetAttribLocationARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_shader */\r\n\r\n#ifdef GL_ARB_vertex_type_10f_11f_11f_rev\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_type_10f_11f_11f_rev\", GLEW_ARB_vertex_type_10f_11f_11f_rev, glewIsSupported(\"GL_ARB_vertex_type_10f_11f_11f_rev\"), glewGetExtension(\"GL_ARB_vertex_type_10f_11f_11f_rev\"));\r\n}\r\n\r\n#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */\r\n\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n\r\nstatic void _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_vertex_type_2_10_10_10_rev\", GLEW_ARB_vertex_type_2_10_10_10_rev, glewIsSupported(\"GL_ARB_vertex_type_2_10_10_10_rev\"), glewGetExtension(\"GL_ARB_vertex_type_2_10_10_10_rev\"));\r\n\r\n  glewInfoFunc(\"glColorP3ui\", glColorP3ui == NULL);\r\n  glewInfoFunc(\"glColorP3uiv\", glColorP3uiv == NULL);\r\n  glewInfoFunc(\"glColorP4ui\", glColorP4ui == NULL);\r\n  glewInfoFunc(\"glColorP4uiv\", glColorP4uiv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP1ui\", glMultiTexCoordP1ui == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP1uiv\", glMultiTexCoordP1uiv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP2ui\", glMultiTexCoordP2ui == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP2uiv\", glMultiTexCoordP2uiv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP3ui\", glMultiTexCoordP3ui == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP3uiv\", glMultiTexCoordP3uiv == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP4ui\", glMultiTexCoordP4ui == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordP4uiv\", glMultiTexCoordP4uiv == NULL);\r\n  glewInfoFunc(\"glNormalP3ui\", glNormalP3ui == NULL);\r\n  glewInfoFunc(\"glNormalP3uiv\", glNormalP3uiv == NULL);\r\n  glewInfoFunc(\"glSecondaryColorP3ui\", glSecondaryColorP3ui == NULL);\r\n  glewInfoFunc(\"glSecondaryColorP3uiv\", glSecondaryColorP3uiv == NULL);\r\n  glewInfoFunc(\"glTexCoordP1ui\", glTexCoordP1ui == NULL);\r\n  glewInfoFunc(\"glTexCoordP1uiv\", glTexCoordP1uiv == NULL);\r\n  glewInfoFunc(\"glTexCoordP2ui\", glTexCoordP2ui == NULL);\r\n  glewInfoFunc(\"glTexCoordP2uiv\", glTexCoordP2uiv == NULL);\r\n  glewInfoFunc(\"glTexCoordP3ui\", glTexCoordP3ui == NULL);\r\n  glewInfoFunc(\"glTexCoordP3uiv\", glTexCoordP3uiv == NULL);\r\n  glewInfoFunc(\"glTexCoordP4ui\", glTexCoordP4ui == NULL);\r\n  glewInfoFunc(\"glTexCoordP4uiv\", glTexCoordP4uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribP1ui\", glVertexAttribP1ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribP1uiv\", glVertexAttribP1uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribP2ui\", glVertexAttribP2ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribP2uiv\", glVertexAttribP2uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribP3ui\", glVertexAttribP3ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribP3uiv\", glVertexAttribP3uiv == NULL);\r\n  glewInfoFunc(\"glVertexAttribP4ui\", glVertexAttribP4ui == NULL);\r\n  glewInfoFunc(\"glVertexAttribP4uiv\", glVertexAttribP4uiv == NULL);\r\n  glewInfoFunc(\"glVertexP2ui\", glVertexP2ui == NULL);\r\n  glewInfoFunc(\"glVertexP2uiv\", glVertexP2uiv == NULL);\r\n  glewInfoFunc(\"glVertexP3ui\", glVertexP3ui == NULL);\r\n  glewInfoFunc(\"glVertexP3uiv\", glVertexP3uiv == NULL);\r\n  glewInfoFunc(\"glVertexP4ui\", glVertexP4ui == NULL);\r\n  glewInfoFunc(\"glVertexP4uiv\", glVertexP4uiv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_vertex_type_2_10_10_10_rev */\r\n\r\n#ifdef GL_ARB_viewport_array\r\n\r\nstatic void _glewInfo_GL_ARB_viewport_array (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_viewport_array\", GLEW_ARB_viewport_array, glewIsSupported(\"GL_ARB_viewport_array\"), glewGetExtension(\"GL_ARB_viewport_array\"));\r\n\r\n  glewInfoFunc(\"glDepthRangeArrayv\", glDepthRangeArrayv == NULL);\r\n  glewInfoFunc(\"glDepthRangeIndexed\", glDepthRangeIndexed == NULL);\r\n  glewInfoFunc(\"glGetDoublei_v\", glGetDoublei_v == NULL);\r\n  glewInfoFunc(\"glGetFloati_v\", glGetFloati_v == NULL);\r\n  glewInfoFunc(\"glScissorArrayv\", glScissorArrayv == NULL);\r\n  glewInfoFunc(\"glScissorIndexed\", glScissorIndexed == NULL);\r\n  glewInfoFunc(\"glScissorIndexedv\", glScissorIndexedv == NULL);\r\n  glewInfoFunc(\"glViewportArrayv\", glViewportArrayv == NULL);\r\n  glewInfoFunc(\"glViewportIndexedf\", glViewportIndexedf == NULL);\r\n  glewInfoFunc(\"glViewportIndexedfv\", glViewportIndexedfv == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_viewport_array */\r\n\r\n#ifdef GL_ARB_window_pos\r\n\r\nstatic void _glewInfo_GL_ARB_window_pos (void)\r\n{\r\n  glewPrintExt(\"GL_ARB_window_pos\", GLEW_ARB_window_pos, glewIsSupported(\"GL_ARB_window_pos\"), glewGetExtension(\"GL_ARB_window_pos\"));\r\n\r\n  glewInfoFunc(\"glWindowPos2dARB\", glWindowPos2dARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2dvARB\", glWindowPos2dvARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2fARB\", glWindowPos2fARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2fvARB\", glWindowPos2fvARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2iARB\", glWindowPos2iARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2ivARB\", glWindowPos2ivARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2sARB\", glWindowPos2sARB == NULL);\r\n  glewInfoFunc(\"glWindowPos2svARB\", glWindowPos2svARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3dARB\", glWindowPos3dARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3dvARB\", glWindowPos3dvARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3fARB\", glWindowPos3fARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3fvARB\", glWindowPos3fvARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3iARB\", glWindowPos3iARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3ivARB\", glWindowPos3ivARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3sARB\", glWindowPos3sARB == NULL);\r\n  glewInfoFunc(\"glWindowPos3svARB\", glWindowPos3svARB == NULL);\r\n}\r\n\r\n#endif /* GL_ARB_window_pos */\r\n\r\n#ifdef GL_ARM_mali_program_binary\r\n\r\nstatic void _glewInfo_GL_ARM_mali_program_binary (void)\r\n{\r\n  glewPrintExt(\"GL_ARM_mali_program_binary\", GLEW_ARM_mali_program_binary, glewIsSupported(\"GL_ARM_mali_program_binary\"), glewGetExtension(\"GL_ARM_mali_program_binary\"));\r\n}\r\n\r\n#endif /* GL_ARM_mali_program_binary */\r\n\r\n#ifdef GL_ARM_mali_shader_binary\r\n\r\nstatic void _glewInfo_GL_ARM_mali_shader_binary (void)\r\n{\r\n  glewPrintExt(\"GL_ARM_mali_shader_binary\", GLEW_ARM_mali_shader_binary, glewIsSupported(\"GL_ARM_mali_shader_binary\"), glewGetExtension(\"GL_ARM_mali_shader_binary\"));\r\n}\r\n\r\n#endif /* GL_ARM_mali_shader_binary */\r\n\r\n#ifdef GL_ARM_rgba8\r\n\r\nstatic void _glewInfo_GL_ARM_rgba8 (void)\r\n{\r\n  glewPrintExt(\"GL_ARM_rgba8\", GLEW_ARM_rgba8, glewIsSupported(\"GL_ARM_rgba8\"), glewGetExtension(\"GL_ARM_rgba8\"));\r\n}\r\n\r\n#endif /* GL_ARM_rgba8 */\r\n\r\n#ifdef GL_ARM_shader_framebuffer_fetch\r\n\r\nstatic void _glewInfo_GL_ARM_shader_framebuffer_fetch (void)\r\n{\r\n  glewPrintExt(\"GL_ARM_shader_framebuffer_fetch\", GLEW_ARM_shader_framebuffer_fetch, glewIsSupported(\"GL_ARM_shader_framebuffer_fetch\"), glewGetExtension(\"GL_ARM_shader_framebuffer_fetch\"));\r\n}\r\n\r\n#endif /* GL_ARM_shader_framebuffer_fetch */\r\n\r\n#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil\r\n\r\nstatic void _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_ARM_shader_framebuffer_fetch_depth_stencil\", GLEW_ARM_shader_framebuffer_fetch_depth_stencil, glewIsSupported(\"GL_ARM_shader_framebuffer_fetch_depth_stencil\"), glewGetExtension(\"GL_ARM_shader_framebuffer_fetch_depth_stencil\"));\r\n}\r\n\r\n#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */\r\n\r\n#ifdef GL_ATIX_point_sprites\r\n\r\nstatic void _glewInfo_GL_ATIX_point_sprites (void)\r\n{\r\n  glewPrintExt(\"GL_ATIX_point_sprites\", GLEW_ATIX_point_sprites, glewIsSupported(\"GL_ATIX_point_sprites\"), glewGetExtension(\"GL_ATIX_point_sprites\"));\r\n}\r\n\r\n#endif /* GL_ATIX_point_sprites */\r\n\r\n#ifdef GL_ATIX_texture_env_combine3\r\n\r\nstatic void _glewInfo_GL_ATIX_texture_env_combine3 (void)\r\n{\r\n  glewPrintExt(\"GL_ATIX_texture_env_combine3\", GLEW_ATIX_texture_env_combine3, glewIsSupported(\"GL_ATIX_texture_env_combine3\"), glewGetExtension(\"GL_ATIX_texture_env_combine3\"));\r\n}\r\n\r\n#endif /* GL_ATIX_texture_env_combine3 */\r\n\r\n#ifdef GL_ATIX_texture_env_route\r\n\r\nstatic void _glewInfo_GL_ATIX_texture_env_route (void)\r\n{\r\n  glewPrintExt(\"GL_ATIX_texture_env_route\", GLEW_ATIX_texture_env_route, glewIsSupported(\"GL_ATIX_texture_env_route\"), glewGetExtension(\"GL_ATIX_texture_env_route\"));\r\n}\r\n\r\n#endif /* GL_ATIX_texture_env_route */\r\n\r\n#ifdef GL_ATIX_vertex_shader_output_point_size\r\n\r\nstatic void _glewInfo_GL_ATIX_vertex_shader_output_point_size (void)\r\n{\r\n  glewPrintExt(\"GL_ATIX_vertex_shader_output_point_size\", GLEW_ATIX_vertex_shader_output_point_size, glewIsSupported(\"GL_ATIX_vertex_shader_output_point_size\"), glewGetExtension(\"GL_ATIX_vertex_shader_output_point_size\"));\r\n}\r\n\r\n#endif /* GL_ATIX_vertex_shader_output_point_size */\r\n\r\n#ifdef GL_ATI_draw_buffers\r\n\r\nstatic void _glewInfo_GL_ATI_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_draw_buffers\", GLEW_ATI_draw_buffers, glewIsSupported(\"GL_ATI_draw_buffers\"), glewGetExtension(\"GL_ATI_draw_buffers\"));\r\n\r\n  glewInfoFunc(\"glDrawBuffersATI\", glDrawBuffersATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_draw_buffers */\r\n\r\n#ifdef GL_ATI_element_array\r\n\r\nstatic void _glewInfo_GL_ATI_element_array (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_element_array\", GLEW_ATI_element_array, glewIsSupported(\"GL_ATI_element_array\"), glewGetExtension(\"GL_ATI_element_array\"));\r\n\r\n  glewInfoFunc(\"glDrawElementArrayATI\", glDrawElementArrayATI == NULL);\r\n  glewInfoFunc(\"glDrawRangeElementArrayATI\", glDrawRangeElementArrayATI == NULL);\r\n  glewInfoFunc(\"glElementPointerATI\", glElementPointerATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_element_array */\r\n\r\n#ifdef GL_ATI_envmap_bumpmap\r\n\r\nstatic void _glewInfo_GL_ATI_envmap_bumpmap (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_envmap_bumpmap\", GLEW_ATI_envmap_bumpmap, glewIsSupported(\"GL_ATI_envmap_bumpmap\"), glewGetExtension(\"GL_ATI_envmap_bumpmap\"));\r\n\r\n  glewInfoFunc(\"glGetTexBumpParameterfvATI\", glGetTexBumpParameterfvATI == NULL);\r\n  glewInfoFunc(\"glGetTexBumpParameterivATI\", glGetTexBumpParameterivATI == NULL);\r\n  glewInfoFunc(\"glTexBumpParameterfvATI\", glTexBumpParameterfvATI == NULL);\r\n  glewInfoFunc(\"glTexBumpParameterivATI\", glTexBumpParameterivATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_envmap_bumpmap */\r\n\r\n#ifdef GL_ATI_fragment_shader\r\n\r\nstatic void _glewInfo_GL_ATI_fragment_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_fragment_shader\", GLEW_ATI_fragment_shader, glewIsSupported(\"GL_ATI_fragment_shader\"), glewGetExtension(\"GL_ATI_fragment_shader\"));\r\n\r\n  glewInfoFunc(\"glAlphaFragmentOp1ATI\", glAlphaFragmentOp1ATI == NULL);\r\n  glewInfoFunc(\"glAlphaFragmentOp2ATI\", glAlphaFragmentOp2ATI == NULL);\r\n  glewInfoFunc(\"glAlphaFragmentOp3ATI\", glAlphaFragmentOp3ATI == NULL);\r\n  glewInfoFunc(\"glBeginFragmentShaderATI\", glBeginFragmentShaderATI == NULL);\r\n  glewInfoFunc(\"glBindFragmentShaderATI\", glBindFragmentShaderATI == NULL);\r\n  glewInfoFunc(\"glColorFragmentOp1ATI\", glColorFragmentOp1ATI == NULL);\r\n  glewInfoFunc(\"glColorFragmentOp2ATI\", glColorFragmentOp2ATI == NULL);\r\n  glewInfoFunc(\"glColorFragmentOp3ATI\", glColorFragmentOp3ATI == NULL);\r\n  glewInfoFunc(\"glDeleteFragmentShaderATI\", glDeleteFragmentShaderATI == NULL);\r\n  glewInfoFunc(\"glEndFragmentShaderATI\", glEndFragmentShaderATI == NULL);\r\n  glewInfoFunc(\"glGenFragmentShadersATI\", glGenFragmentShadersATI == NULL);\r\n  glewInfoFunc(\"glPassTexCoordATI\", glPassTexCoordATI == NULL);\r\n  glewInfoFunc(\"glSampleMapATI\", glSampleMapATI == NULL);\r\n  glewInfoFunc(\"glSetFragmentShaderConstantATI\", glSetFragmentShaderConstantATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_fragment_shader */\r\n\r\n#ifdef GL_ATI_map_object_buffer\r\n\r\nstatic void _glewInfo_GL_ATI_map_object_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_map_object_buffer\", GLEW_ATI_map_object_buffer, glewIsSupported(\"GL_ATI_map_object_buffer\"), glewGetExtension(\"GL_ATI_map_object_buffer\"));\r\n\r\n  glewInfoFunc(\"glMapObjectBufferATI\", glMapObjectBufferATI == NULL);\r\n  glewInfoFunc(\"glUnmapObjectBufferATI\", glUnmapObjectBufferATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_map_object_buffer */\r\n\r\n#ifdef GL_ATI_meminfo\r\n\r\nstatic void _glewInfo_GL_ATI_meminfo (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_meminfo\", GLEW_ATI_meminfo, glewIsSupported(\"GL_ATI_meminfo\"), glewGetExtension(\"GL_ATI_meminfo\"));\r\n}\r\n\r\n#endif /* GL_ATI_meminfo */\r\n\r\n#ifdef GL_ATI_pn_triangles\r\n\r\nstatic void _glewInfo_GL_ATI_pn_triangles (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_pn_triangles\", GLEW_ATI_pn_triangles, glewIsSupported(\"GL_ATI_pn_triangles\"), glewGetExtension(\"GL_ATI_pn_triangles\"));\r\n\r\n  glewInfoFunc(\"glPNTrianglesfATI\", glPNTrianglesfATI == NULL);\r\n  glewInfoFunc(\"glPNTrianglesiATI\", glPNTrianglesiATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_pn_triangles */\r\n\r\n#ifdef GL_ATI_separate_stencil\r\n\r\nstatic void _glewInfo_GL_ATI_separate_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_separate_stencil\", GLEW_ATI_separate_stencil, glewIsSupported(\"GL_ATI_separate_stencil\"), glewGetExtension(\"GL_ATI_separate_stencil\"));\r\n\r\n  glewInfoFunc(\"glStencilFuncSeparateATI\", glStencilFuncSeparateATI == NULL);\r\n  glewInfoFunc(\"glStencilOpSeparateATI\", glStencilOpSeparateATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_separate_stencil */\r\n\r\n#ifdef GL_ATI_shader_texture_lod\r\n\r\nstatic void _glewInfo_GL_ATI_shader_texture_lod (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_shader_texture_lod\", GLEW_ATI_shader_texture_lod, glewIsSupported(\"GL_ATI_shader_texture_lod\"), glewGetExtension(\"GL_ATI_shader_texture_lod\"));\r\n}\r\n\r\n#endif /* GL_ATI_shader_texture_lod */\r\n\r\n#ifdef GL_ATI_text_fragment_shader\r\n\r\nstatic void _glewInfo_GL_ATI_text_fragment_shader (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_text_fragment_shader\", GLEW_ATI_text_fragment_shader, glewIsSupported(\"GL_ATI_text_fragment_shader\"), glewGetExtension(\"GL_ATI_text_fragment_shader\"));\r\n}\r\n\r\n#endif /* GL_ATI_text_fragment_shader */\r\n\r\n#ifdef GL_ATI_texture_compression_3dc\r\n\r\nstatic void _glewInfo_GL_ATI_texture_compression_3dc (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_texture_compression_3dc\", GLEW_ATI_texture_compression_3dc, glewIsSupported(\"GL_ATI_texture_compression_3dc\"), glewGetExtension(\"GL_ATI_texture_compression_3dc\"));\r\n}\r\n\r\n#endif /* GL_ATI_texture_compression_3dc */\r\n\r\n#ifdef GL_ATI_texture_env_combine3\r\n\r\nstatic void _glewInfo_GL_ATI_texture_env_combine3 (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_texture_env_combine3\", GLEW_ATI_texture_env_combine3, glewIsSupported(\"GL_ATI_texture_env_combine3\"), glewGetExtension(\"GL_ATI_texture_env_combine3\"));\r\n}\r\n\r\n#endif /* GL_ATI_texture_env_combine3 */\r\n\r\n#ifdef GL_ATI_texture_float\r\n\r\nstatic void _glewInfo_GL_ATI_texture_float (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_texture_float\", GLEW_ATI_texture_float, glewIsSupported(\"GL_ATI_texture_float\"), glewGetExtension(\"GL_ATI_texture_float\"));\r\n}\r\n\r\n#endif /* GL_ATI_texture_float */\r\n\r\n#ifdef GL_ATI_texture_mirror_once\r\n\r\nstatic void _glewInfo_GL_ATI_texture_mirror_once (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_texture_mirror_once\", GLEW_ATI_texture_mirror_once, glewIsSupported(\"GL_ATI_texture_mirror_once\"), glewGetExtension(\"GL_ATI_texture_mirror_once\"));\r\n}\r\n\r\n#endif /* GL_ATI_texture_mirror_once */\r\n\r\n#ifdef GL_ATI_vertex_array_object\r\n\r\nstatic void _glewInfo_GL_ATI_vertex_array_object (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_vertex_array_object\", GLEW_ATI_vertex_array_object, glewIsSupported(\"GL_ATI_vertex_array_object\"), glewGetExtension(\"GL_ATI_vertex_array_object\"));\r\n\r\n  glewInfoFunc(\"glArrayObjectATI\", glArrayObjectATI == NULL);\r\n  glewInfoFunc(\"glFreeObjectBufferATI\", glFreeObjectBufferATI == NULL);\r\n  glewInfoFunc(\"glGetArrayObjectfvATI\", glGetArrayObjectfvATI == NULL);\r\n  glewInfoFunc(\"glGetArrayObjectivATI\", glGetArrayObjectivATI == NULL);\r\n  glewInfoFunc(\"glGetObjectBufferfvATI\", glGetObjectBufferfvATI == NULL);\r\n  glewInfoFunc(\"glGetObjectBufferivATI\", glGetObjectBufferivATI == NULL);\r\n  glewInfoFunc(\"glGetVariantArrayObjectfvATI\", glGetVariantArrayObjectfvATI == NULL);\r\n  glewInfoFunc(\"glGetVariantArrayObjectivATI\", glGetVariantArrayObjectivATI == NULL);\r\n  glewInfoFunc(\"glIsObjectBufferATI\", glIsObjectBufferATI == NULL);\r\n  glewInfoFunc(\"glNewObjectBufferATI\", glNewObjectBufferATI == NULL);\r\n  glewInfoFunc(\"glUpdateObjectBufferATI\", glUpdateObjectBufferATI == NULL);\r\n  glewInfoFunc(\"glVariantArrayObjectATI\", glVariantArrayObjectATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_vertex_array_object */\r\n\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n\r\nstatic void _glewInfo_GL_ATI_vertex_attrib_array_object (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_vertex_attrib_array_object\", GLEW_ATI_vertex_attrib_array_object, glewIsSupported(\"GL_ATI_vertex_attrib_array_object\"), glewGetExtension(\"GL_ATI_vertex_attrib_array_object\"));\r\n\r\n  glewInfoFunc(\"glGetVertexAttribArrayObjectfvATI\", glGetVertexAttribArrayObjectfvATI == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribArrayObjectivATI\", glGetVertexAttribArrayObjectivATI == NULL);\r\n  glewInfoFunc(\"glVertexAttribArrayObjectATI\", glVertexAttribArrayObjectATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_vertex_attrib_array_object */\r\n\r\n#ifdef GL_ATI_vertex_streams\r\n\r\nstatic void _glewInfo_GL_ATI_vertex_streams (void)\r\n{\r\n  glewPrintExt(\"GL_ATI_vertex_streams\", GLEW_ATI_vertex_streams, glewIsSupported(\"GL_ATI_vertex_streams\"), glewGetExtension(\"GL_ATI_vertex_streams\"));\r\n\r\n  glewInfoFunc(\"glClientActiveVertexStreamATI\", glClientActiveVertexStreamATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3bATI\", glNormalStream3bATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3bvATI\", glNormalStream3bvATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3dATI\", glNormalStream3dATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3dvATI\", glNormalStream3dvATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3fATI\", glNormalStream3fATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3fvATI\", glNormalStream3fvATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3iATI\", glNormalStream3iATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3ivATI\", glNormalStream3ivATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3sATI\", glNormalStream3sATI == NULL);\r\n  glewInfoFunc(\"glNormalStream3svATI\", glNormalStream3svATI == NULL);\r\n  glewInfoFunc(\"glVertexBlendEnvfATI\", glVertexBlendEnvfATI == NULL);\r\n  glewInfoFunc(\"glVertexBlendEnviATI\", glVertexBlendEnviATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1dATI\", glVertexStream1dATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1dvATI\", glVertexStream1dvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1fATI\", glVertexStream1fATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1fvATI\", glVertexStream1fvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1iATI\", glVertexStream1iATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1ivATI\", glVertexStream1ivATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1sATI\", glVertexStream1sATI == NULL);\r\n  glewInfoFunc(\"glVertexStream1svATI\", glVertexStream1svATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2dATI\", glVertexStream2dATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2dvATI\", glVertexStream2dvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2fATI\", glVertexStream2fATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2fvATI\", glVertexStream2fvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2iATI\", glVertexStream2iATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2ivATI\", glVertexStream2ivATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2sATI\", glVertexStream2sATI == NULL);\r\n  glewInfoFunc(\"glVertexStream2svATI\", glVertexStream2svATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3dATI\", glVertexStream3dATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3dvATI\", glVertexStream3dvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3fATI\", glVertexStream3fATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3fvATI\", glVertexStream3fvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3iATI\", glVertexStream3iATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3ivATI\", glVertexStream3ivATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3sATI\", glVertexStream3sATI == NULL);\r\n  glewInfoFunc(\"glVertexStream3svATI\", glVertexStream3svATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4dATI\", glVertexStream4dATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4dvATI\", glVertexStream4dvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4fATI\", glVertexStream4fATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4fvATI\", glVertexStream4fvATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4iATI\", glVertexStream4iATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4ivATI\", glVertexStream4ivATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4sATI\", glVertexStream4sATI == NULL);\r\n  glewInfoFunc(\"glVertexStream4svATI\", glVertexStream4svATI == NULL);\r\n}\r\n\r\n#endif /* GL_ATI_vertex_streams */\r\n\r\n#ifdef GL_EGL_KHR_context_flush_control\r\n\r\nstatic void _glewInfo_GL_EGL_KHR_context_flush_control (void)\r\n{\r\n  glewPrintExt(\"GL_EGL_KHR_context_flush_control\", GLEW_EGL_KHR_context_flush_control, glewIsSupported(\"GL_EGL_KHR_context_flush_control\"), glewGetExtension(\"GL_EGL_KHR_context_flush_control\"));\r\n}\r\n\r\n#endif /* GL_EGL_KHR_context_flush_control */\r\n\r\n#ifdef GL_EGL_NV_robustness_video_memory_purge\r\n\r\nstatic void _glewInfo_GL_EGL_NV_robustness_video_memory_purge (void)\r\n{\r\n  glewPrintExt(\"GL_EGL_NV_robustness_video_memory_purge\", GLEW_EGL_NV_robustness_video_memory_purge, glewIsSupported(\"GL_EGL_NV_robustness_video_memory_purge\"), glewGetExtension(\"GL_EGL_NV_robustness_video_memory_purge\"));\r\n}\r\n\r\n#endif /* GL_EGL_NV_robustness_video_memory_purge */\r\n\r\n#ifdef GL_EXT_422_pixels\r\n\r\nstatic void _glewInfo_GL_EXT_422_pixels (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_422_pixels\", GLEW_EXT_422_pixels, glewIsSupported(\"GL_EXT_422_pixels\"), glewGetExtension(\"GL_EXT_422_pixels\"));\r\n}\r\n\r\n#endif /* GL_EXT_422_pixels */\r\n\r\n#ifdef GL_EXT_Cg_shader\r\n\r\nstatic void _glewInfo_GL_EXT_Cg_shader (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_Cg_shader\", GLEW_EXT_Cg_shader, glewIsSupported(\"GL_EXT_Cg_shader\"), glewGetExtension(\"GL_EXT_Cg_shader\"));\r\n}\r\n\r\n#endif /* GL_EXT_Cg_shader */\r\n\r\n#ifdef GL_EXT_EGL_image_array\r\n\r\nstatic void _glewInfo_GL_EXT_EGL_image_array (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_EGL_image_array\", GLEW_EXT_EGL_image_array, glewIsSupported(\"GL_EXT_EGL_image_array\"), glewGetExtension(\"GL_EXT_EGL_image_array\"));\r\n}\r\n\r\n#endif /* GL_EXT_EGL_image_array */\r\n\r\n#ifdef GL_EXT_YUV_target\r\n\r\nstatic void _glewInfo_GL_EXT_YUV_target (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_YUV_target\", GLEW_EXT_YUV_target, glewIsSupported(\"GL_EXT_YUV_target\"), glewGetExtension(\"GL_EXT_YUV_target\"));\r\n}\r\n\r\n#endif /* GL_EXT_YUV_target */\r\n\r\n#ifdef GL_EXT_abgr\r\n\r\nstatic void _glewInfo_GL_EXT_abgr (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_abgr\", GLEW_EXT_abgr, glewIsSupported(\"GL_EXT_abgr\"), glewGetExtension(\"GL_EXT_abgr\"));\r\n}\r\n\r\n#endif /* GL_EXT_abgr */\r\n\r\n#ifdef GL_EXT_base_instance\r\n\r\nstatic void _glewInfo_GL_EXT_base_instance (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_base_instance\", GLEW_EXT_base_instance, glewIsSupported(\"GL_EXT_base_instance\"), glewGetExtension(\"GL_EXT_base_instance\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedBaseInstanceEXT\", glDrawArraysInstancedBaseInstanceEXT == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseInstanceEXT\", glDrawElementsInstancedBaseInstanceEXT == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseVertexBaseInstanceEXT\", glDrawElementsInstancedBaseVertexBaseInstanceEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_base_instance */\r\n\r\n#ifdef GL_EXT_bgra\r\n\r\nstatic void _glewInfo_GL_EXT_bgra (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_bgra\", GLEW_EXT_bgra, glewIsSupported(\"GL_EXT_bgra\"), glewGetExtension(\"GL_EXT_bgra\"));\r\n}\r\n\r\n#endif /* GL_EXT_bgra */\r\n\r\n#ifdef GL_EXT_bindable_uniform\r\n\r\nstatic void _glewInfo_GL_EXT_bindable_uniform (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_bindable_uniform\", GLEW_EXT_bindable_uniform, glewIsSupported(\"GL_EXT_bindable_uniform\"), glewGetExtension(\"GL_EXT_bindable_uniform\"));\r\n\r\n  glewInfoFunc(\"glGetUniformBufferSizeEXT\", glGetUniformBufferSizeEXT == NULL);\r\n  glewInfoFunc(\"glGetUniformOffsetEXT\", glGetUniformOffsetEXT == NULL);\r\n  glewInfoFunc(\"glUniformBufferEXT\", glUniformBufferEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_bindable_uniform */\r\n\r\n#ifdef GL_EXT_blend_color\r\n\r\nstatic void _glewInfo_GL_EXT_blend_color (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_color\", GLEW_EXT_blend_color, glewIsSupported(\"GL_EXT_blend_color\"), glewGetExtension(\"GL_EXT_blend_color\"));\r\n\r\n  glewInfoFunc(\"glBlendColorEXT\", glBlendColorEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_blend_color */\r\n\r\n#ifdef GL_EXT_blend_equation_separate\r\n\r\nstatic void _glewInfo_GL_EXT_blend_equation_separate (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_equation_separate\", GLEW_EXT_blend_equation_separate, glewIsSupported(\"GL_EXT_blend_equation_separate\"), glewGetExtension(\"GL_EXT_blend_equation_separate\"));\r\n\r\n  glewInfoFunc(\"glBlendEquationSeparateEXT\", glBlendEquationSeparateEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_blend_equation_separate */\r\n\r\n#ifdef GL_EXT_blend_func_extended\r\n\r\nstatic void _glewInfo_GL_EXT_blend_func_extended (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_func_extended\", GLEW_EXT_blend_func_extended, glewIsSupported(\"GL_EXT_blend_func_extended\"), glewGetExtension(\"GL_EXT_blend_func_extended\"));\r\n\r\n  glewInfoFunc(\"glBindFragDataLocationIndexedEXT\", glBindFragDataLocationIndexedEXT == NULL);\r\n  glewInfoFunc(\"glGetFragDataIndexEXT\", glGetFragDataIndexEXT == NULL);\r\n  glewInfoFunc(\"glGetProgramResourceLocationIndexEXT\", glGetProgramResourceLocationIndexEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_blend_func_extended */\r\n\r\n#ifdef GL_EXT_blend_func_separate\r\n\r\nstatic void _glewInfo_GL_EXT_blend_func_separate (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_func_separate\", GLEW_EXT_blend_func_separate, glewIsSupported(\"GL_EXT_blend_func_separate\"), glewGetExtension(\"GL_EXT_blend_func_separate\"));\r\n\r\n  glewInfoFunc(\"glBlendFuncSeparateEXT\", glBlendFuncSeparateEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_blend_func_separate */\r\n\r\n#ifdef GL_EXT_blend_logic_op\r\n\r\nstatic void _glewInfo_GL_EXT_blend_logic_op (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_logic_op\", GLEW_EXT_blend_logic_op, glewIsSupported(\"GL_EXT_blend_logic_op\"), glewGetExtension(\"GL_EXT_blend_logic_op\"));\r\n}\r\n\r\n#endif /* GL_EXT_blend_logic_op */\r\n\r\n#ifdef GL_EXT_blend_minmax\r\n\r\nstatic void _glewInfo_GL_EXT_blend_minmax (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_minmax\", GLEW_EXT_blend_minmax, glewIsSupported(\"GL_EXT_blend_minmax\"), glewGetExtension(\"GL_EXT_blend_minmax\"));\r\n\r\n  glewInfoFunc(\"glBlendEquationEXT\", glBlendEquationEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_blend_minmax */\r\n\r\n#ifdef GL_EXT_blend_subtract\r\n\r\nstatic void _glewInfo_GL_EXT_blend_subtract (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_blend_subtract\", GLEW_EXT_blend_subtract, glewIsSupported(\"GL_EXT_blend_subtract\"), glewGetExtension(\"GL_EXT_blend_subtract\"));\r\n}\r\n\r\n#endif /* GL_EXT_blend_subtract */\r\n\r\n#ifdef GL_EXT_buffer_storage\r\n\r\nstatic void _glewInfo_GL_EXT_buffer_storage (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_buffer_storage\", GLEW_EXT_buffer_storage, glewIsSupported(\"GL_EXT_buffer_storage\"), glewGetExtension(\"GL_EXT_buffer_storage\"));\r\n\r\n  glewInfoFunc(\"glBufferStorageEXT\", glBufferStorageEXT == NULL);\r\n  glewInfoFunc(\"glNamedBufferStorageEXT\", glNamedBufferStorageEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_buffer_storage */\r\n\r\n#ifdef GL_EXT_clear_texture\r\n\r\nstatic void _glewInfo_GL_EXT_clear_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_clear_texture\", GLEW_EXT_clear_texture, glewIsSupported(\"GL_EXT_clear_texture\"), glewGetExtension(\"GL_EXT_clear_texture\"));\r\n\r\n  glewInfoFunc(\"glClearTexImageEXT\", glClearTexImageEXT == NULL);\r\n  glewInfoFunc(\"glClearTexSubImageEXT\", glClearTexSubImageEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_clear_texture */\r\n\r\n#ifdef GL_EXT_clip_cull_distance\r\n\r\nstatic void _glewInfo_GL_EXT_clip_cull_distance (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_clip_cull_distance\", GLEW_EXT_clip_cull_distance, glewIsSupported(\"GL_EXT_clip_cull_distance\"), glewGetExtension(\"GL_EXT_clip_cull_distance\"));\r\n}\r\n\r\n#endif /* GL_EXT_clip_cull_distance */\r\n\r\n#ifdef GL_EXT_clip_volume_hint\r\n\r\nstatic void _glewInfo_GL_EXT_clip_volume_hint (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_clip_volume_hint\", GLEW_EXT_clip_volume_hint, glewIsSupported(\"GL_EXT_clip_volume_hint\"), glewGetExtension(\"GL_EXT_clip_volume_hint\"));\r\n}\r\n\r\n#endif /* GL_EXT_clip_volume_hint */\r\n\r\n#ifdef GL_EXT_cmyka\r\n\r\nstatic void _glewInfo_GL_EXT_cmyka (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_cmyka\", GLEW_EXT_cmyka, glewIsSupported(\"GL_EXT_cmyka\"), glewGetExtension(\"GL_EXT_cmyka\"));\r\n}\r\n\r\n#endif /* GL_EXT_cmyka */\r\n\r\n#ifdef GL_EXT_color_buffer_float\r\n\r\nstatic void _glewInfo_GL_EXT_color_buffer_float (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_color_buffer_float\", GLEW_EXT_color_buffer_float, glewIsSupported(\"GL_EXT_color_buffer_float\"), glewGetExtension(\"GL_EXT_color_buffer_float\"));\r\n}\r\n\r\n#endif /* GL_EXT_color_buffer_float */\r\n\r\n#ifdef GL_EXT_color_buffer_half_float\r\n\r\nstatic void _glewInfo_GL_EXT_color_buffer_half_float (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_color_buffer_half_float\", GLEW_EXT_color_buffer_half_float, glewIsSupported(\"GL_EXT_color_buffer_half_float\"), glewGetExtension(\"GL_EXT_color_buffer_half_float\"));\r\n}\r\n\r\n#endif /* GL_EXT_color_buffer_half_float */\r\n\r\n#ifdef GL_EXT_color_subtable\r\n\r\nstatic void _glewInfo_GL_EXT_color_subtable (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_color_subtable\", GLEW_EXT_color_subtable, glewIsSupported(\"GL_EXT_color_subtable\"), glewGetExtension(\"GL_EXT_color_subtable\"));\r\n\r\n  glewInfoFunc(\"glColorSubTableEXT\", glColorSubTableEXT == NULL);\r\n  glewInfoFunc(\"glCopyColorSubTableEXT\", glCopyColorSubTableEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_color_subtable */\r\n\r\n#ifdef GL_EXT_compiled_vertex_array\r\n\r\nstatic void _glewInfo_GL_EXT_compiled_vertex_array (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_compiled_vertex_array\", GLEW_EXT_compiled_vertex_array, glewIsSupported(\"GL_EXT_compiled_vertex_array\"), glewGetExtension(\"GL_EXT_compiled_vertex_array\"));\r\n\r\n  glewInfoFunc(\"glLockArraysEXT\", glLockArraysEXT == NULL);\r\n  glewInfoFunc(\"glUnlockArraysEXT\", glUnlockArraysEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_compiled_vertex_array */\r\n\r\n#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture\r\n\r\nstatic void _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_compressed_ETC1_RGB8_sub_texture\", GLEW_EXT_compressed_ETC1_RGB8_sub_texture, glewIsSupported(\"GL_EXT_compressed_ETC1_RGB8_sub_texture\"), glewGetExtension(\"GL_EXT_compressed_ETC1_RGB8_sub_texture\"));\r\n}\r\n\r\n#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */\r\n\r\n#ifdef GL_EXT_conservative_depth\r\n\r\nstatic void _glewInfo_GL_EXT_conservative_depth (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_conservative_depth\", GLEW_EXT_conservative_depth, glewIsSupported(\"GL_EXT_conservative_depth\"), glewGetExtension(\"GL_EXT_conservative_depth\"));\r\n}\r\n\r\n#endif /* GL_EXT_conservative_depth */\r\n\r\n#ifdef GL_EXT_convolution\r\n\r\nstatic void _glewInfo_GL_EXT_convolution (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_convolution\", GLEW_EXT_convolution, glewIsSupported(\"GL_EXT_convolution\"), glewGetExtension(\"GL_EXT_convolution\"));\r\n\r\n  glewInfoFunc(\"glConvolutionFilter1DEXT\", glConvolutionFilter1DEXT == NULL);\r\n  glewInfoFunc(\"glConvolutionFilter2DEXT\", glConvolutionFilter2DEXT == NULL);\r\n  glewInfoFunc(\"glConvolutionParameterfEXT\", glConvolutionParameterfEXT == NULL);\r\n  glewInfoFunc(\"glConvolutionParameterfvEXT\", glConvolutionParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glConvolutionParameteriEXT\", glConvolutionParameteriEXT == NULL);\r\n  glewInfoFunc(\"glConvolutionParameterivEXT\", glConvolutionParameterivEXT == NULL);\r\n  glewInfoFunc(\"glCopyConvolutionFilter1DEXT\", glCopyConvolutionFilter1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyConvolutionFilter2DEXT\", glCopyConvolutionFilter2DEXT == NULL);\r\n  glewInfoFunc(\"glGetConvolutionFilterEXT\", glGetConvolutionFilterEXT == NULL);\r\n  glewInfoFunc(\"glGetConvolutionParameterfvEXT\", glGetConvolutionParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetConvolutionParameterivEXT\", glGetConvolutionParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetSeparableFilterEXT\", glGetSeparableFilterEXT == NULL);\r\n  glewInfoFunc(\"glSeparableFilter2DEXT\", glSeparableFilter2DEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_convolution */\r\n\r\n#ifdef GL_EXT_coordinate_frame\r\n\r\nstatic void _glewInfo_GL_EXT_coordinate_frame (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_coordinate_frame\", GLEW_EXT_coordinate_frame, glewIsSupported(\"GL_EXT_coordinate_frame\"), glewGetExtension(\"GL_EXT_coordinate_frame\"));\r\n\r\n  glewInfoFunc(\"glBinormalPointerEXT\", glBinormalPointerEXT == NULL);\r\n  glewInfoFunc(\"glTangentPointerEXT\", glTangentPointerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_coordinate_frame */\r\n\r\n#ifdef GL_EXT_copy_image\r\n\r\nstatic void _glewInfo_GL_EXT_copy_image (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_copy_image\", GLEW_EXT_copy_image, glewIsSupported(\"GL_EXT_copy_image\"), glewGetExtension(\"GL_EXT_copy_image\"));\r\n\r\n  glewInfoFunc(\"glCopyImageSubDataEXT\", glCopyImageSubDataEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_copy_image */\r\n\r\n#ifdef GL_EXT_copy_texture\r\n\r\nstatic void _glewInfo_GL_EXT_copy_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_copy_texture\", GLEW_EXT_copy_texture, glewIsSupported(\"GL_EXT_copy_texture\"), glewGetExtension(\"GL_EXT_copy_texture\"));\r\n\r\n  glewInfoFunc(\"glCopyTexImage1DEXT\", glCopyTexImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTexImage2DEXT\", glCopyTexImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTexSubImage1DEXT\", glCopyTexSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTexSubImage2DEXT\", glCopyTexSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTexSubImage3DEXT\", glCopyTexSubImage3DEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_copy_texture */\r\n\r\n#ifdef GL_EXT_cull_vertex\r\n\r\nstatic void _glewInfo_GL_EXT_cull_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_cull_vertex\", GLEW_EXT_cull_vertex, glewIsSupported(\"GL_EXT_cull_vertex\"), glewGetExtension(\"GL_EXT_cull_vertex\"));\r\n\r\n  glewInfoFunc(\"glCullParameterdvEXT\", glCullParameterdvEXT == NULL);\r\n  glewInfoFunc(\"glCullParameterfvEXT\", glCullParameterfvEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_cull_vertex */\r\n\r\n#ifdef GL_EXT_debug_label\r\n\r\nstatic void _glewInfo_GL_EXT_debug_label (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_debug_label\", GLEW_EXT_debug_label, glewIsSupported(\"GL_EXT_debug_label\"), glewGetExtension(\"GL_EXT_debug_label\"));\r\n\r\n  glewInfoFunc(\"glGetObjectLabelEXT\", glGetObjectLabelEXT == NULL);\r\n  glewInfoFunc(\"glLabelObjectEXT\", glLabelObjectEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_debug_label */\r\n\r\n#ifdef GL_EXT_debug_marker\r\n\r\nstatic void _glewInfo_GL_EXT_debug_marker (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_debug_marker\", GLEW_EXT_debug_marker, glewIsSupported(\"GL_EXT_debug_marker\"), glewGetExtension(\"GL_EXT_debug_marker\"));\r\n\r\n  glewInfoFunc(\"glInsertEventMarkerEXT\", glInsertEventMarkerEXT == NULL);\r\n  glewInfoFunc(\"glPopGroupMarkerEXT\", glPopGroupMarkerEXT == NULL);\r\n  glewInfoFunc(\"glPushGroupMarkerEXT\", glPushGroupMarkerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_debug_marker */\r\n\r\n#ifdef GL_EXT_depth_bounds_test\r\n\r\nstatic void _glewInfo_GL_EXT_depth_bounds_test (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_depth_bounds_test\", GLEW_EXT_depth_bounds_test, glewIsSupported(\"GL_EXT_depth_bounds_test\"), glewGetExtension(\"GL_EXT_depth_bounds_test\"));\r\n\r\n  glewInfoFunc(\"glDepthBoundsEXT\", glDepthBoundsEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_depth_bounds_test */\r\n\r\n#ifdef GL_EXT_direct_state_access\r\n\r\nstatic void _glewInfo_GL_EXT_direct_state_access (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_direct_state_access\", GLEW_EXT_direct_state_access, glewIsSupported(\"GL_EXT_direct_state_access\"), glewGetExtension(\"GL_EXT_direct_state_access\"));\r\n\r\n  glewInfoFunc(\"glBindMultiTextureEXT\", glBindMultiTextureEXT == NULL);\r\n  glewInfoFunc(\"glCheckNamedFramebufferStatusEXT\", glCheckNamedFramebufferStatusEXT == NULL);\r\n  glewInfoFunc(\"glClientAttribDefaultEXT\", glClientAttribDefaultEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexImage1DEXT\", glCompressedMultiTexImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexImage2DEXT\", glCompressedMultiTexImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexImage3DEXT\", glCompressedMultiTexImage3DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexSubImage1DEXT\", glCompressedMultiTexSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexSubImage2DEXT\", glCompressedMultiTexSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedMultiTexSubImage3DEXT\", glCompressedMultiTexSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureImage1DEXT\", glCompressedTextureImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureImage2DEXT\", glCompressedTextureImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureImage3DEXT\", glCompressedTextureImage3DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage1DEXT\", glCompressedTextureSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage2DEXT\", glCompressedTextureSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCompressedTextureSubImage3DEXT\", glCompressedTextureSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glCopyMultiTexImage1DEXT\", glCopyMultiTexImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyMultiTexImage2DEXT\", glCopyMultiTexImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyMultiTexSubImage1DEXT\", glCopyMultiTexSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyMultiTexSubImage2DEXT\", glCopyMultiTexSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyMultiTexSubImage3DEXT\", glCopyMultiTexSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTextureImage1DEXT\", glCopyTextureImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTextureImage2DEXT\", glCopyTextureImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage1DEXT\", glCopyTextureSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage2DEXT\", glCopyTextureSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glCopyTextureSubImage3DEXT\", glCopyTextureSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glDisableClientStateIndexedEXT\", glDisableClientStateIndexedEXT == NULL);\r\n  glewInfoFunc(\"glDisableClientStateiEXT\", glDisableClientStateiEXT == NULL);\r\n  glewInfoFunc(\"glDisableVertexArrayAttribEXT\", glDisableVertexArrayAttribEXT == NULL);\r\n  glewInfoFunc(\"glDisableVertexArrayEXT\", glDisableVertexArrayEXT == NULL);\r\n  glewInfoFunc(\"glEnableClientStateIndexedEXT\", glEnableClientStateIndexedEXT == NULL);\r\n  glewInfoFunc(\"glEnableClientStateiEXT\", glEnableClientStateiEXT == NULL);\r\n  glewInfoFunc(\"glEnableVertexArrayAttribEXT\", glEnableVertexArrayAttribEXT == NULL);\r\n  glewInfoFunc(\"glEnableVertexArrayEXT\", glEnableVertexArrayEXT == NULL);\r\n  glewInfoFunc(\"glFlushMappedNamedBufferRangeEXT\", glFlushMappedNamedBufferRangeEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferDrawBufferEXT\", glFramebufferDrawBufferEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferDrawBuffersEXT\", glFramebufferDrawBuffersEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferReadBufferEXT\", glFramebufferReadBufferEXT == NULL);\r\n  glewInfoFunc(\"glGenerateMultiTexMipmapEXT\", glGenerateMultiTexMipmapEXT == NULL);\r\n  glewInfoFunc(\"glGenerateTextureMipmapEXT\", glGenerateTextureMipmapEXT == NULL);\r\n  glewInfoFunc(\"glGetCompressedMultiTexImageEXT\", glGetCompressedMultiTexImageEXT == NULL);\r\n  glewInfoFunc(\"glGetCompressedTextureImageEXT\", glGetCompressedTextureImageEXT == NULL);\r\n  glewInfoFunc(\"glGetDoubleIndexedvEXT\", glGetDoubleIndexedvEXT == NULL);\r\n  glewInfoFunc(\"glGetDoublei_vEXT\", glGetDoublei_vEXT == NULL);\r\n  glewInfoFunc(\"glGetFloatIndexedvEXT\", glGetFloatIndexedvEXT == NULL);\r\n  glewInfoFunc(\"glGetFloati_vEXT\", glGetFloati_vEXT == NULL);\r\n  glewInfoFunc(\"glGetFramebufferParameterivEXT\", glGetFramebufferParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexEnvfvEXT\", glGetMultiTexEnvfvEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexEnvivEXT\", glGetMultiTexEnvivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexGendvEXT\", glGetMultiTexGendvEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexGenfvEXT\", glGetMultiTexGenfvEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexGenivEXT\", glGetMultiTexGenivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexImageEXT\", glGetMultiTexImageEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexLevelParameterfvEXT\", glGetMultiTexLevelParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexLevelParameterivEXT\", glGetMultiTexLevelParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexParameterIivEXT\", glGetMultiTexParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexParameterIuivEXT\", glGetMultiTexParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexParameterfvEXT\", glGetMultiTexParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetMultiTexParameterivEXT\", glGetMultiTexParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferParameterivEXT\", glGetNamedBufferParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferPointervEXT\", glGetNamedBufferPointervEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferSubDataEXT\", glGetNamedBufferSubDataEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedFramebufferAttachmentParameterivEXT\", glGetNamedFramebufferAttachmentParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramLocalParameterIivEXT\", glGetNamedProgramLocalParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramLocalParameterIuivEXT\", glGetNamedProgramLocalParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramLocalParameterdvEXT\", glGetNamedProgramLocalParameterdvEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramLocalParameterfvEXT\", glGetNamedProgramLocalParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramStringEXT\", glGetNamedProgramStringEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedProgramivEXT\", glGetNamedProgramivEXT == NULL);\r\n  glewInfoFunc(\"glGetNamedRenderbufferParameterivEXT\", glGetNamedRenderbufferParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetPointerIndexedvEXT\", glGetPointerIndexedvEXT == NULL);\r\n  glewInfoFunc(\"glGetPointeri_vEXT\", glGetPointeri_vEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureImageEXT\", glGetTextureImageEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureLevelParameterfvEXT\", glGetTextureLevelParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureLevelParameterivEXT\", glGetTextureLevelParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterIivEXT\", glGetTextureParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterIuivEXT\", glGetTextureParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterfvEXT\", glGetTextureParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetTextureParameterivEXT\", glGetTextureParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayIntegeri_vEXT\", glGetVertexArrayIntegeri_vEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayIntegervEXT\", glGetVertexArrayIntegervEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayPointeri_vEXT\", glGetVertexArrayPointeri_vEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexArrayPointervEXT\", glGetVertexArrayPointervEXT == NULL);\r\n  glewInfoFunc(\"glMapNamedBufferEXT\", glMapNamedBufferEXT == NULL);\r\n  glewInfoFunc(\"glMapNamedBufferRangeEXT\", glMapNamedBufferRangeEXT == NULL);\r\n  glewInfoFunc(\"glMatrixFrustumEXT\", glMatrixFrustumEXT == NULL);\r\n  glewInfoFunc(\"glMatrixLoadIdentityEXT\", glMatrixLoadIdentityEXT == NULL);\r\n  glewInfoFunc(\"glMatrixLoadTransposedEXT\", glMatrixLoadTransposedEXT == NULL);\r\n  glewInfoFunc(\"glMatrixLoadTransposefEXT\", glMatrixLoadTransposefEXT == NULL);\r\n  glewInfoFunc(\"glMatrixLoaddEXT\", glMatrixLoaddEXT == NULL);\r\n  glewInfoFunc(\"glMatrixLoadfEXT\", glMatrixLoadfEXT == NULL);\r\n  glewInfoFunc(\"glMatrixMultTransposedEXT\", glMatrixMultTransposedEXT == NULL);\r\n  glewInfoFunc(\"glMatrixMultTransposefEXT\", glMatrixMultTransposefEXT == NULL);\r\n  glewInfoFunc(\"glMatrixMultdEXT\", glMatrixMultdEXT == NULL);\r\n  glewInfoFunc(\"glMatrixMultfEXT\", glMatrixMultfEXT == NULL);\r\n  glewInfoFunc(\"glMatrixOrthoEXT\", glMatrixOrthoEXT == NULL);\r\n  glewInfoFunc(\"glMatrixPopEXT\", glMatrixPopEXT == NULL);\r\n  glewInfoFunc(\"glMatrixPushEXT\", glMatrixPushEXT == NULL);\r\n  glewInfoFunc(\"glMatrixRotatedEXT\", glMatrixRotatedEXT == NULL);\r\n  glewInfoFunc(\"glMatrixRotatefEXT\", glMatrixRotatefEXT == NULL);\r\n  glewInfoFunc(\"glMatrixScaledEXT\", glMatrixScaledEXT == NULL);\r\n  glewInfoFunc(\"glMatrixScalefEXT\", glMatrixScalefEXT == NULL);\r\n  glewInfoFunc(\"glMatrixTranslatedEXT\", glMatrixTranslatedEXT == NULL);\r\n  glewInfoFunc(\"glMatrixTranslatefEXT\", glMatrixTranslatefEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexBufferEXT\", glMultiTexBufferEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexCoordPointerEXT\", glMultiTexCoordPointerEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexEnvfEXT\", glMultiTexEnvfEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexEnvfvEXT\", glMultiTexEnvfvEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexEnviEXT\", glMultiTexEnviEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexEnvivEXT\", glMultiTexEnvivEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGendEXT\", glMultiTexGendEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGendvEXT\", glMultiTexGendvEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGenfEXT\", glMultiTexGenfEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGenfvEXT\", glMultiTexGenfvEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGeniEXT\", glMultiTexGeniEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexGenivEXT\", glMultiTexGenivEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexImage1DEXT\", glMultiTexImage1DEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexImage2DEXT\", glMultiTexImage2DEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexImage3DEXT\", glMultiTexImage3DEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameterIivEXT\", glMultiTexParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameterIuivEXT\", glMultiTexParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameterfEXT\", glMultiTexParameterfEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameterfvEXT\", glMultiTexParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameteriEXT\", glMultiTexParameteriEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexParameterivEXT\", glMultiTexParameterivEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexRenderbufferEXT\", glMultiTexRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexSubImage1DEXT\", glMultiTexSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexSubImage2DEXT\", glMultiTexSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glMultiTexSubImage3DEXT\", glMultiTexSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glNamedBufferDataEXT\", glNamedBufferDataEXT == NULL);\r\n  glewInfoFunc(\"glNamedBufferSubDataEXT\", glNamedBufferSubDataEXT == NULL);\r\n  glewInfoFunc(\"glNamedCopyBufferSubDataEXT\", glNamedCopyBufferSubDataEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferRenderbufferEXT\", glNamedFramebufferRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTexture1DEXT\", glNamedFramebufferTexture1DEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTexture2DEXT\", glNamedFramebufferTexture2DEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTexture3DEXT\", glNamedFramebufferTexture3DEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTextureEXT\", glNamedFramebufferTextureEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTextureFaceEXT\", glNamedFramebufferTextureFaceEXT == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferTextureLayerEXT\", glNamedFramebufferTextureLayerEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameter4dEXT\", glNamedProgramLocalParameter4dEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameter4dvEXT\", glNamedProgramLocalParameter4dvEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameter4fEXT\", glNamedProgramLocalParameter4fEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameter4fvEXT\", glNamedProgramLocalParameter4fvEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameterI4iEXT\", glNamedProgramLocalParameterI4iEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameterI4ivEXT\", glNamedProgramLocalParameterI4ivEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameterI4uiEXT\", glNamedProgramLocalParameterI4uiEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameterI4uivEXT\", glNamedProgramLocalParameterI4uivEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParameters4fvEXT\", glNamedProgramLocalParameters4fvEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParametersI4ivEXT\", glNamedProgramLocalParametersI4ivEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramLocalParametersI4uivEXT\", glNamedProgramLocalParametersI4uivEXT == NULL);\r\n  glewInfoFunc(\"glNamedProgramStringEXT\", glNamedProgramStringEXT == NULL);\r\n  glewInfoFunc(\"glNamedRenderbufferStorageEXT\", glNamedRenderbufferStorageEXT == NULL);\r\n  glewInfoFunc(\"glNamedRenderbufferStorageMultisampleCoverageEXT\", glNamedRenderbufferStorageMultisampleCoverageEXT == NULL);\r\n  glewInfoFunc(\"glNamedRenderbufferStorageMultisampleEXT\", glNamedRenderbufferStorageMultisampleEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1fEXT\", glProgramUniform1fEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1fvEXT\", glProgramUniform1fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1iEXT\", glProgramUniform1iEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ivEXT\", glProgramUniform1ivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1uiEXT\", glProgramUniform1uiEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform1uivEXT\", glProgramUniform1uivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2fEXT\", glProgramUniform2fEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2fvEXT\", glProgramUniform2fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2iEXT\", glProgramUniform2iEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ivEXT\", glProgramUniform2ivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2uiEXT\", glProgramUniform2uiEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform2uivEXT\", glProgramUniform2uivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3fEXT\", glProgramUniform3fEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3fvEXT\", glProgramUniform3fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3iEXT\", glProgramUniform3iEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ivEXT\", glProgramUniform3ivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3uiEXT\", glProgramUniform3uiEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform3uivEXT\", glProgramUniform3uivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4fEXT\", glProgramUniform4fEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4fvEXT\", glProgramUniform4fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4iEXT\", glProgramUniform4iEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ivEXT\", glProgramUniform4ivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4uiEXT\", glProgramUniform4uiEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniform4uivEXT\", glProgramUniform4uivEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2fvEXT\", glProgramUniformMatrix2fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x3fvEXT\", glProgramUniformMatrix2x3fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix2x4fvEXT\", glProgramUniformMatrix2x4fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3fvEXT\", glProgramUniformMatrix3fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x2fvEXT\", glProgramUniformMatrix3x2fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix3x4fvEXT\", glProgramUniformMatrix3x4fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4fvEXT\", glProgramUniformMatrix4fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x2fvEXT\", glProgramUniformMatrix4x2fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramUniformMatrix4x3fvEXT\", glProgramUniformMatrix4x3fvEXT == NULL);\r\n  glewInfoFunc(\"glPushClientAttribDefaultEXT\", glPushClientAttribDefaultEXT == NULL);\r\n  glewInfoFunc(\"glTextureBufferEXT\", glTextureBufferEXT == NULL);\r\n  glewInfoFunc(\"glTextureImage1DEXT\", glTextureImage1DEXT == NULL);\r\n  glewInfoFunc(\"glTextureImage2DEXT\", glTextureImage2DEXT == NULL);\r\n  glewInfoFunc(\"glTextureImage3DEXT\", glTextureImage3DEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameterIivEXT\", glTextureParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameterIuivEXT\", glTextureParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameterfEXT\", glTextureParameterfEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameterfvEXT\", glTextureParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameteriEXT\", glTextureParameteriEXT == NULL);\r\n  glewInfoFunc(\"glTextureParameterivEXT\", glTextureParameterivEXT == NULL);\r\n  glewInfoFunc(\"glTextureRenderbufferEXT\", glTextureRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glTextureSubImage1DEXT\", glTextureSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glTextureSubImage2DEXT\", glTextureSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glTextureSubImage3DEXT\", glTextureSubImage3DEXT == NULL);\r\n  glewInfoFunc(\"glUnmapNamedBufferEXT\", glUnmapNamedBufferEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayColorOffsetEXT\", glVertexArrayColorOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayEdgeFlagOffsetEXT\", glVertexArrayEdgeFlagOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayFogCoordOffsetEXT\", glVertexArrayFogCoordOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayIndexOffsetEXT\", glVertexArrayIndexOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayMultiTexCoordOffsetEXT\", glVertexArrayMultiTexCoordOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayNormalOffsetEXT\", glVertexArrayNormalOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArraySecondaryColorOffsetEXT\", glVertexArraySecondaryColorOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayTexCoordOffsetEXT\", glVertexArrayTexCoordOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribDivisorEXT\", glVertexArrayVertexAttribDivisorEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribIOffsetEXT\", glVertexArrayVertexAttribIOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribOffsetEXT\", glVertexArrayVertexAttribOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexOffsetEXT\", glVertexArrayVertexOffsetEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_direct_state_access */\r\n\r\n#ifdef GL_EXT_discard_framebuffer\r\n\r\nstatic void _glewInfo_GL_EXT_discard_framebuffer (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_discard_framebuffer\", GLEW_EXT_discard_framebuffer, glewIsSupported(\"GL_EXT_discard_framebuffer\"), glewGetExtension(\"GL_EXT_discard_framebuffer\"));\r\n\r\n  glewInfoFunc(\"glDiscardFramebufferEXT\", glDiscardFramebufferEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_discard_framebuffer */\r\n\r\n#ifdef GL_EXT_draw_buffers\r\n\r\nstatic void _glewInfo_GL_EXT_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_buffers\", GLEW_EXT_draw_buffers, glewIsSupported(\"GL_EXT_draw_buffers\"), glewGetExtension(\"GL_EXT_draw_buffers\"));\r\n\r\n  glewInfoFunc(\"glDrawBuffersEXT\", glDrawBuffersEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers */\r\n\r\n#ifdef GL_EXT_draw_buffers2\r\n\r\nstatic void _glewInfo_GL_EXT_draw_buffers2 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_buffers2\", GLEW_EXT_draw_buffers2, glewIsSupported(\"GL_EXT_draw_buffers2\"), glewGetExtension(\"GL_EXT_draw_buffers2\"));\r\n\r\n  glewInfoFunc(\"glColorMaskIndexedEXT\", glColorMaskIndexedEXT == NULL);\r\n  glewInfoFunc(\"glDisableIndexedEXT\", glDisableIndexedEXT == NULL);\r\n  glewInfoFunc(\"glEnableIndexedEXT\", glEnableIndexedEXT == NULL);\r\n  glewInfoFunc(\"glGetBooleanIndexedvEXT\", glGetBooleanIndexedvEXT == NULL);\r\n  glewInfoFunc(\"glGetIntegerIndexedvEXT\", glGetIntegerIndexedvEXT == NULL);\r\n  glewInfoFunc(\"glIsEnabledIndexedEXT\", glIsEnabledIndexedEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers2 */\r\n\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n\r\nstatic void _glewInfo_GL_EXT_draw_buffers_indexed (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_buffers_indexed\", GLEW_EXT_draw_buffers_indexed, glewIsSupported(\"GL_EXT_draw_buffers_indexed\"), glewGetExtension(\"GL_EXT_draw_buffers_indexed\"));\r\n\r\n  glewInfoFunc(\"glBlendEquationSeparateiEXT\", glBlendEquationSeparateiEXT == NULL);\r\n  glewInfoFunc(\"glBlendEquationiEXT\", glBlendEquationiEXT == NULL);\r\n  glewInfoFunc(\"glBlendFuncSeparateiEXT\", glBlendFuncSeparateiEXT == NULL);\r\n  glewInfoFunc(\"glBlendFunciEXT\", glBlendFunciEXT == NULL);\r\n  glewInfoFunc(\"glColorMaskiEXT\", glColorMaskiEXT == NULL);\r\n  glewInfoFunc(\"glDisableiEXT\", glDisableiEXT == NULL);\r\n  glewInfoFunc(\"glEnableiEXT\", glEnableiEXT == NULL);\r\n  glewInfoFunc(\"glIsEnablediEXT\", glIsEnablediEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_buffers_indexed */\r\n\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n\r\nstatic void _glewInfo_GL_EXT_draw_elements_base_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_elements_base_vertex\", GLEW_EXT_draw_elements_base_vertex, glewIsSupported(\"GL_EXT_draw_elements_base_vertex\"), glewGetExtension(\"GL_EXT_draw_elements_base_vertex\"));\r\n\r\n  glewInfoFunc(\"glDrawElementsBaseVertexEXT\", glDrawElementsBaseVertexEXT == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedBaseVertexEXT\", glDrawElementsInstancedBaseVertexEXT == NULL);\r\n  glewInfoFunc(\"glDrawRangeElementsBaseVertexEXT\", glDrawRangeElementsBaseVertexEXT == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsBaseVertexEXT\", glMultiDrawElementsBaseVertexEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_elements_base_vertex */\r\n\r\n#ifdef GL_EXT_draw_instanced\r\n\r\nstatic void _glewInfo_GL_EXT_draw_instanced (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_instanced\", GLEW_EXT_draw_instanced, glewIsSupported(\"GL_EXT_draw_instanced\"), glewGetExtension(\"GL_EXT_draw_instanced\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedEXT\", glDrawArraysInstancedEXT == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedEXT\", glDrawElementsInstancedEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_instanced */\r\n\r\n#ifdef GL_EXT_draw_range_elements\r\n\r\nstatic void _glewInfo_GL_EXT_draw_range_elements (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_draw_range_elements\", GLEW_EXT_draw_range_elements, glewIsSupported(\"GL_EXT_draw_range_elements\"), glewGetExtension(\"GL_EXT_draw_range_elements\"));\r\n\r\n  glewInfoFunc(\"glDrawRangeElementsEXT\", glDrawRangeElementsEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_draw_range_elements */\r\n\r\n#ifdef GL_EXT_external_buffer\r\n\r\nstatic void _glewInfo_GL_EXT_external_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_external_buffer\", GLEW_EXT_external_buffer, glewIsSupported(\"GL_EXT_external_buffer\"), glewGetExtension(\"GL_EXT_external_buffer\"));\r\n\r\n  glewInfoFunc(\"glBufferStorageExternalEXT\", glBufferStorageExternalEXT == NULL);\r\n  glewInfoFunc(\"glNamedBufferStorageExternalEXT\", glNamedBufferStorageExternalEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_external_buffer */\r\n\r\n#ifdef GL_EXT_float_blend\r\n\r\nstatic void _glewInfo_GL_EXT_float_blend (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_float_blend\", GLEW_EXT_float_blend, glewIsSupported(\"GL_EXT_float_blend\"), glewGetExtension(\"GL_EXT_float_blend\"));\r\n}\r\n\r\n#endif /* GL_EXT_float_blend */\r\n\r\n#ifdef GL_EXT_fog_coord\r\n\r\nstatic void _glewInfo_GL_EXT_fog_coord (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_fog_coord\", GLEW_EXT_fog_coord, glewIsSupported(\"GL_EXT_fog_coord\"), glewGetExtension(\"GL_EXT_fog_coord\"));\r\n\r\n  glewInfoFunc(\"glFogCoordPointerEXT\", glFogCoordPointerEXT == NULL);\r\n  glewInfoFunc(\"glFogCoorddEXT\", glFogCoorddEXT == NULL);\r\n  glewInfoFunc(\"glFogCoorddvEXT\", glFogCoorddvEXT == NULL);\r\n  glewInfoFunc(\"glFogCoordfEXT\", glFogCoordfEXT == NULL);\r\n  glewInfoFunc(\"glFogCoordfvEXT\", glFogCoordfvEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_fog_coord */\r\n\r\n#ifdef GL_EXT_frag_depth\r\n\r\nstatic void _glewInfo_GL_EXT_frag_depth (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_frag_depth\", GLEW_EXT_frag_depth, glewIsSupported(\"GL_EXT_frag_depth\"), glewGetExtension(\"GL_EXT_frag_depth\"));\r\n}\r\n\r\n#endif /* GL_EXT_frag_depth */\r\n\r\n#ifdef GL_EXT_fragment_lighting\r\n\r\nstatic void _glewInfo_GL_EXT_fragment_lighting (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_fragment_lighting\", GLEW_EXT_fragment_lighting, glewIsSupported(\"GL_EXT_fragment_lighting\"), glewGetExtension(\"GL_EXT_fragment_lighting\"));\r\n\r\n  glewInfoFunc(\"glFragmentColorMaterialEXT\", glFragmentColorMaterialEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelfEXT\", glFragmentLightModelfEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelfvEXT\", glFragmentLightModelfvEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightModeliEXT\", glFragmentLightModeliEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelivEXT\", glFragmentLightModelivEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightfEXT\", glFragmentLightfEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightfvEXT\", glFragmentLightfvEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightiEXT\", glFragmentLightiEXT == NULL);\r\n  glewInfoFunc(\"glFragmentLightivEXT\", glFragmentLightivEXT == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialfEXT\", glFragmentMaterialfEXT == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialfvEXT\", glFragmentMaterialfvEXT == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialiEXT\", glFragmentMaterialiEXT == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialivEXT\", glFragmentMaterialivEXT == NULL);\r\n  glewInfoFunc(\"glGetFragmentLightfvEXT\", glGetFragmentLightfvEXT == NULL);\r\n  glewInfoFunc(\"glGetFragmentLightivEXT\", glGetFragmentLightivEXT == NULL);\r\n  glewInfoFunc(\"glGetFragmentMaterialfvEXT\", glGetFragmentMaterialfvEXT == NULL);\r\n  glewInfoFunc(\"glGetFragmentMaterialivEXT\", glGetFragmentMaterialivEXT == NULL);\r\n  glewInfoFunc(\"glLightEnviEXT\", glLightEnviEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_fragment_lighting */\r\n\r\n#ifdef GL_EXT_framebuffer_blit\r\n\r\nstatic void _glewInfo_GL_EXT_framebuffer_blit (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_framebuffer_blit\", GLEW_EXT_framebuffer_blit, glewIsSupported(\"GL_EXT_framebuffer_blit\"), glewGetExtension(\"GL_EXT_framebuffer_blit\"));\r\n\r\n  glewInfoFunc(\"glBlitFramebufferEXT\", glBlitFramebufferEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_blit */\r\n\r\n#ifdef GL_EXT_framebuffer_multisample\r\n\r\nstatic void _glewInfo_GL_EXT_framebuffer_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_framebuffer_multisample\", GLEW_EXT_framebuffer_multisample, glewIsSupported(\"GL_EXT_framebuffer_multisample\"), glewGetExtension(\"GL_EXT_framebuffer_multisample\"));\r\n\r\n  glewInfoFunc(\"glRenderbufferStorageMultisampleEXT\", glRenderbufferStorageMultisampleEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_multisample */\r\n\r\n#ifdef GL_EXT_framebuffer_multisample_blit_scaled\r\n\r\nstatic void _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_framebuffer_multisample_blit_scaled\", GLEW_EXT_framebuffer_multisample_blit_scaled, glewIsSupported(\"GL_EXT_framebuffer_multisample_blit_scaled\"), glewGetExtension(\"GL_EXT_framebuffer_multisample_blit_scaled\"));\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_multisample_blit_scaled */\r\n\r\n#ifdef GL_EXT_framebuffer_object\r\n\r\nstatic void _glewInfo_GL_EXT_framebuffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_framebuffer_object\", GLEW_EXT_framebuffer_object, glewIsSupported(\"GL_EXT_framebuffer_object\"), glewGetExtension(\"GL_EXT_framebuffer_object\"));\r\n\r\n  glewInfoFunc(\"glBindFramebufferEXT\", glBindFramebufferEXT == NULL);\r\n  glewInfoFunc(\"glBindRenderbufferEXT\", glBindRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glCheckFramebufferStatusEXT\", glCheckFramebufferStatusEXT == NULL);\r\n  glewInfoFunc(\"glDeleteFramebuffersEXT\", glDeleteFramebuffersEXT == NULL);\r\n  glewInfoFunc(\"glDeleteRenderbuffersEXT\", glDeleteRenderbuffersEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferRenderbufferEXT\", glFramebufferRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture1DEXT\", glFramebufferTexture1DEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture2DEXT\", glFramebufferTexture2DEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferTexture3DEXT\", glFramebufferTexture3DEXT == NULL);\r\n  glewInfoFunc(\"glGenFramebuffersEXT\", glGenFramebuffersEXT == NULL);\r\n  glewInfoFunc(\"glGenRenderbuffersEXT\", glGenRenderbuffersEXT == NULL);\r\n  glewInfoFunc(\"glGenerateMipmapEXT\", glGenerateMipmapEXT == NULL);\r\n  glewInfoFunc(\"glGetFramebufferAttachmentParameterivEXT\", glGetFramebufferAttachmentParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetRenderbufferParameterivEXT\", glGetRenderbufferParameterivEXT == NULL);\r\n  glewInfoFunc(\"glIsFramebufferEXT\", glIsFramebufferEXT == NULL);\r\n  glewInfoFunc(\"glIsRenderbufferEXT\", glIsRenderbufferEXT == NULL);\r\n  glewInfoFunc(\"glRenderbufferStorageEXT\", glRenderbufferStorageEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_object */\r\n\r\n#ifdef GL_EXT_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_GL_EXT_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_framebuffer_sRGB\", GLEW_EXT_framebuffer_sRGB, glewIsSupported(\"GL_EXT_framebuffer_sRGB\"), glewGetExtension(\"GL_EXT_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* GL_EXT_framebuffer_sRGB */\r\n\r\n#ifdef GL_EXT_geometry_point_size\r\n\r\nstatic void _glewInfo_GL_EXT_geometry_point_size (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_geometry_point_size\", GLEW_EXT_geometry_point_size, glewIsSupported(\"GL_EXT_geometry_point_size\"), glewGetExtension(\"GL_EXT_geometry_point_size\"));\r\n}\r\n\r\n#endif /* GL_EXT_geometry_point_size */\r\n\r\n#ifdef GL_EXT_geometry_shader\r\n\r\nstatic void _glewInfo_GL_EXT_geometry_shader (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_geometry_shader\", GLEW_EXT_geometry_shader, glewIsSupported(\"GL_EXT_geometry_shader\"), glewGetExtension(\"GL_EXT_geometry_shader\"));\r\n}\r\n\r\n#endif /* GL_EXT_geometry_shader */\r\n\r\n#ifdef GL_EXT_geometry_shader4\r\n\r\nstatic void _glewInfo_GL_EXT_geometry_shader4 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_geometry_shader4\", GLEW_EXT_geometry_shader4, glewIsSupported(\"GL_EXT_geometry_shader4\"), glewGetExtension(\"GL_EXT_geometry_shader4\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTextureEXT\", glFramebufferTextureEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferTextureFaceEXT\", glFramebufferTextureFaceEXT == NULL);\r\n  glewInfoFunc(\"glProgramParameteriEXT\", glProgramParameteriEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_geometry_shader4 */\r\n\r\n#ifdef GL_EXT_gpu_program_parameters\r\n\r\nstatic void _glewInfo_GL_EXT_gpu_program_parameters (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_gpu_program_parameters\", GLEW_EXT_gpu_program_parameters, glewIsSupported(\"GL_EXT_gpu_program_parameters\"), glewGetExtension(\"GL_EXT_gpu_program_parameters\"));\r\n\r\n  glewInfoFunc(\"glProgramEnvParameters4fvEXT\", glProgramEnvParameters4fvEXT == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameters4fvEXT\", glProgramLocalParameters4fvEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_gpu_program_parameters */\r\n\r\n#ifdef GL_EXT_gpu_shader4\r\n\r\nstatic void _glewInfo_GL_EXT_gpu_shader4 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_gpu_shader4\", GLEW_EXT_gpu_shader4, glewIsSupported(\"GL_EXT_gpu_shader4\"), glewGetExtension(\"GL_EXT_gpu_shader4\"));\r\n\r\n  glewInfoFunc(\"glBindFragDataLocationEXT\", glBindFragDataLocationEXT == NULL);\r\n  glewInfoFunc(\"glGetFragDataLocationEXT\", glGetFragDataLocationEXT == NULL);\r\n  glewInfoFunc(\"glGetUniformuivEXT\", glGetUniformuivEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribIivEXT\", glGetVertexAttribIivEXT == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribIuivEXT\", glGetVertexAttribIuivEXT == NULL);\r\n  glewInfoFunc(\"glUniform1uiEXT\", glUniform1uiEXT == NULL);\r\n  glewInfoFunc(\"glUniform1uivEXT\", glUniform1uivEXT == NULL);\r\n  glewInfoFunc(\"glUniform2uiEXT\", glUniform2uiEXT == NULL);\r\n  glewInfoFunc(\"glUniform2uivEXT\", glUniform2uivEXT == NULL);\r\n  glewInfoFunc(\"glUniform3uiEXT\", glUniform3uiEXT == NULL);\r\n  glewInfoFunc(\"glUniform3uivEXT\", glUniform3uivEXT == NULL);\r\n  glewInfoFunc(\"glUniform4uiEXT\", glUniform4uiEXT == NULL);\r\n  glewInfoFunc(\"glUniform4uivEXT\", glUniform4uivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1iEXT\", glVertexAttribI1iEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1ivEXT\", glVertexAttribI1ivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1uiEXT\", glVertexAttribI1uiEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI1uivEXT\", glVertexAttribI1uivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2iEXT\", glVertexAttribI2iEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2ivEXT\", glVertexAttribI2ivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2uiEXT\", glVertexAttribI2uiEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI2uivEXT\", glVertexAttribI2uivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3iEXT\", glVertexAttribI3iEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3ivEXT\", glVertexAttribI3ivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3uiEXT\", glVertexAttribI3uiEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI3uivEXT\", glVertexAttribI3uivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4bvEXT\", glVertexAttribI4bvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4iEXT\", glVertexAttribI4iEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4ivEXT\", glVertexAttribI4ivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4svEXT\", glVertexAttribI4svEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4ubvEXT\", glVertexAttribI4ubvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4uiEXT\", glVertexAttribI4uiEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4uivEXT\", glVertexAttribI4uivEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribI4usvEXT\", glVertexAttribI4usvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribIPointerEXT\", glVertexAttribIPointerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_gpu_shader4 */\r\n\r\n#ifdef GL_EXT_gpu_shader5\r\n\r\nstatic void _glewInfo_GL_EXT_gpu_shader5 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_gpu_shader5\", GLEW_EXT_gpu_shader5, glewIsSupported(\"GL_EXT_gpu_shader5\"), glewGetExtension(\"GL_EXT_gpu_shader5\"));\r\n}\r\n\r\n#endif /* GL_EXT_gpu_shader5 */\r\n\r\n#ifdef GL_EXT_histogram\r\n\r\nstatic void _glewInfo_GL_EXT_histogram (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_histogram\", GLEW_EXT_histogram, glewIsSupported(\"GL_EXT_histogram\"), glewGetExtension(\"GL_EXT_histogram\"));\r\n\r\n  glewInfoFunc(\"glGetHistogramEXT\", glGetHistogramEXT == NULL);\r\n  glewInfoFunc(\"glGetHistogramParameterfvEXT\", glGetHistogramParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetHistogramParameterivEXT\", glGetHistogramParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetMinmaxEXT\", glGetMinmaxEXT == NULL);\r\n  glewInfoFunc(\"glGetMinmaxParameterfvEXT\", glGetMinmaxParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetMinmaxParameterivEXT\", glGetMinmaxParameterivEXT == NULL);\r\n  glewInfoFunc(\"glHistogramEXT\", glHistogramEXT == NULL);\r\n  glewInfoFunc(\"glMinmaxEXT\", glMinmaxEXT == NULL);\r\n  glewInfoFunc(\"glResetHistogramEXT\", glResetHistogramEXT == NULL);\r\n  glewInfoFunc(\"glResetMinmaxEXT\", glResetMinmaxEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_histogram */\r\n\r\n#ifdef GL_EXT_index_array_formats\r\n\r\nstatic void _glewInfo_GL_EXT_index_array_formats (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_index_array_formats\", GLEW_EXT_index_array_formats, glewIsSupported(\"GL_EXT_index_array_formats\"), glewGetExtension(\"GL_EXT_index_array_formats\"));\r\n}\r\n\r\n#endif /* GL_EXT_index_array_formats */\r\n\r\n#ifdef GL_EXT_index_func\r\n\r\nstatic void _glewInfo_GL_EXT_index_func (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_index_func\", GLEW_EXT_index_func, glewIsSupported(\"GL_EXT_index_func\"), glewGetExtension(\"GL_EXT_index_func\"));\r\n\r\n  glewInfoFunc(\"glIndexFuncEXT\", glIndexFuncEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_index_func */\r\n\r\n#ifdef GL_EXT_index_material\r\n\r\nstatic void _glewInfo_GL_EXT_index_material (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_index_material\", GLEW_EXT_index_material, glewIsSupported(\"GL_EXT_index_material\"), glewGetExtension(\"GL_EXT_index_material\"));\r\n\r\n  glewInfoFunc(\"glIndexMaterialEXT\", glIndexMaterialEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_index_material */\r\n\r\n#ifdef GL_EXT_index_texture\r\n\r\nstatic void _glewInfo_GL_EXT_index_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_index_texture\", GLEW_EXT_index_texture, glewIsSupported(\"GL_EXT_index_texture\"), glewGetExtension(\"GL_EXT_index_texture\"));\r\n}\r\n\r\n#endif /* GL_EXT_index_texture */\r\n\r\n#ifdef GL_EXT_instanced_arrays\r\n\r\nstatic void _glewInfo_GL_EXT_instanced_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_instanced_arrays\", GLEW_EXT_instanced_arrays, glewIsSupported(\"GL_EXT_instanced_arrays\"), glewGetExtension(\"GL_EXT_instanced_arrays\"));\r\n\r\n  glewInfoFunc(\"glVertexAttribDivisorEXT\", glVertexAttribDivisorEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_instanced_arrays */\r\n\r\n#ifdef GL_EXT_light_texture\r\n\r\nstatic void _glewInfo_GL_EXT_light_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_light_texture\", GLEW_EXT_light_texture, glewIsSupported(\"GL_EXT_light_texture\"), glewGetExtension(\"GL_EXT_light_texture\"));\r\n\r\n  glewInfoFunc(\"glApplyTextureEXT\", glApplyTextureEXT == NULL);\r\n  glewInfoFunc(\"glTextureLightEXT\", glTextureLightEXT == NULL);\r\n  glewInfoFunc(\"glTextureMaterialEXT\", glTextureMaterialEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_light_texture */\r\n\r\n#ifdef GL_EXT_map_buffer_range\r\n\r\nstatic void _glewInfo_GL_EXT_map_buffer_range (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_map_buffer_range\", GLEW_EXT_map_buffer_range, glewIsSupported(\"GL_EXT_map_buffer_range\"), glewGetExtension(\"GL_EXT_map_buffer_range\"));\r\n\r\n  glewInfoFunc(\"glFlushMappedBufferRangeEXT\", glFlushMappedBufferRangeEXT == NULL);\r\n  glewInfoFunc(\"glMapBufferRangeEXT\", glMapBufferRangeEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_map_buffer_range */\r\n\r\n#ifdef GL_EXT_memory_object\r\n\r\nstatic void _glewInfo_GL_EXT_memory_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_memory_object\", GLEW_EXT_memory_object, glewIsSupported(\"GL_EXT_memory_object\"), glewGetExtension(\"GL_EXT_memory_object\"));\r\n\r\n  glewInfoFunc(\"glBufferStorageMemEXT\", glBufferStorageMemEXT == NULL);\r\n  glewInfoFunc(\"glCreateMemoryObjectsEXT\", glCreateMemoryObjectsEXT == NULL);\r\n  glewInfoFunc(\"glDeleteMemoryObjectsEXT\", glDeleteMemoryObjectsEXT == NULL);\r\n  glewInfoFunc(\"glGetMemoryObjectParameterivEXT\", glGetMemoryObjectParameterivEXT == NULL);\r\n  glewInfoFunc(\"glGetUnsignedBytei_vEXT\", glGetUnsignedBytei_vEXT == NULL);\r\n  glewInfoFunc(\"glGetUnsignedBytevEXT\", glGetUnsignedBytevEXT == NULL);\r\n  glewInfoFunc(\"glIsMemoryObjectEXT\", glIsMemoryObjectEXT == NULL);\r\n  glewInfoFunc(\"glMemoryObjectParameterivEXT\", glMemoryObjectParameterivEXT == NULL);\r\n  glewInfoFunc(\"glNamedBufferStorageMemEXT\", glNamedBufferStorageMemEXT == NULL);\r\n  glewInfoFunc(\"glTexStorageMem1DEXT\", glTexStorageMem1DEXT == NULL);\r\n  glewInfoFunc(\"glTexStorageMem2DEXT\", glTexStorageMem2DEXT == NULL);\r\n  glewInfoFunc(\"glTexStorageMem2DMultisampleEXT\", glTexStorageMem2DMultisampleEXT == NULL);\r\n  glewInfoFunc(\"glTexStorageMem3DEXT\", glTexStorageMem3DEXT == NULL);\r\n  glewInfoFunc(\"glTexStorageMem3DMultisampleEXT\", glTexStorageMem3DMultisampleEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorageMem1DEXT\", glTextureStorageMem1DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorageMem2DEXT\", glTextureStorageMem2DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorageMem2DMultisampleEXT\", glTextureStorageMem2DMultisampleEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorageMem3DEXT\", glTextureStorageMem3DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorageMem3DMultisampleEXT\", glTextureStorageMem3DMultisampleEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_memory_object */\r\n\r\n#ifdef GL_EXT_memory_object_fd\r\n\r\nstatic void _glewInfo_GL_EXT_memory_object_fd (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_memory_object_fd\", GLEW_EXT_memory_object_fd, glewIsSupported(\"GL_EXT_memory_object_fd\"), glewGetExtension(\"GL_EXT_memory_object_fd\"));\r\n\r\n  glewInfoFunc(\"glImportMemoryFdEXT\", glImportMemoryFdEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_memory_object_fd */\r\n\r\n#ifdef GL_EXT_memory_object_win32\r\n\r\nstatic void _glewInfo_GL_EXT_memory_object_win32 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_memory_object_win32\", GLEW_EXT_memory_object_win32, glewIsSupported(\"GL_EXT_memory_object_win32\"), glewGetExtension(\"GL_EXT_memory_object_win32\"));\r\n\r\n  glewInfoFunc(\"glImportMemoryWin32HandleEXT\", glImportMemoryWin32HandleEXT == NULL);\r\n  glewInfoFunc(\"glImportMemoryWin32NameEXT\", glImportMemoryWin32NameEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_memory_object_win32 */\r\n\r\n#ifdef GL_EXT_misc_attribute\r\n\r\nstatic void _glewInfo_GL_EXT_misc_attribute (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_misc_attribute\", GLEW_EXT_misc_attribute, glewIsSupported(\"GL_EXT_misc_attribute\"), glewGetExtension(\"GL_EXT_misc_attribute\"));\r\n}\r\n\r\n#endif /* GL_EXT_misc_attribute */\r\n\r\n#ifdef GL_EXT_multi_draw_arrays\r\n\r\nstatic void _glewInfo_GL_EXT_multi_draw_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multi_draw_arrays\", GLEW_EXT_multi_draw_arrays, glewIsSupported(\"GL_EXT_multi_draw_arrays\"), glewGetExtension(\"GL_EXT_multi_draw_arrays\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysEXT\", glMultiDrawArraysEXT == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsEXT\", glMultiDrawElementsEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_multi_draw_arrays */\r\n\r\n#ifdef GL_EXT_multi_draw_indirect\r\n\r\nstatic void _glewInfo_GL_EXT_multi_draw_indirect (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multi_draw_indirect\", GLEW_EXT_multi_draw_indirect, glewIsSupported(\"GL_EXT_multi_draw_indirect\"), glewGetExtension(\"GL_EXT_multi_draw_indirect\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectEXT\", glMultiDrawArraysIndirectEXT == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectEXT\", glMultiDrawElementsIndirectEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_multi_draw_indirect */\r\n\r\n#ifdef GL_EXT_multiple_textures\r\n\r\nstatic void _glewInfo_GL_EXT_multiple_textures (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multiple_textures\", GLEW_EXT_multiple_textures, glewIsSupported(\"GL_EXT_multiple_textures\"), glewGetExtension(\"GL_EXT_multiple_textures\"));\r\n}\r\n\r\n#endif /* GL_EXT_multiple_textures */\r\n\r\n#ifdef GL_EXT_multisample\r\n\r\nstatic void _glewInfo_GL_EXT_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multisample\", GLEW_EXT_multisample, glewIsSupported(\"GL_EXT_multisample\"), glewGetExtension(\"GL_EXT_multisample\"));\r\n\r\n  glewInfoFunc(\"glSampleMaskEXT\", glSampleMaskEXT == NULL);\r\n  glewInfoFunc(\"glSamplePatternEXT\", glSamplePatternEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_multisample */\r\n\r\n#ifdef GL_EXT_multisample_compatibility\r\n\r\nstatic void _glewInfo_GL_EXT_multisample_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multisample_compatibility\", GLEW_EXT_multisample_compatibility, glewIsSupported(\"GL_EXT_multisample_compatibility\"), glewGetExtension(\"GL_EXT_multisample_compatibility\"));\r\n}\r\n\r\n#endif /* GL_EXT_multisample_compatibility */\r\n\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n\r\nstatic void _glewInfo_GL_EXT_multisampled_render_to_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multisampled_render_to_texture\", GLEW_EXT_multisampled_render_to_texture, glewIsSupported(\"GL_EXT_multisampled_render_to_texture\"), glewGetExtension(\"GL_EXT_multisampled_render_to_texture\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTexture2DMultisampleEXT\", glFramebufferTexture2DMultisampleEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_multisampled_render_to_texture */\r\n\r\n#ifdef GL_EXT_multisampled_render_to_texture2\r\n\r\nstatic void _glewInfo_GL_EXT_multisampled_render_to_texture2 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multisampled_render_to_texture2\", GLEW_EXT_multisampled_render_to_texture2, glewIsSupported(\"GL_EXT_multisampled_render_to_texture2\"), glewGetExtension(\"GL_EXT_multisampled_render_to_texture2\"));\r\n}\r\n\r\n#endif /* GL_EXT_multisampled_render_to_texture2 */\r\n\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n\r\nstatic void _glewInfo_GL_EXT_multiview_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_multiview_draw_buffers\", GLEW_EXT_multiview_draw_buffers, glewIsSupported(\"GL_EXT_multiview_draw_buffers\"), glewGetExtension(\"GL_EXT_multiview_draw_buffers\"));\r\n\r\n  glewInfoFunc(\"glDrawBuffersIndexedEXT\", glDrawBuffersIndexedEXT == NULL);\r\n  glewInfoFunc(\"glGetIntegeri_vEXT\", glGetIntegeri_vEXT == NULL);\r\n  glewInfoFunc(\"glReadBufferIndexedEXT\", glReadBufferIndexedEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_multiview_draw_buffers */\r\n\r\n#ifdef GL_EXT_packed_depth_stencil\r\n\r\nstatic void _glewInfo_GL_EXT_packed_depth_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_packed_depth_stencil\", GLEW_EXT_packed_depth_stencil, glewIsSupported(\"GL_EXT_packed_depth_stencil\"), glewGetExtension(\"GL_EXT_packed_depth_stencil\"));\r\n}\r\n\r\n#endif /* GL_EXT_packed_depth_stencil */\r\n\r\n#ifdef GL_EXT_packed_float\r\n\r\nstatic void _glewInfo_GL_EXT_packed_float (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_packed_float\", GLEW_EXT_packed_float, glewIsSupported(\"GL_EXT_packed_float\"), glewGetExtension(\"GL_EXT_packed_float\"));\r\n}\r\n\r\n#endif /* GL_EXT_packed_float */\r\n\r\n#ifdef GL_EXT_packed_pixels\r\n\r\nstatic void _glewInfo_GL_EXT_packed_pixels (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_packed_pixels\", GLEW_EXT_packed_pixels, glewIsSupported(\"GL_EXT_packed_pixels\"), glewGetExtension(\"GL_EXT_packed_pixels\"));\r\n}\r\n\r\n#endif /* GL_EXT_packed_pixels */\r\n\r\n#ifdef GL_EXT_paletted_texture\r\n\r\nstatic void _glewInfo_GL_EXT_paletted_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_paletted_texture\", GLEW_EXT_paletted_texture, glewIsSupported(\"GL_EXT_paletted_texture\"), glewGetExtension(\"GL_EXT_paletted_texture\"));\r\n\r\n  glewInfoFunc(\"glColorTableEXT\", glColorTableEXT == NULL);\r\n  glewInfoFunc(\"glGetColorTableEXT\", glGetColorTableEXT == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameterfvEXT\", glGetColorTableParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameterivEXT\", glGetColorTableParameterivEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_paletted_texture */\r\n\r\n#ifdef GL_EXT_pixel_buffer_object\r\n\r\nstatic void _glewInfo_GL_EXT_pixel_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_pixel_buffer_object\", GLEW_EXT_pixel_buffer_object, glewIsSupported(\"GL_EXT_pixel_buffer_object\"), glewGetExtension(\"GL_EXT_pixel_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_EXT_pixel_buffer_object */\r\n\r\n#ifdef GL_EXT_pixel_transform\r\n\r\nstatic void _glewInfo_GL_EXT_pixel_transform (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_pixel_transform\", GLEW_EXT_pixel_transform, glewIsSupported(\"GL_EXT_pixel_transform\"), glewGetExtension(\"GL_EXT_pixel_transform\"));\r\n\r\n  glewInfoFunc(\"glGetPixelTransformParameterfvEXT\", glGetPixelTransformParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glGetPixelTransformParameterivEXT\", glGetPixelTransformParameterivEXT == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterfEXT\", glPixelTransformParameterfEXT == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterfvEXT\", glPixelTransformParameterfvEXT == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameteriEXT\", glPixelTransformParameteriEXT == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterivEXT\", glPixelTransformParameterivEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_pixel_transform */\r\n\r\n#ifdef GL_EXT_pixel_transform_color_table\r\n\r\nstatic void _glewInfo_GL_EXT_pixel_transform_color_table (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_pixel_transform_color_table\", GLEW_EXT_pixel_transform_color_table, glewIsSupported(\"GL_EXT_pixel_transform_color_table\"), glewGetExtension(\"GL_EXT_pixel_transform_color_table\"));\r\n}\r\n\r\n#endif /* GL_EXT_pixel_transform_color_table */\r\n\r\n#ifdef GL_EXT_point_parameters\r\n\r\nstatic void _glewInfo_GL_EXT_point_parameters (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_point_parameters\", GLEW_EXT_point_parameters, glewIsSupported(\"GL_EXT_point_parameters\"), glewGetExtension(\"GL_EXT_point_parameters\"));\r\n\r\n  glewInfoFunc(\"glPointParameterfEXT\", glPointParameterfEXT == NULL);\r\n  glewInfoFunc(\"glPointParameterfvEXT\", glPointParameterfvEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_point_parameters */\r\n\r\n#ifdef GL_EXT_polygon_offset\r\n\r\nstatic void _glewInfo_GL_EXT_polygon_offset (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_polygon_offset\", GLEW_EXT_polygon_offset, glewIsSupported(\"GL_EXT_polygon_offset\"), glewGetExtension(\"GL_EXT_polygon_offset\"));\r\n\r\n  glewInfoFunc(\"glPolygonOffsetEXT\", glPolygonOffsetEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_polygon_offset */\r\n\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n\r\nstatic void _glewInfo_GL_EXT_polygon_offset_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_polygon_offset_clamp\", GLEW_EXT_polygon_offset_clamp, glewIsSupported(\"GL_EXT_polygon_offset_clamp\"), glewGetExtension(\"GL_EXT_polygon_offset_clamp\"));\r\n\r\n  glewInfoFunc(\"glPolygonOffsetClampEXT\", glPolygonOffsetClampEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_polygon_offset_clamp */\r\n\r\n#ifdef GL_EXT_post_depth_coverage\r\n\r\nstatic void _glewInfo_GL_EXT_post_depth_coverage (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_post_depth_coverage\", GLEW_EXT_post_depth_coverage, glewIsSupported(\"GL_EXT_post_depth_coverage\"), glewGetExtension(\"GL_EXT_post_depth_coverage\"));\r\n}\r\n\r\n#endif /* GL_EXT_post_depth_coverage */\r\n\r\n#ifdef GL_EXT_provoking_vertex\r\n\r\nstatic void _glewInfo_GL_EXT_provoking_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_provoking_vertex\", GLEW_EXT_provoking_vertex, glewIsSupported(\"GL_EXT_provoking_vertex\"), glewGetExtension(\"GL_EXT_provoking_vertex\"));\r\n\r\n  glewInfoFunc(\"glProvokingVertexEXT\", glProvokingVertexEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_provoking_vertex */\r\n\r\n#ifdef GL_EXT_pvrtc_sRGB\r\n\r\nstatic void _glewInfo_GL_EXT_pvrtc_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_pvrtc_sRGB\", GLEW_EXT_pvrtc_sRGB, glewIsSupported(\"GL_EXT_pvrtc_sRGB\"), glewGetExtension(\"GL_EXT_pvrtc_sRGB\"));\r\n}\r\n\r\n#endif /* GL_EXT_pvrtc_sRGB */\r\n\r\n#ifdef GL_EXT_raster_multisample\r\n\r\nstatic void _glewInfo_GL_EXT_raster_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_raster_multisample\", GLEW_EXT_raster_multisample, glewIsSupported(\"GL_EXT_raster_multisample\"), glewGetExtension(\"GL_EXT_raster_multisample\"));\r\n\r\n  glewInfoFunc(\"glCoverageModulationNV\", glCoverageModulationNV == NULL);\r\n  glewInfoFunc(\"glCoverageModulationTableNV\", glCoverageModulationTableNV == NULL);\r\n  glewInfoFunc(\"glGetCoverageModulationTableNV\", glGetCoverageModulationTableNV == NULL);\r\n  glewInfoFunc(\"glRasterSamplesEXT\", glRasterSamplesEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_raster_multisample */\r\n\r\n#ifdef GL_EXT_read_format_bgra\r\n\r\nstatic void _glewInfo_GL_EXT_read_format_bgra (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_read_format_bgra\", GLEW_EXT_read_format_bgra, glewIsSupported(\"GL_EXT_read_format_bgra\"), glewGetExtension(\"GL_EXT_read_format_bgra\"));\r\n}\r\n\r\n#endif /* GL_EXT_read_format_bgra */\r\n\r\n#ifdef GL_EXT_render_snorm\r\n\r\nstatic void _glewInfo_GL_EXT_render_snorm (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_render_snorm\", GLEW_EXT_render_snorm, glewIsSupported(\"GL_EXT_render_snorm\"), glewGetExtension(\"GL_EXT_render_snorm\"));\r\n}\r\n\r\n#endif /* GL_EXT_render_snorm */\r\n\r\n#ifdef GL_EXT_rescale_normal\r\n\r\nstatic void _glewInfo_GL_EXT_rescale_normal (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_rescale_normal\", GLEW_EXT_rescale_normal, glewIsSupported(\"GL_EXT_rescale_normal\"), glewGetExtension(\"GL_EXT_rescale_normal\"));\r\n}\r\n\r\n#endif /* GL_EXT_rescale_normal */\r\n\r\n#ifdef GL_EXT_sRGB\r\n\r\nstatic void _glewInfo_GL_EXT_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_sRGB\", GLEW_EXT_sRGB, glewIsSupported(\"GL_EXT_sRGB\"), glewGetExtension(\"GL_EXT_sRGB\"));\r\n}\r\n\r\n#endif /* GL_EXT_sRGB */\r\n\r\n#ifdef GL_EXT_sRGB_write_control\r\n\r\nstatic void _glewInfo_GL_EXT_sRGB_write_control (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_sRGB_write_control\", GLEW_EXT_sRGB_write_control, glewIsSupported(\"GL_EXT_sRGB_write_control\"), glewGetExtension(\"GL_EXT_sRGB_write_control\"));\r\n}\r\n\r\n#endif /* GL_EXT_sRGB_write_control */\r\n\r\n#ifdef GL_EXT_scene_marker\r\n\r\nstatic void _glewInfo_GL_EXT_scene_marker (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_scene_marker\", GLEW_EXT_scene_marker, glewIsSupported(\"GL_EXT_scene_marker\"), glewGetExtension(\"GL_EXT_scene_marker\"));\r\n\r\n  glewInfoFunc(\"glBeginSceneEXT\", glBeginSceneEXT == NULL);\r\n  glewInfoFunc(\"glEndSceneEXT\", glEndSceneEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_scene_marker */\r\n\r\n#ifdef GL_EXT_secondary_color\r\n\r\nstatic void _glewInfo_GL_EXT_secondary_color (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_secondary_color\", GLEW_EXT_secondary_color, glewIsSupported(\"GL_EXT_secondary_color\"), glewGetExtension(\"GL_EXT_secondary_color\"));\r\n\r\n  glewInfoFunc(\"glSecondaryColor3bEXT\", glSecondaryColor3bEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3bvEXT\", glSecondaryColor3bvEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3dEXT\", glSecondaryColor3dEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3dvEXT\", glSecondaryColor3dvEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3fEXT\", glSecondaryColor3fEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3fvEXT\", glSecondaryColor3fvEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3iEXT\", glSecondaryColor3iEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ivEXT\", glSecondaryColor3ivEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3sEXT\", glSecondaryColor3sEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3svEXT\", glSecondaryColor3svEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ubEXT\", glSecondaryColor3ubEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3ubvEXT\", glSecondaryColor3ubvEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3uiEXT\", glSecondaryColor3uiEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3uivEXT\", glSecondaryColor3uivEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3usEXT\", glSecondaryColor3usEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3usvEXT\", glSecondaryColor3usvEXT == NULL);\r\n  glewInfoFunc(\"glSecondaryColorPointerEXT\", glSecondaryColorPointerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_secondary_color */\r\n\r\n#ifdef GL_EXT_semaphore\r\n\r\nstatic void _glewInfo_GL_EXT_semaphore (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_semaphore\", GLEW_EXT_semaphore, glewIsSupported(\"GL_EXT_semaphore\"), glewGetExtension(\"GL_EXT_semaphore\"));\r\n\r\n  glewInfoFunc(\"glDeleteSemaphoresEXT\", glDeleteSemaphoresEXT == NULL);\r\n  glewInfoFunc(\"glGenSemaphoresEXT\", glGenSemaphoresEXT == NULL);\r\n  glewInfoFunc(\"glGetSemaphoreParameterui64vEXT\", glGetSemaphoreParameterui64vEXT == NULL);\r\n  glewInfoFunc(\"glIsSemaphoreEXT\", glIsSemaphoreEXT == NULL);\r\n  glewInfoFunc(\"glSemaphoreParameterui64vEXT\", glSemaphoreParameterui64vEXT == NULL);\r\n  glewInfoFunc(\"glSignalSemaphoreEXT\", glSignalSemaphoreEXT == NULL);\r\n  glewInfoFunc(\"glWaitSemaphoreEXT\", glWaitSemaphoreEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_semaphore */\r\n\r\n#ifdef GL_EXT_semaphore_fd\r\n\r\nstatic void _glewInfo_GL_EXT_semaphore_fd (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_semaphore_fd\", GLEW_EXT_semaphore_fd, glewIsSupported(\"GL_EXT_semaphore_fd\"), glewGetExtension(\"GL_EXT_semaphore_fd\"));\r\n\r\n  glewInfoFunc(\"glImportSemaphoreFdEXT\", glImportSemaphoreFdEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_semaphore_fd */\r\n\r\n#ifdef GL_EXT_semaphore_win32\r\n\r\nstatic void _glewInfo_GL_EXT_semaphore_win32 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_semaphore_win32\", GLEW_EXT_semaphore_win32, glewIsSupported(\"GL_EXT_semaphore_win32\"), glewGetExtension(\"GL_EXT_semaphore_win32\"));\r\n\r\n  glewInfoFunc(\"glImportSemaphoreWin32HandleEXT\", glImportSemaphoreWin32HandleEXT == NULL);\r\n  glewInfoFunc(\"glImportSemaphoreWin32NameEXT\", glImportSemaphoreWin32NameEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_semaphore_win32 */\r\n\r\n#ifdef GL_EXT_separate_shader_objects\r\n\r\nstatic void _glewInfo_GL_EXT_separate_shader_objects (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_separate_shader_objects\", GLEW_EXT_separate_shader_objects, glewIsSupported(\"GL_EXT_separate_shader_objects\"), glewGetExtension(\"GL_EXT_separate_shader_objects\"));\r\n\r\n  glewInfoFunc(\"glActiveProgramEXT\", glActiveProgramEXT == NULL);\r\n  glewInfoFunc(\"glCreateShaderProgramEXT\", glCreateShaderProgramEXT == NULL);\r\n  glewInfoFunc(\"glUseShaderProgramEXT\", glUseShaderProgramEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_separate_shader_objects */\r\n\r\n#ifdef GL_EXT_separate_specular_color\r\n\r\nstatic void _glewInfo_GL_EXT_separate_specular_color (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_separate_specular_color\", GLEW_EXT_separate_specular_color, glewIsSupported(\"GL_EXT_separate_specular_color\"), glewGetExtension(\"GL_EXT_separate_specular_color\"));\r\n}\r\n\r\n#endif /* GL_EXT_separate_specular_color */\r\n\r\n#ifdef GL_EXT_shader_framebuffer_fetch\r\n\r\nstatic void _glewInfo_GL_EXT_shader_framebuffer_fetch (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_framebuffer_fetch\", GLEW_EXT_shader_framebuffer_fetch, glewIsSupported(\"GL_EXT_shader_framebuffer_fetch\"), glewGetExtension(\"GL_EXT_shader_framebuffer_fetch\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_framebuffer_fetch */\r\n\r\n#ifdef GL_EXT_shader_group_vote\r\n\r\nstatic void _glewInfo_GL_EXT_shader_group_vote (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_group_vote\", GLEW_EXT_shader_group_vote, glewIsSupported(\"GL_EXT_shader_group_vote\"), glewGetExtension(\"GL_EXT_shader_group_vote\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_group_vote */\r\n\r\n#ifdef GL_EXT_shader_image_load_formatted\r\n\r\nstatic void _glewInfo_GL_EXT_shader_image_load_formatted (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_image_load_formatted\", GLEW_EXT_shader_image_load_formatted, glewIsSupported(\"GL_EXT_shader_image_load_formatted\"), glewGetExtension(\"GL_EXT_shader_image_load_formatted\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_image_load_formatted */\r\n\r\n#ifdef GL_EXT_shader_image_load_store\r\n\r\nstatic void _glewInfo_GL_EXT_shader_image_load_store (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_image_load_store\", GLEW_EXT_shader_image_load_store, glewIsSupported(\"GL_EXT_shader_image_load_store\"), glewGetExtension(\"GL_EXT_shader_image_load_store\"));\r\n\r\n  glewInfoFunc(\"glBindImageTextureEXT\", glBindImageTextureEXT == NULL);\r\n  glewInfoFunc(\"glMemoryBarrierEXT\", glMemoryBarrierEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_shader_image_load_store */\r\n\r\n#ifdef GL_EXT_shader_implicit_conversions\r\n\r\nstatic void _glewInfo_GL_EXT_shader_implicit_conversions (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_implicit_conversions\", GLEW_EXT_shader_implicit_conversions, glewIsSupported(\"GL_EXT_shader_implicit_conversions\"), glewGetExtension(\"GL_EXT_shader_implicit_conversions\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_implicit_conversions */\r\n\r\n#ifdef GL_EXT_shader_integer_mix\r\n\r\nstatic void _glewInfo_GL_EXT_shader_integer_mix (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_integer_mix\", GLEW_EXT_shader_integer_mix, glewIsSupported(\"GL_EXT_shader_integer_mix\"), glewGetExtension(\"GL_EXT_shader_integer_mix\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_integer_mix */\r\n\r\n#ifdef GL_EXT_shader_io_blocks\r\n\r\nstatic void _glewInfo_GL_EXT_shader_io_blocks (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_io_blocks\", GLEW_EXT_shader_io_blocks, glewIsSupported(\"GL_EXT_shader_io_blocks\"), glewGetExtension(\"GL_EXT_shader_io_blocks\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_io_blocks */\r\n\r\n#ifdef GL_EXT_shader_non_constant_global_initializers\r\n\r\nstatic void _glewInfo_GL_EXT_shader_non_constant_global_initializers (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_non_constant_global_initializers\", GLEW_EXT_shader_non_constant_global_initializers, glewIsSupported(\"GL_EXT_shader_non_constant_global_initializers\"), glewGetExtension(\"GL_EXT_shader_non_constant_global_initializers\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_non_constant_global_initializers */\r\n\r\n#ifdef GL_EXT_shader_pixel_local_storage\r\n\r\nstatic void _glewInfo_GL_EXT_shader_pixel_local_storage (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_pixel_local_storage\", GLEW_EXT_shader_pixel_local_storage, glewIsSupported(\"GL_EXT_shader_pixel_local_storage\"), glewGetExtension(\"GL_EXT_shader_pixel_local_storage\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_pixel_local_storage */\r\n\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n\r\nstatic void _glewInfo_GL_EXT_shader_pixel_local_storage2 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_pixel_local_storage2\", GLEW_EXT_shader_pixel_local_storage2, glewIsSupported(\"GL_EXT_shader_pixel_local_storage2\"), glewGetExtension(\"GL_EXT_shader_pixel_local_storage2\"));\r\n\r\n  glewInfoFunc(\"glClearPixelLocalStorageuiEXT\", glClearPixelLocalStorageuiEXT == NULL);\r\n  glewInfoFunc(\"glFramebufferPixelLocalStorageSizeEXT\", glFramebufferPixelLocalStorageSizeEXT == NULL);\r\n  glewInfoFunc(\"glGetFramebufferPixelLocalStorageSizeEXT\", glGetFramebufferPixelLocalStorageSizeEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_shader_pixel_local_storage2 */\r\n\r\n#ifdef GL_EXT_shader_texture_lod\r\n\r\nstatic void _glewInfo_GL_EXT_shader_texture_lod (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shader_texture_lod\", GLEW_EXT_shader_texture_lod, glewIsSupported(\"GL_EXT_shader_texture_lod\"), glewGetExtension(\"GL_EXT_shader_texture_lod\"));\r\n}\r\n\r\n#endif /* GL_EXT_shader_texture_lod */\r\n\r\n#ifdef GL_EXT_shadow_funcs\r\n\r\nstatic void _glewInfo_GL_EXT_shadow_funcs (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shadow_funcs\", GLEW_EXT_shadow_funcs, glewIsSupported(\"GL_EXT_shadow_funcs\"), glewGetExtension(\"GL_EXT_shadow_funcs\"));\r\n}\r\n\r\n#endif /* GL_EXT_shadow_funcs */\r\n\r\n#ifdef GL_EXT_shadow_samplers\r\n\r\nstatic void _glewInfo_GL_EXT_shadow_samplers (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shadow_samplers\", GLEW_EXT_shadow_samplers, glewIsSupported(\"GL_EXT_shadow_samplers\"), glewGetExtension(\"GL_EXT_shadow_samplers\"));\r\n}\r\n\r\n#endif /* GL_EXT_shadow_samplers */\r\n\r\n#ifdef GL_EXT_shared_texture_palette\r\n\r\nstatic void _glewInfo_GL_EXT_shared_texture_palette (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_shared_texture_palette\", GLEW_EXT_shared_texture_palette, glewIsSupported(\"GL_EXT_shared_texture_palette\"), glewGetExtension(\"GL_EXT_shared_texture_palette\"));\r\n}\r\n\r\n#endif /* GL_EXT_shared_texture_palette */\r\n\r\n#ifdef GL_EXT_sparse_texture\r\n\r\nstatic void _glewInfo_GL_EXT_sparse_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_sparse_texture\", GLEW_EXT_sparse_texture, glewIsSupported(\"GL_EXT_sparse_texture\"), glewGetExtension(\"GL_EXT_sparse_texture\"));\r\n\r\n  glewInfoFunc(\"glTexPageCommitmentEXT\", glTexPageCommitmentEXT == NULL);\r\n  glewInfoFunc(\"glTexturePageCommitmentEXT\", glTexturePageCommitmentEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_sparse_texture */\r\n\r\n#ifdef GL_EXT_sparse_texture2\r\n\r\nstatic void _glewInfo_GL_EXT_sparse_texture2 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_sparse_texture2\", GLEW_EXT_sparse_texture2, glewIsSupported(\"GL_EXT_sparse_texture2\"), glewGetExtension(\"GL_EXT_sparse_texture2\"));\r\n}\r\n\r\n#endif /* GL_EXT_sparse_texture2 */\r\n\r\n#ifdef GL_EXT_stencil_clear_tag\r\n\r\nstatic void _glewInfo_GL_EXT_stencil_clear_tag (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_stencil_clear_tag\", GLEW_EXT_stencil_clear_tag, glewIsSupported(\"GL_EXT_stencil_clear_tag\"), glewGetExtension(\"GL_EXT_stencil_clear_tag\"));\r\n}\r\n\r\n#endif /* GL_EXT_stencil_clear_tag */\r\n\r\n#ifdef GL_EXT_stencil_two_side\r\n\r\nstatic void _glewInfo_GL_EXT_stencil_two_side (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_stencil_two_side\", GLEW_EXT_stencil_two_side, glewIsSupported(\"GL_EXT_stencil_two_side\"), glewGetExtension(\"GL_EXT_stencil_two_side\"));\r\n\r\n  glewInfoFunc(\"glActiveStencilFaceEXT\", glActiveStencilFaceEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_stencil_two_side */\r\n\r\n#ifdef GL_EXT_stencil_wrap\r\n\r\nstatic void _glewInfo_GL_EXT_stencil_wrap (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_stencil_wrap\", GLEW_EXT_stencil_wrap, glewIsSupported(\"GL_EXT_stencil_wrap\"), glewGetExtension(\"GL_EXT_stencil_wrap\"));\r\n}\r\n\r\n#endif /* GL_EXT_stencil_wrap */\r\n\r\n#ifdef GL_EXT_subtexture\r\n\r\nstatic void _glewInfo_GL_EXT_subtexture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_subtexture\", GLEW_EXT_subtexture, glewIsSupported(\"GL_EXT_subtexture\"), glewGetExtension(\"GL_EXT_subtexture\"));\r\n\r\n  glewInfoFunc(\"glTexSubImage1DEXT\", glTexSubImage1DEXT == NULL);\r\n  glewInfoFunc(\"glTexSubImage2DEXT\", glTexSubImage2DEXT == NULL);\r\n  glewInfoFunc(\"glTexSubImage3DEXT\", glTexSubImage3DEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_subtexture */\r\n\r\n#ifdef GL_EXT_texture\r\n\r\nstatic void _glewInfo_GL_EXT_texture (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture\", GLEW_EXT_texture, glewIsSupported(\"GL_EXT_texture\"), glewGetExtension(\"GL_EXT_texture\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture */\r\n\r\n#ifdef GL_EXT_texture3D\r\n\r\nstatic void _glewInfo_GL_EXT_texture3D (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture3D\", GLEW_EXT_texture3D, glewIsSupported(\"GL_EXT_texture3D\"), glewGetExtension(\"GL_EXT_texture3D\"));\r\n\r\n  glewInfoFunc(\"glTexImage3DEXT\", glTexImage3DEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture3D */\r\n\r\n#ifdef GL_EXT_texture_array\r\n\r\nstatic void _glewInfo_GL_EXT_texture_array (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_array\", GLEW_EXT_texture_array, glewIsSupported(\"GL_EXT_texture_array\"), glewGetExtension(\"GL_EXT_texture_array\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTextureLayerEXT\", glFramebufferTextureLayerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_array */\r\n\r\n#ifdef GL_EXT_texture_buffer_object\r\n\r\nstatic void _glewInfo_GL_EXT_texture_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_buffer_object\", GLEW_EXT_texture_buffer_object, glewIsSupported(\"GL_EXT_texture_buffer_object\"), glewGetExtension(\"GL_EXT_texture_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glTexBufferEXT\", glTexBufferEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_buffer_object */\r\n\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_astc_decode_mode (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_astc_decode_mode\", GLEW_EXT_texture_compression_astc_decode_mode, glewIsSupported(\"GL_EXT_texture_compression_astc_decode_mode\"), glewGetExtension(\"GL_EXT_texture_compression_astc_decode_mode\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_astc_decode_mode */\r\n\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_astc_decode_mode_rgb9e5\", GLEW_EXT_texture_compression_astc_decode_mode_rgb9e5, glewIsSupported(\"GL_EXT_texture_compression_astc_decode_mode_rgb9e5\"), glewGetExtension(\"GL_EXT_texture_compression_astc_decode_mode_rgb9e5\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */\r\n\r\n#ifdef GL_EXT_texture_compression_bptc\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_bptc (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_bptc\", GLEW_EXT_texture_compression_bptc, glewIsSupported(\"GL_EXT_texture_compression_bptc\"), glewGetExtension(\"GL_EXT_texture_compression_bptc\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_bptc */\r\n\r\n#ifdef GL_EXT_texture_compression_dxt1\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_dxt1 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_dxt1\", GLEW_EXT_texture_compression_dxt1, glewIsSupported(\"GL_EXT_texture_compression_dxt1\"), glewGetExtension(\"GL_EXT_texture_compression_dxt1\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_dxt1 */\r\n\r\n#ifdef GL_EXT_texture_compression_latc\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_latc (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_latc\", GLEW_EXT_texture_compression_latc, glewIsSupported(\"GL_EXT_texture_compression_latc\"), glewGetExtension(\"GL_EXT_texture_compression_latc\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_latc */\r\n\r\n#ifdef GL_EXT_texture_compression_rgtc\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_rgtc (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_rgtc\", GLEW_EXT_texture_compression_rgtc, glewIsSupported(\"GL_EXT_texture_compression_rgtc\"), glewGetExtension(\"GL_EXT_texture_compression_rgtc\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_rgtc */\r\n\r\n#ifdef GL_EXT_texture_compression_s3tc\r\n\r\nstatic void _glewInfo_GL_EXT_texture_compression_s3tc (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_compression_s3tc\", GLEW_EXT_texture_compression_s3tc, glewIsSupported(\"GL_EXT_texture_compression_s3tc\"), glewGetExtension(\"GL_EXT_texture_compression_s3tc\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_compression_s3tc */\r\n\r\n#ifdef GL_EXT_texture_cube_map\r\n\r\nstatic void _glewInfo_GL_EXT_texture_cube_map (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_cube_map\", GLEW_EXT_texture_cube_map, glewIsSupported(\"GL_EXT_texture_cube_map\"), glewGetExtension(\"GL_EXT_texture_cube_map\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_cube_map */\r\n\r\n#ifdef GL_EXT_texture_cube_map_array\r\n\r\nstatic void _glewInfo_GL_EXT_texture_cube_map_array (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_cube_map_array\", GLEW_EXT_texture_cube_map_array, glewIsSupported(\"GL_EXT_texture_cube_map_array\"), glewGetExtension(\"GL_EXT_texture_cube_map_array\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_cube_map_array */\r\n\r\n#ifdef GL_EXT_texture_edge_clamp\r\n\r\nstatic void _glewInfo_GL_EXT_texture_edge_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_edge_clamp\", GLEW_EXT_texture_edge_clamp, glewIsSupported(\"GL_EXT_texture_edge_clamp\"), glewGetExtension(\"GL_EXT_texture_edge_clamp\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_edge_clamp */\r\n\r\n#ifdef GL_EXT_texture_env\r\n\r\nstatic void _glewInfo_GL_EXT_texture_env (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_env\", GLEW_EXT_texture_env, glewIsSupported(\"GL_EXT_texture_env\"), glewGetExtension(\"GL_EXT_texture_env\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_env */\r\n\r\n#ifdef GL_EXT_texture_env_add\r\n\r\nstatic void _glewInfo_GL_EXT_texture_env_add (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_env_add\", GLEW_EXT_texture_env_add, glewIsSupported(\"GL_EXT_texture_env_add\"), glewGetExtension(\"GL_EXT_texture_env_add\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_env_add */\r\n\r\n#ifdef GL_EXT_texture_env_combine\r\n\r\nstatic void _glewInfo_GL_EXT_texture_env_combine (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_env_combine\", GLEW_EXT_texture_env_combine, glewIsSupported(\"GL_EXT_texture_env_combine\"), glewGetExtension(\"GL_EXT_texture_env_combine\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_env_combine */\r\n\r\n#ifdef GL_EXT_texture_env_dot3\r\n\r\nstatic void _glewInfo_GL_EXT_texture_env_dot3 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_env_dot3\", GLEW_EXT_texture_env_dot3, glewIsSupported(\"GL_EXT_texture_env_dot3\"), glewGetExtension(\"GL_EXT_texture_env_dot3\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_env_dot3 */\r\n\r\n#ifdef GL_EXT_texture_filter_anisotropic\r\n\r\nstatic void _glewInfo_GL_EXT_texture_filter_anisotropic (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_filter_anisotropic\", GLEW_EXT_texture_filter_anisotropic, glewIsSupported(\"GL_EXT_texture_filter_anisotropic\"), glewGetExtension(\"GL_EXT_texture_filter_anisotropic\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_filter_anisotropic */\r\n\r\n#ifdef GL_EXT_texture_filter_minmax\r\n\r\nstatic void _glewInfo_GL_EXT_texture_filter_minmax (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_filter_minmax\", GLEW_EXT_texture_filter_minmax, glewIsSupported(\"GL_EXT_texture_filter_minmax\"), glewGetExtension(\"GL_EXT_texture_filter_minmax\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_filter_minmax */\r\n\r\n#ifdef GL_EXT_texture_format_BGRA8888\r\n\r\nstatic void _glewInfo_GL_EXT_texture_format_BGRA8888 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_format_BGRA8888\", GLEW_EXT_texture_format_BGRA8888, glewIsSupported(\"GL_EXT_texture_format_BGRA8888\"), glewGetExtension(\"GL_EXT_texture_format_BGRA8888\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_format_BGRA8888 */\r\n\r\n#ifdef GL_EXT_texture_integer\r\n\r\nstatic void _glewInfo_GL_EXT_texture_integer (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_integer\", GLEW_EXT_texture_integer, glewIsSupported(\"GL_EXT_texture_integer\"), glewGetExtension(\"GL_EXT_texture_integer\"));\r\n\r\n  glewInfoFunc(\"glClearColorIiEXT\", glClearColorIiEXT == NULL);\r\n  glewInfoFunc(\"glClearColorIuiEXT\", glClearColorIuiEXT == NULL);\r\n  glewInfoFunc(\"glGetTexParameterIivEXT\", glGetTexParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glGetTexParameterIuivEXT\", glGetTexParameterIuivEXT == NULL);\r\n  glewInfoFunc(\"glTexParameterIivEXT\", glTexParameterIivEXT == NULL);\r\n  glewInfoFunc(\"glTexParameterIuivEXT\", glTexParameterIuivEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_integer */\r\n\r\n#ifdef GL_EXT_texture_lod_bias\r\n\r\nstatic void _glewInfo_GL_EXT_texture_lod_bias (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_lod_bias\", GLEW_EXT_texture_lod_bias, glewIsSupported(\"GL_EXT_texture_lod_bias\"), glewGetExtension(\"GL_EXT_texture_lod_bias\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_lod_bias */\r\n\r\n#ifdef GL_EXT_texture_mirror_clamp\r\n\r\nstatic void _glewInfo_GL_EXT_texture_mirror_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_mirror_clamp\", GLEW_EXT_texture_mirror_clamp, glewIsSupported(\"GL_EXT_texture_mirror_clamp\"), glewGetExtension(\"GL_EXT_texture_mirror_clamp\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_mirror_clamp */\r\n\r\n#ifdef GL_EXT_texture_norm16\r\n\r\nstatic void _glewInfo_GL_EXT_texture_norm16 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_norm16\", GLEW_EXT_texture_norm16, glewIsSupported(\"GL_EXT_texture_norm16\"), glewGetExtension(\"GL_EXT_texture_norm16\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_norm16 */\r\n\r\n#ifdef GL_EXT_texture_object\r\n\r\nstatic void _glewInfo_GL_EXT_texture_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_object\", GLEW_EXT_texture_object, glewIsSupported(\"GL_EXT_texture_object\"), glewGetExtension(\"GL_EXT_texture_object\"));\r\n\r\n  glewInfoFunc(\"glAreTexturesResidentEXT\", glAreTexturesResidentEXT == NULL);\r\n  glewInfoFunc(\"glBindTextureEXT\", glBindTextureEXT == NULL);\r\n  glewInfoFunc(\"glDeleteTexturesEXT\", glDeleteTexturesEXT == NULL);\r\n  glewInfoFunc(\"glGenTexturesEXT\", glGenTexturesEXT == NULL);\r\n  glewInfoFunc(\"glIsTextureEXT\", glIsTextureEXT == NULL);\r\n  glewInfoFunc(\"glPrioritizeTexturesEXT\", glPrioritizeTexturesEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_object */\r\n\r\n#ifdef GL_EXT_texture_perturb_normal\r\n\r\nstatic void _glewInfo_GL_EXT_texture_perturb_normal (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_perturb_normal\", GLEW_EXT_texture_perturb_normal, glewIsSupported(\"GL_EXT_texture_perturb_normal\"), glewGetExtension(\"GL_EXT_texture_perturb_normal\"));\r\n\r\n  glewInfoFunc(\"glTextureNormalEXT\", glTextureNormalEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_perturb_normal */\r\n\r\n#ifdef GL_EXT_texture_rectangle\r\n\r\nstatic void _glewInfo_GL_EXT_texture_rectangle (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_rectangle\", GLEW_EXT_texture_rectangle, glewIsSupported(\"GL_EXT_texture_rectangle\"), glewGetExtension(\"GL_EXT_texture_rectangle\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_rectangle */\r\n\r\n#ifdef GL_EXT_texture_rg\r\n\r\nstatic void _glewInfo_GL_EXT_texture_rg (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_rg\", GLEW_EXT_texture_rg, glewIsSupported(\"GL_EXT_texture_rg\"), glewGetExtension(\"GL_EXT_texture_rg\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_rg */\r\n\r\n#ifdef GL_EXT_texture_sRGB\r\n\r\nstatic void _glewInfo_GL_EXT_texture_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_sRGB\", GLEW_EXT_texture_sRGB, glewIsSupported(\"GL_EXT_texture_sRGB\"), glewGetExtension(\"GL_EXT_texture_sRGB\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_sRGB */\r\n\r\n#ifdef GL_EXT_texture_sRGB_R8\r\n\r\nstatic void _glewInfo_GL_EXT_texture_sRGB_R8 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_sRGB_R8\", GLEW_EXT_texture_sRGB_R8, glewIsSupported(\"GL_EXT_texture_sRGB_R8\"), glewGetExtension(\"GL_EXT_texture_sRGB_R8\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_sRGB_R8 */\r\n\r\n#ifdef GL_EXT_texture_sRGB_RG8\r\n\r\nstatic void _glewInfo_GL_EXT_texture_sRGB_RG8 (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_sRGB_RG8\", GLEW_EXT_texture_sRGB_RG8, glewIsSupported(\"GL_EXT_texture_sRGB_RG8\"), glewGetExtension(\"GL_EXT_texture_sRGB_RG8\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_sRGB_RG8 */\r\n\r\n#ifdef GL_EXT_texture_sRGB_decode\r\n\r\nstatic void _glewInfo_GL_EXT_texture_sRGB_decode (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_sRGB_decode\", GLEW_EXT_texture_sRGB_decode, glewIsSupported(\"GL_EXT_texture_sRGB_decode\"), glewGetExtension(\"GL_EXT_texture_sRGB_decode\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_sRGB_decode */\r\n\r\n#ifdef GL_EXT_texture_shared_exponent\r\n\r\nstatic void _glewInfo_GL_EXT_texture_shared_exponent (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_shared_exponent\", GLEW_EXT_texture_shared_exponent, glewIsSupported(\"GL_EXT_texture_shared_exponent\"), glewGetExtension(\"GL_EXT_texture_shared_exponent\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_shared_exponent */\r\n\r\n#ifdef GL_EXT_texture_snorm\r\n\r\nstatic void _glewInfo_GL_EXT_texture_snorm (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_snorm\", GLEW_EXT_texture_snorm, glewIsSupported(\"GL_EXT_texture_snorm\"), glewGetExtension(\"GL_EXT_texture_snorm\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_snorm */\r\n\r\n#ifdef GL_EXT_texture_storage\r\n\r\nstatic void _glewInfo_GL_EXT_texture_storage (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_storage\", GLEW_EXT_texture_storage, glewIsSupported(\"GL_EXT_texture_storage\"), glewGetExtension(\"GL_EXT_texture_storage\"));\r\n\r\n  glewInfoFunc(\"glTexStorage1DEXT\", glTexStorage1DEXT == NULL);\r\n  glewInfoFunc(\"glTexStorage2DEXT\", glTexStorage2DEXT == NULL);\r\n  glewInfoFunc(\"glTexStorage3DEXT\", glTexStorage3DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorage1DEXT\", glTextureStorage1DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorage2DEXT\", glTextureStorage2DEXT == NULL);\r\n  glewInfoFunc(\"glTextureStorage3DEXT\", glTextureStorage3DEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_storage */\r\n\r\n#ifdef GL_EXT_texture_swizzle\r\n\r\nstatic void _glewInfo_GL_EXT_texture_swizzle (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_swizzle\", GLEW_EXT_texture_swizzle, glewIsSupported(\"GL_EXT_texture_swizzle\"), glewGetExtension(\"GL_EXT_texture_swizzle\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_swizzle */\r\n\r\n#ifdef GL_EXT_texture_type_2_10_10_10_REV\r\n\r\nstatic void _glewInfo_GL_EXT_texture_type_2_10_10_10_REV (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_type_2_10_10_10_REV\", GLEW_EXT_texture_type_2_10_10_10_REV, glewIsSupported(\"GL_EXT_texture_type_2_10_10_10_REV\"), glewGetExtension(\"GL_EXT_texture_type_2_10_10_10_REV\"));\r\n}\r\n\r\n#endif /* GL_EXT_texture_type_2_10_10_10_REV */\r\n\r\n#ifdef GL_EXT_texture_view\r\n\r\nstatic void _glewInfo_GL_EXT_texture_view (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_texture_view\", GLEW_EXT_texture_view, glewIsSupported(\"GL_EXT_texture_view\"), glewGetExtension(\"GL_EXT_texture_view\"));\r\n\r\n  glewInfoFunc(\"glTextureViewEXT\", glTextureViewEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_texture_view */\r\n\r\n#ifdef GL_EXT_timer_query\r\n\r\nstatic void _glewInfo_GL_EXT_timer_query (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_timer_query\", GLEW_EXT_timer_query, glewIsSupported(\"GL_EXT_timer_query\"), glewGetExtension(\"GL_EXT_timer_query\"));\r\n\r\n  glewInfoFunc(\"glGetQueryObjecti64vEXT\", glGetQueryObjecti64vEXT == NULL);\r\n  glewInfoFunc(\"glGetQueryObjectui64vEXT\", glGetQueryObjectui64vEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_timer_query */\r\n\r\n#ifdef GL_EXT_transform_feedback\r\n\r\nstatic void _glewInfo_GL_EXT_transform_feedback (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_transform_feedback\", GLEW_EXT_transform_feedback, glewIsSupported(\"GL_EXT_transform_feedback\"), glewGetExtension(\"GL_EXT_transform_feedback\"));\r\n\r\n  glewInfoFunc(\"glBeginTransformFeedbackEXT\", glBeginTransformFeedbackEXT == NULL);\r\n  glewInfoFunc(\"glBindBufferBaseEXT\", glBindBufferBaseEXT == NULL);\r\n  glewInfoFunc(\"glBindBufferOffsetEXT\", glBindBufferOffsetEXT == NULL);\r\n  glewInfoFunc(\"glBindBufferRangeEXT\", glBindBufferRangeEXT == NULL);\r\n  glewInfoFunc(\"glEndTransformFeedbackEXT\", glEndTransformFeedbackEXT == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbackVaryingEXT\", glGetTransformFeedbackVaryingEXT == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackVaryingsEXT\", glTransformFeedbackVaryingsEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_transform_feedback */\r\n\r\n#ifdef GL_EXT_unpack_subimage\r\n\r\nstatic void _glewInfo_GL_EXT_unpack_subimage (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_unpack_subimage\", GLEW_EXT_unpack_subimage, glewIsSupported(\"GL_EXT_unpack_subimage\"), glewGetExtension(\"GL_EXT_unpack_subimage\"));\r\n}\r\n\r\n#endif /* GL_EXT_unpack_subimage */\r\n\r\n#ifdef GL_EXT_vertex_array\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_array (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_array\", GLEW_EXT_vertex_array, glewIsSupported(\"GL_EXT_vertex_array\"), glewGetExtension(\"GL_EXT_vertex_array\"));\r\n\r\n  glewInfoFunc(\"glArrayElementEXT\", glArrayElementEXT == NULL);\r\n  glewInfoFunc(\"glColorPointerEXT\", glColorPointerEXT == NULL);\r\n  glewInfoFunc(\"glDrawArraysEXT\", glDrawArraysEXT == NULL);\r\n  glewInfoFunc(\"glEdgeFlagPointerEXT\", glEdgeFlagPointerEXT == NULL);\r\n  glewInfoFunc(\"glIndexPointerEXT\", glIndexPointerEXT == NULL);\r\n  glewInfoFunc(\"glNormalPointerEXT\", glNormalPointerEXT == NULL);\r\n  glewInfoFunc(\"glTexCoordPointerEXT\", glTexCoordPointerEXT == NULL);\r\n  glewInfoFunc(\"glVertexPointerEXT\", glVertexPointerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_vertex_array */\r\n\r\n#ifdef GL_EXT_vertex_array_bgra\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_array_bgra (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_array_bgra\", GLEW_EXT_vertex_array_bgra, glewIsSupported(\"GL_EXT_vertex_array_bgra\"), glewGetExtension(\"GL_EXT_vertex_array_bgra\"));\r\n}\r\n\r\n#endif /* GL_EXT_vertex_array_bgra */\r\n\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_array_setXXX (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_array_setXXX\", GLEW_EXT_vertex_array_setXXX, glewIsSupported(\"GL_EXT_vertex_array_setXXX\"), glewGetExtension(\"GL_EXT_vertex_array_setXXX\"));\r\n\r\n  glewInfoFunc(\"glBindArraySetEXT\", glBindArraySetEXT == NULL);\r\n  glewInfoFunc(\"glCreateArraySetExt\", glCreateArraySetExt == NULL);\r\n  glewInfoFunc(\"glDeleteArraySetsEXT\", glDeleteArraySetsEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_vertex_array_setXXX */\r\n\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_attrib_64bit (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_attrib_64bit\", GLEW_EXT_vertex_attrib_64bit, glewIsSupported(\"GL_EXT_vertex_attrib_64bit\"), glewGetExtension(\"GL_EXT_vertex_attrib_64bit\"));\r\n\r\n  glewInfoFunc(\"glGetVertexAttribLdvEXT\", glGetVertexAttribLdvEXT == NULL);\r\n  glewInfoFunc(\"glVertexArrayVertexAttribLOffsetEXT\", glVertexArrayVertexAttribLOffsetEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1dEXT\", glVertexAttribL1dEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1dvEXT\", glVertexAttribL1dvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2dEXT\", glVertexAttribL2dEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2dvEXT\", glVertexAttribL2dvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3dEXT\", glVertexAttribL3dEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3dvEXT\", glVertexAttribL3dvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4dEXT\", glVertexAttribL4dEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4dvEXT\", glVertexAttribL4dvEXT == NULL);\r\n  glewInfoFunc(\"glVertexAttribLPointerEXT\", glVertexAttribLPointerEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_vertex_attrib_64bit */\r\n\r\n#ifdef GL_EXT_vertex_shader\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_shader (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_shader\", GLEW_EXT_vertex_shader, glewIsSupported(\"GL_EXT_vertex_shader\"), glewGetExtension(\"GL_EXT_vertex_shader\"));\r\n\r\n  glewInfoFunc(\"glBeginVertexShaderEXT\", glBeginVertexShaderEXT == NULL);\r\n  glewInfoFunc(\"glBindLightParameterEXT\", glBindLightParameterEXT == NULL);\r\n  glewInfoFunc(\"glBindMaterialParameterEXT\", glBindMaterialParameterEXT == NULL);\r\n  glewInfoFunc(\"glBindParameterEXT\", glBindParameterEXT == NULL);\r\n  glewInfoFunc(\"glBindTexGenParameterEXT\", glBindTexGenParameterEXT == NULL);\r\n  glewInfoFunc(\"glBindTextureUnitParameterEXT\", glBindTextureUnitParameterEXT == NULL);\r\n  glewInfoFunc(\"glBindVertexShaderEXT\", glBindVertexShaderEXT == NULL);\r\n  glewInfoFunc(\"glDeleteVertexShaderEXT\", glDeleteVertexShaderEXT == NULL);\r\n  glewInfoFunc(\"glDisableVariantClientStateEXT\", glDisableVariantClientStateEXT == NULL);\r\n  glewInfoFunc(\"glEnableVariantClientStateEXT\", glEnableVariantClientStateEXT == NULL);\r\n  glewInfoFunc(\"glEndVertexShaderEXT\", glEndVertexShaderEXT == NULL);\r\n  glewInfoFunc(\"glExtractComponentEXT\", glExtractComponentEXT == NULL);\r\n  glewInfoFunc(\"glGenSymbolsEXT\", glGenSymbolsEXT == NULL);\r\n  glewInfoFunc(\"glGenVertexShadersEXT\", glGenVertexShadersEXT == NULL);\r\n  glewInfoFunc(\"glGetInvariantBooleanvEXT\", glGetInvariantBooleanvEXT == NULL);\r\n  glewInfoFunc(\"glGetInvariantFloatvEXT\", glGetInvariantFloatvEXT == NULL);\r\n  glewInfoFunc(\"glGetInvariantIntegervEXT\", glGetInvariantIntegervEXT == NULL);\r\n  glewInfoFunc(\"glGetLocalConstantBooleanvEXT\", glGetLocalConstantBooleanvEXT == NULL);\r\n  glewInfoFunc(\"glGetLocalConstantFloatvEXT\", glGetLocalConstantFloatvEXT == NULL);\r\n  glewInfoFunc(\"glGetLocalConstantIntegervEXT\", glGetLocalConstantIntegervEXT == NULL);\r\n  glewInfoFunc(\"glGetVariantBooleanvEXT\", glGetVariantBooleanvEXT == NULL);\r\n  glewInfoFunc(\"glGetVariantFloatvEXT\", glGetVariantFloatvEXT == NULL);\r\n  glewInfoFunc(\"glGetVariantIntegervEXT\", glGetVariantIntegervEXT == NULL);\r\n  glewInfoFunc(\"glGetVariantPointervEXT\", glGetVariantPointervEXT == NULL);\r\n  glewInfoFunc(\"glInsertComponentEXT\", glInsertComponentEXT == NULL);\r\n  glewInfoFunc(\"glIsVariantEnabledEXT\", glIsVariantEnabledEXT == NULL);\r\n  glewInfoFunc(\"glSetInvariantEXT\", glSetInvariantEXT == NULL);\r\n  glewInfoFunc(\"glSetLocalConstantEXT\", glSetLocalConstantEXT == NULL);\r\n  glewInfoFunc(\"glShaderOp1EXT\", glShaderOp1EXT == NULL);\r\n  glewInfoFunc(\"glShaderOp2EXT\", glShaderOp2EXT == NULL);\r\n  glewInfoFunc(\"glShaderOp3EXT\", glShaderOp3EXT == NULL);\r\n  glewInfoFunc(\"glSwizzleEXT\", glSwizzleEXT == NULL);\r\n  glewInfoFunc(\"glVariantPointerEXT\", glVariantPointerEXT == NULL);\r\n  glewInfoFunc(\"glVariantbvEXT\", glVariantbvEXT == NULL);\r\n  glewInfoFunc(\"glVariantdvEXT\", glVariantdvEXT == NULL);\r\n  glewInfoFunc(\"glVariantfvEXT\", glVariantfvEXT == NULL);\r\n  glewInfoFunc(\"glVariantivEXT\", glVariantivEXT == NULL);\r\n  glewInfoFunc(\"glVariantsvEXT\", glVariantsvEXT == NULL);\r\n  glewInfoFunc(\"glVariantubvEXT\", glVariantubvEXT == NULL);\r\n  glewInfoFunc(\"glVariantuivEXT\", glVariantuivEXT == NULL);\r\n  glewInfoFunc(\"glVariantusvEXT\", glVariantusvEXT == NULL);\r\n  glewInfoFunc(\"glWriteMaskEXT\", glWriteMaskEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_vertex_shader */\r\n\r\n#ifdef GL_EXT_vertex_weighting\r\n\r\nstatic void _glewInfo_GL_EXT_vertex_weighting (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_vertex_weighting\", GLEW_EXT_vertex_weighting, glewIsSupported(\"GL_EXT_vertex_weighting\"), glewGetExtension(\"GL_EXT_vertex_weighting\"));\r\n\r\n  glewInfoFunc(\"glVertexWeightPointerEXT\", glVertexWeightPointerEXT == NULL);\r\n  glewInfoFunc(\"glVertexWeightfEXT\", glVertexWeightfEXT == NULL);\r\n  glewInfoFunc(\"glVertexWeightfvEXT\", glVertexWeightfvEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_vertex_weighting */\r\n\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n\r\nstatic void _glewInfo_GL_EXT_win32_keyed_mutex (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_win32_keyed_mutex\", GLEW_EXT_win32_keyed_mutex, glewIsSupported(\"GL_EXT_win32_keyed_mutex\"), glewGetExtension(\"GL_EXT_win32_keyed_mutex\"));\r\n\r\n  glewInfoFunc(\"glAcquireKeyedMutexWin32EXT\", glAcquireKeyedMutexWin32EXT == NULL);\r\n  glewInfoFunc(\"glReleaseKeyedMutexWin32EXT\", glReleaseKeyedMutexWin32EXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_win32_keyed_mutex */\r\n\r\n#ifdef GL_EXT_window_rectangles\r\n\r\nstatic void _glewInfo_GL_EXT_window_rectangles (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_window_rectangles\", GLEW_EXT_window_rectangles, glewIsSupported(\"GL_EXT_window_rectangles\"), glewGetExtension(\"GL_EXT_window_rectangles\"));\r\n\r\n  glewInfoFunc(\"glWindowRectanglesEXT\", glWindowRectanglesEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_window_rectangles */\r\n\r\n#ifdef GL_EXT_x11_sync_object\r\n\r\nstatic void _glewInfo_GL_EXT_x11_sync_object (void)\r\n{\r\n  glewPrintExt(\"GL_EXT_x11_sync_object\", GLEW_EXT_x11_sync_object, glewIsSupported(\"GL_EXT_x11_sync_object\"), glewGetExtension(\"GL_EXT_x11_sync_object\"));\r\n\r\n  glewInfoFunc(\"glImportSyncEXT\", glImportSyncEXT == NULL);\r\n}\r\n\r\n#endif /* GL_EXT_x11_sync_object */\r\n\r\n#ifdef GL_GREMEDY_frame_terminator\r\n\r\nstatic void _glewInfo_GL_GREMEDY_frame_terminator (void)\r\n{\r\n  glewPrintExt(\"GL_GREMEDY_frame_terminator\", GLEW_GREMEDY_frame_terminator, glewIsSupported(\"GL_GREMEDY_frame_terminator\"), glewGetExtension(\"GL_GREMEDY_frame_terminator\"));\r\n\r\n  glewInfoFunc(\"glFrameTerminatorGREMEDY\", glFrameTerminatorGREMEDY == NULL);\r\n}\r\n\r\n#endif /* GL_GREMEDY_frame_terminator */\r\n\r\n#ifdef GL_GREMEDY_string_marker\r\n\r\nstatic void _glewInfo_GL_GREMEDY_string_marker (void)\r\n{\r\n  glewPrintExt(\"GL_GREMEDY_string_marker\", GLEW_GREMEDY_string_marker, glewIsSupported(\"GL_GREMEDY_string_marker\"), glewGetExtension(\"GL_GREMEDY_string_marker\"));\r\n\r\n  glewInfoFunc(\"glStringMarkerGREMEDY\", glStringMarkerGREMEDY == NULL);\r\n}\r\n\r\n#endif /* GL_GREMEDY_string_marker */\r\n\r\n#ifdef GL_HP_convolution_border_modes\r\n\r\nstatic void _glewInfo_GL_HP_convolution_border_modes (void)\r\n{\r\n  glewPrintExt(\"GL_HP_convolution_border_modes\", GLEW_HP_convolution_border_modes, glewIsSupported(\"GL_HP_convolution_border_modes\"), glewGetExtension(\"GL_HP_convolution_border_modes\"));\r\n}\r\n\r\n#endif /* GL_HP_convolution_border_modes */\r\n\r\n#ifdef GL_HP_image_transform\r\n\r\nstatic void _glewInfo_GL_HP_image_transform (void)\r\n{\r\n  glewPrintExt(\"GL_HP_image_transform\", GLEW_HP_image_transform, glewIsSupported(\"GL_HP_image_transform\"), glewGetExtension(\"GL_HP_image_transform\"));\r\n\r\n  glewInfoFunc(\"glGetImageTransformParameterfvHP\", glGetImageTransformParameterfvHP == NULL);\r\n  glewInfoFunc(\"glGetImageTransformParameterivHP\", glGetImageTransformParameterivHP == NULL);\r\n  glewInfoFunc(\"glImageTransformParameterfHP\", glImageTransformParameterfHP == NULL);\r\n  glewInfoFunc(\"glImageTransformParameterfvHP\", glImageTransformParameterfvHP == NULL);\r\n  glewInfoFunc(\"glImageTransformParameteriHP\", glImageTransformParameteriHP == NULL);\r\n  glewInfoFunc(\"glImageTransformParameterivHP\", glImageTransformParameterivHP == NULL);\r\n}\r\n\r\n#endif /* GL_HP_image_transform */\r\n\r\n#ifdef GL_HP_occlusion_test\r\n\r\nstatic void _glewInfo_GL_HP_occlusion_test (void)\r\n{\r\n  glewPrintExt(\"GL_HP_occlusion_test\", GLEW_HP_occlusion_test, glewIsSupported(\"GL_HP_occlusion_test\"), glewGetExtension(\"GL_HP_occlusion_test\"));\r\n}\r\n\r\n#endif /* GL_HP_occlusion_test */\r\n\r\n#ifdef GL_HP_texture_lighting\r\n\r\nstatic void _glewInfo_GL_HP_texture_lighting (void)\r\n{\r\n  glewPrintExt(\"GL_HP_texture_lighting\", GLEW_HP_texture_lighting, glewIsSupported(\"GL_HP_texture_lighting\"), glewGetExtension(\"GL_HP_texture_lighting\"));\r\n}\r\n\r\n#endif /* GL_HP_texture_lighting */\r\n\r\n#ifdef GL_IBM_cull_vertex\r\n\r\nstatic void _glewInfo_GL_IBM_cull_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_cull_vertex\", GLEW_IBM_cull_vertex, glewIsSupported(\"GL_IBM_cull_vertex\"), glewGetExtension(\"GL_IBM_cull_vertex\"));\r\n}\r\n\r\n#endif /* GL_IBM_cull_vertex */\r\n\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n\r\nstatic void _glewInfo_GL_IBM_multimode_draw_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_multimode_draw_arrays\", GLEW_IBM_multimode_draw_arrays, glewIsSupported(\"GL_IBM_multimode_draw_arrays\"), glewGetExtension(\"GL_IBM_multimode_draw_arrays\"));\r\n\r\n  glewInfoFunc(\"glMultiModeDrawArraysIBM\", glMultiModeDrawArraysIBM == NULL);\r\n  glewInfoFunc(\"glMultiModeDrawElementsIBM\", glMultiModeDrawElementsIBM == NULL);\r\n}\r\n\r\n#endif /* GL_IBM_multimode_draw_arrays */\r\n\r\n#ifdef GL_IBM_rasterpos_clip\r\n\r\nstatic void _glewInfo_GL_IBM_rasterpos_clip (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_rasterpos_clip\", GLEW_IBM_rasterpos_clip, glewIsSupported(\"GL_IBM_rasterpos_clip\"), glewGetExtension(\"GL_IBM_rasterpos_clip\"));\r\n}\r\n\r\n#endif /* GL_IBM_rasterpos_clip */\r\n\r\n#ifdef GL_IBM_static_data\r\n\r\nstatic void _glewInfo_GL_IBM_static_data (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_static_data\", GLEW_IBM_static_data, glewIsSupported(\"GL_IBM_static_data\"), glewGetExtension(\"GL_IBM_static_data\"));\r\n}\r\n\r\n#endif /* GL_IBM_static_data */\r\n\r\n#ifdef GL_IBM_texture_mirrored_repeat\r\n\r\nstatic void _glewInfo_GL_IBM_texture_mirrored_repeat (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_texture_mirrored_repeat\", GLEW_IBM_texture_mirrored_repeat, glewIsSupported(\"GL_IBM_texture_mirrored_repeat\"), glewGetExtension(\"GL_IBM_texture_mirrored_repeat\"));\r\n}\r\n\r\n#endif /* GL_IBM_texture_mirrored_repeat */\r\n\r\n#ifdef GL_IBM_vertex_array_lists\r\n\r\nstatic void _glewInfo_GL_IBM_vertex_array_lists (void)\r\n{\r\n  glewPrintExt(\"GL_IBM_vertex_array_lists\", GLEW_IBM_vertex_array_lists, glewIsSupported(\"GL_IBM_vertex_array_lists\"), glewGetExtension(\"GL_IBM_vertex_array_lists\"));\r\n\r\n  glewInfoFunc(\"glColorPointerListIBM\", glColorPointerListIBM == NULL);\r\n  glewInfoFunc(\"glEdgeFlagPointerListIBM\", glEdgeFlagPointerListIBM == NULL);\r\n  glewInfoFunc(\"glFogCoordPointerListIBM\", glFogCoordPointerListIBM == NULL);\r\n  glewInfoFunc(\"glIndexPointerListIBM\", glIndexPointerListIBM == NULL);\r\n  glewInfoFunc(\"glNormalPointerListIBM\", glNormalPointerListIBM == NULL);\r\n  glewInfoFunc(\"glSecondaryColorPointerListIBM\", glSecondaryColorPointerListIBM == NULL);\r\n  glewInfoFunc(\"glTexCoordPointerListIBM\", glTexCoordPointerListIBM == NULL);\r\n  glewInfoFunc(\"glVertexPointerListIBM\", glVertexPointerListIBM == NULL);\r\n}\r\n\r\n#endif /* GL_IBM_vertex_array_lists */\r\n\r\n#ifdef GL_INGR_color_clamp\r\n\r\nstatic void _glewInfo_GL_INGR_color_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_INGR_color_clamp\", GLEW_INGR_color_clamp, glewIsSupported(\"GL_INGR_color_clamp\"), glewGetExtension(\"GL_INGR_color_clamp\"));\r\n}\r\n\r\n#endif /* GL_INGR_color_clamp */\r\n\r\n#ifdef GL_INGR_interlace_read\r\n\r\nstatic void _glewInfo_GL_INGR_interlace_read (void)\r\n{\r\n  glewPrintExt(\"GL_INGR_interlace_read\", GLEW_INGR_interlace_read, glewIsSupported(\"GL_INGR_interlace_read\"), glewGetExtension(\"GL_INGR_interlace_read\"));\r\n}\r\n\r\n#endif /* GL_INGR_interlace_read */\r\n\r\n#ifdef GL_INTEL_conservative_rasterization\r\n\r\nstatic void _glewInfo_GL_INTEL_conservative_rasterization (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_conservative_rasterization\", GLEW_INTEL_conservative_rasterization, glewIsSupported(\"GL_INTEL_conservative_rasterization\"), glewGetExtension(\"GL_INTEL_conservative_rasterization\"));\r\n}\r\n\r\n#endif /* GL_INTEL_conservative_rasterization */\r\n\r\n#ifdef GL_INTEL_fragment_shader_ordering\r\n\r\nstatic void _glewInfo_GL_INTEL_fragment_shader_ordering (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_fragment_shader_ordering\", GLEW_INTEL_fragment_shader_ordering, glewIsSupported(\"GL_INTEL_fragment_shader_ordering\"), glewGetExtension(\"GL_INTEL_fragment_shader_ordering\"));\r\n}\r\n\r\n#endif /* GL_INTEL_fragment_shader_ordering */\r\n\r\n#ifdef GL_INTEL_framebuffer_CMAA\r\n\r\nstatic void _glewInfo_GL_INTEL_framebuffer_CMAA (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_framebuffer_CMAA\", GLEW_INTEL_framebuffer_CMAA, glewIsSupported(\"GL_INTEL_framebuffer_CMAA\"), glewGetExtension(\"GL_INTEL_framebuffer_CMAA\"));\r\n}\r\n\r\n#endif /* GL_INTEL_framebuffer_CMAA */\r\n\r\n#ifdef GL_INTEL_map_texture\r\n\r\nstatic void _glewInfo_GL_INTEL_map_texture (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_map_texture\", GLEW_INTEL_map_texture, glewIsSupported(\"GL_INTEL_map_texture\"), glewGetExtension(\"GL_INTEL_map_texture\"));\r\n\r\n  glewInfoFunc(\"glMapTexture2DINTEL\", glMapTexture2DINTEL == NULL);\r\n  glewInfoFunc(\"glSyncTextureINTEL\", glSyncTextureINTEL == NULL);\r\n  glewInfoFunc(\"glUnmapTexture2DINTEL\", glUnmapTexture2DINTEL == NULL);\r\n}\r\n\r\n#endif /* GL_INTEL_map_texture */\r\n\r\n#ifdef GL_INTEL_parallel_arrays\r\n\r\nstatic void _glewInfo_GL_INTEL_parallel_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_parallel_arrays\", GLEW_INTEL_parallel_arrays, glewIsSupported(\"GL_INTEL_parallel_arrays\"), glewGetExtension(\"GL_INTEL_parallel_arrays\"));\r\n\r\n  glewInfoFunc(\"glColorPointervINTEL\", glColorPointervINTEL == NULL);\r\n  glewInfoFunc(\"glNormalPointervINTEL\", glNormalPointervINTEL == NULL);\r\n  glewInfoFunc(\"glTexCoordPointervINTEL\", glTexCoordPointervINTEL == NULL);\r\n  glewInfoFunc(\"glVertexPointervINTEL\", glVertexPointervINTEL == NULL);\r\n}\r\n\r\n#endif /* GL_INTEL_parallel_arrays */\r\n\r\n#ifdef GL_INTEL_performance_query\r\n\r\nstatic void _glewInfo_GL_INTEL_performance_query (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_performance_query\", GLEW_INTEL_performance_query, glewIsSupported(\"GL_INTEL_performance_query\"), glewGetExtension(\"GL_INTEL_performance_query\"));\r\n\r\n  glewInfoFunc(\"glBeginPerfQueryINTEL\", glBeginPerfQueryINTEL == NULL);\r\n  glewInfoFunc(\"glCreatePerfQueryINTEL\", glCreatePerfQueryINTEL == NULL);\r\n  glewInfoFunc(\"glDeletePerfQueryINTEL\", glDeletePerfQueryINTEL == NULL);\r\n  glewInfoFunc(\"glEndPerfQueryINTEL\", glEndPerfQueryINTEL == NULL);\r\n  glewInfoFunc(\"glGetFirstPerfQueryIdINTEL\", glGetFirstPerfQueryIdINTEL == NULL);\r\n  glewInfoFunc(\"glGetNextPerfQueryIdINTEL\", glGetNextPerfQueryIdINTEL == NULL);\r\n  glewInfoFunc(\"glGetPerfCounterInfoINTEL\", glGetPerfCounterInfoINTEL == NULL);\r\n  glewInfoFunc(\"glGetPerfQueryDataINTEL\", glGetPerfQueryDataINTEL == NULL);\r\n  glewInfoFunc(\"glGetPerfQueryIdByNameINTEL\", glGetPerfQueryIdByNameINTEL == NULL);\r\n  glewInfoFunc(\"glGetPerfQueryInfoINTEL\", glGetPerfQueryInfoINTEL == NULL);\r\n}\r\n\r\n#endif /* GL_INTEL_performance_query */\r\n\r\n#ifdef GL_INTEL_texture_scissor\r\n\r\nstatic void _glewInfo_GL_INTEL_texture_scissor (void)\r\n{\r\n  glewPrintExt(\"GL_INTEL_texture_scissor\", GLEW_INTEL_texture_scissor, glewIsSupported(\"GL_INTEL_texture_scissor\"), glewGetExtension(\"GL_INTEL_texture_scissor\"));\r\n\r\n  glewInfoFunc(\"glTexScissorFuncINTEL\", glTexScissorFuncINTEL == NULL);\r\n  glewInfoFunc(\"glTexScissorINTEL\", glTexScissorINTEL == NULL);\r\n}\r\n\r\n#endif /* GL_INTEL_texture_scissor */\r\n\r\n#ifdef GL_KHR_blend_equation_advanced\r\n\r\nstatic void _glewInfo_GL_KHR_blend_equation_advanced (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_blend_equation_advanced\", GLEW_KHR_blend_equation_advanced, glewIsSupported(\"GL_KHR_blend_equation_advanced\"), glewGetExtension(\"GL_KHR_blend_equation_advanced\"));\r\n\r\n  glewInfoFunc(\"glBlendBarrierKHR\", glBlendBarrierKHR == NULL);\r\n}\r\n\r\n#endif /* GL_KHR_blend_equation_advanced */\r\n\r\n#ifdef GL_KHR_blend_equation_advanced_coherent\r\n\r\nstatic void _glewInfo_GL_KHR_blend_equation_advanced_coherent (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_blend_equation_advanced_coherent\", GLEW_KHR_blend_equation_advanced_coherent, glewIsSupported(\"GL_KHR_blend_equation_advanced_coherent\"), glewGetExtension(\"GL_KHR_blend_equation_advanced_coherent\"));\r\n}\r\n\r\n#endif /* GL_KHR_blend_equation_advanced_coherent */\r\n\r\n#ifdef GL_KHR_context_flush_control\r\n\r\nstatic void _glewInfo_GL_KHR_context_flush_control (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_context_flush_control\", GLEW_KHR_context_flush_control, glewIsSupported(\"GL_KHR_context_flush_control\"), glewGetExtension(\"GL_KHR_context_flush_control\"));\r\n}\r\n\r\n#endif /* GL_KHR_context_flush_control */\r\n\r\n#ifdef GL_KHR_debug\r\n\r\nstatic void _glewInfo_GL_KHR_debug (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_debug\", GLEW_KHR_debug, glewIsSupported(\"GL_KHR_debug\"), glewGetExtension(\"GL_KHR_debug\"));\r\n\r\n  glewInfoFunc(\"glDebugMessageCallback\", glDebugMessageCallback == NULL);\r\n  glewInfoFunc(\"glDebugMessageControl\", glDebugMessageControl == NULL);\r\n  glewInfoFunc(\"glDebugMessageInsert\", glDebugMessageInsert == NULL);\r\n  glewInfoFunc(\"glGetDebugMessageLog\", glGetDebugMessageLog == NULL);\r\n  glewInfoFunc(\"glGetObjectLabel\", glGetObjectLabel == NULL);\r\n  glewInfoFunc(\"glGetObjectPtrLabel\", glGetObjectPtrLabel == NULL);\r\n  glewInfoFunc(\"glObjectLabel\", glObjectLabel == NULL);\r\n  glewInfoFunc(\"glObjectPtrLabel\", glObjectPtrLabel == NULL);\r\n  glewInfoFunc(\"glPopDebugGroup\", glPopDebugGroup == NULL);\r\n  glewInfoFunc(\"glPushDebugGroup\", glPushDebugGroup == NULL);\r\n}\r\n\r\n#endif /* GL_KHR_debug */\r\n\r\n#ifdef GL_KHR_no_error\r\n\r\nstatic void _glewInfo_GL_KHR_no_error (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_no_error\", GLEW_KHR_no_error, glewIsSupported(\"GL_KHR_no_error\"), glewGetExtension(\"GL_KHR_no_error\"));\r\n}\r\n\r\n#endif /* GL_KHR_no_error */\r\n\r\n#ifdef GL_KHR_parallel_shader_compile\r\n\r\nstatic void _glewInfo_GL_KHR_parallel_shader_compile (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_parallel_shader_compile\", GLEW_KHR_parallel_shader_compile, glewIsSupported(\"GL_KHR_parallel_shader_compile\"), glewGetExtension(\"GL_KHR_parallel_shader_compile\"));\r\n\r\n  glewInfoFunc(\"glMaxShaderCompilerThreadsKHR\", glMaxShaderCompilerThreadsKHR == NULL);\r\n}\r\n\r\n#endif /* GL_KHR_parallel_shader_compile */\r\n\r\n#ifdef GL_KHR_robust_buffer_access_behavior\r\n\r\nstatic void _glewInfo_GL_KHR_robust_buffer_access_behavior (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_robust_buffer_access_behavior\", GLEW_KHR_robust_buffer_access_behavior, glewIsSupported(\"GL_KHR_robust_buffer_access_behavior\"), glewGetExtension(\"GL_KHR_robust_buffer_access_behavior\"));\r\n}\r\n\r\n#endif /* GL_KHR_robust_buffer_access_behavior */\r\n\r\n#ifdef GL_KHR_robustness\r\n\r\nstatic void _glewInfo_GL_KHR_robustness (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_robustness\", GLEW_KHR_robustness, glewIsSupported(\"GL_KHR_robustness\"), glewGetExtension(\"GL_KHR_robustness\"));\r\n\r\n  glewInfoFunc(\"glGetnUniformfv\", glGetnUniformfv == NULL);\r\n  glewInfoFunc(\"glGetnUniformiv\", glGetnUniformiv == NULL);\r\n  glewInfoFunc(\"glGetnUniformuiv\", glGetnUniformuiv == NULL);\r\n  glewInfoFunc(\"glReadnPixels\", glReadnPixels == NULL);\r\n}\r\n\r\n#endif /* GL_KHR_robustness */\r\n\r\n#ifdef GL_KHR_texture_compression_astc_hdr\r\n\r\nstatic void _glewInfo_GL_KHR_texture_compression_astc_hdr (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_texture_compression_astc_hdr\", GLEW_KHR_texture_compression_astc_hdr, glewIsSupported(\"GL_KHR_texture_compression_astc_hdr\"), glewGetExtension(\"GL_KHR_texture_compression_astc_hdr\"));\r\n}\r\n\r\n#endif /* GL_KHR_texture_compression_astc_hdr */\r\n\r\n#ifdef GL_KHR_texture_compression_astc_ldr\r\n\r\nstatic void _glewInfo_GL_KHR_texture_compression_astc_ldr (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_texture_compression_astc_ldr\", GLEW_KHR_texture_compression_astc_ldr, glewIsSupported(\"GL_KHR_texture_compression_astc_ldr\"), glewGetExtension(\"GL_KHR_texture_compression_astc_ldr\"));\r\n}\r\n\r\n#endif /* GL_KHR_texture_compression_astc_ldr */\r\n\r\n#ifdef GL_KHR_texture_compression_astc_sliced_3d\r\n\r\nstatic void _glewInfo_GL_KHR_texture_compression_astc_sliced_3d (void)\r\n{\r\n  glewPrintExt(\"GL_KHR_texture_compression_astc_sliced_3d\", GLEW_KHR_texture_compression_astc_sliced_3d, glewIsSupported(\"GL_KHR_texture_compression_astc_sliced_3d\"), glewGetExtension(\"GL_KHR_texture_compression_astc_sliced_3d\"));\r\n}\r\n\r\n#endif /* GL_KHR_texture_compression_astc_sliced_3d */\r\n\r\n#ifdef GL_KTX_buffer_region\r\n\r\nstatic void _glewInfo_GL_KTX_buffer_region (void)\r\n{\r\n  glewPrintExt(\"GL_KTX_buffer_region\", GLEW_KTX_buffer_region, glewIsSupported(\"GL_KTX_buffer_region\"), glewGetExtension(\"GL_KTX_buffer_region\"));\r\n\r\n  glewInfoFunc(\"glBufferRegionEnabled\", glBufferRegionEnabled == NULL);\r\n  glewInfoFunc(\"glDeleteBufferRegion\", glDeleteBufferRegion == NULL);\r\n  glewInfoFunc(\"glDrawBufferRegion\", glDrawBufferRegion == NULL);\r\n  glewInfoFunc(\"glNewBufferRegion\", glNewBufferRegion == NULL);\r\n  glewInfoFunc(\"glReadBufferRegion\", glReadBufferRegion == NULL);\r\n}\r\n\r\n#endif /* GL_KTX_buffer_region */\r\n\r\n#ifdef GL_MESAX_texture_stack\r\n\r\nstatic void _glewInfo_GL_MESAX_texture_stack (void)\r\n{\r\n  glewPrintExt(\"GL_MESAX_texture_stack\", GLEW_MESAX_texture_stack, glewIsSupported(\"GL_MESAX_texture_stack\"), glewGetExtension(\"GL_MESAX_texture_stack\"));\r\n}\r\n\r\n#endif /* GL_MESAX_texture_stack */\r\n\r\n#ifdef GL_MESA_pack_invert\r\n\r\nstatic void _glewInfo_GL_MESA_pack_invert (void)\r\n{\r\n  glewPrintExt(\"GL_MESA_pack_invert\", GLEW_MESA_pack_invert, glewIsSupported(\"GL_MESA_pack_invert\"), glewGetExtension(\"GL_MESA_pack_invert\"));\r\n}\r\n\r\n#endif /* GL_MESA_pack_invert */\r\n\r\n#ifdef GL_MESA_resize_buffers\r\n\r\nstatic void _glewInfo_GL_MESA_resize_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_MESA_resize_buffers\", GLEW_MESA_resize_buffers, glewIsSupported(\"GL_MESA_resize_buffers\"), glewGetExtension(\"GL_MESA_resize_buffers\"));\r\n\r\n  glewInfoFunc(\"glResizeBuffersMESA\", glResizeBuffersMESA == NULL);\r\n}\r\n\r\n#endif /* GL_MESA_resize_buffers */\r\n\r\n#ifdef GL_MESA_shader_integer_functions\r\n\r\nstatic void _glewInfo_GL_MESA_shader_integer_functions (void)\r\n{\r\n  glewPrintExt(\"GL_MESA_shader_integer_functions\", GLEW_MESA_shader_integer_functions, glewIsSupported(\"GL_MESA_shader_integer_functions\"), glewGetExtension(\"GL_MESA_shader_integer_functions\"));\r\n}\r\n\r\n#endif /* GL_MESA_shader_integer_functions */\r\n\r\n#ifdef GL_MESA_window_pos\r\n\r\nstatic void _glewInfo_GL_MESA_window_pos (void)\r\n{\r\n  glewPrintExt(\"GL_MESA_window_pos\", GLEW_MESA_window_pos, glewIsSupported(\"GL_MESA_window_pos\"), glewGetExtension(\"GL_MESA_window_pos\"));\r\n\r\n  glewInfoFunc(\"glWindowPos2dMESA\", glWindowPos2dMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2dvMESA\", glWindowPos2dvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2fMESA\", glWindowPos2fMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2fvMESA\", glWindowPos2fvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2iMESA\", glWindowPos2iMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2ivMESA\", glWindowPos2ivMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2sMESA\", glWindowPos2sMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos2svMESA\", glWindowPos2svMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3dMESA\", glWindowPos3dMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3dvMESA\", glWindowPos3dvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3fMESA\", glWindowPos3fMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3fvMESA\", glWindowPos3fvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3iMESA\", glWindowPos3iMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3ivMESA\", glWindowPos3ivMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3sMESA\", glWindowPos3sMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos3svMESA\", glWindowPos3svMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4dMESA\", glWindowPos4dMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4dvMESA\", glWindowPos4dvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4fMESA\", glWindowPos4fMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4fvMESA\", glWindowPos4fvMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4iMESA\", glWindowPos4iMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4ivMESA\", glWindowPos4ivMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4sMESA\", glWindowPos4sMESA == NULL);\r\n  glewInfoFunc(\"glWindowPos4svMESA\", glWindowPos4svMESA == NULL);\r\n}\r\n\r\n#endif /* GL_MESA_window_pos */\r\n\r\n#ifdef GL_MESA_ycbcr_texture\r\n\r\nstatic void _glewInfo_GL_MESA_ycbcr_texture (void)\r\n{\r\n  glewPrintExt(\"GL_MESA_ycbcr_texture\", GLEW_MESA_ycbcr_texture, glewIsSupported(\"GL_MESA_ycbcr_texture\"), glewGetExtension(\"GL_MESA_ycbcr_texture\"));\r\n}\r\n\r\n#endif /* GL_MESA_ycbcr_texture */\r\n\r\n#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers\r\n\r\nstatic void _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_NVX_blend_equation_advanced_multi_draw_buffers\", GLEW_NVX_blend_equation_advanced_multi_draw_buffers, glewIsSupported(\"GL_NVX_blend_equation_advanced_multi_draw_buffers\"), glewGetExtension(\"GL_NVX_blend_equation_advanced_multi_draw_buffers\"));\r\n}\r\n\r\n#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */\r\n\r\n#ifdef GL_NVX_conditional_render\r\n\r\nstatic void _glewInfo_GL_NVX_conditional_render (void)\r\n{\r\n  glewPrintExt(\"GL_NVX_conditional_render\", GLEW_NVX_conditional_render, glewIsSupported(\"GL_NVX_conditional_render\"), glewGetExtension(\"GL_NVX_conditional_render\"));\r\n\r\n  glewInfoFunc(\"glBeginConditionalRenderNVX\", glBeginConditionalRenderNVX == NULL);\r\n  glewInfoFunc(\"glEndConditionalRenderNVX\", glEndConditionalRenderNVX == NULL);\r\n}\r\n\r\n#endif /* GL_NVX_conditional_render */\r\n\r\n#ifdef GL_NVX_gpu_memory_info\r\n\r\nstatic void _glewInfo_GL_NVX_gpu_memory_info (void)\r\n{\r\n  glewPrintExt(\"GL_NVX_gpu_memory_info\", GLEW_NVX_gpu_memory_info, glewIsSupported(\"GL_NVX_gpu_memory_info\"), glewGetExtension(\"GL_NVX_gpu_memory_info\"));\r\n}\r\n\r\n#endif /* GL_NVX_gpu_memory_info */\r\n\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n\r\nstatic void _glewInfo_GL_NVX_linked_gpu_multicast (void)\r\n{\r\n  glewPrintExt(\"GL_NVX_linked_gpu_multicast\", GLEW_NVX_linked_gpu_multicast, glewIsSupported(\"GL_NVX_linked_gpu_multicast\"), glewGetExtension(\"GL_NVX_linked_gpu_multicast\"));\r\n\r\n  glewInfoFunc(\"glLGPUCopyImageSubDataNVX\", glLGPUCopyImageSubDataNVX == NULL);\r\n  glewInfoFunc(\"glLGPUInterlockNVX\", glLGPUInterlockNVX == NULL);\r\n  glewInfoFunc(\"glLGPUNamedBufferSubDataNVX\", glLGPUNamedBufferSubDataNVX == NULL);\r\n}\r\n\r\n#endif /* GL_NVX_linked_gpu_multicast */\r\n\r\n#ifdef GL_NV_3dvision_settings\r\n\r\nstatic void _glewInfo_GL_NV_3dvision_settings (void)\r\n{\r\n  glewPrintExt(\"GL_NV_3dvision_settings\", GLEW_NV_3dvision_settings, glewIsSupported(\"GL_NV_3dvision_settings\"), glewGetExtension(\"GL_NV_3dvision_settings\"));\r\n\r\n  glewInfoFunc(\"glStereoParameterfNV\", glStereoParameterfNV == NULL);\r\n  glewInfoFunc(\"glStereoParameteriNV\", glStereoParameteriNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_3dvision_settings */\r\n\r\n#ifdef GL_NV_EGL_stream_consumer_external\r\n\r\nstatic void _glewInfo_GL_NV_EGL_stream_consumer_external (void)\r\n{\r\n  glewPrintExt(\"GL_NV_EGL_stream_consumer_external\", GLEW_NV_EGL_stream_consumer_external, glewIsSupported(\"GL_NV_EGL_stream_consumer_external\"), glewGetExtension(\"GL_NV_EGL_stream_consumer_external\"));\r\n}\r\n\r\n#endif /* GL_NV_EGL_stream_consumer_external */\r\n\r\n#ifdef GL_NV_alpha_to_coverage_dither_control\r\n\r\nstatic void _glewInfo_GL_NV_alpha_to_coverage_dither_control (void)\r\n{\r\n  glewPrintExt(\"GL_NV_alpha_to_coverage_dither_control\", GLEW_NV_alpha_to_coverage_dither_control, glewIsSupported(\"GL_NV_alpha_to_coverage_dither_control\"), glewGetExtension(\"GL_NV_alpha_to_coverage_dither_control\"));\r\n}\r\n\r\n#endif /* GL_NV_alpha_to_coverage_dither_control */\r\n\r\n#ifdef GL_NV_bgr\r\n\r\nstatic void _glewInfo_GL_NV_bgr (void)\r\n{\r\n  glewPrintExt(\"GL_NV_bgr\", GLEW_NV_bgr, glewIsSupported(\"GL_NV_bgr\"), glewGetExtension(\"GL_NV_bgr\"));\r\n}\r\n\r\n#endif /* GL_NV_bgr */\r\n\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n\r\nstatic void _glewInfo_GL_NV_bindless_multi_draw_indirect (void)\r\n{\r\n  glewPrintExt(\"GL_NV_bindless_multi_draw_indirect\", GLEW_NV_bindless_multi_draw_indirect, glewIsSupported(\"GL_NV_bindless_multi_draw_indirect\"), glewGetExtension(\"GL_NV_bindless_multi_draw_indirect\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectBindlessNV\", glMultiDrawArraysIndirectBindlessNV == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectBindlessNV\", glMultiDrawElementsIndirectBindlessNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_bindless_multi_draw_indirect */\r\n\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n\r\nstatic void _glewInfo_GL_NV_bindless_multi_draw_indirect_count (void)\r\n{\r\n  glewPrintExt(\"GL_NV_bindless_multi_draw_indirect_count\", GLEW_NV_bindless_multi_draw_indirect_count, glewIsSupported(\"GL_NV_bindless_multi_draw_indirect_count\"), glewGetExtension(\"GL_NV_bindless_multi_draw_indirect_count\"));\r\n\r\n  glewInfoFunc(\"glMultiDrawArraysIndirectBindlessCountNV\", glMultiDrawArraysIndirectBindlessCountNV == NULL);\r\n  glewInfoFunc(\"glMultiDrawElementsIndirectBindlessCountNV\", glMultiDrawElementsIndirectBindlessCountNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_bindless_multi_draw_indirect_count */\r\n\r\n#ifdef GL_NV_bindless_texture\r\n\r\nstatic void _glewInfo_GL_NV_bindless_texture (void)\r\n{\r\n  glewPrintExt(\"GL_NV_bindless_texture\", GLEW_NV_bindless_texture, glewIsSupported(\"GL_NV_bindless_texture\"), glewGetExtension(\"GL_NV_bindless_texture\"));\r\n\r\n  glewInfoFunc(\"glGetImageHandleNV\", glGetImageHandleNV == NULL);\r\n  glewInfoFunc(\"glGetTextureHandleNV\", glGetTextureHandleNV == NULL);\r\n  glewInfoFunc(\"glGetTextureSamplerHandleNV\", glGetTextureSamplerHandleNV == NULL);\r\n  glewInfoFunc(\"glIsImageHandleResidentNV\", glIsImageHandleResidentNV == NULL);\r\n  glewInfoFunc(\"glIsTextureHandleResidentNV\", glIsTextureHandleResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeImageHandleNonResidentNV\", glMakeImageHandleNonResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeImageHandleResidentNV\", glMakeImageHandleResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeTextureHandleNonResidentNV\", glMakeTextureHandleNonResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeTextureHandleResidentNV\", glMakeTextureHandleResidentNV == NULL);\r\n  glewInfoFunc(\"glProgramUniformHandleui64NV\", glProgramUniformHandleui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniformHandleui64vNV\", glProgramUniformHandleui64vNV == NULL);\r\n  glewInfoFunc(\"glUniformHandleui64NV\", glUniformHandleui64NV == NULL);\r\n  glewInfoFunc(\"glUniformHandleui64vNV\", glUniformHandleui64vNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_bindless_texture */\r\n\r\n#ifdef GL_NV_blend_equation_advanced\r\n\r\nstatic void _glewInfo_GL_NV_blend_equation_advanced (void)\r\n{\r\n  glewPrintExt(\"GL_NV_blend_equation_advanced\", GLEW_NV_blend_equation_advanced, glewIsSupported(\"GL_NV_blend_equation_advanced\"), glewGetExtension(\"GL_NV_blend_equation_advanced\"));\r\n\r\n  glewInfoFunc(\"glBlendBarrierNV\", glBlendBarrierNV == NULL);\r\n  glewInfoFunc(\"glBlendParameteriNV\", glBlendParameteriNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_blend_equation_advanced */\r\n\r\n#ifdef GL_NV_blend_equation_advanced_coherent\r\n\r\nstatic void _glewInfo_GL_NV_blend_equation_advanced_coherent (void)\r\n{\r\n  glewPrintExt(\"GL_NV_blend_equation_advanced_coherent\", GLEW_NV_blend_equation_advanced_coherent, glewIsSupported(\"GL_NV_blend_equation_advanced_coherent\"), glewGetExtension(\"GL_NV_blend_equation_advanced_coherent\"));\r\n}\r\n\r\n#endif /* GL_NV_blend_equation_advanced_coherent */\r\n\r\n#ifdef GL_NV_blend_minmax_factor\r\n\r\nstatic void _glewInfo_GL_NV_blend_minmax_factor (void)\r\n{\r\n  glewPrintExt(\"GL_NV_blend_minmax_factor\", GLEW_NV_blend_minmax_factor, glewIsSupported(\"GL_NV_blend_minmax_factor\"), glewGetExtension(\"GL_NV_blend_minmax_factor\"));\r\n}\r\n\r\n#endif /* GL_NV_blend_minmax_factor */\r\n\r\n#ifdef GL_NV_blend_square\r\n\r\nstatic void _glewInfo_GL_NV_blend_square (void)\r\n{\r\n  glewPrintExt(\"GL_NV_blend_square\", GLEW_NV_blend_square, glewIsSupported(\"GL_NV_blend_square\"), glewGetExtension(\"GL_NV_blend_square\"));\r\n}\r\n\r\n#endif /* GL_NV_blend_square */\r\n\r\n#ifdef GL_NV_clip_space_w_scaling\r\n\r\nstatic void _glewInfo_GL_NV_clip_space_w_scaling (void)\r\n{\r\n  glewPrintExt(\"GL_NV_clip_space_w_scaling\", GLEW_NV_clip_space_w_scaling, glewIsSupported(\"GL_NV_clip_space_w_scaling\"), glewGetExtension(\"GL_NV_clip_space_w_scaling\"));\r\n\r\n  glewInfoFunc(\"glViewportPositionWScaleNV\", glViewportPositionWScaleNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_clip_space_w_scaling */\r\n\r\n#ifdef GL_NV_command_list\r\n\r\nstatic void _glewInfo_GL_NV_command_list (void)\r\n{\r\n  glewPrintExt(\"GL_NV_command_list\", GLEW_NV_command_list, glewIsSupported(\"GL_NV_command_list\"), glewGetExtension(\"GL_NV_command_list\"));\r\n\r\n  glewInfoFunc(\"glCallCommandListNV\", glCallCommandListNV == NULL);\r\n  glewInfoFunc(\"glCommandListSegmentsNV\", glCommandListSegmentsNV == NULL);\r\n  glewInfoFunc(\"glCompileCommandListNV\", glCompileCommandListNV == NULL);\r\n  glewInfoFunc(\"glCreateCommandListsNV\", glCreateCommandListsNV == NULL);\r\n  glewInfoFunc(\"glCreateStatesNV\", glCreateStatesNV == NULL);\r\n  glewInfoFunc(\"glDeleteCommandListsNV\", glDeleteCommandListsNV == NULL);\r\n  glewInfoFunc(\"glDeleteStatesNV\", glDeleteStatesNV == NULL);\r\n  glewInfoFunc(\"glDrawCommandsAddressNV\", glDrawCommandsAddressNV == NULL);\r\n  glewInfoFunc(\"glDrawCommandsNV\", glDrawCommandsNV == NULL);\r\n  glewInfoFunc(\"glDrawCommandsStatesAddressNV\", glDrawCommandsStatesAddressNV == NULL);\r\n  glewInfoFunc(\"glDrawCommandsStatesNV\", glDrawCommandsStatesNV == NULL);\r\n  glewInfoFunc(\"glGetCommandHeaderNV\", glGetCommandHeaderNV == NULL);\r\n  glewInfoFunc(\"glGetStageIndexNV\", glGetStageIndexNV == NULL);\r\n  glewInfoFunc(\"glIsCommandListNV\", glIsCommandListNV == NULL);\r\n  glewInfoFunc(\"glIsStateNV\", glIsStateNV == NULL);\r\n  glewInfoFunc(\"glListDrawCommandsStatesClientNV\", glListDrawCommandsStatesClientNV == NULL);\r\n  glewInfoFunc(\"glStateCaptureNV\", glStateCaptureNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_command_list */\r\n\r\n#ifdef GL_NV_compute_program5\r\n\r\nstatic void _glewInfo_GL_NV_compute_program5 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_compute_program5\", GLEW_NV_compute_program5, glewIsSupported(\"GL_NV_compute_program5\"), glewGetExtension(\"GL_NV_compute_program5\"));\r\n}\r\n\r\n#endif /* GL_NV_compute_program5 */\r\n\r\n#ifdef GL_NV_conditional_render\r\n\r\nstatic void _glewInfo_GL_NV_conditional_render (void)\r\n{\r\n  glewPrintExt(\"GL_NV_conditional_render\", GLEW_NV_conditional_render, glewIsSupported(\"GL_NV_conditional_render\"), glewGetExtension(\"GL_NV_conditional_render\"));\r\n\r\n  glewInfoFunc(\"glBeginConditionalRenderNV\", glBeginConditionalRenderNV == NULL);\r\n  glewInfoFunc(\"glEndConditionalRenderNV\", glEndConditionalRenderNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_conditional_render */\r\n\r\n#ifdef GL_NV_conservative_raster\r\n\r\nstatic void _glewInfo_GL_NV_conservative_raster (void)\r\n{\r\n  glewPrintExt(\"GL_NV_conservative_raster\", GLEW_NV_conservative_raster, glewIsSupported(\"GL_NV_conservative_raster\"), glewGetExtension(\"GL_NV_conservative_raster\"));\r\n\r\n  glewInfoFunc(\"glSubpixelPrecisionBiasNV\", glSubpixelPrecisionBiasNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster */\r\n\r\n#ifdef GL_NV_conservative_raster_dilate\r\n\r\nstatic void _glewInfo_GL_NV_conservative_raster_dilate (void)\r\n{\r\n  glewPrintExt(\"GL_NV_conservative_raster_dilate\", GLEW_NV_conservative_raster_dilate, glewIsSupported(\"GL_NV_conservative_raster_dilate\"), glewGetExtension(\"GL_NV_conservative_raster_dilate\"));\r\n\r\n  glewInfoFunc(\"glConservativeRasterParameterfNV\", glConservativeRasterParameterfNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster_dilate */\r\n\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n\r\nstatic void _glewInfo_GL_NV_conservative_raster_pre_snap_triangles (void)\r\n{\r\n  glewPrintExt(\"GL_NV_conservative_raster_pre_snap_triangles\", GLEW_NV_conservative_raster_pre_snap_triangles, glewIsSupported(\"GL_NV_conservative_raster_pre_snap_triangles\"), glewGetExtension(\"GL_NV_conservative_raster_pre_snap_triangles\"));\r\n\r\n  glewInfoFunc(\"glConservativeRasterParameteriNV\", glConservativeRasterParameteriNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\r\n\r\n#ifdef GL_NV_copy_buffer\r\n\r\nstatic void _glewInfo_GL_NV_copy_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_NV_copy_buffer\", GLEW_NV_copy_buffer, glewIsSupported(\"GL_NV_copy_buffer\"), glewGetExtension(\"GL_NV_copy_buffer\"));\r\n\r\n  glewInfoFunc(\"glCopyBufferSubDataNV\", glCopyBufferSubDataNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_copy_buffer */\r\n\r\n#ifdef GL_NV_copy_depth_to_color\r\n\r\nstatic void _glewInfo_GL_NV_copy_depth_to_color (void)\r\n{\r\n  glewPrintExt(\"GL_NV_copy_depth_to_color\", GLEW_NV_copy_depth_to_color, glewIsSupported(\"GL_NV_copy_depth_to_color\"), glewGetExtension(\"GL_NV_copy_depth_to_color\"));\r\n}\r\n\r\n#endif /* GL_NV_copy_depth_to_color */\r\n\r\n#ifdef GL_NV_copy_image\r\n\r\nstatic void _glewInfo_GL_NV_copy_image (void)\r\n{\r\n  glewPrintExt(\"GL_NV_copy_image\", GLEW_NV_copy_image, glewIsSupported(\"GL_NV_copy_image\"), glewGetExtension(\"GL_NV_copy_image\"));\r\n\r\n  glewInfoFunc(\"glCopyImageSubDataNV\", glCopyImageSubDataNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_copy_image */\r\n\r\n#ifdef GL_NV_deep_texture3D\r\n\r\nstatic void _glewInfo_GL_NV_deep_texture3D (void)\r\n{\r\n  glewPrintExt(\"GL_NV_deep_texture3D\", GLEW_NV_deep_texture3D, glewIsSupported(\"GL_NV_deep_texture3D\"), glewGetExtension(\"GL_NV_deep_texture3D\"));\r\n}\r\n\r\n#endif /* GL_NV_deep_texture3D */\r\n\r\n#ifdef GL_NV_depth_buffer_float\r\n\r\nstatic void _glewInfo_GL_NV_depth_buffer_float (void)\r\n{\r\n  glewPrintExt(\"GL_NV_depth_buffer_float\", GLEW_NV_depth_buffer_float, glewIsSupported(\"GL_NV_depth_buffer_float\"), glewGetExtension(\"GL_NV_depth_buffer_float\"));\r\n\r\n  glewInfoFunc(\"glClearDepthdNV\", glClearDepthdNV == NULL);\r\n  glewInfoFunc(\"glDepthBoundsdNV\", glDepthBoundsdNV == NULL);\r\n  glewInfoFunc(\"glDepthRangedNV\", glDepthRangedNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_depth_buffer_float */\r\n\r\n#ifdef GL_NV_depth_clamp\r\n\r\nstatic void _glewInfo_GL_NV_depth_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_NV_depth_clamp\", GLEW_NV_depth_clamp, glewIsSupported(\"GL_NV_depth_clamp\"), glewGetExtension(\"GL_NV_depth_clamp\"));\r\n}\r\n\r\n#endif /* GL_NV_depth_clamp */\r\n\r\n#ifdef GL_NV_depth_range_unclamped\r\n\r\nstatic void _glewInfo_GL_NV_depth_range_unclamped (void)\r\n{\r\n  glewPrintExt(\"GL_NV_depth_range_unclamped\", GLEW_NV_depth_range_unclamped, glewIsSupported(\"GL_NV_depth_range_unclamped\"), glewGetExtension(\"GL_NV_depth_range_unclamped\"));\r\n}\r\n\r\n#endif /* GL_NV_depth_range_unclamped */\r\n\r\n#ifdef GL_NV_draw_buffers\r\n\r\nstatic void _glewInfo_GL_NV_draw_buffers (void)\r\n{\r\n  glewPrintExt(\"GL_NV_draw_buffers\", GLEW_NV_draw_buffers, glewIsSupported(\"GL_NV_draw_buffers\"), glewGetExtension(\"GL_NV_draw_buffers\"));\r\n\r\n  glewInfoFunc(\"glDrawBuffersNV\", glDrawBuffersNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_draw_buffers */\r\n\r\n#ifdef GL_NV_draw_instanced\r\n\r\nstatic void _glewInfo_GL_NV_draw_instanced (void)\r\n{\r\n  glewPrintExt(\"GL_NV_draw_instanced\", GLEW_NV_draw_instanced, glewIsSupported(\"GL_NV_draw_instanced\"), glewGetExtension(\"GL_NV_draw_instanced\"));\r\n\r\n  glewInfoFunc(\"glDrawArraysInstancedNV\", glDrawArraysInstancedNV == NULL);\r\n  glewInfoFunc(\"glDrawElementsInstancedNV\", glDrawElementsInstancedNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_draw_instanced */\r\n\r\n#ifdef GL_NV_draw_texture\r\n\r\nstatic void _glewInfo_GL_NV_draw_texture (void)\r\n{\r\n  glewPrintExt(\"GL_NV_draw_texture\", GLEW_NV_draw_texture, glewIsSupported(\"GL_NV_draw_texture\"), glewGetExtension(\"GL_NV_draw_texture\"));\r\n\r\n  glewInfoFunc(\"glDrawTextureNV\", glDrawTextureNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_draw_texture */\r\n\r\n#ifdef GL_NV_draw_vulkan_image\r\n\r\nstatic void _glewInfo_GL_NV_draw_vulkan_image (void)\r\n{\r\n  glewPrintExt(\"GL_NV_draw_vulkan_image\", GLEW_NV_draw_vulkan_image, glewIsSupported(\"GL_NV_draw_vulkan_image\"), glewGetExtension(\"GL_NV_draw_vulkan_image\"));\r\n\r\n  glewInfoFunc(\"glDrawVkImageNV\", glDrawVkImageNV == NULL);\r\n  glewInfoFunc(\"glGetVkProcAddrNV\", glGetVkProcAddrNV == NULL);\r\n  glewInfoFunc(\"glSignalVkFenceNV\", glSignalVkFenceNV == NULL);\r\n  glewInfoFunc(\"glSignalVkSemaphoreNV\", glSignalVkSemaphoreNV == NULL);\r\n  glewInfoFunc(\"glWaitVkSemaphoreNV\", glWaitVkSemaphoreNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_draw_vulkan_image */\r\n\r\n#ifdef GL_NV_evaluators\r\n\r\nstatic void _glewInfo_GL_NV_evaluators (void)\r\n{\r\n  glewPrintExt(\"GL_NV_evaluators\", GLEW_NV_evaluators, glewIsSupported(\"GL_NV_evaluators\"), glewGetExtension(\"GL_NV_evaluators\"));\r\n\r\n  glewInfoFunc(\"glEvalMapsNV\", glEvalMapsNV == NULL);\r\n  glewInfoFunc(\"glGetMapAttribParameterfvNV\", glGetMapAttribParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetMapAttribParameterivNV\", glGetMapAttribParameterivNV == NULL);\r\n  glewInfoFunc(\"glGetMapControlPointsNV\", glGetMapControlPointsNV == NULL);\r\n  glewInfoFunc(\"glGetMapParameterfvNV\", glGetMapParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetMapParameterivNV\", glGetMapParameterivNV == NULL);\r\n  glewInfoFunc(\"glMapControlPointsNV\", glMapControlPointsNV == NULL);\r\n  glewInfoFunc(\"glMapParameterfvNV\", glMapParameterfvNV == NULL);\r\n  glewInfoFunc(\"glMapParameterivNV\", glMapParameterivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_evaluators */\r\n\r\n#ifdef GL_NV_explicit_attrib_location\r\n\r\nstatic void _glewInfo_GL_NV_explicit_attrib_location (void)\r\n{\r\n  glewPrintExt(\"GL_NV_explicit_attrib_location\", GLEW_NV_explicit_attrib_location, glewIsSupported(\"GL_NV_explicit_attrib_location\"), glewGetExtension(\"GL_NV_explicit_attrib_location\"));\r\n}\r\n\r\n#endif /* GL_NV_explicit_attrib_location */\r\n\r\n#ifdef GL_NV_explicit_multisample\r\n\r\nstatic void _glewInfo_GL_NV_explicit_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_NV_explicit_multisample\", GLEW_NV_explicit_multisample, glewIsSupported(\"GL_NV_explicit_multisample\"), glewGetExtension(\"GL_NV_explicit_multisample\"));\r\n\r\n  glewInfoFunc(\"glGetMultisamplefvNV\", glGetMultisamplefvNV == NULL);\r\n  glewInfoFunc(\"glSampleMaskIndexedNV\", glSampleMaskIndexedNV == NULL);\r\n  glewInfoFunc(\"glTexRenderbufferNV\", glTexRenderbufferNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_explicit_multisample */\r\n\r\n#ifdef GL_NV_fbo_color_attachments\r\n\r\nstatic void _glewInfo_GL_NV_fbo_color_attachments (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fbo_color_attachments\", GLEW_NV_fbo_color_attachments, glewIsSupported(\"GL_NV_fbo_color_attachments\"), glewGetExtension(\"GL_NV_fbo_color_attachments\"));\r\n}\r\n\r\n#endif /* GL_NV_fbo_color_attachments */\r\n\r\n#ifdef GL_NV_fence\r\n\r\nstatic void _glewInfo_GL_NV_fence (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fence\", GLEW_NV_fence, glewIsSupported(\"GL_NV_fence\"), glewGetExtension(\"GL_NV_fence\"));\r\n\r\n  glewInfoFunc(\"glDeleteFencesNV\", glDeleteFencesNV == NULL);\r\n  glewInfoFunc(\"glFinishFenceNV\", glFinishFenceNV == NULL);\r\n  glewInfoFunc(\"glGenFencesNV\", glGenFencesNV == NULL);\r\n  glewInfoFunc(\"glGetFenceivNV\", glGetFenceivNV == NULL);\r\n  glewInfoFunc(\"glIsFenceNV\", glIsFenceNV == NULL);\r\n  glewInfoFunc(\"glSetFenceNV\", glSetFenceNV == NULL);\r\n  glewInfoFunc(\"glTestFenceNV\", glTestFenceNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_fence */\r\n\r\n#ifdef GL_NV_fill_rectangle\r\n\r\nstatic void _glewInfo_GL_NV_fill_rectangle (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fill_rectangle\", GLEW_NV_fill_rectangle, glewIsSupported(\"GL_NV_fill_rectangle\"), glewGetExtension(\"GL_NV_fill_rectangle\"));\r\n}\r\n\r\n#endif /* GL_NV_fill_rectangle */\r\n\r\n#ifdef GL_NV_float_buffer\r\n\r\nstatic void _glewInfo_GL_NV_float_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_NV_float_buffer\", GLEW_NV_float_buffer, glewIsSupported(\"GL_NV_float_buffer\"), glewGetExtension(\"GL_NV_float_buffer\"));\r\n}\r\n\r\n#endif /* GL_NV_float_buffer */\r\n\r\n#ifdef GL_NV_fog_distance\r\n\r\nstatic void _glewInfo_GL_NV_fog_distance (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fog_distance\", GLEW_NV_fog_distance, glewIsSupported(\"GL_NV_fog_distance\"), glewGetExtension(\"GL_NV_fog_distance\"));\r\n}\r\n\r\n#endif /* GL_NV_fog_distance */\r\n\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n\r\nstatic void _glewInfo_GL_NV_fragment_coverage_to_color (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_coverage_to_color\", GLEW_NV_fragment_coverage_to_color, glewIsSupported(\"GL_NV_fragment_coverage_to_color\"), glewGetExtension(\"GL_NV_fragment_coverage_to_color\"));\r\n\r\n  glewInfoFunc(\"glFragmentCoverageColorNV\", glFragmentCoverageColorNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_fragment_coverage_to_color */\r\n\r\n#ifdef GL_NV_fragment_program\r\n\r\nstatic void _glewInfo_GL_NV_fragment_program (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_program\", GLEW_NV_fragment_program, glewIsSupported(\"GL_NV_fragment_program\"), glewGetExtension(\"GL_NV_fragment_program\"));\r\n\r\n  glewInfoFunc(\"glGetProgramNamedParameterdvNV\", glGetProgramNamedParameterdvNV == NULL);\r\n  glewInfoFunc(\"glGetProgramNamedParameterfvNV\", glGetProgramNamedParameterfvNV == NULL);\r\n  glewInfoFunc(\"glProgramNamedParameter4dNV\", glProgramNamedParameter4dNV == NULL);\r\n  glewInfoFunc(\"glProgramNamedParameter4dvNV\", glProgramNamedParameter4dvNV == NULL);\r\n  glewInfoFunc(\"glProgramNamedParameter4fNV\", glProgramNamedParameter4fNV == NULL);\r\n  glewInfoFunc(\"glProgramNamedParameter4fvNV\", glProgramNamedParameter4fvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_fragment_program */\r\n\r\n#ifdef GL_NV_fragment_program2\r\n\r\nstatic void _glewInfo_GL_NV_fragment_program2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_program2\", GLEW_NV_fragment_program2, glewIsSupported(\"GL_NV_fragment_program2\"), glewGetExtension(\"GL_NV_fragment_program2\"));\r\n}\r\n\r\n#endif /* GL_NV_fragment_program2 */\r\n\r\n#ifdef GL_NV_fragment_program4\r\n\r\nstatic void _glewInfo_GL_NV_fragment_program4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_program4\", GLEW_NV_fragment_program4, glewIsSupported(\"GL_NV_fragment_program4\"), glewGetExtension(\"GL_NV_gpu_program4\"));\r\n}\r\n\r\n#endif /* GL_NV_fragment_program4 */\r\n\r\n#ifdef GL_NV_fragment_program_option\r\n\r\nstatic void _glewInfo_GL_NV_fragment_program_option (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_program_option\", GLEW_NV_fragment_program_option, glewIsSupported(\"GL_NV_fragment_program_option\"), glewGetExtension(\"GL_NV_fragment_program_option\"));\r\n}\r\n\r\n#endif /* GL_NV_fragment_program_option */\r\n\r\n#ifdef GL_NV_fragment_shader_interlock\r\n\r\nstatic void _glewInfo_GL_NV_fragment_shader_interlock (void)\r\n{\r\n  glewPrintExt(\"GL_NV_fragment_shader_interlock\", GLEW_NV_fragment_shader_interlock, glewIsSupported(\"GL_NV_fragment_shader_interlock\"), glewGetExtension(\"GL_NV_fragment_shader_interlock\"));\r\n}\r\n\r\n#endif /* GL_NV_fragment_shader_interlock */\r\n\r\n#ifdef GL_NV_framebuffer_blit\r\n\r\nstatic void _glewInfo_GL_NV_framebuffer_blit (void)\r\n{\r\n  glewPrintExt(\"GL_NV_framebuffer_blit\", GLEW_NV_framebuffer_blit, glewIsSupported(\"GL_NV_framebuffer_blit\"), glewGetExtension(\"GL_NV_framebuffer_blit\"));\r\n\r\n  glewInfoFunc(\"glBlitFramebufferNV\", glBlitFramebufferNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_blit */\r\n\r\n#ifdef GL_NV_framebuffer_mixed_samples\r\n\r\nstatic void _glewInfo_GL_NV_framebuffer_mixed_samples (void)\r\n{\r\n  glewPrintExt(\"GL_NV_framebuffer_mixed_samples\", GLEW_NV_framebuffer_mixed_samples, glewIsSupported(\"GL_NV_framebuffer_mixed_samples\"), glewGetExtension(\"GL_NV_framebuffer_mixed_samples\"));\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_mixed_samples */\r\n\r\n#ifdef GL_NV_framebuffer_multisample\r\n\r\nstatic void _glewInfo_GL_NV_framebuffer_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_NV_framebuffer_multisample\", GLEW_NV_framebuffer_multisample, glewIsSupported(\"GL_NV_framebuffer_multisample\"), glewGetExtension(\"GL_NV_framebuffer_multisample\"));\r\n\r\n  glewInfoFunc(\"glRenderbufferStorageMultisampleNV\", glRenderbufferStorageMultisampleNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_multisample */\r\n\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n\r\nstatic void _glewInfo_GL_NV_framebuffer_multisample_coverage (void)\r\n{\r\n  glewPrintExt(\"GL_NV_framebuffer_multisample_coverage\", GLEW_NV_framebuffer_multisample_coverage, glewIsSupported(\"GL_NV_framebuffer_multisample_coverage\"), glewGetExtension(\"GL_NV_framebuffer_multisample_coverage\"));\r\n\r\n  glewInfoFunc(\"glRenderbufferStorageMultisampleCoverageNV\", glRenderbufferStorageMultisampleCoverageNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_framebuffer_multisample_coverage */\r\n\r\n#ifdef GL_NV_generate_mipmap_sRGB\r\n\r\nstatic void _glewInfo_GL_NV_generate_mipmap_sRGB (void)\r\n{\r\n  glewPrintExt(\"GL_NV_generate_mipmap_sRGB\", GLEW_NV_generate_mipmap_sRGB, glewIsSupported(\"GL_NV_generate_mipmap_sRGB\"), glewGetExtension(\"GL_NV_generate_mipmap_sRGB\"));\r\n}\r\n\r\n#endif /* GL_NV_generate_mipmap_sRGB */\r\n\r\n#ifdef GL_NV_geometry_program4\r\n\r\nstatic void _glewInfo_GL_NV_geometry_program4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_geometry_program4\", GLEW_NV_geometry_program4, glewIsSupported(\"GL_NV_geometry_program4\"), glewGetExtension(\"GL_NV_gpu_program4\"));\r\n\r\n  glewInfoFunc(\"glProgramVertexLimitNV\", glProgramVertexLimitNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_geometry_program4 */\r\n\r\n#ifdef GL_NV_geometry_shader4\r\n\r\nstatic void _glewInfo_GL_NV_geometry_shader4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_geometry_shader4\", GLEW_NV_geometry_shader4, glewIsSupported(\"GL_NV_geometry_shader4\"), glewGetExtension(\"GL_NV_geometry_shader4\"));\r\n}\r\n\r\n#endif /* GL_NV_geometry_shader4 */\r\n\r\n#ifdef GL_NV_geometry_shader_passthrough\r\n\r\nstatic void _glewInfo_GL_NV_geometry_shader_passthrough (void)\r\n{\r\n  glewPrintExt(\"GL_NV_geometry_shader_passthrough\", GLEW_NV_geometry_shader_passthrough, glewIsSupported(\"GL_NV_geometry_shader_passthrough\"), glewGetExtension(\"GL_NV_geometry_shader_passthrough\"));\r\n}\r\n\r\n#endif /* GL_NV_geometry_shader_passthrough */\r\n\r\n#ifdef GL_NV_gpu_multicast\r\n\r\nstatic void _glewInfo_GL_NV_gpu_multicast (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_multicast\", GLEW_NV_gpu_multicast, glewIsSupported(\"GL_NV_gpu_multicast\"), glewGetExtension(\"GL_NV_gpu_multicast\"));\r\n\r\n  glewInfoFunc(\"glMulticastBarrierNV\", glMulticastBarrierNV == NULL);\r\n  glewInfoFunc(\"glMulticastBlitFramebufferNV\", glMulticastBlitFramebufferNV == NULL);\r\n  glewInfoFunc(\"glMulticastBufferSubDataNV\", glMulticastBufferSubDataNV == NULL);\r\n  glewInfoFunc(\"glMulticastCopyBufferSubDataNV\", glMulticastCopyBufferSubDataNV == NULL);\r\n  glewInfoFunc(\"glMulticastCopyImageSubDataNV\", glMulticastCopyImageSubDataNV == NULL);\r\n  glewInfoFunc(\"glMulticastFramebufferSampleLocationsfvNV\", glMulticastFramebufferSampleLocationsfvNV == NULL);\r\n  glewInfoFunc(\"glMulticastGetQueryObjecti64vNV\", glMulticastGetQueryObjecti64vNV == NULL);\r\n  glewInfoFunc(\"glMulticastGetQueryObjectivNV\", glMulticastGetQueryObjectivNV == NULL);\r\n  glewInfoFunc(\"glMulticastGetQueryObjectui64vNV\", glMulticastGetQueryObjectui64vNV == NULL);\r\n  glewInfoFunc(\"glMulticastGetQueryObjectuivNV\", glMulticastGetQueryObjectuivNV == NULL);\r\n  glewInfoFunc(\"glMulticastWaitSyncNV\", glMulticastWaitSyncNV == NULL);\r\n  glewInfoFunc(\"glRenderGpuMaskNV\", glRenderGpuMaskNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_gpu_multicast */\r\n\r\n#ifdef GL_NV_gpu_program4\r\n\r\nstatic void _glewInfo_GL_NV_gpu_program4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_program4\", GLEW_NV_gpu_program4, glewIsSupported(\"GL_NV_gpu_program4\"), glewGetExtension(\"GL_NV_gpu_program4\"));\r\n\r\n  glewInfoFunc(\"glProgramEnvParameterI4iNV\", glProgramEnvParameterI4iNV == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameterI4ivNV\", glProgramEnvParameterI4ivNV == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameterI4uiNV\", glProgramEnvParameterI4uiNV == NULL);\r\n  glewInfoFunc(\"glProgramEnvParameterI4uivNV\", glProgramEnvParameterI4uivNV == NULL);\r\n  glewInfoFunc(\"glProgramEnvParametersI4ivNV\", glProgramEnvParametersI4ivNV == NULL);\r\n  glewInfoFunc(\"glProgramEnvParametersI4uivNV\", glProgramEnvParametersI4uivNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameterI4iNV\", glProgramLocalParameterI4iNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameterI4ivNV\", glProgramLocalParameterI4ivNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameterI4uiNV\", glProgramLocalParameterI4uiNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParameterI4uivNV\", glProgramLocalParameterI4uivNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParametersI4ivNV\", glProgramLocalParametersI4ivNV == NULL);\r\n  glewInfoFunc(\"glProgramLocalParametersI4uivNV\", glProgramLocalParametersI4uivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_gpu_program4 */\r\n\r\n#ifdef GL_NV_gpu_program5\r\n\r\nstatic void _glewInfo_GL_NV_gpu_program5 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_program5\", GLEW_NV_gpu_program5, glewIsSupported(\"GL_NV_gpu_program5\"), glewGetExtension(\"GL_NV_gpu_program5\"));\r\n}\r\n\r\n#endif /* GL_NV_gpu_program5 */\r\n\r\n#ifdef GL_NV_gpu_program5_mem_extended\r\n\r\nstatic void _glewInfo_GL_NV_gpu_program5_mem_extended (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_program5_mem_extended\", GLEW_NV_gpu_program5_mem_extended, glewIsSupported(\"GL_NV_gpu_program5_mem_extended\"), glewGetExtension(\"GL_NV_gpu_program5_mem_extended\"));\r\n}\r\n\r\n#endif /* GL_NV_gpu_program5_mem_extended */\r\n\r\n#ifdef GL_NV_gpu_program_fp64\r\n\r\nstatic void _glewInfo_GL_NV_gpu_program_fp64 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_program_fp64\", GLEW_NV_gpu_program_fp64, glewIsSupported(\"GL_NV_gpu_program_fp64\"), glewGetExtension(\"GL_NV_gpu_program_fp64\"));\r\n}\r\n\r\n#endif /* GL_NV_gpu_program_fp64 */\r\n\r\n#ifdef GL_NV_gpu_shader5\r\n\r\nstatic void _glewInfo_GL_NV_gpu_shader5 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_gpu_shader5\", GLEW_NV_gpu_shader5, glewIsSupported(\"GL_NV_gpu_shader5\"), glewGetExtension(\"GL_NV_gpu_shader5\"));\r\n\r\n  glewInfoFunc(\"glGetUniformi64vNV\", glGetUniformi64vNV == NULL);\r\n  glewInfoFunc(\"glGetUniformui64vNV\", glGetUniformui64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform1i64NV\", glProgramUniform1i64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform1i64vNV\", glProgramUniform1i64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ui64NV\", glProgramUniform1ui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform1ui64vNV\", glProgramUniform1ui64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform2i64NV\", glProgramUniform2i64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform2i64vNV\", glProgramUniform2i64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ui64NV\", glProgramUniform2ui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform2ui64vNV\", glProgramUniform2ui64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform3i64NV\", glProgramUniform3i64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform3i64vNV\", glProgramUniform3i64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ui64NV\", glProgramUniform3ui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform3ui64vNV\", glProgramUniform3ui64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform4i64NV\", glProgramUniform4i64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform4i64vNV\", glProgramUniform4i64vNV == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ui64NV\", glProgramUniform4ui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniform4ui64vNV\", glProgramUniform4ui64vNV == NULL);\r\n  glewInfoFunc(\"glUniform1i64NV\", glUniform1i64NV == NULL);\r\n  glewInfoFunc(\"glUniform1i64vNV\", glUniform1i64vNV == NULL);\r\n  glewInfoFunc(\"glUniform1ui64NV\", glUniform1ui64NV == NULL);\r\n  glewInfoFunc(\"glUniform1ui64vNV\", glUniform1ui64vNV == NULL);\r\n  glewInfoFunc(\"glUniform2i64NV\", glUniform2i64NV == NULL);\r\n  glewInfoFunc(\"glUniform2i64vNV\", glUniform2i64vNV == NULL);\r\n  glewInfoFunc(\"glUniform2ui64NV\", glUniform2ui64NV == NULL);\r\n  glewInfoFunc(\"glUniform2ui64vNV\", glUniform2ui64vNV == NULL);\r\n  glewInfoFunc(\"glUniform3i64NV\", glUniform3i64NV == NULL);\r\n  glewInfoFunc(\"glUniform3i64vNV\", glUniform3i64vNV == NULL);\r\n  glewInfoFunc(\"glUniform3ui64NV\", glUniform3ui64NV == NULL);\r\n  glewInfoFunc(\"glUniform3ui64vNV\", glUniform3ui64vNV == NULL);\r\n  glewInfoFunc(\"glUniform4i64NV\", glUniform4i64NV == NULL);\r\n  glewInfoFunc(\"glUniform4i64vNV\", glUniform4i64vNV == NULL);\r\n  glewInfoFunc(\"glUniform4ui64NV\", glUniform4ui64NV == NULL);\r\n  glewInfoFunc(\"glUniform4ui64vNV\", glUniform4ui64vNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_gpu_shader5 */\r\n\r\n#ifdef GL_NV_half_float\r\n\r\nstatic void _glewInfo_GL_NV_half_float (void)\r\n{\r\n  glewPrintExt(\"GL_NV_half_float\", GLEW_NV_half_float, glewIsSupported(\"GL_NV_half_float\"), glewGetExtension(\"GL_NV_half_float\"));\r\n\r\n  glewInfoFunc(\"glColor3hNV\", glColor3hNV == NULL);\r\n  glewInfoFunc(\"glColor3hvNV\", glColor3hvNV == NULL);\r\n  glewInfoFunc(\"glColor4hNV\", glColor4hNV == NULL);\r\n  glewInfoFunc(\"glColor4hvNV\", glColor4hvNV == NULL);\r\n  glewInfoFunc(\"glFogCoordhNV\", glFogCoordhNV == NULL);\r\n  glewInfoFunc(\"glFogCoordhvNV\", glFogCoordhvNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1hNV\", glMultiTexCoord1hNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord1hvNV\", glMultiTexCoord1hvNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2hNV\", glMultiTexCoord2hNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord2hvNV\", glMultiTexCoord2hvNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3hNV\", glMultiTexCoord3hNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord3hvNV\", glMultiTexCoord3hvNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4hNV\", glMultiTexCoord4hNV == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4hvNV\", glMultiTexCoord4hvNV == NULL);\r\n  glewInfoFunc(\"glNormal3hNV\", glNormal3hNV == NULL);\r\n  glewInfoFunc(\"glNormal3hvNV\", glNormal3hvNV == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3hNV\", glSecondaryColor3hNV == NULL);\r\n  glewInfoFunc(\"glSecondaryColor3hvNV\", glSecondaryColor3hvNV == NULL);\r\n  glewInfoFunc(\"glTexCoord1hNV\", glTexCoord1hNV == NULL);\r\n  glewInfoFunc(\"glTexCoord1hvNV\", glTexCoord1hvNV == NULL);\r\n  glewInfoFunc(\"glTexCoord2hNV\", glTexCoord2hNV == NULL);\r\n  glewInfoFunc(\"glTexCoord2hvNV\", glTexCoord2hvNV == NULL);\r\n  glewInfoFunc(\"glTexCoord3hNV\", glTexCoord3hNV == NULL);\r\n  glewInfoFunc(\"glTexCoord3hvNV\", glTexCoord3hvNV == NULL);\r\n  glewInfoFunc(\"glTexCoord4hNV\", glTexCoord4hNV == NULL);\r\n  glewInfoFunc(\"glTexCoord4hvNV\", glTexCoord4hvNV == NULL);\r\n  glewInfoFunc(\"glVertex2hNV\", glVertex2hNV == NULL);\r\n  glewInfoFunc(\"glVertex2hvNV\", glVertex2hvNV == NULL);\r\n  glewInfoFunc(\"glVertex3hNV\", glVertex3hNV == NULL);\r\n  glewInfoFunc(\"glVertex3hvNV\", glVertex3hvNV == NULL);\r\n  glewInfoFunc(\"glVertex4hNV\", glVertex4hNV == NULL);\r\n  glewInfoFunc(\"glVertex4hvNV\", glVertex4hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1hNV\", glVertexAttrib1hNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1hvNV\", glVertexAttrib1hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2hNV\", glVertexAttrib2hNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2hvNV\", glVertexAttrib2hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3hNV\", glVertexAttrib3hNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3hvNV\", glVertexAttrib3hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4hNV\", glVertexAttrib4hNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4hvNV\", glVertexAttrib4hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs1hvNV\", glVertexAttribs1hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs2hvNV\", glVertexAttribs2hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs3hvNV\", glVertexAttribs3hvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs4hvNV\", glVertexAttribs4hvNV == NULL);\r\n  glewInfoFunc(\"glVertexWeighthNV\", glVertexWeighthNV == NULL);\r\n  glewInfoFunc(\"glVertexWeighthvNV\", glVertexWeighthvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_half_float */\r\n\r\n#ifdef GL_NV_image_formats\r\n\r\nstatic void _glewInfo_GL_NV_image_formats (void)\r\n{\r\n  glewPrintExt(\"GL_NV_image_formats\", GLEW_NV_image_formats, glewIsSupported(\"GL_NV_image_formats\"), glewGetExtension(\"GL_NV_image_formats\"));\r\n}\r\n\r\n#endif /* GL_NV_image_formats */\r\n\r\n#ifdef GL_NV_instanced_arrays\r\n\r\nstatic void _glewInfo_GL_NV_instanced_arrays (void)\r\n{\r\n  glewPrintExt(\"GL_NV_instanced_arrays\", GLEW_NV_instanced_arrays, glewIsSupported(\"GL_NV_instanced_arrays\"), glewGetExtension(\"GL_NV_instanced_arrays\"));\r\n\r\n  glewInfoFunc(\"glVertexAttribDivisorNV\", glVertexAttribDivisorNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_instanced_arrays */\r\n\r\n#ifdef GL_NV_internalformat_sample_query\r\n\r\nstatic void _glewInfo_GL_NV_internalformat_sample_query (void)\r\n{\r\n  glewPrintExt(\"GL_NV_internalformat_sample_query\", GLEW_NV_internalformat_sample_query, glewIsSupported(\"GL_NV_internalformat_sample_query\"), glewGetExtension(\"GL_NV_internalformat_sample_query\"));\r\n\r\n  glewInfoFunc(\"glGetInternalformatSampleivNV\", glGetInternalformatSampleivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_internalformat_sample_query */\r\n\r\n#ifdef GL_NV_light_max_exponent\r\n\r\nstatic void _glewInfo_GL_NV_light_max_exponent (void)\r\n{\r\n  glewPrintExt(\"GL_NV_light_max_exponent\", GLEW_NV_light_max_exponent, glewIsSupported(\"GL_NV_light_max_exponent\"), glewGetExtension(\"GL_NV_light_max_exponent\"));\r\n}\r\n\r\n#endif /* GL_NV_light_max_exponent */\r\n\r\n#ifdef GL_NV_multisample_coverage\r\n\r\nstatic void _glewInfo_GL_NV_multisample_coverage (void)\r\n{\r\n  glewPrintExt(\"GL_NV_multisample_coverage\", GLEW_NV_multisample_coverage, glewIsSupported(\"GL_NV_multisample_coverage\"), glewGetExtension(\"GL_NV_multisample_coverage\"));\r\n}\r\n\r\n#endif /* GL_NV_multisample_coverage */\r\n\r\n#ifdef GL_NV_multisample_filter_hint\r\n\r\nstatic void _glewInfo_GL_NV_multisample_filter_hint (void)\r\n{\r\n  glewPrintExt(\"GL_NV_multisample_filter_hint\", GLEW_NV_multisample_filter_hint, glewIsSupported(\"GL_NV_multisample_filter_hint\"), glewGetExtension(\"GL_NV_multisample_filter_hint\"));\r\n}\r\n\r\n#endif /* GL_NV_multisample_filter_hint */\r\n\r\n#ifdef GL_NV_non_square_matrices\r\n\r\nstatic void _glewInfo_GL_NV_non_square_matrices (void)\r\n{\r\n  glewPrintExt(\"GL_NV_non_square_matrices\", GLEW_NV_non_square_matrices, glewIsSupported(\"GL_NV_non_square_matrices\"), glewGetExtension(\"GL_NV_non_square_matrices\"));\r\n\r\n  glewInfoFunc(\"glUniformMatrix2x3fvNV\", glUniformMatrix2x3fvNV == NULL);\r\n  glewInfoFunc(\"glUniformMatrix2x4fvNV\", glUniformMatrix2x4fvNV == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x2fvNV\", glUniformMatrix3x2fvNV == NULL);\r\n  glewInfoFunc(\"glUniformMatrix3x4fvNV\", glUniformMatrix3x4fvNV == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x2fvNV\", glUniformMatrix4x2fvNV == NULL);\r\n  glewInfoFunc(\"glUniformMatrix4x3fvNV\", glUniformMatrix4x3fvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_non_square_matrices */\r\n\r\n#ifdef GL_NV_occlusion_query\r\n\r\nstatic void _glewInfo_GL_NV_occlusion_query (void)\r\n{\r\n  glewPrintExt(\"GL_NV_occlusion_query\", GLEW_NV_occlusion_query, glewIsSupported(\"GL_NV_occlusion_query\"), glewGetExtension(\"GL_NV_occlusion_query\"));\r\n\r\n  glewInfoFunc(\"glBeginOcclusionQueryNV\", glBeginOcclusionQueryNV == NULL);\r\n  glewInfoFunc(\"glDeleteOcclusionQueriesNV\", glDeleteOcclusionQueriesNV == NULL);\r\n  glewInfoFunc(\"glEndOcclusionQueryNV\", glEndOcclusionQueryNV == NULL);\r\n  glewInfoFunc(\"glGenOcclusionQueriesNV\", glGenOcclusionQueriesNV == NULL);\r\n  glewInfoFunc(\"glGetOcclusionQueryivNV\", glGetOcclusionQueryivNV == NULL);\r\n  glewInfoFunc(\"glGetOcclusionQueryuivNV\", glGetOcclusionQueryuivNV == NULL);\r\n  glewInfoFunc(\"glIsOcclusionQueryNV\", glIsOcclusionQueryNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_occlusion_query */\r\n\r\n#ifdef GL_NV_pack_subimage\r\n\r\nstatic void _glewInfo_GL_NV_pack_subimage (void)\r\n{\r\n  glewPrintExt(\"GL_NV_pack_subimage\", GLEW_NV_pack_subimage, glewIsSupported(\"GL_NV_pack_subimage\"), glewGetExtension(\"GL_NV_pack_subimage\"));\r\n}\r\n\r\n#endif /* GL_NV_pack_subimage */\r\n\r\n#ifdef GL_NV_packed_depth_stencil\r\n\r\nstatic void _glewInfo_GL_NV_packed_depth_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_NV_packed_depth_stencil\", GLEW_NV_packed_depth_stencil, glewIsSupported(\"GL_NV_packed_depth_stencil\"), glewGetExtension(\"GL_NV_packed_depth_stencil\"));\r\n}\r\n\r\n#endif /* GL_NV_packed_depth_stencil */\r\n\r\n#ifdef GL_NV_packed_float\r\n\r\nstatic void _glewInfo_GL_NV_packed_float (void)\r\n{\r\n  glewPrintExt(\"GL_NV_packed_float\", GLEW_NV_packed_float, glewIsSupported(\"GL_NV_packed_float\"), glewGetExtension(\"GL_NV_packed_float\"));\r\n}\r\n\r\n#endif /* GL_NV_packed_float */\r\n\r\n#ifdef GL_NV_packed_float_linear\r\n\r\nstatic void _glewInfo_GL_NV_packed_float_linear (void)\r\n{\r\n  glewPrintExt(\"GL_NV_packed_float_linear\", GLEW_NV_packed_float_linear, glewIsSupported(\"GL_NV_packed_float_linear\"), glewGetExtension(\"GL_NV_packed_float_linear\"));\r\n}\r\n\r\n#endif /* GL_NV_packed_float_linear */\r\n\r\n#ifdef GL_NV_parameter_buffer_object\r\n\r\nstatic void _glewInfo_GL_NV_parameter_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_NV_parameter_buffer_object\", GLEW_NV_parameter_buffer_object, glewIsSupported(\"GL_NV_parameter_buffer_object\"), glewGetExtension(\"GL_NV_parameter_buffer_object\"));\r\n\r\n  glewInfoFunc(\"glProgramBufferParametersIivNV\", glProgramBufferParametersIivNV == NULL);\r\n  glewInfoFunc(\"glProgramBufferParametersIuivNV\", glProgramBufferParametersIuivNV == NULL);\r\n  glewInfoFunc(\"glProgramBufferParametersfvNV\", glProgramBufferParametersfvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_parameter_buffer_object */\r\n\r\n#ifdef GL_NV_parameter_buffer_object2\r\n\r\nstatic void _glewInfo_GL_NV_parameter_buffer_object2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_parameter_buffer_object2\", GLEW_NV_parameter_buffer_object2, glewIsSupported(\"GL_NV_parameter_buffer_object2\"), glewGetExtension(\"GL_NV_parameter_buffer_object2\"));\r\n}\r\n\r\n#endif /* GL_NV_parameter_buffer_object2 */\r\n\r\n#ifdef GL_NV_path_rendering\r\n\r\nstatic void _glewInfo_GL_NV_path_rendering (void)\r\n{\r\n  glewPrintExt(\"GL_NV_path_rendering\", GLEW_NV_path_rendering, glewIsSupported(\"GL_NV_path_rendering\"), glewGetExtension(\"GL_NV_path_rendering\"));\r\n\r\n  glewInfoFunc(\"glCopyPathNV\", glCopyPathNV == NULL);\r\n  glewInfoFunc(\"glCoverFillPathInstancedNV\", glCoverFillPathInstancedNV == NULL);\r\n  glewInfoFunc(\"glCoverFillPathNV\", glCoverFillPathNV == NULL);\r\n  glewInfoFunc(\"glCoverStrokePathInstancedNV\", glCoverStrokePathInstancedNV == NULL);\r\n  glewInfoFunc(\"glCoverStrokePathNV\", glCoverStrokePathNV == NULL);\r\n  glewInfoFunc(\"glDeletePathsNV\", glDeletePathsNV == NULL);\r\n  glewInfoFunc(\"glGenPathsNV\", glGenPathsNV == NULL);\r\n  glewInfoFunc(\"glGetPathColorGenfvNV\", glGetPathColorGenfvNV == NULL);\r\n  glewInfoFunc(\"glGetPathColorGenivNV\", glGetPathColorGenivNV == NULL);\r\n  glewInfoFunc(\"glGetPathCommandsNV\", glGetPathCommandsNV == NULL);\r\n  glewInfoFunc(\"glGetPathCoordsNV\", glGetPathCoordsNV == NULL);\r\n  glewInfoFunc(\"glGetPathDashArrayNV\", glGetPathDashArrayNV == NULL);\r\n  glewInfoFunc(\"glGetPathLengthNV\", glGetPathLengthNV == NULL);\r\n  glewInfoFunc(\"glGetPathMetricRangeNV\", glGetPathMetricRangeNV == NULL);\r\n  glewInfoFunc(\"glGetPathMetricsNV\", glGetPathMetricsNV == NULL);\r\n  glewInfoFunc(\"glGetPathParameterfvNV\", glGetPathParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetPathParameterivNV\", glGetPathParameterivNV == NULL);\r\n  glewInfoFunc(\"glGetPathSpacingNV\", glGetPathSpacingNV == NULL);\r\n  glewInfoFunc(\"glGetPathTexGenfvNV\", glGetPathTexGenfvNV == NULL);\r\n  glewInfoFunc(\"glGetPathTexGenivNV\", glGetPathTexGenivNV == NULL);\r\n  glewInfoFunc(\"glGetProgramResourcefvNV\", glGetProgramResourcefvNV == NULL);\r\n  glewInfoFunc(\"glInterpolatePathsNV\", glInterpolatePathsNV == NULL);\r\n  glewInfoFunc(\"glIsPathNV\", glIsPathNV == NULL);\r\n  glewInfoFunc(\"glIsPointInFillPathNV\", glIsPointInFillPathNV == NULL);\r\n  glewInfoFunc(\"glIsPointInStrokePathNV\", glIsPointInStrokePathNV == NULL);\r\n  glewInfoFunc(\"glMatrixLoad3x2fNV\", glMatrixLoad3x2fNV == NULL);\r\n  glewInfoFunc(\"glMatrixLoad3x3fNV\", glMatrixLoad3x3fNV == NULL);\r\n  glewInfoFunc(\"glMatrixLoadTranspose3x3fNV\", glMatrixLoadTranspose3x3fNV == NULL);\r\n  glewInfoFunc(\"glMatrixMult3x2fNV\", glMatrixMult3x2fNV == NULL);\r\n  glewInfoFunc(\"glMatrixMult3x3fNV\", glMatrixMult3x3fNV == NULL);\r\n  glewInfoFunc(\"glMatrixMultTranspose3x3fNV\", glMatrixMultTranspose3x3fNV == NULL);\r\n  glewInfoFunc(\"glPathColorGenNV\", glPathColorGenNV == NULL);\r\n  glewInfoFunc(\"glPathCommandsNV\", glPathCommandsNV == NULL);\r\n  glewInfoFunc(\"glPathCoordsNV\", glPathCoordsNV == NULL);\r\n  glewInfoFunc(\"glPathCoverDepthFuncNV\", glPathCoverDepthFuncNV == NULL);\r\n  glewInfoFunc(\"glPathDashArrayNV\", glPathDashArrayNV == NULL);\r\n  glewInfoFunc(\"glPathFogGenNV\", glPathFogGenNV == NULL);\r\n  glewInfoFunc(\"glPathGlyphIndexArrayNV\", glPathGlyphIndexArrayNV == NULL);\r\n  glewInfoFunc(\"glPathGlyphIndexRangeNV\", glPathGlyphIndexRangeNV == NULL);\r\n  glewInfoFunc(\"glPathGlyphRangeNV\", glPathGlyphRangeNV == NULL);\r\n  glewInfoFunc(\"glPathGlyphsNV\", glPathGlyphsNV == NULL);\r\n  glewInfoFunc(\"glPathMemoryGlyphIndexArrayNV\", glPathMemoryGlyphIndexArrayNV == NULL);\r\n  glewInfoFunc(\"glPathParameterfNV\", glPathParameterfNV == NULL);\r\n  glewInfoFunc(\"glPathParameterfvNV\", glPathParameterfvNV == NULL);\r\n  glewInfoFunc(\"glPathParameteriNV\", glPathParameteriNV == NULL);\r\n  glewInfoFunc(\"glPathParameterivNV\", glPathParameterivNV == NULL);\r\n  glewInfoFunc(\"glPathStencilDepthOffsetNV\", glPathStencilDepthOffsetNV == NULL);\r\n  glewInfoFunc(\"glPathStencilFuncNV\", glPathStencilFuncNV == NULL);\r\n  glewInfoFunc(\"glPathStringNV\", glPathStringNV == NULL);\r\n  glewInfoFunc(\"glPathSubCommandsNV\", glPathSubCommandsNV == NULL);\r\n  glewInfoFunc(\"glPathSubCoordsNV\", glPathSubCoordsNV == NULL);\r\n  glewInfoFunc(\"glPathTexGenNV\", glPathTexGenNV == NULL);\r\n  glewInfoFunc(\"glPointAlongPathNV\", glPointAlongPathNV == NULL);\r\n  glewInfoFunc(\"glProgramPathFragmentInputGenNV\", glProgramPathFragmentInputGenNV == NULL);\r\n  glewInfoFunc(\"glStencilFillPathInstancedNV\", glStencilFillPathInstancedNV == NULL);\r\n  glewInfoFunc(\"glStencilFillPathNV\", glStencilFillPathNV == NULL);\r\n  glewInfoFunc(\"glStencilStrokePathInstancedNV\", glStencilStrokePathInstancedNV == NULL);\r\n  glewInfoFunc(\"glStencilStrokePathNV\", glStencilStrokePathNV == NULL);\r\n  glewInfoFunc(\"glStencilThenCoverFillPathInstancedNV\", glStencilThenCoverFillPathInstancedNV == NULL);\r\n  glewInfoFunc(\"glStencilThenCoverFillPathNV\", glStencilThenCoverFillPathNV == NULL);\r\n  glewInfoFunc(\"glStencilThenCoverStrokePathInstancedNV\", glStencilThenCoverStrokePathInstancedNV == NULL);\r\n  glewInfoFunc(\"glStencilThenCoverStrokePathNV\", glStencilThenCoverStrokePathNV == NULL);\r\n  glewInfoFunc(\"glTransformPathNV\", glTransformPathNV == NULL);\r\n  glewInfoFunc(\"glWeightPathsNV\", glWeightPathsNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_path_rendering */\r\n\r\n#ifdef GL_NV_path_rendering_shared_edge\r\n\r\nstatic void _glewInfo_GL_NV_path_rendering_shared_edge (void)\r\n{\r\n  glewPrintExt(\"GL_NV_path_rendering_shared_edge\", GLEW_NV_path_rendering_shared_edge, glewIsSupported(\"GL_NV_path_rendering_shared_edge\"), glewGetExtension(\"GL_NV_path_rendering_shared_edge\"));\r\n}\r\n\r\n#endif /* GL_NV_path_rendering_shared_edge */\r\n\r\n#ifdef GL_NV_pixel_buffer_object\r\n\r\nstatic void _glewInfo_GL_NV_pixel_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_NV_pixel_buffer_object\", GLEW_NV_pixel_buffer_object, glewIsSupported(\"GL_NV_pixel_buffer_object\"), glewGetExtension(\"GL_NV_pixel_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_NV_pixel_buffer_object */\r\n\r\n#ifdef GL_NV_pixel_data_range\r\n\r\nstatic void _glewInfo_GL_NV_pixel_data_range (void)\r\n{\r\n  glewPrintExt(\"GL_NV_pixel_data_range\", GLEW_NV_pixel_data_range, glewIsSupported(\"GL_NV_pixel_data_range\"), glewGetExtension(\"GL_NV_pixel_data_range\"));\r\n\r\n  glewInfoFunc(\"glFlushPixelDataRangeNV\", glFlushPixelDataRangeNV == NULL);\r\n  glewInfoFunc(\"glPixelDataRangeNV\", glPixelDataRangeNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_pixel_data_range */\r\n\r\n#ifdef GL_NV_platform_binary\r\n\r\nstatic void _glewInfo_GL_NV_platform_binary (void)\r\n{\r\n  glewPrintExt(\"GL_NV_platform_binary\", GLEW_NV_platform_binary, glewIsSupported(\"GL_NV_platform_binary\"), glewGetExtension(\"GL_NV_platform_binary\"));\r\n}\r\n\r\n#endif /* GL_NV_platform_binary */\r\n\r\n#ifdef GL_NV_point_sprite\r\n\r\nstatic void _glewInfo_GL_NV_point_sprite (void)\r\n{\r\n  glewPrintExt(\"GL_NV_point_sprite\", GLEW_NV_point_sprite, glewIsSupported(\"GL_NV_point_sprite\"), glewGetExtension(\"GL_NV_point_sprite\"));\r\n\r\n  glewInfoFunc(\"glPointParameteriNV\", glPointParameteriNV == NULL);\r\n  glewInfoFunc(\"glPointParameterivNV\", glPointParameterivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_point_sprite */\r\n\r\n#ifdef GL_NV_polygon_mode\r\n\r\nstatic void _glewInfo_GL_NV_polygon_mode (void)\r\n{\r\n  glewPrintExt(\"GL_NV_polygon_mode\", GLEW_NV_polygon_mode, glewIsSupported(\"GL_NV_polygon_mode\"), glewGetExtension(\"GL_NV_polygon_mode\"));\r\n\r\n  glewInfoFunc(\"glPolygonModeNV\", glPolygonModeNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_polygon_mode */\r\n\r\n#ifdef GL_NV_present_video\r\n\r\nstatic void _glewInfo_GL_NV_present_video (void)\r\n{\r\n  glewPrintExt(\"GL_NV_present_video\", GLEW_NV_present_video, glewIsSupported(\"GL_NV_present_video\"), glewGetExtension(\"GL_NV_present_video\"));\r\n\r\n  glewInfoFunc(\"glGetVideoi64vNV\", glGetVideoi64vNV == NULL);\r\n  glewInfoFunc(\"glGetVideoivNV\", glGetVideoivNV == NULL);\r\n  glewInfoFunc(\"glGetVideoui64vNV\", glGetVideoui64vNV == NULL);\r\n  glewInfoFunc(\"glGetVideouivNV\", glGetVideouivNV == NULL);\r\n  glewInfoFunc(\"glPresentFrameDualFillNV\", glPresentFrameDualFillNV == NULL);\r\n  glewInfoFunc(\"glPresentFrameKeyedNV\", glPresentFrameKeyedNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_present_video */\r\n\r\n#ifdef GL_NV_primitive_restart\r\n\r\nstatic void _glewInfo_GL_NV_primitive_restart (void)\r\n{\r\n  glewPrintExt(\"GL_NV_primitive_restart\", GLEW_NV_primitive_restart, glewIsSupported(\"GL_NV_primitive_restart\"), glewGetExtension(\"GL_NV_primitive_restart\"));\r\n\r\n  glewInfoFunc(\"glPrimitiveRestartIndexNV\", glPrimitiveRestartIndexNV == NULL);\r\n  glewInfoFunc(\"glPrimitiveRestartNV\", glPrimitiveRestartNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_primitive_restart */\r\n\r\n#ifdef GL_NV_read_depth\r\n\r\nstatic void _glewInfo_GL_NV_read_depth (void)\r\n{\r\n  glewPrintExt(\"GL_NV_read_depth\", GLEW_NV_read_depth, glewIsSupported(\"GL_NV_read_depth\"), glewGetExtension(\"GL_NV_read_depth\"));\r\n}\r\n\r\n#endif /* GL_NV_read_depth */\r\n\r\n#ifdef GL_NV_read_depth_stencil\r\n\r\nstatic void _glewInfo_GL_NV_read_depth_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_NV_read_depth_stencil\", GLEW_NV_read_depth_stencil, glewIsSupported(\"GL_NV_read_depth_stencil\"), glewGetExtension(\"GL_NV_read_depth_stencil\"));\r\n}\r\n\r\n#endif /* GL_NV_read_depth_stencil */\r\n\r\n#ifdef GL_NV_read_stencil\r\n\r\nstatic void _glewInfo_GL_NV_read_stencil (void)\r\n{\r\n  glewPrintExt(\"GL_NV_read_stencil\", GLEW_NV_read_stencil, glewIsSupported(\"GL_NV_read_stencil\"), glewGetExtension(\"GL_NV_read_stencil\"));\r\n}\r\n\r\n#endif /* GL_NV_read_stencil */\r\n\r\n#ifdef GL_NV_register_combiners\r\n\r\nstatic void _glewInfo_GL_NV_register_combiners (void)\r\n{\r\n  glewPrintExt(\"GL_NV_register_combiners\", GLEW_NV_register_combiners, glewIsSupported(\"GL_NV_register_combiners\"), glewGetExtension(\"GL_NV_register_combiners\"));\r\n\r\n  glewInfoFunc(\"glCombinerInputNV\", glCombinerInputNV == NULL);\r\n  glewInfoFunc(\"glCombinerOutputNV\", glCombinerOutputNV == NULL);\r\n  glewInfoFunc(\"glCombinerParameterfNV\", glCombinerParameterfNV == NULL);\r\n  glewInfoFunc(\"glCombinerParameterfvNV\", glCombinerParameterfvNV == NULL);\r\n  glewInfoFunc(\"glCombinerParameteriNV\", glCombinerParameteriNV == NULL);\r\n  glewInfoFunc(\"glCombinerParameterivNV\", glCombinerParameterivNV == NULL);\r\n  glewInfoFunc(\"glFinalCombinerInputNV\", glFinalCombinerInputNV == NULL);\r\n  glewInfoFunc(\"glGetCombinerInputParameterfvNV\", glGetCombinerInputParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetCombinerInputParameterivNV\", glGetCombinerInputParameterivNV == NULL);\r\n  glewInfoFunc(\"glGetCombinerOutputParameterfvNV\", glGetCombinerOutputParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetCombinerOutputParameterivNV\", glGetCombinerOutputParameterivNV == NULL);\r\n  glewInfoFunc(\"glGetFinalCombinerInputParameterfvNV\", glGetFinalCombinerInputParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetFinalCombinerInputParameterivNV\", glGetFinalCombinerInputParameterivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_register_combiners */\r\n\r\n#ifdef GL_NV_register_combiners2\r\n\r\nstatic void _glewInfo_GL_NV_register_combiners2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_register_combiners2\", GLEW_NV_register_combiners2, glewIsSupported(\"GL_NV_register_combiners2\"), glewGetExtension(\"GL_NV_register_combiners2\"));\r\n\r\n  glewInfoFunc(\"glCombinerStageParameterfvNV\", glCombinerStageParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetCombinerStageParameterfvNV\", glGetCombinerStageParameterfvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_register_combiners2 */\r\n\r\n#ifdef GL_NV_robustness_video_memory_purge\r\n\r\nstatic void _glewInfo_GL_NV_robustness_video_memory_purge (void)\r\n{\r\n  glewPrintExt(\"GL_NV_robustness_video_memory_purge\", GLEW_NV_robustness_video_memory_purge, glewIsSupported(\"GL_NV_robustness_video_memory_purge\"), glewGetExtension(\"GL_NV_robustness_video_memory_purge\"));\r\n}\r\n\r\n#endif /* GL_NV_robustness_video_memory_purge */\r\n\r\n#ifdef GL_NV_sRGB_formats\r\n\r\nstatic void _glewInfo_GL_NV_sRGB_formats (void)\r\n{\r\n  glewPrintExt(\"GL_NV_sRGB_formats\", GLEW_NV_sRGB_formats, glewIsSupported(\"GL_NV_sRGB_formats\"), glewGetExtension(\"GL_NV_sRGB_formats\"));\r\n}\r\n\r\n#endif /* GL_NV_sRGB_formats */\r\n\r\n#ifdef GL_NV_sample_locations\r\n\r\nstatic void _glewInfo_GL_NV_sample_locations (void)\r\n{\r\n  glewPrintExt(\"GL_NV_sample_locations\", GLEW_NV_sample_locations, glewIsSupported(\"GL_NV_sample_locations\"), glewGetExtension(\"GL_NV_sample_locations\"));\r\n\r\n  glewInfoFunc(\"glFramebufferSampleLocationsfvNV\", glFramebufferSampleLocationsfvNV == NULL);\r\n  glewInfoFunc(\"glNamedFramebufferSampleLocationsfvNV\", glNamedFramebufferSampleLocationsfvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_sample_locations */\r\n\r\n#ifdef GL_NV_sample_mask_override_coverage\r\n\r\nstatic void _glewInfo_GL_NV_sample_mask_override_coverage (void)\r\n{\r\n  glewPrintExt(\"GL_NV_sample_mask_override_coverage\", GLEW_NV_sample_mask_override_coverage, glewIsSupported(\"GL_NV_sample_mask_override_coverage\"), glewGetExtension(\"GL_NV_sample_mask_override_coverage\"));\r\n}\r\n\r\n#endif /* GL_NV_sample_mask_override_coverage */\r\n\r\n#ifdef GL_NV_shader_atomic_counters\r\n\r\nstatic void _glewInfo_GL_NV_shader_atomic_counters (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_atomic_counters\", GLEW_NV_shader_atomic_counters, glewIsSupported(\"GL_NV_shader_atomic_counters\"), glewGetExtension(\"GL_NV_shader_atomic_counters\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_atomic_counters */\r\n\r\n#ifdef GL_NV_shader_atomic_float\r\n\r\nstatic void _glewInfo_GL_NV_shader_atomic_float (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_atomic_float\", GLEW_NV_shader_atomic_float, glewIsSupported(\"GL_NV_shader_atomic_float\"), glewGetExtension(\"GL_NV_shader_atomic_float\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_atomic_float */\r\n\r\n#ifdef GL_NV_shader_atomic_float64\r\n\r\nstatic void _glewInfo_GL_NV_shader_atomic_float64 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_atomic_float64\", GLEW_NV_shader_atomic_float64, glewIsSupported(\"GL_NV_shader_atomic_float64\"), glewGetExtension(\"GL_NV_shader_atomic_float64\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_atomic_float64 */\r\n\r\n#ifdef GL_NV_shader_atomic_fp16_vector\r\n\r\nstatic void _glewInfo_GL_NV_shader_atomic_fp16_vector (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_atomic_fp16_vector\", GLEW_NV_shader_atomic_fp16_vector, glewIsSupported(\"GL_NV_shader_atomic_fp16_vector\"), glewGetExtension(\"GL_NV_shader_atomic_fp16_vector\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_atomic_fp16_vector */\r\n\r\n#ifdef GL_NV_shader_atomic_int64\r\n\r\nstatic void _glewInfo_GL_NV_shader_atomic_int64 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_atomic_int64\", GLEW_NV_shader_atomic_int64, glewIsSupported(\"GL_NV_shader_atomic_int64\"), glewGetExtension(\"GL_NV_shader_atomic_int64\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_atomic_int64 */\r\n\r\n#ifdef GL_NV_shader_buffer_load\r\n\r\nstatic void _glewInfo_GL_NV_shader_buffer_load (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_buffer_load\", GLEW_NV_shader_buffer_load, glewIsSupported(\"GL_NV_shader_buffer_load\"), glewGetExtension(\"GL_NV_shader_buffer_load\"));\r\n\r\n  glewInfoFunc(\"glGetBufferParameterui64vNV\", glGetBufferParameterui64vNV == NULL);\r\n  glewInfoFunc(\"glGetIntegerui64vNV\", glGetIntegerui64vNV == NULL);\r\n  glewInfoFunc(\"glGetNamedBufferParameterui64vNV\", glGetNamedBufferParameterui64vNV == NULL);\r\n  glewInfoFunc(\"glIsBufferResidentNV\", glIsBufferResidentNV == NULL);\r\n  glewInfoFunc(\"glIsNamedBufferResidentNV\", glIsNamedBufferResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeBufferNonResidentNV\", glMakeBufferNonResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeBufferResidentNV\", glMakeBufferResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeNamedBufferNonResidentNV\", glMakeNamedBufferNonResidentNV == NULL);\r\n  glewInfoFunc(\"glMakeNamedBufferResidentNV\", glMakeNamedBufferResidentNV == NULL);\r\n  glewInfoFunc(\"glProgramUniformui64NV\", glProgramUniformui64NV == NULL);\r\n  glewInfoFunc(\"glProgramUniformui64vNV\", glProgramUniformui64vNV == NULL);\r\n  glewInfoFunc(\"glUniformui64NV\", glUniformui64NV == NULL);\r\n  glewInfoFunc(\"glUniformui64vNV\", glUniformui64vNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_shader_buffer_load */\r\n\r\n#ifdef GL_NV_shader_noperspective_interpolation\r\n\r\nstatic void _glewInfo_GL_NV_shader_noperspective_interpolation (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_noperspective_interpolation\", GLEW_NV_shader_noperspective_interpolation, glewIsSupported(\"GL_NV_shader_noperspective_interpolation\"), glewGetExtension(\"GL_NV_shader_noperspective_interpolation\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_noperspective_interpolation */\r\n\r\n#ifdef GL_NV_shader_storage_buffer_object\r\n\r\nstatic void _glewInfo_GL_NV_shader_storage_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_storage_buffer_object\", GLEW_NV_shader_storage_buffer_object, glewIsSupported(\"GL_NV_shader_storage_buffer_object\"), glewGetExtension(\"GL_NV_shader_storage_buffer_object\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_storage_buffer_object */\r\n\r\n#ifdef GL_NV_shader_thread_group\r\n\r\nstatic void _glewInfo_GL_NV_shader_thread_group (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_thread_group\", GLEW_NV_shader_thread_group, glewIsSupported(\"GL_NV_shader_thread_group\"), glewGetExtension(\"GL_NV_shader_thread_group\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_thread_group */\r\n\r\n#ifdef GL_NV_shader_thread_shuffle\r\n\r\nstatic void _glewInfo_GL_NV_shader_thread_shuffle (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shader_thread_shuffle\", GLEW_NV_shader_thread_shuffle, glewIsSupported(\"GL_NV_shader_thread_shuffle\"), glewGetExtension(\"GL_NV_shader_thread_shuffle\"));\r\n}\r\n\r\n#endif /* GL_NV_shader_thread_shuffle */\r\n\r\n#ifdef GL_NV_shadow_samplers_array\r\n\r\nstatic void _glewInfo_GL_NV_shadow_samplers_array (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shadow_samplers_array\", GLEW_NV_shadow_samplers_array, glewIsSupported(\"GL_NV_shadow_samplers_array\"), glewGetExtension(\"GL_NV_shadow_samplers_array\"));\r\n}\r\n\r\n#endif /* GL_NV_shadow_samplers_array */\r\n\r\n#ifdef GL_NV_shadow_samplers_cube\r\n\r\nstatic void _glewInfo_GL_NV_shadow_samplers_cube (void)\r\n{\r\n  glewPrintExt(\"GL_NV_shadow_samplers_cube\", GLEW_NV_shadow_samplers_cube, glewIsSupported(\"GL_NV_shadow_samplers_cube\"), glewGetExtension(\"GL_NV_shadow_samplers_cube\"));\r\n}\r\n\r\n#endif /* GL_NV_shadow_samplers_cube */\r\n\r\n#ifdef GL_NV_stereo_view_rendering\r\n\r\nstatic void _glewInfo_GL_NV_stereo_view_rendering (void)\r\n{\r\n  glewPrintExt(\"GL_NV_stereo_view_rendering\", GLEW_NV_stereo_view_rendering, glewIsSupported(\"GL_NV_stereo_view_rendering\"), glewGetExtension(\"GL_NV_stereo_view_rendering\"));\r\n}\r\n\r\n#endif /* GL_NV_stereo_view_rendering */\r\n\r\n#ifdef GL_NV_tessellation_program5\r\n\r\nstatic void _glewInfo_GL_NV_tessellation_program5 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_tessellation_program5\", GLEW_NV_tessellation_program5, glewIsSupported(\"GL_NV_tessellation_program5\"), glewGetExtension(\"GL_NV_gpu_program5\"));\r\n}\r\n\r\n#endif /* GL_NV_tessellation_program5 */\r\n\r\n#ifdef GL_NV_texgen_emboss\r\n\r\nstatic void _glewInfo_GL_NV_texgen_emboss (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texgen_emboss\", GLEW_NV_texgen_emboss, glewIsSupported(\"GL_NV_texgen_emboss\"), glewGetExtension(\"GL_NV_texgen_emboss\"));\r\n}\r\n\r\n#endif /* GL_NV_texgen_emboss */\r\n\r\n#ifdef GL_NV_texgen_reflection\r\n\r\nstatic void _glewInfo_GL_NV_texgen_reflection (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texgen_reflection\", GLEW_NV_texgen_reflection, glewIsSupported(\"GL_NV_texgen_reflection\"), glewGetExtension(\"GL_NV_texgen_reflection\"));\r\n}\r\n\r\n#endif /* GL_NV_texgen_reflection */\r\n\r\n#ifdef GL_NV_texture_array\r\n\r\nstatic void _glewInfo_GL_NV_texture_array (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_array\", GLEW_NV_texture_array, glewIsSupported(\"GL_NV_texture_array\"), glewGetExtension(\"GL_NV_texture_array\"));\r\n\r\n  glewInfoFunc(\"glCompressedTexImage3DNV\", glCompressedTexImage3DNV == NULL);\r\n  glewInfoFunc(\"glCompressedTexSubImage3DNV\", glCompressedTexSubImage3DNV == NULL);\r\n  glewInfoFunc(\"glCopyTexSubImage3DNV\", glCopyTexSubImage3DNV == NULL);\r\n  glewInfoFunc(\"glFramebufferTextureLayerNV\", glFramebufferTextureLayerNV == NULL);\r\n  glewInfoFunc(\"glTexImage3DNV\", glTexImage3DNV == NULL);\r\n  glewInfoFunc(\"glTexSubImage3DNV\", glTexSubImage3DNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_texture_array */\r\n\r\n#ifdef GL_NV_texture_barrier\r\n\r\nstatic void _glewInfo_GL_NV_texture_barrier (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_barrier\", GLEW_NV_texture_barrier, glewIsSupported(\"GL_NV_texture_barrier\"), glewGetExtension(\"GL_NV_texture_barrier\"));\r\n\r\n  glewInfoFunc(\"glTextureBarrierNV\", glTextureBarrierNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_texture_barrier */\r\n\r\n#ifdef GL_NV_texture_border_clamp\r\n\r\nstatic void _glewInfo_GL_NV_texture_border_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_border_clamp\", GLEW_NV_texture_border_clamp, glewIsSupported(\"GL_NV_texture_border_clamp\"), glewGetExtension(\"GL_NV_texture_border_clamp\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_border_clamp */\r\n\r\n#ifdef GL_NV_texture_compression_latc\r\n\r\nstatic void _glewInfo_GL_NV_texture_compression_latc (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_compression_latc\", GLEW_NV_texture_compression_latc, glewIsSupported(\"GL_NV_texture_compression_latc\"), glewGetExtension(\"GL_NV_texture_compression_latc\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_compression_latc */\r\n\r\n#ifdef GL_NV_texture_compression_s3tc\r\n\r\nstatic void _glewInfo_GL_NV_texture_compression_s3tc (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_compression_s3tc\", GLEW_NV_texture_compression_s3tc, glewIsSupported(\"GL_NV_texture_compression_s3tc\"), glewGetExtension(\"GL_NV_texture_compression_s3tc\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_compression_s3tc */\r\n\r\n#ifdef GL_NV_texture_compression_s3tc_update\r\n\r\nstatic void _glewInfo_GL_NV_texture_compression_s3tc_update (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_compression_s3tc_update\", GLEW_NV_texture_compression_s3tc_update, glewIsSupported(\"GL_NV_texture_compression_s3tc_update\"), glewGetExtension(\"GL_NV_texture_compression_s3tc_update\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_compression_s3tc_update */\r\n\r\n#ifdef GL_NV_texture_compression_vtc\r\n\r\nstatic void _glewInfo_GL_NV_texture_compression_vtc (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_compression_vtc\", GLEW_NV_texture_compression_vtc, glewIsSupported(\"GL_NV_texture_compression_vtc\"), glewGetExtension(\"GL_NV_texture_compression_vtc\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_compression_vtc */\r\n\r\n#ifdef GL_NV_texture_env_combine4\r\n\r\nstatic void _glewInfo_GL_NV_texture_env_combine4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_env_combine4\", GLEW_NV_texture_env_combine4, glewIsSupported(\"GL_NV_texture_env_combine4\"), glewGetExtension(\"GL_NV_texture_env_combine4\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_env_combine4 */\r\n\r\n#ifdef GL_NV_texture_expand_normal\r\n\r\nstatic void _glewInfo_GL_NV_texture_expand_normal (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_expand_normal\", GLEW_NV_texture_expand_normal, glewIsSupported(\"GL_NV_texture_expand_normal\"), glewGetExtension(\"GL_NV_texture_expand_normal\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_expand_normal */\r\n\r\n#ifdef GL_NV_texture_multisample\r\n\r\nstatic void _glewInfo_GL_NV_texture_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_multisample\", GLEW_NV_texture_multisample, glewIsSupported(\"GL_NV_texture_multisample\"), glewGetExtension(\"GL_NV_texture_multisample\"));\r\n\r\n  glewInfoFunc(\"glTexImage2DMultisampleCoverageNV\", glTexImage2DMultisampleCoverageNV == NULL);\r\n  glewInfoFunc(\"glTexImage3DMultisampleCoverageNV\", glTexImage3DMultisampleCoverageNV == NULL);\r\n  glewInfoFunc(\"glTextureImage2DMultisampleCoverageNV\", glTextureImage2DMultisampleCoverageNV == NULL);\r\n  glewInfoFunc(\"glTextureImage2DMultisampleNV\", glTextureImage2DMultisampleNV == NULL);\r\n  glewInfoFunc(\"glTextureImage3DMultisampleCoverageNV\", glTextureImage3DMultisampleCoverageNV == NULL);\r\n  glewInfoFunc(\"glTextureImage3DMultisampleNV\", glTextureImage3DMultisampleNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_texture_multisample */\r\n\r\n#ifdef GL_NV_texture_npot_2D_mipmap\r\n\r\nstatic void _glewInfo_GL_NV_texture_npot_2D_mipmap (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_npot_2D_mipmap\", GLEW_NV_texture_npot_2D_mipmap, glewIsSupported(\"GL_NV_texture_npot_2D_mipmap\"), glewGetExtension(\"GL_NV_texture_npot_2D_mipmap\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_npot_2D_mipmap */\r\n\r\n#ifdef GL_NV_texture_rectangle\r\n\r\nstatic void _glewInfo_GL_NV_texture_rectangle (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_rectangle\", GLEW_NV_texture_rectangle, glewIsSupported(\"GL_NV_texture_rectangle\"), glewGetExtension(\"GL_NV_texture_rectangle\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_rectangle */\r\n\r\n#ifdef GL_NV_texture_rectangle_compressed\r\n\r\nstatic void _glewInfo_GL_NV_texture_rectangle_compressed (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_rectangle_compressed\", GLEW_NV_texture_rectangle_compressed, glewIsSupported(\"GL_NV_texture_rectangle_compressed\"), glewGetExtension(\"GL_NV_texture_rectangle_compressed\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_rectangle_compressed */\r\n\r\n#ifdef GL_NV_texture_shader\r\n\r\nstatic void _glewInfo_GL_NV_texture_shader (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_shader\", GLEW_NV_texture_shader, glewIsSupported(\"GL_NV_texture_shader\"), glewGetExtension(\"GL_NV_texture_shader\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_shader */\r\n\r\n#ifdef GL_NV_texture_shader2\r\n\r\nstatic void _glewInfo_GL_NV_texture_shader2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_shader2\", GLEW_NV_texture_shader2, glewIsSupported(\"GL_NV_texture_shader2\"), glewGetExtension(\"GL_NV_texture_shader2\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_shader2 */\r\n\r\n#ifdef GL_NV_texture_shader3\r\n\r\nstatic void _glewInfo_GL_NV_texture_shader3 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_texture_shader3\", GLEW_NV_texture_shader3, glewIsSupported(\"GL_NV_texture_shader3\"), glewGetExtension(\"GL_NV_texture_shader3\"));\r\n}\r\n\r\n#endif /* GL_NV_texture_shader3 */\r\n\r\n#ifdef GL_NV_transform_feedback\r\n\r\nstatic void _glewInfo_GL_NV_transform_feedback (void)\r\n{\r\n  glewPrintExt(\"GL_NV_transform_feedback\", GLEW_NV_transform_feedback, glewIsSupported(\"GL_NV_transform_feedback\"), glewGetExtension(\"GL_NV_transform_feedback\"));\r\n\r\n  glewInfoFunc(\"glActiveVaryingNV\", glActiveVaryingNV == NULL);\r\n  glewInfoFunc(\"glBeginTransformFeedbackNV\", glBeginTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glBindBufferBaseNV\", glBindBufferBaseNV == NULL);\r\n  glewInfoFunc(\"glBindBufferOffsetNV\", glBindBufferOffsetNV == NULL);\r\n  glewInfoFunc(\"glBindBufferRangeNV\", glBindBufferRangeNV == NULL);\r\n  glewInfoFunc(\"glEndTransformFeedbackNV\", glEndTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glGetActiveVaryingNV\", glGetActiveVaryingNV == NULL);\r\n  glewInfoFunc(\"glGetTransformFeedbackVaryingNV\", glGetTransformFeedbackVaryingNV == NULL);\r\n  glewInfoFunc(\"glGetVaryingLocationNV\", glGetVaryingLocationNV == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackAttribsNV\", glTransformFeedbackAttribsNV == NULL);\r\n  glewInfoFunc(\"glTransformFeedbackVaryingsNV\", glTransformFeedbackVaryingsNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_transform_feedback */\r\n\r\n#ifdef GL_NV_transform_feedback2\r\n\r\nstatic void _glewInfo_GL_NV_transform_feedback2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_transform_feedback2\", GLEW_NV_transform_feedback2, glewIsSupported(\"GL_NV_transform_feedback2\"), glewGetExtension(\"GL_NV_transform_feedback2\"));\r\n\r\n  glewInfoFunc(\"glBindTransformFeedbackNV\", glBindTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glDeleteTransformFeedbacksNV\", glDeleteTransformFeedbacksNV == NULL);\r\n  glewInfoFunc(\"glDrawTransformFeedbackNV\", glDrawTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glGenTransformFeedbacksNV\", glGenTransformFeedbacksNV == NULL);\r\n  glewInfoFunc(\"glIsTransformFeedbackNV\", glIsTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glPauseTransformFeedbackNV\", glPauseTransformFeedbackNV == NULL);\r\n  glewInfoFunc(\"glResumeTransformFeedbackNV\", glResumeTransformFeedbackNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_transform_feedback2 */\r\n\r\n#ifdef GL_NV_uniform_buffer_unified_memory\r\n\r\nstatic void _glewInfo_GL_NV_uniform_buffer_unified_memory (void)\r\n{\r\n  glewPrintExt(\"GL_NV_uniform_buffer_unified_memory\", GLEW_NV_uniform_buffer_unified_memory, glewIsSupported(\"GL_NV_uniform_buffer_unified_memory\"), glewGetExtension(\"GL_NV_uniform_buffer_unified_memory\"));\r\n}\r\n\r\n#endif /* GL_NV_uniform_buffer_unified_memory */\r\n\r\n#ifdef GL_NV_vdpau_interop\r\n\r\nstatic void _glewInfo_GL_NV_vdpau_interop (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vdpau_interop\", GLEW_NV_vdpau_interop, glewIsSupported(\"GL_NV_vdpau_interop\"), glewGetExtension(\"GL_NV_vdpau_interop\"));\r\n\r\n  glewInfoFunc(\"glVDPAUFiniNV\", glVDPAUFiniNV == NULL);\r\n  glewInfoFunc(\"glVDPAUGetSurfaceivNV\", glVDPAUGetSurfaceivNV == NULL);\r\n  glewInfoFunc(\"glVDPAUInitNV\", glVDPAUInitNV == NULL);\r\n  glewInfoFunc(\"glVDPAUIsSurfaceNV\", glVDPAUIsSurfaceNV == NULL);\r\n  glewInfoFunc(\"glVDPAUMapSurfacesNV\", glVDPAUMapSurfacesNV == NULL);\r\n  glewInfoFunc(\"glVDPAURegisterOutputSurfaceNV\", glVDPAURegisterOutputSurfaceNV == NULL);\r\n  glewInfoFunc(\"glVDPAURegisterVideoSurfaceNV\", glVDPAURegisterVideoSurfaceNV == NULL);\r\n  glewInfoFunc(\"glVDPAUSurfaceAccessNV\", glVDPAUSurfaceAccessNV == NULL);\r\n  glewInfoFunc(\"glVDPAUUnmapSurfacesNV\", glVDPAUUnmapSurfacesNV == NULL);\r\n  glewInfoFunc(\"glVDPAUUnregisterSurfaceNV\", glVDPAUUnregisterSurfaceNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_vdpau_interop */\r\n\r\n#ifdef GL_NV_vertex_array_range\r\n\r\nstatic void _glewInfo_GL_NV_vertex_array_range (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_array_range\", GLEW_NV_vertex_array_range, glewIsSupported(\"GL_NV_vertex_array_range\"), glewGetExtension(\"GL_NV_vertex_array_range\"));\r\n\r\n  glewInfoFunc(\"glFlushVertexArrayRangeNV\", glFlushVertexArrayRangeNV == NULL);\r\n  glewInfoFunc(\"glVertexArrayRangeNV\", glVertexArrayRangeNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_vertex_array_range */\r\n\r\n#ifdef GL_NV_vertex_array_range2\r\n\r\nstatic void _glewInfo_GL_NV_vertex_array_range2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_array_range2\", GLEW_NV_vertex_array_range2, glewIsSupported(\"GL_NV_vertex_array_range2\"), glewGetExtension(\"GL_NV_vertex_array_range2\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_array_range2 */\r\n\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n\r\nstatic void _glewInfo_GL_NV_vertex_attrib_integer_64bit (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_attrib_integer_64bit\", GLEW_NV_vertex_attrib_integer_64bit, glewIsSupported(\"GL_NV_vertex_attrib_integer_64bit\"), glewGetExtension(\"GL_NV_vertex_attrib_integer_64bit\"));\r\n\r\n  glewInfoFunc(\"glGetVertexAttribLi64vNV\", glGetVertexAttribLi64vNV == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribLui64vNV\", glGetVertexAttribLui64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1i64NV\", glVertexAttribL1i64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1i64vNV\", glVertexAttribL1i64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1ui64NV\", glVertexAttribL1ui64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL1ui64vNV\", glVertexAttribL1ui64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2i64NV\", glVertexAttribL2i64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2i64vNV\", glVertexAttribL2i64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2ui64NV\", glVertexAttribL2ui64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL2ui64vNV\", glVertexAttribL2ui64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3i64NV\", glVertexAttribL3i64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3i64vNV\", glVertexAttribL3i64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3ui64NV\", glVertexAttribL3ui64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL3ui64vNV\", glVertexAttribL3ui64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4i64NV\", glVertexAttribL4i64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4i64vNV\", glVertexAttribL4i64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4ui64NV\", glVertexAttribL4ui64NV == NULL);\r\n  glewInfoFunc(\"glVertexAttribL4ui64vNV\", glVertexAttribL4ui64vNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribLFormatNV\", glVertexAttribLFormatNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_vertex_attrib_integer_64bit */\r\n\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n\r\nstatic void _glewInfo_GL_NV_vertex_buffer_unified_memory (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_buffer_unified_memory\", GLEW_NV_vertex_buffer_unified_memory, glewIsSupported(\"GL_NV_vertex_buffer_unified_memory\"), glewGetExtension(\"GL_NV_vertex_buffer_unified_memory\"));\r\n\r\n  glewInfoFunc(\"glBufferAddressRangeNV\", glBufferAddressRangeNV == NULL);\r\n  glewInfoFunc(\"glColorFormatNV\", glColorFormatNV == NULL);\r\n  glewInfoFunc(\"glEdgeFlagFormatNV\", glEdgeFlagFormatNV == NULL);\r\n  glewInfoFunc(\"glFogCoordFormatNV\", glFogCoordFormatNV == NULL);\r\n  glewInfoFunc(\"glGetIntegerui64i_vNV\", glGetIntegerui64i_vNV == NULL);\r\n  glewInfoFunc(\"glIndexFormatNV\", glIndexFormatNV == NULL);\r\n  glewInfoFunc(\"glNormalFormatNV\", glNormalFormatNV == NULL);\r\n  glewInfoFunc(\"glSecondaryColorFormatNV\", glSecondaryColorFormatNV == NULL);\r\n  glewInfoFunc(\"glTexCoordFormatNV\", glTexCoordFormatNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribFormatNV\", glVertexAttribFormatNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribIFormatNV\", glVertexAttribIFormatNV == NULL);\r\n  glewInfoFunc(\"glVertexFormatNV\", glVertexFormatNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_vertex_buffer_unified_memory */\r\n\r\n#ifdef GL_NV_vertex_program\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program\", GLEW_NV_vertex_program, glewIsSupported(\"GL_NV_vertex_program\"), glewGetExtension(\"GL_NV_vertex_program\"));\r\n\r\n  glewInfoFunc(\"glAreProgramsResidentNV\", glAreProgramsResidentNV == NULL);\r\n  glewInfoFunc(\"glBindProgramNV\", glBindProgramNV == NULL);\r\n  glewInfoFunc(\"glDeleteProgramsNV\", glDeleteProgramsNV == NULL);\r\n  glewInfoFunc(\"glExecuteProgramNV\", glExecuteProgramNV == NULL);\r\n  glewInfoFunc(\"glGenProgramsNV\", glGenProgramsNV == NULL);\r\n  glewInfoFunc(\"glGetProgramParameterdvNV\", glGetProgramParameterdvNV == NULL);\r\n  glewInfoFunc(\"glGetProgramParameterfvNV\", glGetProgramParameterfvNV == NULL);\r\n  glewInfoFunc(\"glGetProgramStringNV\", glGetProgramStringNV == NULL);\r\n  glewInfoFunc(\"glGetProgramivNV\", glGetProgramivNV == NULL);\r\n  glewInfoFunc(\"glGetTrackMatrixivNV\", glGetTrackMatrixivNV == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribPointervNV\", glGetVertexAttribPointervNV == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribdvNV\", glGetVertexAttribdvNV == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribfvNV\", glGetVertexAttribfvNV == NULL);\r\n  glewInfoFunc(\"glGetVertexAttribivNV\", glGetVertexAttribivNV == NULL);\r\n  glewInfoFunc(\"glIsProgramNV\", glIsProgramNV == NULL);\r\n  glewInfoFunc(\"glLoadProgramNV\", glLoadProgramNV == NULL);\r\n  glewInfoFunc(\"glProgramParameter4dNV\", glProgramParameter4dNV == NULL);\r\n  glewInfoFunc(\"glProgramParameter4dvNV\", glProgramParameter4dvNV == NULL);\r\n  glewInfoFunc(\"glProgramParameter4fNV\", glProgramParameter4fNV == NULL);\r\n  glewInfoFunc(\"glProgramParameter4fvNV\", glProgramParameter4fvNV == NULL);\r\n  glewInfoFunc(\"glProgramParameters4dvNV\", glProgramParameters4dvNV == NULL);\r\n  glewInfoFunc(\"glProgramParameters4fvNV\", glProgramParameters4fvNV == NULL);\r\n  glewInfoFunc(\"glRequestResidentProgramsNV\", glRequestResidentProgramsNV == NULL);\r\n  glewInfoFunc(\"glTrackMatrixNV\", glTrackMatrixNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1dNV\", glVertexAttrib1dNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1dvNV\", glVertexAttrib1dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1fNV\", glVertexAttrib1fNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1fvNV\", glVertexAttrib1fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1sNV\", glVertexAttrib1sNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib1svNV\", glVertexAttrib1svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2dNV\", glVertexAttrib2dNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2dvNV\", glVertexAttrib2dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2fNV\", glVertexAttrib2fNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2fvNV\", glVertexAttrib2fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2sNV\", glVertexAttrib2sNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib2svNV\", glVertexAttrib2svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3dNV\", glVertexAttrib3dNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3dvNV\", glVertexAttrib3dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3fNV\", glVertexAttrib3fNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3fvNV\", glVertexAttrib3fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3sNV\", glVertexAttrib3sNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib3svNV\", glVertexAttrib3svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4dNV\", glVertexAttrib4dNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4dvNV\", glVertexAttrib4dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4fNV\", glVertexAttrib4fNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4fvNV\", glVertexAttrib4fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4sNV\", glVertexAttrib4sNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4svNV\", glVertexAttrib4svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4ubNV\", glVertexAttrib4ubNV == NULL);\r\n  glewInfoFunc(\"glVertexAttrib4ubvNV\", glVertexAttrib4ubvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribPointerNV\", glVertexAttribPointerNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs1dvNV\", glVertexAttribs1dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs1fvNV\", glVertexAttribs1fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs1svNV\", glVertexAttribs1svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs2dvNV\", glVertexAttribs2dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs2fvNV\", glVertexAttribs2fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs2svNV\", glVertexAttribs2svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs3dvNV\", glVertexAttribs3dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs3fvNV\", glVertexAttribs3fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs3svNV\", glVertexAttribs3svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs4dvNV\", glVertexAttribs4dvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs4fvNV\", glVertexAttribs4fvNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs4svNV\", glVertexAttribs4svNV == NULL);\r\n  glewInfoFunc(\"glVertexAttribs4ubvNV\", glVertexAttribs4ubvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_vertex_program */\r\n\r\n#ifdef GL_NV_vertex_program1_1\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program1_1 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program1_1\", GLEW_NV_vertex_program1_1, glewIsSupported(\"GL_NV_vertex_program1_1\"), glewGetExtension(\"GL_NV_vertex_program1_1\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_program1_1 */\r\n\r\n#ifdef GL_NV_vertex_program2\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program2\", GLEW_NV_vertex_program2, glewIsSupported(\"GL_NV_vertex_program2\"), glewGetExtension(\"GL_NV_vertex_program2\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_program2 */\r\n\r\n#ifdef GL_NV_vertex_program2_option\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program2_option (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program2_option\", GLEW_NV_vertex_program2_option, glewIsSupported(\"GL_NV_vertex_program2_option\"), glewGetExtension(\"GL_NV_vertex_program2_option\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_program2_option */\r\n\r\n#ifdef GL_NV_vertex_program3\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program3 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program3\", GLEW_NV_vertex_program3, glewIsSupported(\"GL_NV_vertex_program3\"), glewGetExtension(\"GL_NV_vertex_program3\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_program3 */\r\n\r\n#ifdef GL_NV_vertex_program4\r\n\r\nstatic void _glewInfo_GL_NV_vertex_program4 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_vertex_program4\", GLEW_NV_vertex_program4, glewIsSupported(\"GL_NV_vertex_program4\"), glewGetExtension(\"GL_NV_gpu_program4\"));\r\n}\r\n\r\n#endif /* GL_NV_vertex_program4 */\r\n\r\n#ifdef GL_NV_video_capture\r\n\r\nstatic void _glewInfo_GL_NV_video_capture (void)\r\n{\r\n  glewPrintExt(\"GL_NV_video_capture\", GLEW_NV_video_capture, glewIsSupported(\"GL_NV_video_capture\"), glewGetExtension(\"GL_NV_video_capture\"));\r\n\r\n  glewInfoFunc(\"glBeginVideoCaptureNV\", glBeginVideoCaptureNV == NULL);\r\n  glewInfoFunc(\"glBindVideoCaptureStreamBufferNV\", glBindVideoCaptureStreamBufferNV == NULL);\r\n  glewInfoFunc(\"glBindVideoCaptureStreamTextureNV\", glBindVideoCaptureStreamTextureNV == NULL);\r\n  glewInfoFunc(\"glEndVideoCaptureNV\", glEndVideoCaptureNV == NULL);\r\n  glewInfoFunc(\"glGetVideoCaptureStreamdvNV\", glGetVideoCaptureStreamdvNV == NULL);\r\n  glewInfoFunc(\"glGetVideoCaptureStreamfvNV\", glGetVideoCaptureStreamfvNV == NULL);\r\n  glewInfoFunc(\"glGetVideoCaptureStreamivNV\", glGetVideoCaptureStreamivNV == NULL);\r\n  glewInfoFunc(\"glGetVideoCaptureivNV\", glGetVideoCaptureivNV == NULL);\r\n  glewInfoFunc(\"glVideoCaptureNV\", glVideoCaptureNV == NULL);\r\n  glewInfoFunc(\"glVideoCaptureStreamParameterdvNV\", glVideoCaptureStreamParameterdvNV == NULL);\r\n  glewInfoFunc(\"glVideoCaptureStreamParameterfvNV\", glVideoCaptureStreamParameterfvNV == NULL);\r\n  glewInfoFunc(\"glVideoCaptureStreamParameterivNV\", glVideoCaptureStreamParameterivNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_video_capture */\r\n\r\n#ifdef GL_NV_viewport_array\r\n\r\nstatic void _glewInfo_GL_NV_viewport_array (void)\r\n{\r\n  glewPrintExt(\"GL_NV_viewport_array\", GLEW_NV_viewport_array, glewIsSupported(\"GL_NV_viewport_array\"), glewGetExtension(\"GL_NV_viewport_array\"));\r\n\r\n  glewInfoFunc(\"glDepthRangeArrayfvNV\", glDepthRangeArrayfvNV == NULL);\r\n  glewInfoFunc(\"glDepthRangeIndexedfNV\", glDepthRangeIndexedfNV == NULL);\r\n  glewInfoFunc(\"glDisableiNV\", glDisableiNV == NULL);\r\n  glewInfoFunc(\"glEnableiNV\", glEnableiNV == NULL);\r\n  glewInfoFunc(\"glGetFloati_vNV\", glGetFloati_vNV == NULL);\r\n  glewInfoFunc(\"glIsEnablediNV\", glIsEnablediNV == NULL);\r\n  glewInfoFunc(\"glScissorArrayvNV\", glScissorArrayvNV == NULL);\r\n  glewInfoFunc(\"glScissorIndexedNV\", glScissorIndexedNV == NULL);\r\n  glewInfoFunc(\"glScissorIndexedvNV\", glScissorIndexedvNV == NULL);\r\n  glewInfoFunc(\"glViewportArrayvNV\", glViewportArrayvNV == NULL);\r\n  glewInfoFunc(\"glViewportIndexedfNV\", glViewportIndexedfNV == NULL);\r\n  glewInfoFunc(\"glViewportIndexedfvNV\", glViewportIndexedfvNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_viewport_array */\r\n\r\n#ifdef GL_NV_viewport_array2\r\n\r\nstatic void _glewInfo_GL_NV_viewport_array2 (void)\r\n{\r\n  glewPrintExt(\"GL_NV_viewport_array2\", GLEW_NV_viewport_array2, glewIsSupported(\"GL_NV_viewport_array2\"), glewGetExtension(\"GL_NV_viewport_array2\"));\r\n}\r\n\r\n#endif /* GL_NV_viewport_array2 */\r\n\r\n#ifdef GL_NV_viewport_swizzle\r\n\r\nstatic void _glewInfo_GL_NV_viewport_swizzle (void)\r\n{\r\n  glewPrintExt(\"GL_NV_viewport_swizzle\", GLEW_NV_viewport_swizzle, glewIsSupported(\"GL_NV_viewport_swizzle\"), glewGetExtension(\"GL_NV_viewport_swizzle\"));\r\n\r\n  glewInfoFunc(\"glViewportSwizzleNV\", glViewportSwizzleNV == NULL);\r\n}\r\n\r\n#endif /* GL_NV_viewport_swizzle */\r\n\r\n#ifdef GL_OES_byte_coordinates\r\n\r\nstatic void _glewInfo_GL_OES_byte_coordinates (void)\r\n{\r\n  glewPrintExt(\"GL_OES_byte_coordinates\", GLEW_OES_byte_coordinates, glewIsSupported(\"GL_OES_byte_coordinates\"), glewGetExtension(\"GL_OES_byte_coordinates\"));\r\n}\r\n\r\n#endif /* GL_OES_byte_coordinates */\r\n\r\n#ifdef GL_OML_interlace\r\n\r\nstatic void _glewInfo_GL_OML_interlace (void)\r\n{\r\n  glewPrintExt(\"GL_OML_interlace\", GLEW_OML_interlace, glewIsSupported(\"GL_OML_interlace\"), glewGetExtension(\"GL_OML_interlace\"));\r\n}\r\n\r\n#endif /* GL_OML_interlace */\r\n\r\n#ifdef GL_OML_resample\r\n\r\nstatic void _glewInfo_GL_OML_resample (void)\r\n{\r\n  glewPrintExt(\"GL_OML_resample\", GLEW_OML_resample, glewIsSupported(\"GL_OML_resample\"), glewGetExtension(\"GL_OML_resample\"));\r\n}\r\n\r\n#endif /* GL_OML_resample */\r\n\r\n#ifdef GL_OML_subsample\r\n\r\nstatic void _glewInfo_GL_OML_subsample (void)\r\n{\r\n  glewPrintExt(\"GL_OML_subsample\", GLEW_OML_subsample, glewIsSupported(\"GL_OML_subsample\"), glewGetExtension(\"GL_OML_subsample\"));\r\n}\r\n\r\n#endif /* GL_OML_subsample */\r\n\r\n#ifdef GL_OVR_multiview\r\n\r\nstatic void _glewInfo_GL_OVR_multiview (void)\r\n{\r\n  glewPrintExt(\"GL_OVR_multiview\", GLEW_OVR_multiview, glewIsSupported(\"GL_OVR_multiview\"), glewGetExtension(\"GL_OVR_multiview\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTextureMultiviewOVR\", glFramebufferTextureMultiviewOVR == NULL);\r\n}\r\n\r\n#endif /* GL_OVR_multiview */\r\n\r\n#ifdef GL_OVR_multiview2\r\n\r\nstatic void _glewInfo_GL_OVR_multiview2 (void)\r\n{\r\n  glewPrintExt(\"GL_OVR_multiview2\", GLEW_OVR_multiview2, glewIsSupported(\"GL_OVR_multiview2\"), glewGetExtension(\"GL_OVR_multiview2\"));\r\n}\r\n\r\n#endif /* GL_OVR_multiview2 */\r\n\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n\r\nstatic void _glewInfo_GL_OVR_multiview_multisampled_render_to_texture (void)\r\n{\r\n  glewPrintExt(\"GL_OVR_multiview_multisampled_render_to_texture\", GLEW_OVR_multiview_multisampled_render_to_texture, glewIsSupported(\"GL_OVR_multiview_multisampled_render_to_texture\"), glewGetExtension(\"GL_OVR_multiview_multisampled_render_to_texture\"));\r\n\r\n  glewInfoFunc(\"glFramebufferTextureMultisampleMultiviewOVR\", glFramebufferTextureMultisampleMultiviewOVR == NULL);\r\n}\r\n\r\n#endif /* GL_OVR_multiview_multisampled_render_to_texture */\r\n\r\n#ifdef GL_PGI_misc_hints\r\n\r\nstatic void _glewInfo_GL_PGI_misc_hints (void)\r\n{\r\n  glewPrintExt(\"GL_PGI_misc_hints\", GLEW_PGI_misc_hints, glewIsSupported(\"GL_PGI_misc_hints\"), glewGetExtension(\"GL_PGI_misc_hints\"));\r\n}\r\n\r\n#endif /* GL_PGI_misc_hints */\r\n\r\n#ifdef GL_PGI_vertex_hints\r\n\r\nstatic void _glewInfo_GL_PGI_vertex_hints (void)\r\n{\r\n  glewPrintExt(\"GL_PGI_vertex_hints\", GLEW_PGI_vertex_hints, glewIsSupported(\"GL_PGI_vertex_hints\"), glewGetExtension(\"GL_PGI_vertex_hints\"));\r\n}\r\n\r\n#endif /* GL_PGI_vertex_hints */\r\n\r\n#ifdef GL_QCOM_alpha_test\r\n\r\nstatic void _glewInfo_GL_QCOM_alpha_test (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_alpha_test\", GLEW_QCOM_alpha_test, glewIsSupported(\"GL_QCOM_alpha_test\"), glewGetExtension(\"GL_QCOM_alpha_test\"));\r\n\r\n  glewInfoFunc(\"glAlphaFuncQCOM\", glAlphaFuncQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_alpha_test */\r\n\r\n#ifdef GL_QCOM_binning_control\r\n\r\nstatic void _glewInfo_GL_QCOM_binning_control (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_binning_control\", GLEW_QCOM_binning_control, glewIsSupported(\"GL_QCOM_binning_control\"), glewGetExtension(\"GL_QCOM_binning_control\"));\r\n}\r\n\r\n#endif /* GL_QCOM_binning_control */\r\n\r\n#ifdef GL_QCOM_driver_control\r\n\r\nstatic void _glewInfo_GL_QCOM_driver_control (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_driver_control\", GLEW_QCOM_driver_control, glewIsSupported(\"GL_QCOM_driver_control\"), glewGetExtension(\"GL_QCOM_driver_control\"));\r\n\r\n  glewInfoFunc(\"glDisableDriverControlQCOM\", glDisableDriverControlQCOM == NULL);\r\n  glewInfoFunc(\"glEnableDriverControlQCOM\", glEnableDriverControlQCOM == NULL);\r\n  glewInfoFunc(\"glGetDriverControlStringQCOM\", glGetDriverControlStringQCOM == NULL);\r\n  glewInfoFunc(\"glGetDriverControlsQCOM\", glGetDriverControlsQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_driver_control */\r\n\r\n#ifdef GL_QCOM_extended_get\r\n\r\nstatic void _glewInfo_GL_QCOM_extended_get (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_extended_get\", GLEW_QCOM_extended_get, glewIsSupported(\"GL_QCOM_extended_get\"), glewGetExtension(\"GL_QCOM_extended_get\"));\r\n\r\n  glewInfoFunc(\"glExtGetBufferPointervQCOM\", glExtGetBufferPointervQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetBuffersQCOM\", glExtGetBuffersQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetFramebuffersQCOM\", glExtGetFramebuffersQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetRenderbuffersQCOM\", glExtGetRenderbuffersQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetTexLevelParameterivQCOM\", glExtGetTexLevelParameterivQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetTexSubImageQCOM\", glExtGetTexSubImageQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetTexturesQCOM\", glExtGetTexturesQCOM == NULL);\r\n  glewInfoFunc(\"glExtTexObjectStateOverrideiQCOM\", glExtTexObjectStateOverrideiQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_extended_get */\r\n\r\n#ifdef GL_QCOM_extended_get2\r\n\r\nstatic void _glewInfo_GL_QCOM_extended_get2 (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_extended_get2\", GLEW_QCOM_extended_get2, glewIsSupported(\"GL_QCOM_extended_get2\"), glewGetExtension(\"GL_QCOM_extended_get2\"));\r\n\r\n  glewInfoFunc(\"glExtGetProgramBinarySourceQCOM\", glExtGetProgramBinarySourceQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetProgramsQCOM\", glExtGetProgramsQCOM == NULL);\r\n  glewInfoFunc(\"glExtGetShadersQCOM\", glExtGetShadersQCOM == NULL);\r\n  glewInfoFunc(\"glExtIsProgramBinaryQCOM\", glExtIsProgramBinaryQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_extended_get2 */\r\n\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n\r\nstatic void _glewInfo_GL_QCOM_framebuffer_foveated (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_framebuffer_foveated\", GLEW_QCOM_framebuffer_foveated, glewIsSupported(\"GL_QCOM_framebuffer_foveated\"), glewGetExtension(\"GL_QCOM_framebuffer_foveated\"));\r\n\r\n  glewInfoFunc(\"glFramebufferFoveationConfigQCOM\", glFramebufferFoveationConfigQCOM == NULL);\r\n  glewInfoFunc(\"glFramebufferFoveationParametersQCOM\", glFramebufferFoveationParametersQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_framebuffer_foveated */\r\n\r\n#ifdef GL_QCOM_perfmon_global_mode\r\n\r\nstatic void _glewInfo_GL_QCOM_perfmon_global_mode (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_perfmon_global_mode\", GLEW_QCOM_perfmon_global_mode, glewIsSupported(\"GL_QCOM_perfmon_global_mode\"), glewGetExtension(\"GL_QCOM_perfmon_global_mode\"));\r\n}\r\n\r\n#endif /* GL_QCOM_perfmon_global_mode */\r\n\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n\r\nstatic void _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_shader_framebuffer_fetch_noncoherent\", GLEW_QCOM_shader_framebuffer_fetch_noncoherent, glewIsSupported(\"GL_QCOM_shader_framebuffer_fetch_noncoherent\"), glewGetExtension(\"GL_QCOM_shader_framebuffer_fetch_noncoherent\"));\r\n\r\n  glewInfoFunc(\"glFramebufferFetchBarrierQCOM\", glFramebufferFetchBarrierQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */\r\n\r\n#ifdef GL_QCOM_tiled_rendering\r\n\r\nstatic void _glewInfo_GL_QCOM_tiled_rendering (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_tiled_rendering\", GLEW_QCOM_tiled_rendering, glewIsSupported(\"GL_QCOM_tiled_rendering\"), glewGetExtension(\"GL_QCOM_tiled_rendering\"));\r\n\r\n  glewInfoFunc(\"glEndTilingQCOM\", glEndTilingQCOM == NULL);\r\n  glewInfoFunc(\"glStartTilingQCOM\", glStartTilingQCOM == NULL);\r\n}\r\n\r\n#endif /* GL_QCOM_tiled_rendering */\r\n\r\n#ifdef GL_QCOM_writeonly_rendering\r\n\r\nstatic void _glewInfo_GL_QCOM_writeonly_rendering (void)\r\n{\r\n  glewPrintExt(\"GL_QCOM_writeonly_rendering\", GLEW_QCOM_writeonly_rendering, glewIsSupported(\"GL_QCOM_writeonly_rendering\"), glewGetExtension(\"GL_QCOM_writeonly_rendering\"));\r\n}\r\n\r\n#endif /* GL_QCOM_writeonly_rendering */\r\n\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n\r\nstatic void _glewInfo_GL_REGAL_ES1_0_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_ES1_0_compatibility\", GLEW_REGAL_ES1_0_compatibility, glewIsSupported(\"GL_REGAL_ES1_0_compatibility\"), glewGetExtension(\"GL_REGAL_ES1_0_compatibility\"));\r\n\r\n  glewInfoFunc(\"glAlphaFuncx\", glAlphaFuncx == NULL);\r\n  glewInfoFunc(\"glClearColorx\", glClearColorx == NULL);\r\n  glewInfoFunc(\"glClearDepthx\", glClearDepthx == NULL);\r\n  glewInfoFunc(\"glColor4x\", glColor4x == NULL);\r\n  glewInfoFunc(\"glDepthRangex\", glDepthRangex == NULL);\r\n  glewInfoFunc(\"glFogx\", glFogx == NULL);\r\n  glewInfoFunc(\"glFogxv\", glFogxv == NULL);\r\n  glewInfoFunc(\"glFrustumf\", glFrustumf == NULL);\r\n  glewInfoFunc(\"glFrustumx\", glFrustumx == NULL);\r\n  glewInfoFunc(\"glLightModelx\", glLightModelx == NULL);\r\n  glewInfoFunc(\"glLightModelxv\", glLightModelxv == NULL);\r\n  glewInfoFunc(\"glLightx\", glLightx == NULL);\r\n  glewInfoFunc(\"glLightxv\", glLightxv == NULL);\r\n  glewInfoFunc(\"glLineWidthx\", glLineWidthx == NULL);\r\n  glewInfoFunc(\"glLoadMatrixx\", glLoadMatrixx == NULL);\r\n  glewInfoFunc(\"glMaterialx\", glMaterialx == NULL);\r\n  glewInfoFunc(\"glMaterialxv\", glMaterialxv == NULL);\r\n  glewInfoFunc(\"glMultMatrixx\", glMultMatrixx == NULL);\r\n  glewInfoFunc(\"glMultiTexCoord4x\", glMultiTexCoord4x == NULL);\r\n  glewInfoFunc(\"glNormal3x\", glNormal3x == NULL);\r\n  glewInfoFunc(\"glOrthof\", glOrthof == NULL);\r\n  glewInfoFunc(\"glOrthox\", glOrthox == NULL);\r\n  glewInfoFunc(\"glPointSizex\", glPointSizex == NULL);\r\n  glewInfoFunc(\"glPolygonOffsetx\", glPolygonOffsetx == NULL);\r\n  glewInfoFunc(\"glRotatex\", glRotatex == NULL);\r\n  glewInfoFunc(\"glSampleCoveragex\", glSampleCoveragex == NULL);\r\n  glewInfoFunc(\"glScalex\", glScalex == NULL);\r\n  glewInfoFunc(\"glTexEnvx\", glTexEnvx == NULL);\r\n  glewInfoFunc(\"glTexEnvxv\", glTexEnvxv == NULL);\r\n  glewInfoFunc(\"glTexParameterx\", glTexParameterx == NULL);\r\n  glewInfoFunc(\"glTranslatex\", glTranslatex == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_ES1_0_compatibility */\r\n\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n\r\nstatic void _glewInfo_GL_REGAL_ES1_1_compatibility (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_ES1_1_compatibility\", GLEW_REGAL_ES1_1_compatibility, glewIsSupported(\"GL_REGAL_ES1_1_compatibility\"), glewGetExtension(\"GL_REGAL_ES1_1_compatibility\"));\r\n\r\n  glewInfoFunc(\"glClipPlanef\", glClipPlanef == NULL);\r\n  glewInfoFunc(\"glClipPlanex\", glClipPlanex == NULL);\r\n  glewInfoFunc(\"glGetClipPlanef\", glGetClipPlanef == NULL);\r\n  glewInfoFunc(\"glGetClipPlanex\", glGetClipPlanex == NULL);\r\n  glewInfoFunc(\"glGetFixedv\", glGetFixedv == NULL);\r\n  glewInfoFunc(\"glGetLightxv\", glGetLightxv == NULL);\r\n  glewInfoFunc(\"glGetMaterialxv\", glGetMaterialxv == NULL);\r\n  glewInfoFunc(\"glGetTexEnvxv\", glGetTexEnvxv == NULL);\r\n  glewInfoFunc(\"glGetTexParameterxv\", glGetTexParameterxv == NULL);\r\n  glewInfoFunc(\"glPointParameterx\", glPointParameterx == NULL);\r\n  glewInfoFunc(\"glPointParameterxv\", glPointParameterxv == NULL);\r\n  glewInfoFunc(\"glPointSizePointerOES\", glPointSizePointerOES == NULL);\r\n  glewInfoFunc(\"glTexParameterxv\", glTexParameterxv == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_ES1_1_compatibility */\r\n\r\n#ifdef GL_REGAL_enable\r\n\r\nstatic void _glewInfo_GL_REGAL_enable (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_enable\", GLEW_REGAL_enable, glewIsSupported(\"GL_REGAL_enable\"), glewGetExtension(\"GL_REGAL_enable\"));\r\n}\r\n\r\n#endif /* GL_REGAL_enable */\r\n\r\n#ifdef GL_REGAL_error_string\r\n\r\nstatic void _glewInfo_GL_REGAL_error_string (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_error_string\", GLEW_REGAL_error_string, glewIsSupported(\"GL_REGAL_error_string\"), glewGetExtension(\"GL_REGAL_error_string\"));\r\n\r\n  glewInfoFunc(\"glErrorStringREGAL\", glErrorStringREGAL == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_error_string */\r\n\r\n#ifdef GL_REGAL_extension_query\r\n\r\nstatic void _glewInfo_GL_REGAL_extension_query (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_extension_query\", GLEW_REGAL_extension_query, glewIsSupported(\"GL_REGAL_extension_query\"), glewGetExtension(\"GL_REGAL_extension_query\"));\r\n\r\n  glewInfoFunc(\"glGetExtensionREGAL\", glGetExtensionREGAL == NULL);\r\n  glewInfoFunc(\"glIsSupportedREGAL\", glIsSupportedREGAL == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_extension_query */\r\n\r\n#ifdef GL_REGAL_log\r\n\r\nstatic void _glewInfo_GL_REGAL_log (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_log\", GLEW_REGAL_log, glewIsSupported(\"GL_REGAL_log\"), glewGetExtension(\"GL_REGAL_log\"));\r\n\r\n  glewInfoFunc(\"glLogMessageCallbackREGAL\", glLogMessageCallbackREGAL == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_log */\r\n\r\n#ifdef GL_REGAL_proc_address\r\n\r\nstatic void _glewInfo_GL_REGAL_proc_address (void)\r\n{\r\n  glewPrintExt(\"GL_REGAL_proc_address\", GLEW_REGAL_proc_address, glewIsSupported(\"GL_REGAL_proc_address\"), glewGetExtension(\"GL_REGAL_proc_address\"));\r\n\r\n  glewInfoFunc(\"glGetProcAddressREGAL\", glGetProcAddressREGAL == NULL);\r\n}\r\n\r\n#endif /* GL_REGAL_proc_address */\r\n\r\n#ifdef GL_REND_screen_coordinates\r\n\r\nstatic void _glewInfo_GL_REND_screen_coordinates (void)\r\n{\r\n  glewPrintExt(\"GL_REND_screen_coordinates\", GLEW_REND_screen_coordinates, glewIsSupported(\"GL_REND_screen_coordinates\"), glewGetExtension(\"GL_REND_screen_coordinates\"));\r\n}\r\n\r\n#endif /* GL_REND_screen_coordinates */\r\n\r\n#ifdef GL_S3_s3tc\r\n\r\nstatic void _glewInfo_GL_S3_s3tc (void)\r\n{\r\n  glewPrintExt(\"GL_S3_s3tc\", GLEW_S3_s3tc, glewIsSupported(\"GL_S3_s3tc\"), glewGetExtension(\"GL_S3_s3tc\"));\r\n}\r\n\r\n#endif /* GL_S3_s3tc */\r\n\r\n#ifdef GL_SGIS_clip_band_hint\r\n\r\nstatic void _glewInfo_GL_SGIS_clip_band_hint (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_clip_band_hint\", GLEW_SGIS_clip_band_hint, glewIsSupported(\"GL_SGIS_clip_band_hint\"), glewGetExtension(\"GL_SGIS_clip_band_hint\"));\r\n}\r\n\r\n#endif /* GL_SGIS_clip_band_hint */\r\n\r\n#ifdef GL_SGIS_color_range\r\n\r\nstatic void _glewInfo_GL_SGIS_color_range (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_color_range\", GLEW_SGIS_color_range, glewIsSupported(\"GL_SGIS_color_range\"), glewGetExtension(\"GL_SGIS_color_range\"));\r\n}\r\n\r\n#endif /* GL_SGIS_color_range */\r\n\r\n#ifdef GL_SGIS_detail_texture\r\n\r\nstatic void _glewInfo_GL_SGIS_detail_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_detail_texture\", GLEW_SGIS_detail_texture, glewIsSupported(\"GL_SGIS_detail_texture\"), glewGetExtension(\"GL_SGIS_detail_texture\"));\r\n\r\n  glewInfoFunc(\"glDetailTexFuncSGIS\", glDetailTexFuncSGIS == NULL);\r\n  glewInfoFunc(\"glGetDetailTexFuncSGIS\", glGetDetailTexFuncSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_detail_texture */\r\n\r\n#ifdef GL_SGIS_fog_function\r\n\r\nstatic void _glewInfo_GL_SGIS_fog_function (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_fog_function\", GLEW_SGIS_fog_function, glewIsSupported(\"GL_SGIS_fog_function\"), glewGetExtension(\"GL_SGIS_fog_function\"));\r\n\r\n  glewInfoFunc(\"glFogFuncSGIS\", glFogFuncSGIS == NULL);\r\n  glewInfoFunc(\"glGetFogFuncSGIS\", glGetFogFuncSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_fog_function */\r\n\r\n#ifdef GL_SGIS_generate_mipmap\r\n\r\nstatic void _glewInfo_GL_SGIS_generate_mipmap (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_generate_mipmap\", GLEW_SGIS_generate_mipmap, glewIsSupported(\"GL_SGIS_generate_mipmap\"), glewGetExtension(\"GL_SGIS_generate_mipmap\"));\r\n}\r\n\r\n#endif /* GL_SGIS_generate_mipmap */\r\n\r\n#ifdef GL_SGIS_line_texgen\r\n\r\nstatic void _glewInfo_GL_SGIS_line_texgen (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_line_texgen\", GLEW_SGIS_line_texgen, glewIsSupported(\"GL_SGIS_line_texgen\"), glewGetExtension(\"GL_SGIS_line_texgen\"));\r\n}\r\n\r\n#endif /* GL_SGIS_line_texgen */\r\n\r\n#ifdef GL_SGIS_multisample\r\n\r\nstatic void _glewInfo_GL_SGIS_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_multisample\", GLEW_SGIS_multisample, glewIsSupported(\"GL_SGIS_multisample\"), glewGetExtension(\"GL_SGIS_multisample\"));\r\n\r\n  glewInfoFunc(\"glSampleMaskSGIS\", glSampleMaskSGIS == NULL);\r\n  glewInfoFunc(\"glSamplePatternSGIS\", glSamplePatternSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_multisample */\r\n\r\n#ifdef GL_SGIS_multitexture\r\n\r\nstatic void _glewInfo_GL_SGIS_multitexture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_multitexture\", GLEW_SGIS_multitexture, glewIsSupported(\"GL_SGIS_multitexture\"), glewGetExtension(\"GL_SGIS_multitexture\"));\r\n\r\n  glewInfoFunc(\"glInterleavedTextureCoordSetsSGIS\", glInterleavedTextureCoordSetsSGIS == NULL);\r\n  glewInfoFunc(\"glSelectTextureCoordSetSGIS\", glSelectTextureCoordSetSGIS == NULL);\r\n  glewInfoFunc(\"glSelectTextureSGIS\", glSelectTextureSGIS == NULL);\r\n  glewInfoFunc(\"glSelectTextureTransformSGIS\", glSelectTextureTransformSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_multitexture */\r\n\r\n#ifdef GL_SGIS_pixel_texture\r\n\r\nstatic void _glewInfo_GL_SGIS_pixel_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_pixel_texture\", GLEW_SGIS_pixel_texture, glewIsSupported(\"GL_SGIS_pixel_texture\"), glewGetExtension(\"GL_SGIS_pixel_texture\"));\r\n}\r\n\r\n#endif /* GL_SGIS_pixel_texture */\r\n\r\n#ifdef GL_SGIS_point_line_texgen\r\n\r\nstatic void _glewInfo_GL_SGIS_point_line_texgen (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_point_line_texgen\", GLEW_SGIS_point_line_texgen, glewIsSupported(\"GL_SGIS_point_line_texgen\"), glewGetExtension(\"GL_SGIS_point_line_texgen\"));\r\n}\r\n\r\n#endif /* GL_SGIS_point_line_texgen */\r\n\r\n#ifdef GL_SGIS_shared_multisample\r\n\r\nstatic void _glewInfo_GL_SGIS_shared_multisample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_shared_multisample\", GLEW_SGIS_shared_multisample, glewIsSupported(\"GL_SGIS_shared_multisample\"), glewGetExtension(\"GL_SGIS_shared_multisample\"));\r\n\r\n  glewInfoFunc(\"glMultisampleSubRectPosSGIS\", glMultisampleSubRectPosSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_shared_multisample */\r\n\r\n#ifdef GL_SGIS_sharpen_texture\r\n\r\nstatic void _glewInfo_GL_SGIS_sharpen_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_sharpen_texture\", GLEW_SGIS_sharpen_texture, glewIsSupported(\"GL_SGIS_sharpen_texture\"), glewGetExtension(\"GL_SGIS_sharpen_texture\"));\r\n\r\n  glewInfoFunc(\"glGetSharpenTexFuncSGIS\", glGetSharpenTexFuncSGIS == NULL);\r\n  glewInfoFunc(\"glSharpenTexFuncSGIS\", glSharpenTexFuncSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_sharpen_texture */\r\n\r\n#ifdef GL_SGIS_texture4D\r\n\r\nstatic void _glewInfo_GL_SGIS_texture4D (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture4D\", GLEW_SGIS_texture4D, glewIsSupported(\"GL_SGIS_texture4D\"), glewGetExtension(\"GL_SGIS_texture4D\"));\r\n\r\n  glewInfoFunc(\"glTexImage4DSGIS\", glTexImage4DSGIS == NULL);\r\n  glewInfoFunc(\"glTexSubImage4DSGIS\", glTexSubImage4DSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_texture4D */\r\n\r\n#ifdef GL_SGIS_texture_border_clamp\r\n\r\nstatic void _glewInfo_GL_SGIS_texture_border_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture_border_clamp\", GLEW_SGIS_texture_border_clamp, glewIsSupported(\"GL_SGIS_texture_border_clamp\"), glewGetExtension(\"GL_SGIS_texture_border_clamp\"));\r\n}\r\n\r\n#endif /* GL_SGIS_texture_border_clamp */\r\n\r\n#ifdef GL_SGIS_texture_edge_clamp\r\n\r\nstatic void _glewInfo_GL_SGIS_texture_edge_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture_edge_clamp\", GLEW_SGIS_texture_edge_clamp, glewIsSupported(\"GL_SGIS_texture_edge_clamp\"), glewGetExtension(\"GL_SGIS_texture_edge_clamp\"));\r\n}\r\n\r\n#endif /* GL_SGIS_texture_edge_clamp */\r\n\r\n#ifdef GL_SGIS_texture_filter4\r\n\r\nstatic void _glewInfo_GL_SGIS_texture_filter4 (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture_filter4\", GLEW_SGIS_texture_filter4, glewIsSupported(\"GL_SGIS_texture_filter4\"), glewGetExtension(\"GL_SGIS_texture_filter4\"));\r\n\r\n  glewInfoFunc(\"glGetTexFilterFuncSGIS\", glGetTexFilterFuncSGIS == NULL);\r\n  glewInfoFunc(\"glTexFilterFuncSGIS\", glTexFilterFuncSGIS == NULL);\r\n}\r\n\r\n#endif /* GL_SGIS_texture_filter4 */\r\n\r\n#ifdef GL_SGIS_texture_lod\r\n\r\nstatic void _glewInfo_GL_SGIS_texture_lod (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture_lod\", GLEW_SGIS_texture_lod, glewIsSupported(\"GL_SGIS_texture_lod\"), glewGetExtension(\"GL_SGIS_texture_lod\"));\r\n}\r\n\r\n#endif /* GL_SGIS_texture_lod */\r\n\r\n#ifdef GL_SGIS_texture_select\r\n\r\nstatic void _glewInfo_GL_SGIS_texture_select (void)\r\n{\r\n  glewPrintExt(\"GL_SGIS_texture_select\", GLEW_SGIS_texture_select, glewIsSupported(\"GL_SGIS_texture_select\"), glewGetExtension(\"GL_SGIS_texture_select\"));\r\n}\r\n\r\n#endif /* GL_SGIS_texture_select */\r\n\r\n#ifdef GL_SGIX_async\r\n\r\nstatic void _glewInfo_GL_SGIX_async (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_async\", GLEW_SGIX_async, glewIsSupported(\"GL_SGIX_async\"), glewGetExtension(\"GL_SGIX_async\"));\r\n\r\n  glewInfoFunc(\"glAsyncMarkerSGIX\", glAsyncMarkerSGIX == NULL);\r\n  glewInfoFunc(\"glDeleteAsyncMarkersSGIX\", glDeleteAsyncMarkersSGIX == NULL);\r\n  glewInfoFunc(\"glFinishAsyncSGIX\", glFinishAsyncSGIX == NULL);\r\n  glewInfoFunc(\"glGenAsyncMarkersSGIX\", glGenAsyncMarkersSGIX == NULL);\r\n  glewInfoFunc(\"glIsAsyncMarkerSGIX\", glIsAsyncMarkerSGIX == NULL);\r\n  glewInfoFunc(\"glPollAsyncSGIX\", glPollAsyncSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_async */\r\n\r\n#ifdef GL_SGIX_async_histogram\r\n\r\nstatic void _glewInfo_GL_SGIX_async_histogram (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_async_histogram\", GLEW_SGIX_async_histogram, glewIsSupported(\"GL_SGIX_async_histogram\"), glewGetExtension(\"GL_SGIX_async_histogram\"));\r\n}\r\n\r\n#endif /* GL_SGIX_async_histogram */\r\n\r\n#ifdef GL_SGIX_async_pixel\r\n\r\nstatic void _glewInfo_GL_SGIX_async_pixel (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_async_pixel\", GLEW_SGIX_async_pixel, glewIsSupported(\"GL_SGIX_async_pixel\"), glewGetExtension(\"GL_SGIX_async_pixel\"));\r\n}\r\n\r\n#endif /* GL_SGIX_async_pixel */\r\n\r\n#ifdef GL_SGIX_bali_g_instruments\r\n\r\nstatic void _glewInfo_GL_SGIX_bali_g_instruments (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_bali_g_instruments\", GLEW_SGIX_bali_g_instruments, glewIsSupported(\"GL_SGIX_bali_g_instruments\"), glewGetExtension(\"GL_SGIX_bali_g_instruments\"));\r\n}\r\n\r\n#endif /* GL_SGIX_bali_g_instruments */\r\n\r\n#ifdef GL_SGIX_bali_r_instruments\r\n\r\nstatic void _glewInfo_GL_SGIX_bali_r_instruments (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_bali_r_instruments\", GLEW_SGIX_bali_r_instruments, glewIsSupported(\"GL_SGIX_bali_r_instruments\"), glewGetExtension(\"GL_SGIX_bali_r_instruments\"));\r\n}\r\n\r\n#endif /* GL_SGIX_bali_r_instruments */\r\n\r\n#ifdef GL_SGIX_bali_timer_instruments\r\n\r\nstatic void _glewInfo_GL_SGIX_bali_timer_instruments (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_bali_timer_instruments\", GLEW_SGIX_bali_timer_instruments, glewIsSupported(\"GL_SGIX_bali_timer_instruments\"), glewGetExtension(\"GL_SGIX_bali_timer_instruments\"));\r\n}\r\n\r\n#endif /* GL_SGIX_bali_timer_instruments */\r\n\r\n#ifdef GL_SGIX_blend_alpha_minmax\r\n\r\nstatic void _glewInfo_GL_SGIX_blend_alpha_minmax (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_blend_alpha_minmax\", GLEW_SGIX_blend_alpha_minmax, glewIsSupported(\"GL_SGIX_blend_alpha_minmax\"), glewGetExtension(\"GL_SGIX_blend_alpha_minmax\"));\r\n}\r\n\r\n#endif /* GL_SGIX_blend_alpha_minmax */\r\n\r\n#ifdef GL_SGIX_blend_cadd\r\n\r\nstatic void _glewInfo_GL_SGIX_blend_cadd (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_blend_cadd\", GLEW_SGIX_blend_cadd, glewIsSupported(\"GL_SGIX_blend_cadd\"), glewGetExtension(\"GL_SGIX_blend_cadd\"));\r\n}\r\n\r\n#endif /* GL_SGIX_blend_cadd */\r\n\r\n#ifdef GL_SGIX_blend_cmultiply\r\n\r\nstatic void _glewInfo_GL_SGIX_blend_cmultiply (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_blend_cmultiply\", GLEW_SGIX_blend_cmultiply, glewIsSupported(\"GL_SGIX_blend_cmultiply\"), glewGetExtension(\"GL_SGIX_blend_cmultiply\"));\r\n}\r\n\r\n#endif /* GL_SGIX_blend_cmultiply */\r\n\r\n#ifdef GL_SGIX_calligraphic_fragment\r\n\r\nstatic void _glewInfo_GL_SGIX_calligraphic_fragment (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_calligraphic_fragment\", GLEW_SGIX_calligraphic_fragment, glewIsSupported(\"GL_SGIX_calligraphic_fragment\"), glewGetExtension(\"GL_SGIX_calligraphic_fragment\"));\r\n}\r\n\r\n#endif /* GL_SGIX_calligraphic_fragment */\r\n\r\n#ifdef GL_SGIX_clipmap\r\n\r\nstatic void _glewInfo_GL_SGIX_clipmap (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_clipmap\", GLEW_SGIX_clipmap, glewIsSupported(\"GL_SGIX_clipmap\"), glewGetExtension(\"GL_SGIX_clipmap\"));\r\n}\r\n\r\n#endif /* GL_SGIX_clipmap */\r\n\r\n#ifdef GL_SGIX_color_matrix_accuracy\r\n\r\nstatic void _glewInfo_GL_SGIX_color_matrix_accuracy (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_color_matrix_accuracy\", GLEW_SGIX_color_matrix_accuracy, glewIsSupported(\"GL_SGIX_color_matrix_accuracy\"), glewGetExtension(\"GL_SGIX_color_matrix_accuracy\"));\r\n}\r\n\r\n#endif /* GL_SGIX_color_matrix_accuracy */\r\n\r\n#ifdef GL_SGIX_color_table_index_mode\r\n\r\nstatic void _glewInfo_GL_SGIX_color_table_index_mode (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_color_table_index_mode\", GLEW_SGIX_color_table_index_mode, glewIsSupported(\"GL_SGIX_color_table_index_mode\"), glewGetExtension(\"GL_SGIX_color_table_index_mode\"));\r\n}\r\n\r\n#endif /* GL_SGIX_color_table_index_mode */\r\n\r\n#ifdef GL_SGIX_complex_polar\r\n\r\nstatic void _glewInfo_GL_SGIX_complex_polar (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_complex_polar\", GLEW_SGIX_complex_polar, glewIsSupported(\"GL_SGIX_complex_polar\"), glewGetExtension(\"GL_SGIX_complex_polar\"));\r\n}\r\n\r\n#endif /* GL_SGIX_complex_polar */\r\n\r\n#ifdef GL_SGIX_convolution_accuracy\r\n\r\nstatic void _glewInfo_GL_SGIX_convolution_accuracy (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_convolution_accuracy\", GLEW_SGIX_convolution_accuracy, glewIsSupported(\"GL_SGIX_convolution_accuracy\"), glewGetExtension(\"GL_SGIX_convolution_accuracy\"));\r\n}\r\n\r\n#endif /* GL_SGIX_convolution_accuracy */\r\n\r\n#ifdef GL_SGIX_cube_map\r\n\r\nstatic void _glewInfo_GL_SGIX_cube_map (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_cube_map\", GLEW_SGIX_cube_map, glewIsSupported(\"GL_SGIX_cube_map\"), glewGetExtension(\"GL_SGIX_cube_map\"));\r\n}\r\n\r\n#endif /* GL_SGIX_cube_map */\r\n\r\n#ifdef GL_SGIX_cylinder_texgen\r\n\r\nstatic void _glewInfo_GL_SGIX_cylinder_texgen (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_cylinder_texgen\", GLEW_SGIX_cylinder_texgen, glewIsSupported(\"GL_SGIX_cylinder_texgen\"), glewGetExtension(\"GL_SGIX_cylinder_texgen\"));\r\n}\r\n\r\n#endif /* GL_SGIX_cylinder_texgen */\r\n\r\n#ifdef GL_SGIX_datapipe\r\n\r\nstatic void _glewInfo_GL_SGIX_datapipe (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_datapipe\", GLEW_SGIX_datapipe, glewIsSupported(\"GL_SGIX_datapipe\"), glewGetExtension(\"GL_SGIX_datapipe\"));\r\n\r\n  glewInfoFunc(\"glAddressSpace\", glAddressSpace == NULL);\r\n  glewInfoFunc(\"glDataPipe\", glDataPipe == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_datapipe */\r\n\r\n#ifdef GL_SGIX_decimation\r\n\r\nstatic void _glewInfo_GL_SGIX_decimation (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_decimation\", GLEW_SGIX_decimation, glewIsSupported(\"GL_SGIX_decimation\"), glewGetExtension(\"GL_SGIX_decimation\"));\r\n}\r\n\r\n#endif /* GL_SGIX_decimation */\r\n\r\n#ifdef GL_SGIX_depth_pass_instrument\r\n\r\nstatic void _glewInfo_GL_SGIX_depth_pass_instrument (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_depth_pass_instrument\", GLEW_SGIX_depth_pass_instrument, glewIsSupported(\"GL_SGIX_depth_pass_instrument\"), glewGetExtension(\"GL_SGIX_depth_pass_instrument\"));\r\n}\r\n\r\n#endif /* GL_SGIX_depth_pass_instrument */\r\n\r\n#ifdef GL_SGIX_depth_texture\r\n\r\nstatic void _glewInfo_GL_SGIX_depth_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_depth_texture\", GLEW_SGIX_depth_texture, glewIsSupported(\"GL_SGIX_depth_texture\"), glewGetExtension(\"GL_SGIX_depth_texture\"));\r\n}\r\n\r\n#endif /* GL_SGIX_depth_texture */\r\n\r\n#ifdef GL_SGIX_dvc\r\n\r\nstatic void _glewInfo_GL_SGIX_dvc (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_dvc\", GLEW_SGIX_dvc, glewIsSupported(\"GL_SGIX_dvc\"), glewGetExtension(\"GL_SGIX_dvc\"));\r\n}\r\n\r\n#endif /* GL_SGIX_dvc */\r\n\r\n#ifdef GL_SGIX_flush_raster\r\n\r\nstatic void _glewInfo_GL_SGIX_flush_raster (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_flush_raster\", GLEW_SGIX_flush_raster, glewIsSupported(\"GL_SGIX_flush_raster\"), glewGetExtension(\"GL_SGIX_flush_raster\"));\r\n\r\n  glewInfoFunc(\"glFlushRasterSGIX\", glFlushRasterSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_flush_raster */\r\n\r\n#ifdef GL_SGIX_fog_blend\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_blend (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_blend\", GLEW_SGIX_fog_blend, glewIsSupported(\"GL_SGIX_fog_blend\"), glewGetExtension(\"GL_SGIX_fog_blend\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fog_blend */\r\n\r\n#ifdef GL_SGIX_fog_factor_to_alpha\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_factor_to_alpha (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_factor_to_alpha\", GLEW_SGIX_fog_factor_to_alpha, glewIsSupported(\"GL_SGIX_fog_factor_to_alpha\"), glewGetExtension(\"GL_SGIX_fog_factor_to_alpha\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fog_factor_to_alpha */\r\n\r\n#ifdef GL_SGIX_fog_layers\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_layers (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_layers\", GLEW_SGIX_fog_layers, glewIsSupported(\"GL_SGIX_fog_layers\"), glewGetExtension(\"GL_SGIX_fog_layers\"));\r\n\r\n  glewInfoFunc(\"glFogLayersSGIX\", glFogLayersSGIX == NULL);\r\n  glewInfoFunc(\"glGetFogLayersSGIX\", glGetFogLayersSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_fog_layers */\r\n\r\n#ifdef GL_SGIX_fog_offset\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_offset (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_offset\", GLEW_SGIX_fog_offset, glewIsSupported(\"GL_SGIX_fog_offset\"), glewGetExtension(\"GL_SGIX_fog_offset\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fog_offset */\r\n\r\n#ifdef GL_SGIX_fog_patchy\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_patchy (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_patchy\", GLEW_SGIX_fog_patchy, glewIsSupported(\"GL_SGIX_fog_patchy\"), glewGetExtension(\"GL_SGIX_fog_patchy\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fog_patchy */\r\n\r\n#ifdef GL_SGIX_fog_scale\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_scale (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_scale\", GLEW_SGIX_fog_scale, glewIsSupported(\"GL_SGIX_fog_scale\"), glewGetExtension(\"GL_SGIX_fog_scale\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fog_scale */\r\n\r\n#ifdef GL_SGIX_fog_texture\r\n\r\nstatic void _glewInfo_GL_SGIX_fog_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fog_texture\", GLEW_SGIX_fog_texture, glewIsSupported(\"GL_SGIX_fog_texture\"), glewGetExtension(\"GL_SGIX_fog_texture\"));\r\n\r\n  glewInfoFunc(\"glTextureFogSGIX\", glTextureFogSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_fog_texture */\r\n\r\n#ifdef GL_SGIX_fragment_lighting_space\r\n\r\nstatic void _glewInfo_GL_SGIX_fragment_lighting_space (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fragment_lighting_space\", GLEW_SGIX_fragment_lighting_space, glewIsSupported(\"GL_SGIX_fragment_lighting_space\"), glewGetExtension(\"GL_SGIX_fragment_lighting_space\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fragment_lighting_space */\r\n\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n\r\nstatic void _glewInfo_GL_SGIX_fragment_specular_lighting (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fragment_specular_lighting\", GLEW_SGIX_fragment_specular_lighting, glewIsSupported(\"GL_SGIX_fragment_specular_lighting\"), glewGetExtension(\"GL_SGIX_fragment_specular_lighting\"));\r\n\r\n  glewInfoFunc(\"glFragmentColorMaterialSGIX\", glFragmentColorMaterialSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelfSGIX\", glFragmentLightModelfSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelfvSGIX\", glFragmentLightModelfvSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightModeliSGIX\", glFragmentLightModeliSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightModelivSGIX\", glFragmentLightModelivSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightfSGIX\", glFragmentLightfSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightfvSGIX\", glFragmentLightfvSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightiSGIX\", glFragmentLightiSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentLightivSGIX\", glFragmentLightivSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialfSGIX\", glFragmentMaterialfSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialfvSGIX\", glFragmentMaterialfvSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialiSGIX\", glFragmentMaterialiSGIX == NULL);\r\n  glewInfoFunc(\"glFragmentMaterialivSGIX\", glFragmentMaterialivSGIX == NULL);\r\n  glewInfoFunc(\"glGetFragmentLightfvSGIX\", glGetFragmentLightfvSGIX == NULL);\r\n  glewInfoFunc(\"glGetFragmentLightivSGIX\", glGetFragmentLightivSGIX == NULL);\r\n  glewInfoFunc(\"glGetFragmentMaterialfvSGIX\", glGetFragmentMaterialfvSGIX == NULL);\r\n  glewInfoFunc(\"glGetFragmentMaterialivSGIX\", glGetFragmentMaterialivSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_fragment_specular_lighting */\r\n\r\n#ifdef GL_SGIX_fragments_instrument\r\n\r\nstatic void _glewInfo_GL_SGIX_fragments_instrument (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_fragments_instrument\", GLEW_SGIX_fragments_instrument, glewIsSupported(\"GL_SGIX_fragments_instrument\"), glewGetExtension(\"GL_SGIX_fragments_instrument\"));\r\n}\r\n\r\n#endif /* GL_SGIX_fragments_instrument */\r\n\r\n#ifdef GL_SGIX_framezoom\r\n\r\nstatic void _glewInfo_GL_SGIX_framezoom (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_framezoom\", GLEW_SGIX_framezoom, glewIsSupported(\"GL_SGIX_framezoom\"), glewGetExtension(\"GL_SGIX_framezoom\"));\r\n\r\n  glewInfoFunc(\"glFrameZoomSGIX\", glFrameZoomSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_framezoom */\r\n\r\n#ifdef GL_SGIX_icc_texture\r\n\r\nstatic void _glewInfo_GL_SGIX_icc_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_icc_texture\", GLEW_SGIX_icc_texture, glewIsSupported(\"GL_SGIX_icc_texture\"), glewGetExtension(\"GL_SGIX_icc_texture\"));\r\n}\r\n\r\n#endif /* GL_SGIX_icc_texture */\r\n\r\n#ifdef GL_SGIX_igloo_interface\r\n\r\nstatic void _glewInfo_GL_SGIX_igloo_interface (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_igloo_interface\", GLEW_SGIX_igloo_interface, glewIsSupported(\"GL_SGIX_igloo_interface\"), glewGetExtension(\"GL_SGIX_igloo_interface\"));\r\n\r\n  glewInfoFunc(\"glIglooInterfaceSGIX\", glIglooInterfaceSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_igloo_interface */\r\n\r\n#ifdef GL_SGIX_image_compression\r\n\r\nstatic void _glewInfo_GL_SGIX_image_compression (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_image_compression\", GLEW_SGIX_image_compression, glewIsSupported(\"GL_SGIX_image_compression\"), glewGetExtension(\"GL_SGIX_image_compression\"));\r\n}\r\n\r\n#endif /* GL_SGIX_image_compression */\r\n\r\n#ifdef GL_SGIX_impact_pixel_texture\r\n\r\nstatic void _glewInfo_GL_SGIX_impact_pixel_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_impact_pixel_texture\", GLEW_SGIX_impact_pixel_texture, glewIsSupported(\"GL_SGIX_impact_pixel_texture\"), glewGetExtension(\"GL_SGIX_impact_pixel_texture\"));\r\n}\r\n\r\n#endif /* GL_SGIX_impact_pixel_texture */\r\n\r\n#ifdef GL_SGIX_instrument_error\r\n\r\nstatic void _glewInfo_GL_SGIX_instrument_error (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_instrument_error\", GLEW_SGIX_instrument_error, glewIsSupported(\"GL_SGIX_instrument_error\"), glewGetExtension(\"GL_SGIX_instrument_error\"));\r\n}\r\n\r\n#endif /* GL_SGIX_instrument_error */\r\n\r\n#ifdef GL_SGIX_interlace\r\n\r\nstatic void _glewInfo_GL_SGIX_interlace (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_interlace\", GLEW_SGIX_interlace, glewIsSupported(\"GL_SGIX_interlace\"), glewGetExtension(\"GL_SGIX_interlace\"));\r\n}\r\n\r\n#endif /* GL_SGIX_interlace */\r\n\r\n#ifdef GL_SGIX_ir_instrument1\r\n\r\nstatic void _glewInfo_GL_SGIX_ir_instrument1 (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_ir_instrument1\", GLEW_SGIX_ir_instrument1, glewIsSupported(\"GL_SGIX_ir_instrument1\"), glewGetExtension(\"GL_SGIX_ir_instrument1\"));\r\n}\r\n\r\n#endif /* GL_SGIX_ir_instrument1 */\r\n\r\n#ifdef GL_SGIX_line_quality_hint\r\n\r\nstatic void _glewInfo_GL_SGIX_line_quality_hint (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_line_quality_hint\", GLEW_SGIX_line_quality_hint, glewIsSupported(\"GL_SGIX_line_quality_hint\"), glewGetExtension(\"GL_SGIX_line_quality_hint\"));\r\n}\r\n\r\n#endif /* GL_SGIX_line_quality_hint */\r\n\r\n#ifdef GL_SGIX_list_priority\r\n\r\nstatic void _glewInfo_GL_SGIX_list_priority (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_list_priority\", GLEW_SGIX_list_priority, glewIsSupported(\"GL_SGIX_list_priority\"), glewGetExtension(\"GL_SGIX_list_priority\"));\r\n}\r\n\r\n#endif /* GL_SGIX_list_priority */\r\n\r\n#ifdef GL_SGIX_mpeg1\r\n\r\nstatic void _glewInfo_GL_SGIX_mpeg1 (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_mpeg1\", GLEW_SGIX_mpeg1, glewIsSupported(\"GL_SGIX_mpeg1\"), glewGetExtension(\"GL_SGIX_mpeg1\"));\r\n\r\n  glewInfoFunc(\"glAllocMPEGPredictorsSGIX\", glAllocMPEGPredictorsSGIX == NULL);\r\n  glewInfoFunc(\"glDeleteMPEGPredictorsSGIX\", glDeleteMPEGPredictorsSGIX == NULL);\r\n  glewInfoFunc(\"glGenMPEGPredictorsSGIX\", glGenMPEGPredictorsSGIX == NULL);\r\n  glewInfoFunc(\"glGetMPEGParameterfvSGIX\", glGetMPEGParameterfvSGIX == NULL);\r\n  glewInfoFunc(\"glGetMPEGParameterivSGIX\", glGetMPEGParameterivSGIX == NULL);\r\n  glewInfoFunc(\"glGetMPEGPredictorSGIX\", glGetMPEGPredictorSGIX == NULL);\r\n  glewInfoFunc(\"glGetMPEGQuantTableubv\", glGetMPEGQuantTableubv == NULL);\r\n  glewInfoFunc(\"glIsMPEGPredictorSGIX\", glIsMPEGPredictorSGIX == NULL);\r\n  glewInfoFunc(\"glMPEGPredictorSGIX\", glMPEGPredictorSGIX == NULL);\r\n  glewInfoFunc(\"glMPEGQuantTableubv\", glMPEGQuantTableubv == NULL);\r\n  glewInfoFunc(\"glSwapMPEGPredictorsSGIX\", glSwapMPEGPredictorsSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_mpeg1 */\r\n\r\n#ifdef GL_SGIX_mpeg2\r\n\r\nstatic void _glewInfo_GL_SGIX_mpeg2 (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_mpeg2\", GLEW_SGIX_mpeg2, glewIsSupported(\"GL_SGIX_mpeg2\"), glewGetExtension(\"GL_SGIX_mpeg2\"));\r\n}\r\n\r\n#endif /* GL_SGIX_mpeg2 */\r\n\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n\r\nstatic void _glewInfo_GL_SGIX_nonlinear_lighting_pervertex (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_nonlinear_lighting_pervertex\", GLEW_SGIX_nonlinear_lighting_pervertex, glewIsSupported(\"GL_SGIX_nonlinear_lighting_pervertex\"), glewGetExtension(\"GL_SGIX_nonlinear_lighting_pervertex\"));\r\n\r\n  glewInfoFunc(\"glGetNonlinLightfvSGIX\", glGetNonlinLightfvSGIX == NULL);\r\n  glewInfoFunc(\"glGetNonlinMaterialfvSGIX\", glGetNonlinMaterialfvSGIX == NULL);\r\n  glewInfoFunc(\"glNonlinLightfvSGIX\", glNonlinLightfvSGIX == NULL);\r\n  glewInfoFunc(\"glNonlinMaterialfvSGIX\", glNonlinMaterialfvSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_nonlinear_lighting_pervertex */\r\n\r\n#ifdef GL_SGIX_nurbs_eval\r\n\r\nstatic void _glewInfo_GL_SGIX_nurbs_eval (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_nurbs_eval\", GLEW_SGIX_nurbs_eval, glewIsSupported(\"GL_SGIX_nurbs_eval\"), glewGetExtension(\"GL_SGIX_nurbs_eval\"));\r\n}\r\n\r\n#endif /* GL_SGIX_nurbs_eval */\r\n\r\n#ifdef GL_SGIX_occlusion_instrument\r\n\r\nstatic void _glewInfo_GL_SGIX_occlusion_instrument (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_occlusion_instrument\", GLEW_SGIX_occlusion_instrument, glewIsSupported(\"GL_SGIX_occlusion_instrument\"), glewGetExtension(\"GL_SGIX_occlusion_instrument\"));\r\n}\r\n\r\n#endif /* GL_SGIX_occlusion_instrument */\r\n\r\n#ifdef GL_SGIX_packed_6bytes\r\n\r\nstatic void _glewInfo_GL_SGIX_packed_6bytes (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_packed_6bytes\", GLEW_SGIX_packed_6bytes, glewIsSupported(\"GL_SGIX_packed_6bytes\"), glewGetExtension(\"GL_SGIX_packed_6bytes\"));\r\n}\r\n\r\n#endif /* GL_SGIX_packed_6bytes */\r\n\r\n#ifdef GL_SGIX_pixel_texture\r\n\r\nstatic void _glewInfo_GL_SGIX_pixel_texture (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_pixel_texture\", GLEW_SGIX_pixel_texture, glewIsSupported(\"GL_SGIX_pixel_texture\"), glewGetExtension(\"GL_SGIX_pixel_texture\"));\r\n\r\n  glewInfoFunc(\"glPixelTexGenSGIX\", glPixelTexGenSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_pixel_texture */\r\n\r\n#ifdef GL_SGIX_pixel_texture_bits\r\n\r\nstatic void _glewInfo_GL_SGIX_pixel_texture_bits (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_pixel_texture_bits\", GLEW_SGIX_pixel_texture_bits, glewIsSupported(\"GL_SGIX_pixel_texture_bits\"), glewGetExtension(\"GL_SGIX_pixel_texture_bits\"));\r\n}\r\n\r\n#endif /* GL_SGIX_pixel_texture_bits */\r\n\r\n#ifdef GL_SGIX_pixel_texture_lod\r\n\r\nstatic void _glewInfo_GL_SGIX_pixel_texture_lod (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_pixel_texture_lod\", GLEW_SGIX_pixel_texture_lod, glewIsSupported(\"GL_SGIX_pixel_texture_lod\"), glewGetExtension(\"GL_SGIX_pixel_texture_lod\"));\r\n}\r\n\r\n#endif /* GL_SGIX_pixel_texture_lod */\r\n\r\n#ifdef GL_SGIX_pixel_tiles\r\n\r\nstatic void _glewInfo_GL_SGIX_pixel_tiles (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_pixel_tiles\", GLEW_SGIX_pixel_tiles, glewIsSupported(\"GL_SGIX_pixel_tiles\"), glewGetExtension(\"GL_SGIX_pixel_tiles\"));\r\n}\r\n\r\n#endif /* GL_SGIX_pixel_tiles */\r\n\r\n#ifdef GL_SGIX_polynomial_ffd\r\n\r\nstatic void _glewInfo_GL_SGIX_polynomial_ffd (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_polynomial_ffd\", GLEW_SGIX_polynomial_ffd, glewIsSupported(\"GL_SGIX_polynomial_ffd\"), glewGetExtension(\"GL_SGIX_polynomial_ffd\"));\r\n\r\n  glewInfoFunc(\"glDeformSGIX\", glDeformSGIX == NULL);\r\n  glewInfoFunc(\"glLoadIdentityDeformationMapSGIX\", glLoadIdentityDeformationMapSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_polynomial_ffd */\r\n\r\n#ifdef GL_SGIX_quad_mesh\r\n\r\nstatic void _glewInfo_GL_SGIX_quad_mesh (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_quad_mesh\", GLEW_SGIX_quad_mesh, glewIsSupported(\"GL_SGIX_quad_mesh\"), glewGetExtension(\"GL_SGIX_quad_mesh\"));\r\n\r\n  glewInfoFunc(\"glMeshBreadthSGIX\", glMeshBreadthSGIX == NULL);\r\n  glewInfoFunc(\"glMeshStrideSGIX\", glMeshStrideSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_quad_mesh */\r\n\r\n#ifdef GL_SGIX_reference_plane\r\n\r\nstatic void _glewInfo_GL_SGIX_reference_plane (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_reference_plane\", GLEW_SGIX_reference_plane, glewIsSupported(\"GL_SGIX_reference_plane\"), glewGetExtension(\"GL_SGIX_reference_plane\"));\r\n\r\n  glewInfoFunc(\"glReferencePlaneSGIX\", glReferencePlaneSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_reference_plane */\r\n\r\n#ifdef GL_SGIX_resample\r\n\r\nstatic void _glewInfo_GL_SGIX_resample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_resample\", GLEW_SGIX_resample, glewIsSupported(\"GL_SGIX_resample\"), glewGetExtension(\"GL_SGIX_resample\"));\r\n}\r\n\r\n#endif /* GL_SGIX_resample */\r\n\r\n#ifdef GL_SGIX_scalebias_hint\r\n\r\nstatic void _glewInfo_GL_SGIX_scalebias_hint (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_scalebias_hint\", GLEW_SGIX_scalebias_hint, glewIsSupported(\"GL_SGIX_scalebias_hint\"), glewGetExtension(\"GL_SGIX_scalebias_hint\"));\r\n}\r\n\r\n#endif /* GL_SGIX_scalebias_hint */\r\n\r\n#ifdef GL_SGIX_shadow\r\n\r\nstatic void _glewInfo_GL_SGIX_shadow (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_shadow\", GLEW_SGIX_shadow, glewIsSupported(\"GL_SGIX_shadow\"), glewGetExtension(\"GL_SGIX_shadow\"));\r\n}\r\n\r\n#endif /* GL_SGIX_shadow */\r\n\r\n#ifdef GL_SGIX_shadow_ambient\r\n\r\nstatic void _glewInfo_GL_SGIX_shadow_ambient (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_shadow_ambient\", GLEW_SGIX_shadow_ambient, glewIsSupported(\"GL_SGIX_shadow_ambient\"), glewGetExtension(\"GL_SGIX_shadow_ambient\"));\r\n}\r\n\r\n#endif /* GL_SGIX_shadow_ambient */\r\n\r\n#ifdef GL_SGIX_slim\r\n\r\nstatic void _glewInfo_GL_SGIX_slim (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_slim\", GLEW_SGIX_slim, glewIsSupported(\"GL_SGIX_slim\"), glewGetExtension(\"GL_SGIX_slim\"));\r\n}\r\n\r\n#endif /* GL_SGIX_slim */\r\n\r\n#ifdef GL_SGIX_spotlight_cutoff\r\n\r\nstatic void _glewInfo_GL_SGIX_spotlight_cutoff (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_spotlight_cutoff\", GLEW_SGIX_spotlight_cutoff, glewIsSupported(\"GL_SGIX_spotlight_cutoff\"), glewGetExtension(\"GL_SGIX_spotlight_cutoff\"));\r\n}\r\n\r\n#endif /* GL_SGIX_spotlight_cutoff */\r\n\r\n#ifdef GL_SGIX_sprite\r\n\r\nstatic void _glewInfo_GL_SGIX_sprite (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_sprite\", GLEW_SGIX_sprite, glewIsSupported(\"GL_SGIX_sprite\"), glewGetExtension(\"GL_SGIX_sprite\"));\r\n\r\n  glewInfoFunc(\"glSpriteParameterfSGIX\", glSpriteParameterfSGIX == NULL);\r\n  glewInfoFunc(\"glSpriteParameterfvSGIX\", glSpriteParameterfvSGIX == NULL);\r\n  glewInfoFunc(\"glSpriteParameteriSGIX\", glSpriteParameteriSGIX == NULL);\r\n  glewInfoFunc(\"glSpriteParameterivSGIX\", glSpriteParameterivSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_sprite */\r\n\r\n#ifdef GL_SGIX_subdiv_patch\r\n\r\nstatic void _glewInfo_GL_SGIX_subdiv_patch (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_subdiv_patch\", GLEW_SGIX_subdiv_patch, glewIsSupported(\"GL_SGIX_subdiv_patch\"), glewGetExtension(\"GL_SGIX_subdiv_patch\"));\r\n}\r\n\r\n#endif /* GL_SGIX_subdiv_patch */\r\n\r\n#ifdef GL_SGIX_subsample\r\n\r\nstatic void _glewInfo_GL_SGIX_subsample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_subsample\", GLEW_SGIX_subsample, glewIsSupported(\"GL_SGIX_subsample\"), glewGetExtension(\"GL_SGIX_subsample\"));\r\n}\r\n\r\n#endif /* GL_SGIX_subsample */\r\n\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n\r\nstatic void _glewInfo_GL_SGIX_tag_sample_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_tag_sample_buffer\", GLEW_SGIX_tag_sample_buffer, glewIsSupported(\"GL_SGIX_tag_sample_buffer\"), glewGetExtension(\"GL_SGIX_tag_sample_buffer\"));\r\n\r\n  glewInfoFunc(\"glTagSampleBufferSGIX\", glTagSampleBufferSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_tag_sample_buffer */\r\n\r\n#ifdef GL_SGIX_texture_add_env\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_add_env (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_add_env\", GLEW_SGIX_texture_add_env, glewIsSupported(\"GL_SGIX_texture_add_env\"), glewGetExtension(\"GL_SGIX_texture_add_env\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_add_env */\r\n\r\n#ifdef GL_SGIX_texture_coordinate_clamp\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_coordinate_clamp (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_coordinate_clamp\", GLEW_SGIX_texture_coordinate_clamp, glewIsSupported(\"GL_SGIX_texture_coordinate_clamp\"), glewGetExtension(\"GL_SGIX_texture_coordinate_clamp\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_coordinate_clamp */\r\n\r\n#ifdef GL_SGIX_texture_lod_bias\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_lod_bias (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_lod_bias\", GLEW_SGIX_texture_lod_bias, glewIsSupported(\"GL_SGIX_texture_lod_bias\"), glewGetExtension(\"GL_SGIX_texture_lod_bias\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_lod_bias */\r\n\r\n#ifdef GL_SGIX_texture_mipmap_anisotropic\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_mipmap_anisotropic (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_mipmap_anisotropic\", GLEW_SGIX_texture_mipmap_anisotropic, glewIsSupported(\"GL_SGIX_texture_mipmap_anisotropic\"), glewGetExtension(\"GL_SGIX_texture_mipmap_anisotropic\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_mipmap_anisotropic */\r\n\r\n#ifdef GL_SGIX_texture_multi_buffer\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_multi_buffer (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_multi_buffer\", GLEW_SGIX_texture_multi_buffer, glewIsSupported(\"GL_SGIX_texture_multi_buffer\"), glewGetExtension(\"GL_SGIX_texture_multi_buffer\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_multi_buffer */\r\n\r\n#ifdef GL_SGIX_texture_phase\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_phase (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_phase\", GLEW_SGIX_texture_phase, glewIsSupported(\"GL_SGIX_texture_phase\"), glewGetExtension(\"GL_SGIX_texture_phase\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_phase */\r\n\r\n#ifdef GL_SGIX_texture_range\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_range (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_range\", GLEW_SGIX_texture_range, glewIsSupported(\"GL_SGIX_texture_range\"), glewGetExtension(\"GL_SGIX_texture_range\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_range */\r\n\r\n#ifdef GL_SGIX_texture_scale_bias\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_scale_bias (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_scale_bias\", GLEW_SGIX_texture_scale_bias, glewIsSupported(\"GL_SGIX_texture_scale_bias\"), glewGetExtension(\"GL_SGIX_texture_scale_bias\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_scale_bias */\r\n\r\n#ifdef GL_SGIX_texture_supersample\r\n\r\nstatic void _glewInfo_GL_SGIX_texture_supersample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_texture_supersample\", GLEW_SGIX_texture_supersample, glewIsSupported(\"GL_SGIX_texture_supersample\"), glewGetExtension(\"GL_SGIX_texture_supersample\"));\r\n}\r\n\r\n#endif /* GL_SGIX_texture_supersample */\r\n\r\n#ifdef GL_SGIX_vector_ops\r\n\r\nstatic void _glewInfo_GL_SGIX_vector_ops (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_vector_ops\", GLEW_SGIX_vector_ops, glewIsSupported(\"GL_SGIX_vector_ops\"), glewGetExtension(\"GL_SGIX_vector_ops\"));\r\n\r\n  glewInfoFunc(\"glGetVectorOperationSGIX\", glGetVectorOperationSGIX == NULL);\r\n  glewInfoFunc(\"glVectorOperationSGIX\", glVectorOperationSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_vector_ops */\r\n\r\n#ifdef GL_SGIX_vertex_array_object\r\n\r\nstatic void _glewInfo_GL_SGIX_vertex_array_object (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_vertex_array_object\", GLEW_SGIX_vertex_array_object, glewIsSupported(\"GL_SGIX_vertex_array_object\"), glewGetExtension(\"GL_SGIX_vertex_array_object\"));\r\n\r\n  glewInfoFunc(\"glAreVertexArraysResidentSGIX\", glAreVertexArraysResidentSGIX == NULL);\r\n  glewInfoFunc(\"glBindVertexArraySGIX\", glBindVertexArraySGIX == NULL);\r\n  glewInfoFunc(\"glDeleteVertexArraysSGIX\", glDeleteVertexArraysSGIX == NULL);\r\n  glewInfoFunc(\"glGenVertexArraysSGIX\", glGenVertexArraysSGIX == NULL);\r\n  glewInfoFunc(\"glIsVertexArraySGIX\", glIsVertexArraySGIX == NULL);\r\n  glewInfoFunc(\"glPrioritizeVertexArraysSGIX\", glPrioritizeVertexArraysSGIX == NULL);\r\n}\r\n\r\n#endif /* GL_SGIX_vertex_array_object */\r\n\r\n#ifdef GL_SGIX_vertex_preclip\r\n\r\nstatic void _glewInfo_GL_SGIX_vertex_preclip (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_vertex_preclip\", GLEW_SGIX_vertex_preclip, glewIsSupported(\"GL_SGIX_vertex_preclip\"), glewGetExtension(\"GL_SGIX_vertex_preclip\"));\r\n}\r\n\r\n#endif /* GL_SGIX_vertex_preclip */\r\n\r\n#ifdef GL_SGIX_vertex_preclip_hint\r\n\r\nstatic void _glewInfo_GL_SGIX_vertex_preclip_hint (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_vertex_preclip_hint\", GLEW_SGIX_vertex_preclip_hint, glewIsSupported(\"GL_SGIX_vertex_preclip_hint\"), glewGetExtension(\"GL_SGIX_vertex_preclip_hint\"));\r\n}\r\n\r\n#endif /* GL_SGIX_vertex_preclip_hint */\r\n\r\n#ifdef GL_SGIX_ycrcb\r\n\r\nstatic void _glewInfo_GL_SGIX_ycrcb (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_ycrcb\", GLEW_SGIX_ycrcb, glewIsSupported(\"GL_SGIX_ycrcb\"), glewGetExtension(\"GL_SGIX_ycrcb\"));\r\n}\r\n\r\n#endif /* GL_SGIX_ycrcb */\r\n\r\n#ifdef GL_SGIX_ycrcb_subsample\r\n\r\nstatic void _glewInfo_GL_SGIX_ycrcb_subsample (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_ycrcb_subsample\", GLEW_SGIX_ycrcb_subsample, glewIsSupported(\"GL_SGIX_ycrcb_subsample\"), glewGetExtension(\"GL_SGIX_ycrcb_subsample\"));\r\n}\r\n\r\n#endif /* GL_SGIX_ycrcb_subsample */\r\n\r\n#ifdef GL_SGIX_ycrcba\r\n\r\nstatic void _glewInfo_GL_SGIX_ycrcba (void)\r\n{\r\n  glewPrintExt(\"GL_SGIX_ycrcba\", GLEW_SGIX_ycrcba, glewIsSupported(\"GL_SGIX_ycrcba\"), glewGetExtension(\"GL_SGIX_ycrcba\"));\r\n}\r\n\r\n#endif /* GL_SGIX_ycrcba */\r\n\r\n#ifdef GL_SGI_color_matrix\r\n\r\nstatic void _glewInfo_GL_SGI_color_matrix (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_color_matrix\", GLEW_SGI_color_matrix, glewIsSupported(\"GL_SGI_color_matrix\"), glewGetExtension(\"GL_SGI_color_matrix\"));\r\n}\r\n\r\n#endif /* GL_SGI_color_matrix */\r\n\r\n#ifdef GL_SGI_color_table\r\n\r\nstatic void _glewInfo_GL_SGI_color_table (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_color_table\", GLEW_SGI_color_table, glewIsSupported(\"GL_SGI_color_table\"), glewGetExtension(\"GL_SGI_color_table\"));\r\n\r\n  glewInfoFunc(\"glColorTableParameterfvSGI\", glColorTableParameterfvSGI == NULL);\r\n  glewInfoFunc(\"glColorTableParameterivSGI\", glColorTableParameterivSGI == NULL);\r\n  glewInfoFunc(\"glColorTableSGI\", glColorTableSGI == NULL);\r\n  glewInfoFunc(\"glCopyColorTableSGI\", glCopyColorTableSGI == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameterfvSGI\", glGetColorTableParameterfvSGI == NULL);\r\n  glewInfoFunc(\"glGetColorTableParameterivSGI\", glGetColorTableParameterivSGI == NULL);\r\n  glewInfoFunc(\"glGetColorTableSGI\", glGetColorTableSGI == NULL);\r\n}\r\n\r\n#endif /* GL_SGI_color_table */\r\n\r\n#ifdef GL_SGI_complex\r\n\r\nstatic void _glewInfo_GL_SGI_complex (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_complex\", GLEW_SGI_complex, glewIsSupported(\"GL_SGI_complex\"), glewGetExtension(\"GL_SGI_complex\"));\r\n}\r\n\r\n#endif /* GL_SGI_complex */\r\n\r\n#ifdef GL_SGI_complex_type\r\n\r\nstatic void _glewInfo_GL_SGI_complex_type (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_complex_type\", GLEW_SGI_complex_type, glewIsSupported(\"GL_SGI_complex_type\"), glewGetExtension(\"GL_SGI_complex_type\"));\r\n}\r\n\r\n#endif /* GL_SGI_complex_type */\r\n\r\n#ifdef GL_SGI_fft\r\n\r\nstatic void _glewInfo_GL_SGI_fft (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_fft\", GLEW_SGI_fft, glewIsSupported(\"GL_SGI_fft\"), glewGetExtension(\"GL_SGI_fft\"));\r\n\r\n  glewInfoFunc(\"glGetPixelTransformParameterfvSGI\", glGetPixelTransformParameterfvSGI == NULL);\r\n  glewInfoFunc(\"glGetPixelTransformParameterivSGI\", glGetPixelTransformParameterivSGI == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterfSGI\", glPixelTransformParameterfSGI == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterfvSGI\", glPixelTransformParameterfvSGI == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameteriSGI\", glPixelTransformParameteriSGI == NULL);\r\n  glewInfoFunc(\"glPixelTransformParameterivSGI\", glPixelTransformParameterivSGI == NULL);\r\n  glewInfoFunc(\"glPixelTransformSGI\", glPixelTransformSGI == NULL);\r\n}\r\n\r\n#endif /* GL_SGI_fft */\r\n\r\n#ifdef GL_SGI_texture_color_table\r\n\r\nstatic void _glewInfo_GL_SGI_texture_color_table (void)\r\n{\r\n  glewPrintExt(\"GL_SGI_texture_color_table\", GLEW_SGI_texture_color_table, glewIsSupported(\"GL_SGI_texture_color_table\"), glewGetExtension(\"GL_SGI_texture_color_table\"));\r\n}\r\n\r\n#endif /* GL_SGI_texture_color_table */\r\n\r\n#ifdef GL_SUNX_constant_data\r\n\r\nstatic void _glewInfo_GL_SUNX_constant_data (void)\r\n{\r\n  glewPrintExt(\"GL_SUNX_constant_data\", GLEW_SUNX_constant_data, glewIsSupported(\"GL_SUNX_constant_data\"), glewGetExtension(\"GL_SUNX_constant_data\"));\r\n\r\n  glewInfoFunc(\"glFinishTextureSUNX\", glFinishTextureSUNX == NULL);\r\n}\r\n\r\n#endif /* GL_SUNX_constant_data */\r\n\r\n#ifdef GL_SUN_convolution_border_modes\r\n\r\nstatic void _glewInfo_GL_SUN_convolution_border_modes (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_convolution_border_modes\", GLEW_SUN_convolution_border_modes, glewIsSupported(\"GL_SUN_convolution_border_modes\"), glewGetExtension(\"GL_SUN_convolution_border_modes\"));\r\n}\r\n\r\n#endif /* GL_SUN_convolution_border_modes */\r\n\r\n#ifdef GL_SUN_global_alpha\r\n\r\nstatic void _glewInfo_GL_SUN_global_alpha (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_global_alpha\", GLEW_SUN_global_alpha, glewIsSupported(\"GL_SUN_global_alpha\"), glewGetExtension(\"GL_SUN_global_alpha\"));\r\n\r\n  glewInfoFunc(\"glGlobalAlphaFactorbSUN\", glGlobalAlphaFactorbSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactordSUN\", glGlobalAlphaFactordSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactorfSUN\", glGlobalAlphaFactorfSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactoriSUN\", glGlobalAlphaFactoriSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactorsSUN\", glGlobalAlphaFactorsSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactorubSUN\", glGlobalAlphaFactorubSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactoruiSUN\", glGlobalAlphaFactoruiSUN == NULL);\r\n  glewInfoFunc(\"glGlobalAlphaFactorusSUN\", glGlobalAlphaFactorusSUN == NULL);\r\n}\r\n\r\n#endif /* GL_SUN_global_alpha */\r\n\r\n#ifdef GL_SUN_mesh_array\r\n\r\nstatic void _glewInfo_GL_SUN_mesh_array (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_mesh_array\", GLEW_SUN_mesh_array, glewIsSupported(\"GL_SUN_mesh_array\"), glewGetExtension(\"GL_SUN_mesh_array\"));\r\n}\r\n\r\n#endif /* GL_SUN_mesh_array */\r\n\r\n#ifdef GL_SUN_read_video_pixels\r\n\r\nstatic void _glewInfo_GL_SUN_read_video_pixels (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_read_video_pixels\", GLEW_SUN_read_video_pixels, glewIsSupported(\"GL_SUN_read_video_pixels\"), glewGetExtension(\"GL_SUN_read_video_pixels\"));\r\n\r\n  glewInfoFunc(\"glReadVideoPixelsSUN\", glReadVideoPixelsSUN == NULL);\r\n}\r\n\r\n#endif /* GL_SUN_read_video_pixels */\r\n\r\n#ifdef GL_SUN_slice_accum\r\n\r\nstatic void _glewInfo_GL_SUN_slice_accum (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_slice_accum\", GLEW_SUN_slice_accum, glewIsSupported(\"GL_SUN_slice_accum\"), glewGetExtension(\"GL_SUN_slice_accum\"));\r\n}\r\n\r\n#endif /* GL_SUN_slice_accum */\r\n\r\n#ifdef GL_SUN_triangle_list\r\n\r\nstatic void _glewInfo_GL_SUN_triangle_list (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_triangle_list\", GLEW_SUN_triangle_list, glewIsSupported(\"GL_SUN_triangle_list\"), glewGetExtension(\"GL_SUN_triangle_list\"));\r\n\r\n  glewInfoFunc(\"glReplacementCodePointerSUN\", glReplacementCodePointerSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeubSUN\", glReplacementCodeubSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeubvSUN\", glReplacementCodeubvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiSUN\", glReplacementCodeuiSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuivSUN\", glReplacementCodeuivSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeusSUN\", glReplacementCodeusSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeusvSUN\", glReplacementCodeusvSUN == NULL);\r\n}\r\n\r\n#endif /* GL_SUN_triangle_list */\r\n\r\n#ifdef GL_SUN_vertex\r\n\r\nstatic void _glewInfo_GL_SUN_vertex (void)\r\n{\r\n  glewPrintExt(\"GL_SUN_vertex\", GLEW_SUN_vertex, glewIsSupported(\"GL_SUN_vertex\"), glewGetExtension(\"GL_SUN_vertex\"));\r\n\r\n  glewInfoFunc(\"glColor3fVertex3fSUN\", glColor3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glColor3fVertex3fvSUN\", glColor3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glColor4fNormal3fVertex3fSUN\", glColor4fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glColor4fNormal3fVertex3fvSUN\", glColor4fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glColor4ubVertex2fSUN\", glColor4ubVertex2fSUN == NULL);\r\n  glewInfoFunc(\"glColor4ubVertex2fvSUN\", glColor4ubVertex2fvSUN == NULL);\r\n  glewInfoFunc(\"glColor4ubVertex3fSUN\", glColor4ubVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glColor4ubVertex3fvSUN\", glColor4ubVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glNormal3fVertex3fSUN\", glNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glNormal3fVertex3fvSUN\", glNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor3fVertex3fSUN\", glReplacementCodeuiColor3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor3fVertex3fvSUN\", glReplacementCodeuiColor3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor4fNormal3fVertex3fSUN\", glReplacementCodeuiColor4fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\", glReplacementCodeuiColor4fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor4ubVertex3fSUN\", glReplacementCodeuiColor4ubVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiColor4ubVertex3fvSUN\", glReplacementCodeuiColor4ubVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiNormal3fVertex3fSUN\", glReplacementCodeuiNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiNormal3fVertex3fvSUN\", glReplacementCodeuiNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\", glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\", glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fVertex3fSUN\", glReplacementCodeuiTexCoord2fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiTexCoord2fVertex3fvSUN\", glReplacementCodeuiTexCoord2fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiVertex3fSUN\", glReplacementCodeuiVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glReplacementCodeuiVertex3fvSUN\", glReplacementCodeuiVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor3fVertex3fSUN\", glTexCoord2fColor3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor3fVertex3fvSUN\", glTexCoord2fColor3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor4fNormal3fVertex3fSUN\", glTexCoord2fColor4fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor4fNormal3fVertex3fvSUN\", glTexCoord2fColor4fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor4ubVertex3fSUN\", glTexCoord2fColor4ubVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fColor4ubVertex3fvSUN\", glTexCoord2fColor4ubVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fNormal3fVertex3fSUN\", glTexCoord2fNormal3fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fNormal3fVertex3fvSUN\", glTexCoord2fNormal3fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fVertex3fSUN\", glTexCoord2fVertex3fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord2fVertex3fvSUN\", glTexCoord2fVertex3fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord4fColor4fNormal3fVertex4fSUN\", glTexCoord4fColor4fNormal3fVertex4fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord4fColor4fNormal3fVertex4fvSUN\", glTexCoord4fColor4fNormal3fVertex4fvSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord4fVertex4fSUN\", glTexCoord4fVertex4fSUN == NULL);\r\n  glewInfoFunc(\"glTexCoord4fVertex4fvSUN\", glTexCoord4fVertex4fvSUN == NULL);\r\n}\r\n\r\n#endif /* GL_SUN_vertex */\r\n\r\n#ifdef GL_WIN_phong_shading\r\n\r\nstatic void _glewInfo_GL_WIN_phong_shading (void)\r\n{\r\n  glewPrintExt(\"GL_WIN_phong_shading\", GLEW_WIN_phong_shading, glewIsSupported(\"GL_WIN_phong_shading\"), glewGetExtension(\"GL_WIN_phong_shading\"));\r\n}\r\n\r\n#endif /* GL_WIN_phong_shading */\r\n\r\n#ifdef GL_WIN_scene_markerXXX\r\n\r\nstatic void _glewInfo_GL_WIN_scene_markerXXX (void)\r\n{\r\n  glewPrintExt(\"GL_WIN_scene_markerXXX\", GLEW_WIN_scene_markerXXX, glewIsSupported(\"GL_WIN_scene_markerXXX\"), glewGetExtension(\"GL_WIN_scene_markerXXX\"));\r\n}\r\n\r\n#endif /* GL_WIN_scene_markerXXX */\r\n\r\n#ifdef GL_WIN_specular_fog\r\n\r\nstatic void _glewInfo_GL_WIN_specular_fog (void)\r\n{\r\n  glewPrintExt(\"GL_WIN_specular_fog\", GLEW_WIN_specular_fog, glewIsSupported(\"GL_WIN_specular_fog\"), glewGetExtension(\"GL_WIN_specular_fog\"));\r\n}\r\n\r\n#endif /* GL_WIN_specular_fog */\r\n\r\n#ifdef GL_WIN_swap_hint\r\n\r\nstatic void _glewInfo_GL_WIN_swap_hint (void)\r\n{\r\n  glewPrintExt(\"GL_WIN_swap_hint\", GLEW_WIN_swap_hint, glewIsSupported(\"GL_WIN_swap_hint\"), glewGetExtension(\"GL_WIN_swap_hint\"));\r\n\r\n  glewInfoFunc(\"glAddSwapHintRectWIN\", glAddSwapHintRectWIN == NULL);\r\n}\r\n\r\n#endif /* GL_WIN_swap_hint */\r\n\r\n#if defined(GLEW_EGL)\r\n\r\n#ifdef EGL_VERSION_1_0\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_0 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_0\", EGLEW_VERSION_1_0, EGLEW_VERSION_1_0, EGLEW_VERSION_1_0);\r\n\r\n  glewInfoFunc(\"eglChooseConfig\", eglChooseConfig == NULL);\r\n  glewInfoFunc(\"eglCopyBuffers\", eglCopyBuffers == NULL);\r\n  glewInfoFunc(\"eglCreateContext\", eglCreateContext == NULL);\r\n  glewInfoFunc(\"eglCreatePbufferSurface\", eglCreatePbufferSurface == NULL);\r\n  glewInfoFunc(\"eglCreatePixmapSurface\", eglCreatePixmapSurface == NULL);\r\n  glewInfoFunc(\"eglCreateWindowSurface\", eglCreateWindowSurface == NULL);\r\n  glewInfoFunc(\"eglDestroyContext\", eglDestroyContext == NULL);\r\n  glewInfoFunc(\"eglDestroySurface\", eglDestroySurface == NULL);\r\n  glewInfoFunc(\"eglGetConfigAttrib\", eglGetConfigAttrib == NULL);\r\n  glewInfoFunc(\"eglGetConfigs\", eglGetConfigs == NULL);\r\n  glewInfoFunc(\"eglGetCurrentDisplay\", eglGetCurrentDisplay == NULL);\r\n  glewInfoFunc(\"eglGetCurrentSurface\", eglGetCurrentSurface == NULL);\r\n  glewInfoFunc(\"eglGetDisplay\", eglGetDisplay == NULL);\r\n  glewInfoFunc(\"eglGetError\", eglGetError == NULL);\r\n  glewInfoFunc(\"eglInitialize\", eglInitialize == NULL);\r\n  glewInfoFunc(\"eglMakeCurrent\", eglMakeCurrent == NULL);\r\n  glewInfoFunc(\"eglQueryContext\", eglQueryContext == NULL);\r\n  glewInfoFunc(\"eglQueryString\", eglQueryString == NULL);\r\n  glewInfoFunc(\"eglQuerySurface\", eglQuerySurface == NULL);\r\n  glewInfoFunc(\"eglSwapBuffers\", eglSwapBuffers == NULL);\r\n  glewInfoFunc(\"eglTerminate\", eglTerminate == NULL);\r\n  glewInfoFunc(\"eglWaitGL\", eglWaitGL == NULL);\r\n  glewInfoFunc(\"eglWaitNative\", eglWaitNative == NULL);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_0 */\r\n\r\n#ifdef EGL_VERSION_1_1\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_1 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_1\", EGLEW_VERSION_1_1, EGLEW_VERSION_1_1, EGLEW_VERSION_1_1);\r\n\r\n  glewInfoFunc(\"eglBindTexImage\", eglBindTexImage == NULL);\r\n  glewInfoFunc(\"eglReleaseTexImage\", eglReleaseTexImage == NULL);\r\n  glewInfoFunc(\"eglSurfaceAttrib\", eglSurfaceAttrib == NULL);\r\n  glewInfoFunc(\"eglSwapInterval\", eglSwapInterval == NULL);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_1 */\r\n\r\n#ifdef EGL_VERSION_1_2\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_2 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_2\", EGLEW_VERSION_1_2, EGLEW_VERSION_1_2, EGLEW_VERSION_1_2);\r\n\r\n  glewInfoFunc(\"eglBindAPI\", eglBindAPI == NULL);\r\n  glewInfoFunc(\"eglCreatePbufferFromClientBuffer\", eglCreatePbufferFromClientBuffer == NULL);\r\n  glewInfoFunc(\"eglQueryAPI\", eglQueryAPI == NULL);\r\n  glewInfoFunc(\"eglReleaseThread\", eglReleaseThread == NULL);\r\n  glewInfoFunc(\"eglWaitClient\", eglWaitClient == NULL);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_2 */\r\n\r\n#ifdef EGL_VERSION_1_3\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_3 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_3\", EGLEW_VERSION_1_3, EGLEW_VERSION_1_3, EGLEW_VERSION_1_3);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_3 */\r\n\r\n#ifdef EGL_VERSION_1_4\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_4 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_4\", EGLEW_VERSION_1_4, EGLEW_VERSION_1_4, EGLEW_VERSION_1_4);\r\n\r\n  glewInfoFunc(\"eglGetCurrentContext\", eglGetCurrentContext == NULL);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_4 */\r\n\r\n#ifdef EGL_VERSION_1_5\r\n\r\nstatic void _glewInfo_EGL_VERSION_1_5 (void)\r\n{\r\n  glewPrintExt(\"EGL_VERSION_1_5\", EGLEW_VERSION_1_5, EGLEW_VERSION_1_5, EGLEW_VERSION_1_5);\r\n\r\n  glewInfoFunc(\"eglClientWaitSync\", eglClientWaitSync == NULL);\r\n  glewInfoFunc(\"eglCreateImage\", eglCreateImage == NULL);\r\n  glewInfoFunc(\"eglCreatePlatformPixmapSurface\", eglCreatePlatformPixmapSurface == NULL);\r\n  glewInfoFunc(\"eglCreatePlatformWindowSurface\", eglCreatePlatformWindowSurface == NULL);\r\n  glewInfoFunc(\"eglCreateSync\", eglCreateSync == NULL);\r\n  glewInfoFunc(\"eglDestroyImage\", eglDestroyImage == NULL);\r\n  glewInfoFunc(\"eglDestroySync\", eglDestroySync == NULL);\r\n  glewInfoFunc(\"eglGetPlatformDisplay\", eglGetPlatformDisplay == NULL);\r\n  glewInfoFunc(\"eglGetSyncAttrib\", eglGetSyncAttrib == NULL);\r\n  glewInfoFunc(\"eglWaitSync\", eglWaitSync == NULL);\r\n}\r\n\r\n#endif /* EGL_VERSION_1_5 */\r\n\r\n#ifdef EGL_ANDROID_blob_cache\r\n\r\nstatic void _glewInfo_EGL_ANDROID_blob_cache (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_blob_cache\", EGLEW_ANDROID_blob_cache, eglewIsSupported(\"EGL_ANDROID_blob_cache\"), eglewGetExtension(\"EGL_ANDROID_blob_cache\"));\r\n\r\n  glewInfoFunc(\"eglSetBlobCacheFuncsANDROID\", eglSetBlobCacheFuncsANDROID == NULL);\r\n}\r\n\r\n#endif /* EGL_ANDROID_blob_cache */\r\n\r\n#ifdef EGL_ANDROID_create_native_client_buffer\r\n\r\nstatic void _glewInfo_EGL_ANDROID_create_native_client_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_create_native_client_buffer\", EGLEW_ANDROID_create_native_client_buffer, eglewIsSupported(\"EGL_ANDROID_create_native_client_buffer\"), eglewGetExtension(\"EGL_ANDROID_create_native_client_buffer\"));\r\n\r\n  glewInfoFunc(\"eglCreateNativeClientBufferANDROID\", eglCreateNativeClientBufferANDROID == NULL);\r\n}\r\n\r\n#endif /* EGL_ANDROID_create_native_client_buffer */\r\n\r\n#ifdef EGL_ANDROID_framebuffer_target\r\n\r\nstatic void _glewInfo_EGL_ANDROID_framebuffer_target (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_framebuffer_target\", EGLEW_ANDROID_framebuffer_target, eglewIsSupported(\"EGL_ANDROID_framebuffer_target\"), eglewGetExtension(\"EGL_ANDROID_framebuffer_target\"));\r\n}\r\n\r\n#endif /* EGL_ANDROID_framebuffer_target */\r\n\r\n#ifdef EGL_ANDROID_front_buffer_auto_refresh\r\n\r\nstatic void _glewInfo_EGL_ANDROID_front_buffer_auto_refresh (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_front_buffer_auto_refresh\", EGLEW_ANDROID_front_buffer_auto_refresh, eglewIsSupported(\"EGL_ANDROID_front_buffer_auto_refresh\"), eglewGetExtension(\"EGL_ANDROID_front_buffer_auto_refresh\"));\r\n}\r\n\r\n#endif /* EGL_ANDROID_front_buffer_auto_refresh */\r\n\r\n#ifdef EGL_ANDROID_image_native_buffer\r\n\r\nstatic void _glewInfo_EGL_ANDROID_image_native_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_image_native_buffer\", EGLEW_ANDROID_image_native_buffer, eglewIsSupported(\"EGL_ANDROID_image_native_buffer\"), eglewGetExtension(\"EGL_ANDROID_image_native_buffer\"));\r\n}\r\n\r\n#endif /* EGL_ANDROID_image_native_buffer */\r\n\r\n#ifdef EGL_ANDROID_native_fence_sync\r\n\r\nstatic void _glewInfo_EGL_ANDROID_native_fence_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_native_fence_sync\", EGLEW_ANDROID_native_fence_sync, eglewIsSupported(\"EGL_ANDROID_native_fence_sync\"), eglewGetExtension(\"EGL_ANDROID_native_fence_sync\"));\r\n\r\n  glewInfoFunc(\"eglDupNativeFenceFDANDROID\", eglDupNativeFenceFDANDROID == NULL);\r\n}\r\n\r\n#endif /* EGL_ANDROID_native_fence_sync */\r\n\r\n#ifdef EGL_ANDROID_presentation_time\r\n\r\nstatic void _glewInfo_EGL_ANDROID_presentation_time (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_presentation_time\", EGLEW_ANDROID_presentation_time, eglewIsSupported(\"EGL_ANDROID_presentation_time\"), eglewGetExtension(\"EGL_ANDROID_presentation_time\"));\r\n\r\n  glewInfoFunc(\"eglPresentationTimeANDROID\", eglPresentationTimeANDROID == NULL);\r\n}\r\n\r\n#endif /* EGL_ANDROID_presentation_time */\r\n\r\n#ifdef EGL_ANDROID_recordable\r\n\r\nstatic void _glewInfo_EGL_ANDROID_recordable (void)\r\n{\r\n  glewPrintExt(\"EGL_ANDROID_recordable\", EGLEW_ANDROID_recordable, eglewIsSupported(\"EGL_ANDROID_recordable\"), eglewGetExtension(\"EGL_ANDROID_recordable\"));\r\n}\r\n\r\n#endif /* EGL_ANDROID_recordable */\r\n\r\n#ifdef EGL_ANGLE_d3d_share_handle_client_buffer\r\n\r\nstatic void _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_ANGLE_d3d_share_handle_client_buffer\", EGLEW_ANGLE_d3d_share_handle_client_buffer, eglewIsSupported(\"EGL_ANGLE_d3d_share_handle_client_buffer\"), eglewGetExtension(\"EGL_ANGLE_d3d_share_handle_client_buffer\"));\r\n}\r\n\r\n#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */\r\n\r\n#ifdef EGL_ANGLE_device_d3d\r\n\r\nstatic void _glewInfo_EGL_ANGLE_device_d3d (void)\r\n{\r\n  glewPrintExt(\"EGL_ANGLE_device_d3d\", EGLEW_ANGLE_device_d3d, eglewIsSupported(\"EGL_ANGLE_device_d3d\"), eglewGetExtension(\"EGL_ANGLE_device_d3d\"));\r\n}\r\n\r\n#endif /* EGL_ANGLE_device_d3d */\r\n\r\n#ifdef EGL_ANGLE_query_surface_pointer\r\n\r\nstatic void _glewInfo_EGL_ANGLE_query_surface_pointer (void)\r\n{\r\n  glewPrintExt(\"EGL_ANGLE_query_surface_pointer\", EGLEW_ANGLE_query_surface_pointer, eglewIsSupported(\"EGL_ANGLE_query_surface_pointer\"), eglewGetExtension(\"EGL_ANGLE_query_surface_pointer\"));\r\n\r\n  glewInfoFunc(\"eglQuerySurfacePointerANGLE\", eglQuerySurfacePointerANGLE == NULL);\r\n}\r\n\r\n#endif /* EGL_ANGLE_query_surface_pointer */\r\n\r\n#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle\r\n\r\nstatic void _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle (void)\r\n{\r\n  glewPrintExt(\"EGL_ANGLE_surface_d3d_texture_2d_share_handle\", EGLEW_ANGLE_surface_d3d_texture_2d_share_handle, eglewIsSupported(\"EGL_ANGLE_surface_d3d_texture_2d_share_handle\"), eglewGetExtension(\"EGL_ANGLE_surface_d3d_texture_2d_share_handle\"));\r\n}\r\n\r\n#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */\r\n\r\n#ifdef EGL_ANGLE_window_fixed_size\r\n\r\nstatic void _glewInfo_EGL_ANGLE_window_fixed_size (void)\r\n{\r\n  glewPrintExt(\"EGL_ANGLE_window_fixed_size\", EGLEW_ANGLE_window_fixed_size, eglewIsSupported(\"EGL_ANGLE_window_fixed_size\"), eglewGetExtension(\"EGL_ANGLE_window_fixed_size\"));\r\n}\r\n\r\n#endif /* EGL_ANGLE_window_fixed_size */\r\n\r\n#ifdef EGL_ARM_implicit_external_sync\r\n\r\nstatic void _glewInfo_EGL_ARM_implicit_external_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_ARM_implicit_external_sync\", EGLEW_ARM_implicit_external_sync, eglewIsSupported(\"EGL_ARM_implicit_external_sync\"), eglewGetExtension(\"EGL_ARM_implicit_external_sync\"));\r\n}\r\n\r\n#endif /* EGL_ARM_implicit_external_sync */\r\n\r\n#ifdef EGL_ARM_pixmap_multisample_discard\r\n\r\nstatic void _glewInfo_EGL_ARM_pixmap_multisample_discard (void)\r\n{\r\n  glewPrintExt(\"EGL_ARM_pixmap_multisample_discard\", EGLEW_ARM_pixmap_multisample_discard, eglewIsSupported(\"EGL_ARM_pixmap_multisample_discard\"), eglewGetExtension(\"EGL_ARM_pixmap_multisample_discard\"));\r\n}\r\n\r\n#endif /* EGL_ARM_pixmap_multisample_discard */\r\n\r\n#ifdef EGL_EXT_buffer_age\r\n\r\nstatic void _glewInfo_EGL_EXT_buffer_age (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_buffer_age\", EGLEW_EXT_buffer_age, eglewIsSupported(\"EGL_EXT_buffer_age\"), eglewGetExtension(\"EGL_EXT_buffer_age\"));\r\n}\r\n\r\n#endif /* EGL_EXT_buffer_age */\r\n\r\n#ifdef EGL_EXT_client_extensions\r\n\r\nstatic void _glewInfo_EGL_EXT_client_extensions (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_client_extensions\", EGLEW_EXT_client_extensions, eglewIsSupported(\"EGL_EXT_client_extensions\"), eglewGetExtension(\"EGL_EXT_client_extensions\"));\r\n}\r\n\r\n#endif /* EGL_EXT_client_extensions */\r\n\r\n#ifdef EGL_EXT_create_context_robustness\r\n\r\nstatic void _glewInfo_EGL_EXT_create_context_robustness (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_create_context_robustness\", EGLEW_EXT_create_context_robustness, eglewIsSupported(\"EGL_EXT_create_context_robustness\"), eglewGetExtension(\"EGL_EXT_create_context_robustness\"));\r\n}\r\n\r\n#endif /* EGL_EXT_create_context_robustness */\r\n\r\n#ifdef EGL_EXT_device_base\r\n\r\nstatic void _glewInfo_EGL_EXT_device_base (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_device_base\", EGLEW_EXT_device_base, eglewIsSupported(\"EGL_EXT_device_base\"), eglewGetExtension(\"EGL_EXT_device_base\"));\r\n}\r\n\r\n#endif /* EGL_EXT_device_base */\r\n\r\n#ifdef EGL_EXT_device_drm\r\n\r\nstatic void _glewInfo_EGL_EXT_device_drm (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_device_drm\", EGLEW_EXT_device_drm, eglewIsSupported(\"EGL_EXT_device_drm\"), eglewGetExtension(\"EGL_EXT_device_drm\"));\r\n}\r\n\r\n#endif /* EGL_EXT_device_drm */\r\n\r\n#ifdef EGL_EXT_device_enumeration\r\n\r\nstatic void _glewInfo_EGL_EXT_device_enumeration (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_device_enumeration\", EGLEW_EXT_device_enumeration, eglewIsSupported(\"EGL_EXT_device_enumeration\"), eglewGetExtension(\"EGL_EXT_device_enumeration\"));\r\n\r\n  glewInfoFunc(\"eglQueryDevicesEXT\", eglQueryDevicesEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_device_enumeration */\r\n\r\n#ifdef EGL_EXT_device_openwf\r\n\r\nstatic void _glewInfo_EGL_EXT_device_openwf (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_device_openwf\", EGLEW_EXT_device_openwf, eglewIsSupported(\"EGL_EXT_device_openwf\"), eglewGetExtension(\"EGL_EXT_device_openwf\"));\r\n}\r\n\r\n#endif /* EGL_EXT_device_openwf */\r\n\r\n#ifdef EGL_EXT_device_query\r\n\r\nstatic void _glewInfo_EGL_EXT_device_query (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_device_query\", EGLEW_EXT_device_query, eglewIsSupported(\"EGL_EXT_device_query\"), eglewGetExtension(\"EGL_EXT_device_query\"));\r\n\r\n  glewInfoFunc(\"eglQueryDeviceAttribEXT\", eglQueryDeviceAttribEXT == NULL);\r\n  glewInfoFunc(\"eglQueryDeviceStringEXT\", eglQueryDeviceStringEXT == NULL);\r\n  glewInfoFunc(\"eglQueryDisplayAttribEXT\", eglQueryDisplayAttribEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_device_query */\r\n\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_linear\r\n\r\nstatic void _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_gl_colorspace_bt2020_linear\", EGLEW_EXT_gl_colorspace_bt2020_linear, eglewIsSupported(\"EGL_EXT_gl_colorspace_bt2020_linear\"), eglewGetExtension(\"EGL_EXT_gl_colorspace_bt2020_linear\"));\r\n}\r\n\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_linear */\r\n\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_pq\r\n\r\nstatic void _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_gl_colorspace_bt2020_pq\", EGLEW_EXT_gl_colorspace_bt2020_pq, eglewIsSupported(\"EGL_EXT_gl_colorspace_bt2020_pq\"), eglewGetExtension(\"EGL_EXT_gl_colorspace_bt2020_pq\"));\r\n}\r\n\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_pq */\r\n\r\n#ifdef EGL_EXT_gl_colorspace_scrgb_linear\r\n\r\nstatic void _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_gl_colorspace_scrgb_linear\", EGLEW_EXT_gl_colorspace_scrgb_linear, eglewIsSupported(\"EGL_EXT_gl_colorspace_scrgb_linear\"), eglewGetExtension(\"EGL_EXT_gl_colorspace_scrgb_linear\"));\r\n}\r\n\r\n#endif /* EGL_EXT_gl_colorspace_scrgb_linear */\r\n\r\n#ifdef EGL_EXT_image_dma_buf_import\r\n\r\nstatic void _glewInfo_EGL_EXT_image_dma_buf_import (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_image_dma_buf_import\", EGLEW_EXT_image_dma_buf_import, eglewIsSupported(\"EGL_EXT_image_dma_buf_import\"), eglewGetExtension(\"EGL_EXT_image_dma_buf_import\"));\r\n}\r\n\r\n#endif /* EGL_EXT_image_dma_buf_import */\r\n\r\n#ifdef EGL_EXT_image_dma_buf_import_modifiers\r\n\r\nstatic void _glewInfo_EGL_EXT_image_dma_buf_import_modifiers (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_image_dma_buf_import_modifiers\", EGLEW_EXT_image_dma_buf_import_modifiers, eglewIsSupported(\"EGL_EXT_image_dma_buf_import_modifiers\"), eglewGetExtension(\"EGL_EXT_image_dma_buf_import_modifiers\"));\r\n\r\n  glewInfoFunc(\"eglQueryDmaBufFormatsEXT\", eglQueryDmaBufFormatsEXT == NULL);\r\n  glewInfoFunc(\"eglQueryDmaBufModifiersEXT\", eglQueryDmaBufModifiersEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_image_dma_buf_import_modifiers */\r\n\r\n#ifdef EGL_EXT_multiview_window\r\n\r\nstatic void _glewInfo_EGL_EXT_multiview_window (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_multiview_window\", EGLEW_EXT_multiview_window, eglewIsSupported(\"EGL_EXT_multiview_window\"), eglewGetExtension(\"EGL_EXT_multiview_window\"));\r\n}\r\n\r\n#endif /* EGL_EXT_multiview_window */\r\n\r\n#ifdef EGL_EXT_output_base\r\n\r\nstatic void _glewInfo_EGL_EXT_output_base (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_output_base\", EGLEW_EXT_output_base, eglewIsSupported(\"EGL_EXT_output_base\"), eglewGetExtension(\"EGL_EXT_output_base\"));\r\n\r\n  glewInfoFunc(\"eglGetOutputLayersEXT\", eglGetOutputLayersEXT == NULL);\r\n  glewInfoFunc(\"eglGetOutputPortsEXT\", eglGetOutputPortsEXT == NULL);\r\n  glewInfoFunc(\"eglOutputLayerAttribEXT\", eglOutputLayerAttribEXT == NULL);\r\n  glewInfoFunc(\"eglOutputPortAttribEXT\", eglOutputPortAttribEXT == NULL);\r\n  glewInfoFunc(\"eglQueryOutputLayerAttribEXT\", eglQueryOutputLayerAttribEXT == NULL);\r\n  glewInfoFunc(\"eglQueryOutputLayerStringEXT\", eglQueryOutputLayerStringEXT == NULL);\r\n  glewInfoFunc(\"eglQueryOutputPortAttribEXT\", eglQueryOutputPortAttribEXT == NULL);\r\n  glewInfoFunc(\"eglQueryOutputPortStringEXT\", eglQueryOutputPortStringEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_output_base */\r\n\r\n#ifdef EGL_EXT_output_drm\r\n\r\nstatic void _glewInfo_EGL_EXT_output_drm (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_output_drm\", EGLEW_EXT_output_drm, eglewIsSupported(\"EGL_EXT_output_drm\"), eglewGetExtension(\"EGL_EXT_output_drm\"));\r\n}\r\n\r\n#endif /* EGL_EXT_output_drm */\r\n\r\n#ifdef EGL_EXT_output_openwf\r\n\r\nstatic void _glewInfo_EGL_EXT_output_openwf (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_output_openwf\", EGLEW_EXT_output_openwf, eglewIsSupported(\"EGL_EXT_output_openwf\"), eglewGetExtension(\"EGL_EXT_output_openwf\"));\r\n}\r\n\r\n#endif /* EGL_EXT_output_openwf */\r\n\r\n#ifdef EGL_EXT_pixel_format_float\r\n\r\nstatic void _glewInfo_EGL_EXT_pixel_format_float (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_pixel_format_float\", EGLEW_EXT_pixel_format_float, eglewIsSupported(\"EGL_EXT_pixel_format_float\"), eglewGetExtension(\"EGL_EXT_pixel_format_float\"));\r\n}\r\n\r\n#endif /* EGL_EXT_pixel_format_float */\r\n\r\n#ifdef EGL_EXT_platform_base\r\n\r\nstatic void _glewInfo_EGL_EXT_platform_base (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_platform_base\", EGLEW_EXT_platform_base, eglewIsSupported(\"EGL_EXT_platform_base\"), eglewGetExtension(\"EGL_EXT_platform_base\"));\r\n\r\n  glewInfoFunc(\"eglCreatePlatformPixmapSurfaceEXT\", eglCreatePlatformPixmapSurfaceEXT == NULL);\r\n  glewInfoFunc(\"eglCreatePlatformWindowSurfaceEXT\", eglCreatePlatformWindowSurfaceEXT == NULL);\r\n  glewInfoFunc(\"eglGetPlatformDisplayEXT\", eglGetPlatformDisplayEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_platform_base */\r\n\r\n#ifdef EGL_EXT_platform_device\r\n\r\nstatic void _glewInfo_EGL_EXT_platform_device (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_platform_device\", EGLEW_EXT_platform_device, eglewIsSupported(\"EGL_EXT_platform_device\"), eglewGetExtension(\"EGL_EXT_platform_device\"));\r\n}\r\n\r\n#endif /* EGL_EXT_platform_device */\r\n\r\n#ifdef EGL_EXT_platform_wayland\r\n\r\nstatic void _glewInfo_EGL_EXT_platform_wayland (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_platform_wayland\", EGLEW_EXT_platform_wayland, eglewIsSupported(\"EGL_EXT_platform_wayland\"), eglewGetExtension(\"EGL_EXT_platform_wayland\"));\r\n}\r\n\r\n#endif /* EGL_EXT_platform_wayland */\r\n\r\n#ifdef EGL_EXT_platform_x11\r\n\r\nstatic void _glewInfo_EGL_EXT_platform_x11 (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_platform_x11\", EGLEW_EXT_platform_x11, eglewIsSupported(\"EGL_EXT_platform_x11\"), eglewGetExtension(\"EGL_EXT_platform_x11\"));\r\n}\r\n\r\n#endif /* EGL_EXT_platform_x11 */\r\n\r\n#ifdef EGL_EXT_protected_content\r\n\r\nstatic void _glewInfo_EGL_EXT_protected_content (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_protected_content\", EGLEW_EXT_protected_content, eglewIsSupported(\"EGL_EXT_protected_content\"), eglewGetExtension(\"EGL_EXT_protected_content\"));\r\n}\r\n\r\n#endif /* EGL_EXT_protected_content */\r\n\r\n#ifdef EGL_EXT_protected_surface\r\n\r\nstatic void _glewInfo_EGL_EXT_protected_surface (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_protected_surface\", EGLEW_EXT_protected_surface, eglewIsSupported(\"EGL_EXT_protected_surface\"), eglewGetExtension(\"EGL_EXT_protected_surface\"));\r\n}\r\n\r\n#endif /* EGL_EXT_protected_surface */\r\n\r\n#ifdef EGL_EXT_stream_consumer_egloutput\r\n\r\nstatic void _glewInfo_EGL_EXT_stream_consumer_egloutput (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_stream_consumer_egloutput\", EGLEW_EXT_stream_consumer_egloutput, eglewIsSupported(\"EGL_EXT_stream_consumer_egloutput\"), eglewGetExtension(\"EGL_EXT_stream_consumer_egloutput\"));\r\n\r\n  glewInfoFunc(\"eglStreamConsumerOutputEXT\", eglStreamConsumerOutputEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_stream_consumer_egloutput */\r\n\r\n#ifdef EGL_EXT_surface_SMPTE2086_metadata\r\n\r\nstatic void _glewInfo_EGL_EXT_surface_SMPTE2086_metadata (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_surface_SMPTE2086_metadata\", EGLEW_EXT_surface_SMPTE2086_metadata, eglewIsSupported(\"EGL_EXT_surface_SMPTE2086_metadata\"), eglewGetExtension(\"EGL_EXT_surface_SMPTE2086_metadata\"));\r\n}\r\n\r\n#endif /* EGL_EXT_surface_SMPTE2086_metadata */\r\n\r\n#ifdef EGL_EXT_swap_buffers_with_damage\r\n\r\nstatic void _glewInfo_EGL_EXT_swap_buffers_with_damage (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_swap_buffers_with_damage\", EGLEW_EXT_swap_buffers_with_damage, eglewIsSupported(\"EGL_EXT_swap_buffers_with_damage\"), eglewGetExtension(\"EGL_EXT_swap_buffers_with_damage\"));\r\n\r\n  glewInfoFunc(\"eglSwapBuffersWithDamageEXT\", eglSwapBuffersWithDamageEXT == NULL);\r\n}\r\n\r\n#endif /* EGL_EXT_swap_buffers_with_damage */\r\n\r\n#ifdef EGL_EXT_yuv_surface\r\n\r\nstatic void _glewInfo_EGL_EXT_yuv_surface (void)\r\n{\r\n  glewPrintExt(\"EGL_EXT_yuv_surface\", EGLEW_EXT_yuv_surface, eglewIsSupported(\"EGL_EXT_yuv_surface\"), eglewGetExtension(\"EGL_EXT_yuv_surface\"));\r\n}\r\n\r\n#endif /* EGL_EXT_yuv_surface */\r\n\r\n#ifdef EGL_HI_clientpixmap\r\n\r\nstatic void _glewInfo_EGL_HI_clientpixmap (void)\r\n{\r\n  glewPrintExt(\"EGL_HI_clientpixmap\", EGLEW_HI_clientpixmap, eglewIsSupported(\"EGL_HI_clientpixmap\"), eglewGetExtension(\"EGL_HI_clientpixmap\"));\r\n\r\n  glewInfoFunc(\"eglCreatePixmapSurfaceHI\", eglCreatePixmapSurfaceHI == NULL);\r\n}\r\n\r\n#endif /* EGL_HI_clientpixmap */\r\n\r\n#ifdef EGL_HI_colorformats\r\n\r\nstatic void _glewInfo_EGL_HI_colorformats (void)\r\n{\r\n  glewPrintExt(\"EGL_HI_colorformats\", EGLEW_HI_colorformats, eglewIsSupported(\"EGL_HI_colorformats\"), eglewGetExtension(\"EGL_HI_colorformats\"));\r\n}\r\n\r\n#endif /* EGL_HI_colorformats */\r\n\r\n#ifdef EGL_IMG_context_priority\r\n\r\nstatic void _glewInfo_EGL_IMG_context_priority (void)\r\n{\r\n  glewPrintExt(\"EGL_IMG_context_priority\", EGLEW_IMG_context_priority, eglewIsSupported(\"EGL_IMG_context_priority\"), eglewGetExtension(\"EGL_IMG_context_priority\"));\r\n}\r\n\r\n#endif /* EGL_IMG_context_priority */\r\n\r\n#ifdef EGL_IMG_image_plane_attribs\r\n\r\nstatic void _glewInfo_EGL_IMG_image_plane_attribs (void)\r\n{\r\n  glewPrintExt(\"EGL_IMG_image_plane_attribs\", EGLEW_IMG_image_plane_attribs, eglewIsSupported(\"EGL_IMG_image_plane_attribs\"), eglewGetExtension(\"EGL_IMG_image_plane_attribs\"));\r\n}\r\n\r\n#endif /* EGL_IMG_image_plane_attribs */\r\n\r\n#ifdef EGL_KHR_cl_event\r\n\r\nstatic void _glewInfo_EGL_KHR_cl_event (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_cl_event\", EGLEW_KHR_cl_event, eglewIsSupported(\"EGL_KHR_cl_event\"), eglewGetExtension(\"EGL_KHR_cl_event\"));\r\n}\r\n\r\n#endif /* EGL_KHR_cl_event */\r\n\r\n#ifdef EGL_KHR_cl_event2\r\n\r\nstatic void _glewInfo_EGL_KHR_cl_event2 (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_cl_event2\", EGLEW_KHR_cl_event2, eglewIsSupported(\"EGL_KHR_cl_event2\"), eglewGetExtension(\"EGL_KHR_cl_event2\"));\r\n\r\n  glewInfoFunc(\"eglCreateSync64KHR\", eglCreateSync64KHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_cl_event2 */\r\n\r\n#ifdef EGL_KHR_client_get_all_proc_addresses\r\n\r\nstatic void _glewInfo_EGL_KHR_client_get_all_proc_addresses (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_client_get_all_proc_addresses\", EGLEW_KHR_client_get_all_proc_addresses, eglewIsSupported(\"EGL_KHR_client_get_all_proc_addresses\"), eglewGetExtension(\"EGL_KHR_client_get_all_proc_addresses\"));\r\n}\r\n\r\n#endif /* EGL_KHR_client_get_all_proc_addresses */\r\n\r\n#ifdef EGL_KHR_config_attribs\r\n\r\nstatic void _glewInfo_EGL_KHR_config_attribs (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_config_attribs\", EGLEW_KHR_config_attribs, eglewIsSupported(\"EGL_KHR_config_attribs\"), eglewGetExtension(\"EGL_KHR_config_attribs\"));\r\n}\r\n\r\n#endif /* EGL_KHR_config_attribs */\r\n\r\n#ifdef EGL_KHR_context_flush_control\r\n\r\nstatic void _glewInfo_EGL_KHR_context_flush_control (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_context_flush_control\", EGLEW_KHR_context_flush_control, eglewIsSupported(\"EGL_KHR_context_flush_control\"), eglewGetExtension(\"EGL_KHR_context_flush_control\"));\r\n}\r\n\r\n#endif /* EGL_KHR_context_flush_control */\r\n\r\n#ifdef EGL_KHR_create_context\r\n\r\nstatic void _glewInfo_EGL_KHR_create_context (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_create_context\", EGLEW_KHR_create_context, eglewIsSupported(\"EGL_KHR_create_context\"), eglewGetExtension(\"EGL_KHR_create_context\"));\r\n}\r\n\r\n#endif /* EGL_KHR_create_context */\r\n\r\n#ifdef EGL_KHR_create_context_no_error\r\n\r\nstatic void _glewInfo_EGL_KHR_create_context_no_error (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_create_context_no_error\", EGLEW_KHR_create_context_no_error, eglewIsSupported(\"EGL_KHR_create_context_no_error\"), eglewGetExtension(\"EGL_KHR_create_context_no_error\"));\r\n}\r\n\r\n#endif /* EGL_KHR_create_context_no_error */\r\n\r\n#ifdef EGL_KHR_debug\r\n\r\nstatic void _glewInfo_EGL_KHR_debug (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_debug\", EGLEW_KHR_debug, eglewIsSupported(\"EGL_KHR_debug\"), eglewGetExtension(\"EGL_KHR_debug\"));\r\n\r\n  glewInfoFunc(\"eglDebugMessageControlKHR\", eglDebugMessageControlKHR == NULL);\r\n  glewInfoFunc(\"eglLabelObjectKHR\", eglLabelObjectKHR == NULL);\r\n  glewInfoFunc(\"eglQueryDebugKHR\", eglQueryDebugKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_debug */\r\n\r\n#ifdef EGL_KHR_fence_sync\r\n\r\nstatic void _glewInfo_EGL_KHR_fence_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_fence_sync\", EGLEW_KHR_fence_sync, eglewIsSupported(\"EGL_KHR_fence_sync\"), eglewGetExtension(\"EGL_KHR_fence_sync\"));\r\n}\r\n\r\n#endif /* EGL_KHR_fence_sync */\r\n\r\n#ifdef EGL_KHR_get_all_proc_addresses\r\n\r\nstatic void _glewInfo_EGL_KHR_get_all_proc_addresses (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_get_all_proc_addresses\", EGLEW_KHR_get_all_proc_addresses, eglewIsSupported(\"EGL_KHR_get_all_proc_addresses\"), eglewGetExtension(\"EGL_KHR_get_all_proc_addresses\"));\r\n}\r\n\r\n#endif /* EGL_KHR_get_all_proc_addresses */\r\n\r\n#ifdef EGL_KHR_gl_colorspace\r\n\r\nstatic void _glewInfo_EGL_KHR_gl_colorspace (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_gl_colorspace\", EGLEW_KHR_gl_colorspace, eglewIsSupported(\"EGL_KHR_gl_colorspace\"), eglewGetExtension(\"EGL_KHR_gl_colorspace\"));\r\n}\r\n\r\n#endif /* EGL_KHR_gl_colorspace */\r\n\r\n#ifdef EGL_KHR_gl_renderbuffer_image\r\n\r\nstatic void _glewInfo_EGL_KHR_gl_renderbuffer_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_gl_renderbuffer_image\", EGLEW_KHR_gl_renderbuffer_image, eglewIsSupported(\"EGL_KHR_gl_renderbuffer_image\"), eglewGetExtension(\"EGL_KHR_gl_renderbuffer_image\"));\r\n}\r\n\r\n#endif /* EGL_KHR_gl_renderbuffer_image */\r\n\r\n#ifdef EGL_KHR_gl_texture_2D_image\r\n\r\nstatic void _glewInfo_EGL_KHR_gl_texture_2D_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_gl_texture_2D_image\", EGLEW_KHR_gl_texture_2D_image, eglewIsSupported(\"EGL_KHR_gl_texture_2D_image\"), eglewGetExtension(\"EGL_KHR_gl_texture_2D_image\"));\r\n}\r\n\r\n#endif /* EGL_KHR_gl_texture_2D_image */\r\n\r\n#ifdef EGL_KHR_gl_texture_3D_image\r\n\r\nstatic void _glewInfo_EGL_KHR_gl_texture_3D_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_gl_texture_3D_image\", EGLEW_KHR_gl_texture_3D_image, eglewIsSupported(\"EGL_KHR_gl_texture_3D_image\"), eglewGetExtension(\"EGL_KHR_gl_texture_3D_image\"));\r\n}\r\n\r\n#endif /* EGL_KHR_gl_texture_3D_image */\r\n\r\n#ifdef EGL_KHR_gl_texture_cubemap_image\r\n\r\nstatic void _glewInfo_EGL_KHR_gl_texture_cubemap_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_gl_texture_cubemap_image\", EGLEW_KHR_gl_texture_cubemap_image, eglewIsSupported(\"EGL_KHR_gl_texture_cubemap_image\"), eglewGetExtension(\"EGL_KHR_gl_texture_cubemap_image\"));\r\n}\r\n\r\n#endif /* EGL_KHR_gl_texture_cubemap_image */\r\n\r\n#ifdef EGL_KHR_image\r\n\r\nstatic void _glewInfo_EGL_KHR_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_image\", EGLEW_KHR_image, eglewIsSupported(\"EGL_KHR_image\"), eglewGetExtension(\"EGL_KHR_image\"));\r\n\r\n  glewInfoFunc(\"eglCreateImageKHR\", eglCreateImageKHR == NULL);\r\n  glewInfoFunc(\"eglDestroyImageKHR\", eglDestroyImageKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_image */\r\n\r\n#ifdef EGL_KHR_image_base\r\n\r\nstatic void _glewInfo_EGL_KHR_image_base (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_image_base\", EGLEW_KHR_image_base, eglewIsSupported(\"EGL_KHR_image_base\"), eglewGetExtension(\"EGL_KHR_image_base\"));\r\n}\r\n\r\n#endif /* EGL_KHR_image_base */\r\n\r\n#ifdef EGL_KHR_image_pixmap\r\n\r\nstatic void _glewInfo_EGL_KHR_image_pixmap (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_image_pixmap\", EGLEW_KHR_image_pixmap, eglewIsSupported(\"EGL_KHR_image_pixmap\"), eglewGetExtension(\"EGL_KHR_image_pixmap\"));\r\n}\r\n\r\n#endif /* EGL_KHR_image_pixmap */\r\n\r\n#ifdef EGL_KHR_lock_surface\r\n\r\nstatic void _glewInfo_EGL_KHR_lock_surface (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_lock_surface\", EGLEW_KHR_lock_surface, eglewIsSupported(\"EGL_KHR_lock_surface\"), eglewGetExtension(\"EGL_KHR_lock_surface\"));\r\n\r\n  glewInfoFunc(\"eglLockSurfaceKHR\", eglLockSurfaceKHR == NULL);\r\n  glewInfoFunc(\"eglUnlockSurfaceKHR\", eglUnlockSurfaceKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_lock_surface */\r\n\r\n#ifdef EGL_KHR_lock_surface2\r\n\r\nstatic void _glewInfo_EGL_KHR_lock_surface2 (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_lock_surface2\", EGLEW_KHR_lock_surface2, eglewIsSupported(\"EGL_KHR_lock_surface2\"), eglewGetExtension(\"EGL_KHR_lock_surface2\"));\r\n}\r\n\r\n#endif /* EGL_KHR_lock_surface2 */\r\n\r\n#ifdef EGL_KHR_lock_surface3\r\n\r\nstatic void _glewInfo_EGL_KHR_lock_surface3 (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_lock_surface3\", EGLEW_KHR_lock_surface3, eglewIsSupported(\"EGL_KHR_lock_surface3\"), eglewGetExtension(\"EGL_KHR_lock_surface3\"));\r\n\r\n  glewInfoFunc(\"eglQuerySurface64KHR\", eglQuerySurface64KHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_lock_surface3 */\r\n\r\n#ifdef EGL_KHR_mutable_render_buffer\r\n\r\nstatic void _glewInfo_EGL_KHR_mutable_render_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_mutable_render_buffer\", EGLEW_KHR_mutable_render_buffer, eglewIsSupported(\"EGL_KHR_mutable_render_buffer\"), eglewGetExtension(\"EGL_KHR_mutable_render_buffer\"));\r\n}\r\n\r\n#endif /* EGL_KHR_mutable_render_buffer */\r\n\r\n#ifdef EGL_KHR_no_config_context\r\n\r\nstatic void _glewInfo_EGL_KHR_no_config_context (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_no_config_context\", EGLEW_KHR_no_config_context, eglewIsSupported(\"EGL_KHR_no_config_context\"), eglewGetExtension(\"EGL_KHR_no_config_context\"));\r\n}\r\n\r\n#endif /* EGL_KHR_no_config_context */\r\n\r\n#ifdef EGL_KHR_partial_update\r\n\r\nstatic void _glewInfo_EGL_KHR_partial_update (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_partial_update\", EGLEW_KHR_partial_update, eglewIsSupported(\"EGL_KHR_partial_update\"), eglewGetExtension(\"EGL_KHR_partial_update\"));\r\n\r\n  glewInfoFunc(\"eglSetDamageRegionKHR\", eglSetDamageRegionKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_partial_update */\r\n\r\n#ifdef EGL_KHR_platform_android\r\n\r\nstatic void _glewInfo_EGL_KHR_platform_android (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_platform_android\", EGLEW_KHR_platform_android, eglewIsSupported(\"EGL_KHR_platform_android\"), eglewGetExtension(\"EGL_KHR_platform_android\"));\r\n}\r\n\r\n#endif /* EGL_KHR_platform_android */\r\n\r\n#ifdef EGL_KHR_platform_gbm\r\n\r\nstatic void _glewInfo_EGL_KHR_platform_gbm (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_platform_gbm\", EGLEW_KHR_platform_gbm, eglewIsSupported(\"EGL_KHR_platform_gbm\"), eglewGetExtension(\"EGL_KHR_platform_gbm\"));\r\n}\r\n\r\n#endif /* EGL_KHR_platform_gbm */\r\n\r\n#ifdef EGL_KHR_platform_wayland\r\n\r\nstatic void _glewInfo_EGL_KHR_platform_wayland (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_platform_wayland\", EGLEW_KHR_platform_wayland, eglewIsSupported(\"EGL_KHR_platform_wayland\"), eglewGetExtension(\"EGL_KHR_platform_wayland\"));\r\n}\r\n\r\n#endif /* EGL_KHR_platform_wayland */\r\n\r\n#ifdef EGL_KHR_platform_x11\r\n\r\nstatic void _glewInfo_EGL_KHR_platform_x11 (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_platform_x11\", EGLEW_KHR_platform_x11, eglewIsSupported(\"EGL_KHR_platform_x11\"), eglewGetExtension(\"EGL_KHR_platform_x11\"));\r\n}\r\n\r\n#endif /* EGL_KHR_platform_x11 */\r\n\r\n#ifdef EGL_KHR_reusable_sync\r\n\r\nstatic void _glewInfo_EGL_KHR_reusable_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_reusable_sync\", EGLEW_KHR_reusable_sync, eglewIsSupported(\"EGL_KHR_reusable_sync\"), eglewGetExtension(\"EGL_KHR_reusable_sync\"));\r\n\r\n  glewInfoFunc(\"eglClientWaitSyncKHR\", eglClientWaitSyncKHR == NULL);\r\n  glewInfoFunc(\"eglCreateSyncKHR\", eglCreateSyncKHR == NULL);\r\n  glewInfoFunc(\"eglDestroySyncKHR\", eglDestroySyncKHR == NULL);\r\n  glewInfoFunc(\"eglGetSyncAttribKHR\", eglGetSyncAttribKHR == NULL);\r\n  glewInfoFunc(\"eglSignalSyncKHR\", eglSignalSyncKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_reusable_sync */\r\n\r\n#ifdef EGL_KHR_stream\r\n\r\nstatic void _glewInfo_EGL_KHR_stream (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream\", EGLEW_KHR_stream, eglewIsSupported(\"EGL_KHR_stream\"), eglewGetExtension(\"EGL_KHR_stream\"));\r\n\r\n  glewInfoFunc(\"eglCreateStreamKHR\", eglCreateStreamKHR == NULL);\r\n  glewInfoFunc(\"eglDestroyStreamKHR\", eglDestroyStreamKHR == NULL);\r\n  glewInfoFunc(\"eglQueryStreamKHR\", eglQueryStreamKHR == NULL);\r\n  glewInfoFunc(\"eglQueryStreamu64KHR\", eglQueryStreamu64KHR == NULL);\r\n  glewInfoFunc(\"eglStreamAttribKHR\", eglStreamAttribKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream */\r\n\r\n#ifdef EGL_KHR_stream_attrib\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_attrib (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_attrib\", EGLEW_KHR_stream_attrib, eglewIsSupported(\"EGL_KHR_stream_attrib\"), eglewGetExtension(\"EGL_KHR_stream_attrib\"));\r\n\r\n  glewInfoFunc(\"eglCreateStreamAttribKHR\", eglCreateStreamAttribKHR == NULL);\r\n  glewInfoFunc(\"eglQueryStreamAttribKHR\", eglQueryStreamAttribKHR == NULL);\r\n  glewInfoFunc(\"eglSetStreamAttribKHR\", eglSetStreamAttribKHR == NULL);\r\n  glewInfoFunc(\"eglStreamConsumerAcquireAttribKHR\", eglStreamConsumerAcquireAttribKHR == NULL);\r\n  glewInfoFunc(\"eglStreamConsumerReleaseAttribKHR\", eglStreamConsumerReleaseAttribKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream_attrib */\r\n\r\n#ifdef EGL_KHR_stream_consumer_gltexture\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_consumer_gltexture (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_consumer_gltexture\", EGLEW_KHR_stream_consumer_gltexture, eglewIsSupported(\"EGL_KHR_stream_consumer_gltexture\"), eglewGetExtension(\"EGL_KHR_stream_consumer_gltexture\"));\r\n\r\n  glewInfoFunc(\"eglStreamConsumerAcquireKHR\", eglStreamConsumerAcquireKHR == NULL);\r\n  glewInfoFunc(\"eglStreamConsumerGLTextureExternalKHR\", eglStreamConsumerGLTextureExternalKHR == NULL);\r\n  glewInfoFunc(\"eglStreamConsumerReleaseKHR\", eglStreamConsumerReleaseKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream_consumer_gltexture */\r\n\r\n#ifdef EGL_KHR_stream_cross_process_fd\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_cross_process_fd (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_cross_process_fd\", EGLEW_KHR_stream_cross_process_fd, eglewIsSupported(\"EGL_KHR_stream_cross_process_fd\"), eglewGetExtension(\"EGL_KHR_stream_cross_process_fd\"));\r\n\r\n  glewInfoFunc(\"eglCreateStreamFromFileDescriptorKHR\", eglCreateStreamFromFileDescriptorKHR == NULL);\r\n  glewInfoFunc(\"eglGetStreamFileDescriptorKHR\", eglGetStreamFileDescriptorKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream_cross_process_fd */\r\n\r\n#ifdef EGL_KHR_stream_fifo\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_fifo (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_fifo\", EGLEW_KHR_stream_fifo, eglewIsSupported(\"EGL_KHR_stream_fifo\"), eglewGetExtension(\"EGL_KHR_stream_fifo\"));\r\n\r\n  glewInfoFunc(\"eglQueryStreamTimeKHR\", eglQueryStreamTimeKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream_fifo */\r\n\r\n#ifdef EGL_KHR_stream_producer_aldatalocator\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_producer_aldatalocator (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_producer_aldatalocator\", EGLEW_KHR_stream_producer_aldatalocator, eglewIsSupported(\"EGL_KHR_stream_producer_aldatalocator\"), eglewGetExtension(\"EGL_KHR_stream_producer_aldatalocator\"));\r\n}\r\n\r\n#endif /* EGL_KHR_stream_producer_aldatalocator */\r\n\r\n#ifdef EGL_KHR_stream_producer_eglsurface\r\n\r\nstatic void _glewInfo_EGL_KHR_stream_producer_eglsurface (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_stream_producer_eglsurface\", EGLEW_KHR_stream_producer_eglsurface, eglewIsSupported(\"EGL_KHR_stream_producer_eglsurface\"), eglewGetExtension(\"EGL_KHR_stream_producer_eglsurface\"));\r\n\r\n  glewInfoFunc(\"eglCreateStreamProducerSurfaceKHR\", eglCreateStreamProducerSurfaceKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_stream_producer_eglsurface */\r\n\r\n#ifdef EGL_KHR_surfaceless_context\r\n\r\nstatic void _glewInfo_EGL_KHR_surfaceless_context (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_surfaceless_context\", EGLEW_KHR_surfaceless_context, eglewIsSupported(\"EGL_KHR_surfaceless_context\"), eglewGetExtension(\"EGL_KHR_surfaceless_context\"));\r\n}\r\n\r\n#endif /* EGL_KHR_surfaceless_context */\r\n\r\n#ifdef EGL_KHR_swap_buffers_with_damage\r\n\r\nstatic void _glewInfo_EGL_KHR_swap_buffers_with_damage (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_swap_buffers_with_damage\", EGLEW_KHR_swap_buffers_with_damage, eglewIsSupported(\"EGL_KHR_swap_buffers_with_damage\"), eglewGetExtension(\"EGL_KHR_swap_buffers_with_damage\"));\r\n\r\n  glewInfoFunc(\"eglSwapBuffersWithDamageKHR\", eglSwapBuffersWithDamageKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_swap_buffers_with_damage */\r\n\r\n#ifdef EGL_KHR_vg_parent_image\r\n\r\nstatic void _glewInfo_EGL_KHR_vg_parent_image (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_vg_parent_image\", EGLEW_KHR_vg_parent_image, eglewIsSupported(\"EGL_KHR_vg_parent_image\"), eglewGetExtension(\"EGL_KHR_vg_parent_image\"));\r\n}\r\n\r\n#endif /* EGL_KHR_vg_parent_image */\r\n\r\n#ifdef EGL_KHR_wait_sync\r\n\r\nstatic void _glewInfo_EGL_KHR_wait_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_KHR_wait_sync\", EGLEW_KHR_wait_sync, eglewIsSupported(\"EGL_KHR_wait_sync\"), eglewGetExtension(\"EGL_KHR_wait_sync\"));\r\n\r\n  glewInfoFunc(\"eglWaitSyncKHR\", eglWaitSyncKHR == NULL);\r\n}\r\n\r\n#endif /* EGL_KHR_wait_sync */\r\n\r\n#ifdef EGL_MESA_drm_image\r\n\r\nstatic void _glewInfo_EGL_MESA_drm_image (void)\r\n{\r\n  glewPrintExt(\"EGL_MESA_drm_image\", EGLEW_MESA_drm_image, eglewIsSupported(\"EGL_MESA_drm_image\"), eglewGetExtension(\"EGL_MESA_drm_image\"));\r\n\r\n  glewInfoFunc(\"eglCreateDRMImageMESA\", eglCreateDRMImageMESA == NULL);\r\n  glewInfoFunc(\"eglExportDRMImageMESA\", eglExportDRMImageMESA == NULL);\r\n}\r\n\r\n#endif /* EGL_MESA_drm_image */\r\n\r\n#ifdef EGL_MESA_image_dma_buf_export\r\n\r\nstatic void _glewInfo_EGL_MESA_image_dma_buf_export (void)\r\n{\r\n  glewPrintExt(\"EGL_MESA_image_dma_buf_export\", EGLEW_MESA_image_dma_buf_export, eglewIsSupported(\"EGL_MESA_image_dma_buf_export\"), eglewGetExtension(\"EGL_MESA_image_dma_buf_export\"));\r\n\r\n  glewInfoFunc(\"eglExportDMABUFImageMESA\", eglExportDMABUFImageMESA == NULL);\r\n  glewInfoFunc(\"eglExportDMABUFImageQueryMESA\", eglExportDMABUFImageQueryMESA == NULL);\r\n}\r\n\r\n#endif /* EGL_MESA_image_dma_buf_export */\r\n\r\n#ifdef EGL_MESA_platform_gbm\r\n\r\nstatic void _glewInfo_EGL_MESA_platform_gbm (void)\r\n{\r\n  glewPrintExt(\"EGL_MESA_platform_gbm\", EGLEW_MESA_platform_gbm, eglewIsSupported(\"EGL_MESA_platform_gbm\"), eglewGetExtension(\"EGL_MESA_platform_gbm\"));\r\n}\r\n\r\n#endif /* EGL_MESA_platform_gbm */\r\n\r\n#ifdef EGL_MESA_platform_surfaceless\r\n\r\nstatic void _glewInfo_EGL_MESA_platform_surfaceless (void)\r\n{\r\n  glewPrintExt(\"EGL_MESA_platform_surfaceless\", EGLEW_MESA_platform_surfaceless, eglewIsSupported(\"EGL_MESA_platform_surfaceless\"), eglewGetExtension(\"EGL_MESA_platform_surfaceless\"));\r\n}\r\n\r\n#endif /* EGL_MESA_platform_surfaceless */\r\n\r\n#ifdef EGL_NOK_swap_region\r\n\r\nstatic void _glewInfo_EGL_NOK_swap_region (void)\r\n{\r\n  glewPrintExt(\"EGL_NOK_swap_region\", EGLEW_NOK_swap_region, eglewIsSupported(\"EGL_NOK_swap_region\"), eglewGetExtension(\"EGL_NOK_swap_region\"));\r\n\r\n  glewInfoFunc(\"eglSwapBuffersRegionNOK\", eglSwapBuffersRegionNOK == NULL);\r\n}\r\n\r\n#endif /* EGL_NOK_swap_region */\r\n\r\n#ifdef EGL_NOK_swap_region2\r\n\r\nstatic void _glewInfo_EGL_NOK_swap_region2 (void)\r\n{\r\n  glewPrintExt(\"EGL_NOK_swap_region2\", EGLEW_NOK_swap_region2, eglewIsSupported(\"EGL_NOK_swap_region2\"), eglewGetExtension(\"EGL_NOK_swap_region2\"));\r\n\r\n  glewInfoFunc(\"eglSwapBuffersRegion2NOK\", eglSwapBuffersRegion2NOK == NULL);\r\n}\r\n\r\n#endif /* EGL_NOK_swap_region2 */\r\n\r\n#ifdef EGL_NOK_texture_from_pixmap\r\n\r\nstatic void _glewInfo_EGL_NOK_texture_from_pixmap (void)\r\n{\r\n  glewPrintExt(\"EGL_NOK_texture_from_pixmap\", EGLEW_NOK_texture_from_pixmap, eglewIsSupported(\"EGL_NOK_texture_from_pixmap\"), eglewGetExtension(\"EGL_NOK_texture_from_pixmap\"));\r\n}\r\n\r\n#endif /* EGL_NOK_texture_from_pixmap */\r\n\r\n#ifdef EGL_NV_3dvision_surface\r\n\r\nstatic void _glewInfo_EGL_NV_3dvision_surface (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_3dvision_surface\", EGLEW_NV_3dvision_surface, eglewIsSupported(\"EGL_NV_3dvision_surface\"), eglewGetExtension(\"EGL_NV_3dvision_surface\"));\r\n}\r\n\r\n#endif /* EGL_NV_3dvision_surface */\r\n\r\n#ifdef EGL_NV_coverage_sample\r\n\r\nstatic void _glewInfo_EGL_NV_coverage_sample (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_coverage_sample\", EGLEW_NV_coverage_sample, eglewIsSupported(\"EGL_NV_coverage_sample\"), eglewGetExtension(\"EGL_NV_coverage_sample\"));\r\n}\r\n\r\n#endif /* EGL_NV_coverage_sample */\r\n\r\n#ifdef EGL_NV_coverage_sample_resolve\r\n\r\nstatic void _glewInfo_EGL_NV_coverage_sample_resolve (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_coverage_sample_resolve\", EGLEW_NV_coverage_sample_resolve, eglewIsSupported(\"EGL_NV_coverage_sample_resolve\"), eglewGetExtension(\"EGL_NV_coverage_sample_resolve\"));\r\n}\r\n\r\n#endif /* EGL_NV_coverage_sample_resolve */\r\n\r\n#ifdef EGL_NV_cuda_event\r\n\r\nstatic void _glewInfo_EGL_NV_cuda_event (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_cuda_event\", EGLEW_NV_cuda_event, eglewIsSupported(\"EGL_NV_cuda_event\"), eglewGetExtension(\"EGL_NV_cuda_event\"));\r\n}\r\n\r\n#endif /* EGL_NV_cuda_event */\r\n\r\n#ifdef EGL_NV_depth_nonlinear\r\n\r\nstatic void _glewInfo_EGL_NV_depth_nonlinear (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_depth_nonlinear\", EGLEW_NV_depth_nonlinear, eglewIsSupported(\"EGL_NV_depth_nonlinear\"), eglewGetExtension(\"EGL_NV_depth_nonlinear\"));\r\n}\r\n\r\n#endif /* EGL_NV_depth_nonlinear */\r\n\r\n#ifdef EGL_NV_device_cuda\r\n\r\nstatic void _glewInfo_EGL_NV_device_cuda (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_device_cuda\", EGLEW_NV_device_cuda, eglewIsSupported(\"EGL_NV_device_cuda\"), eglewGetExtension(\"EGL_NV_device_cuda\"));\r\n}\r\n\r\n#endif /* EGL_NV_device_cuda */\r\n\r\n#ifdef EGL_NV_native_query\r\n\r\nstatic void _glewInfo_EGL_NV_native_query (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_native_query\", EGLEW_NV_native_query, eglewIsSupported(\"EGL_NV_native_query\"), eglewGetExtension(\"EGL_NV_native_query\"));\r\n\r\n  glewInfoFunc(\"eglQueryNativeDisplayNV\", eglQueryNativeDisplayNV == NULL);\r\n  glewInfoFunc(\"eglQueryNativePixmapNV\", eglQueryNativePixmapNV == NULL);\r\n  glewInfoFunc(\"eglQueryNativeWindowNV\", eglQueryNativeWindowNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_native_query */\r\n\r\n#ifdef EGL_NV_post_convert_rounding\r\n\r\nstatic void _glewInfo_EGL_NV_post_convert_rounding (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_post_convert_rounding\", EGLEW_NV_post_convert_rounding, eglewIsSupported(\"EGL_NV_post_convert_rounding\"), eglewGetExtension(\"EGL_NV_post_convert_rounding\"));\r\n}\r\n\r\n#endif /* EGL_NV_post_convert_rounding */\r\n\r\n#ifdef EGL_NV_post_sub_buffer\r\n\r\nstatic void _glewInfo_EGL_NV_post_sub_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_post_sub_buffer\", EGLEW_NV_post_sub_buffer, eglewIsSupported(\"EGL_NV_post_sub_buffer\"), eglewGetExtension(\"EGL_NV_post_sub_buffer\"));\r\n\r\n  glewInfoFunc(\"eglPostSubBufferNV\", eglPostSubBufferNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_post_sub_buffer */\r\n\r\n#ifdef EGL_NV_robustness_video_memory_purge\r\n\r\nstatic void _glewInfo_EGL_NV_robustness_video_memory_purge (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_robustness_video_memory_purge\", EGLEW_NV_robustness_video_memory_purge, eglewIsSupported(\"EGL_NV_robustness_video_memory_purge\"), eglewGetExtension(\"EGL_NV_robustness_video_memory_purge\"));\r\n}\r\n\r\n#endif /* EGL_NV_robustness_video_memory_purge */\r\n\r\n#ifdef EGL_NV_stream_consumer_gltexture_yuv\r\n\r\nstatic void _glewInfo_EGL_NV_stream_consumer_gltexture_yuv (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_consumer_gltexture_yuv\", EGLEW_NV_stream_consumer_gltexture_yuv, eglewIsSupported(\"EGL_NV_stream_consumer_gltexture_yuv\"), eglewGetExtension(\"EGL_NV_stream_consumer_gltexture_yuv\"));\r\n\r\n  glewInfoFunc(\"eglStreamConsumerGLTextureExternalAttribsNV\", eglStreamConsumerGLTextureExternalAttribsNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_stream_consumer_gltexture_yuv */\r\n\r\n#ifdef EGL_NV_stream_cross_display\r\n\r\nstatic void _glewInfo_EGL_NV_stream_cross_display (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_cross_display\", EGLEW_NV_stream_cross_display, eglewIsSupported(\"EGL_NV_stream_cross_display\"), eglewGetExtension(\"EGL_NV_stream_cross_display\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_cross_display */\r\n\r\n#ifdef EGL_NV_stream_cross_object\r\n\r\nstatic void _glewInfo_EGL_NV_stream_cross_object (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_cross_object\", EGLEW_NV_stream_cross_object, eglewIsSupported(\"EGL_NV_stream_cross_object\"), eglewGetExtension(\"EGL_NV_stream_cross_object\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_cross_object */\r\n\r\n#ifdef EGL_NV_stream_cross_partition\r\n\r\nstatic void _glewInfo_EGL_NV_stream_cross_partition (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_cross_partition\", EGLEW_NV_stream_cross_partition, eglewIsSupported(\"EGL_NV_stream_cross_partition\"), eglewGetExtension(\"EGL_NV_stream_cross_partition\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_cross_partition */\r\n\r\n#ifdef EGL_NV_stream_cross_process\r\n\r\nstatic void _glewInfo_EGL_NV_stream_cross_process (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_cross_process\", EGLEW_NV_stream_cross_process, eglewIsSupported(\"EGL_NV_stream_cross_process\"), eglewGetExtension(\"EGL_NV_stream_cross_process\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_cross_process */\r\n\r\n#ifdef EGL_NV_stream_cross_system\r\n\r\nstatic void _glewInfo_EGL_NV_stream_cross_system (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_cross_system\", EGLEW_NV_stream_cross_system, eglewIsSupported(\"EGL_NV_stream_cross_system\"), eglewGetExtension(\"EGL_NV_stream_cross_system\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_cross_system */\r\n\r\n#ifdef EGL_NV_stream_fifo_next\r\n\r\nstatic void _glewInfo_EGL_NV_stream_fifo_next (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_fifo_next\", EGLEW_NV_stream_fifo_next, eglewIsSupported(\"EGL_NV_stream_fifo_next\"), eglewGetExtension(\"EGL_NV_stream_fifo_next\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_fifo_next */\r\n\r\n#ifdef EGL_NV_stream_fifo_synchronous\r\n\r\nstatic void _glewInfo_EGL_NV_stream_fifo_synchronous (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_fifo_synchronous\", EGLEW_NV_stream_fifo_synchronous, eglewIsSupported(\"EGL_NV_stream_fifo_synchronous\"), eglewGetExtension(\"EGL_NV_stream_fifo_synchronous\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_fifo_synchronous */\r\n\r\n#ifdef EGL_NV_stream_frame_limits\r\n\r\nstatic void _glewInfo_EGL_NV_stream_frame_limits (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_frame_limits\", EGLEW_NV_stream_frame_limits, eglewIsSupported(\"EGL_NV_stream_frame_limits\"), eglewGetExtension(\"EGL_NV_stream_frame_limits\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_frame_limits */\r\n\r\n#ifdef EGL_NV_stream_metadata\r\n\r\nstatic void _glewInfo_EGL_NV_stream_metadata (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_metadata\", EGLEW_NV_stream_metadata, eglewIsSupported(\"EGL_NV_stream_metadata\"), eglewGetExtension(\"EGL_NV_stream_metadata\"));\r\n\r\n  glewInfoFunc(\"eglQueryDisplayAttribNV\", eglQueryDisplayAttribNV == NULL);\r\n  glewInfoFunc(\"eglQueryStreamMetadataNV\", eglQueryStreamMetadataNV == NULL);\r\n  glewInfoFunc(\"eglSetStreamMetadataNV\", eglSetStreamMetadataNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_stream_metadata */\r\n\r\n#ifdef EGL_NV_stream_remote\r\n\r\nstatic void _glewInfo_EGL_NV_stream_remote (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_remote\", EGLEW_NV_stream_remote, eglewIsSupported(\"EGL_NV_stream_remote\"), eglewGetExtension(\"EGL_NV_stream_remote\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_remote */\r\n\r\n#ifdef EGL_NV_stream_reset\r\n\r\nstatic void _glewInfo_EGL_NV_stream_reset (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_reset\", EGLEW_NV_stream_reset, eglewIsSupported(\"EGL_NV_stream_reset\"), eglewGetExtension(\"EGL_NV_stream_reset\"));\r\n\r\n  glewInfoFunc(\"eglResetStreamNV\", eglResetStreamNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_stream_reset */\r\n\r\n#ifdef EGL_NV_stream_socket\r\n\r\nstatic void _glewInfo_EGL_NV_stream_socket (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_socket\", EGLEW_NV_stream_socket, eglewIsSupported(\"EGL_NV_stream_socket\"), eglewGetExtension(\"EGL_NV_stream_socket\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_socket */\r\n\r\n#ifdef EGL_NV_stream_socket_inet\r\n\r\nstatic void _glewInfo_EGL_NV_stream_socket_inet (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_socket_inet\", EGLEW_NV_stream_socket_inet, eglewIsSupported(\"EGL_NV_stream_socket_inet\"), eglewGetExtension(\"EGL_NV_stream_socket_inet\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_socket_inet */\r\n\r\n#ifdef EGL_NV_stream_socket_unix\r\n\r\nstatic void _glewInfo_EGL_NV_stream_socket_unix (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_socket_unix\", EGLEW_NV_stream_socket_unix, eglewIsSupported(\"EGL_NV_stream_socket_unix\"), eglewGetExtension(\"EGL_NV_stream_socket_unix\"));\r\n}\r\n\r\n#endif /* EGL_NV_stream_socket_unix */\r\n\r\n#ifdef EGL_NV_stream_sync\r\n\r\nstatic void _glewInfo_EGL_NV_stream_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_stream_sync\", EGLEW_NV_stream_sync, eglewIsSupported(\"EGL_NV_stream_sync\"), eglewGetExtension(\"EGL_NV_stream_sync\"));\r\n\r\n  glewInfoFunc(\"eglCreateStreamSyncNV\", eglCreateStreamSyncNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_stream_sync */\r\n\r\n#ifdef EGL_NV_sync\r\n\r\nstatic void _glewInfo_EGL_NV_sync (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_sync\", EGLEW_NV_sync, eglewIsSupported(\"EGL_NV_sync\"), eglewGetExtension(\"EGL_NV_sync\"));\r\n\r\n  glewInfoFunc(\"eglClientWaitSyncNV\", eglClientWaitSyncNV == NULL);\r\n  glewInfoFunc(\"eglCreateFenceSyncNV\", eglCreateFenceSyncNV == NULL);\r\n  glewInfoFunc(\"eglDestroySyncNV\", eglDestroySyncNV == NULL);\r\n  glewInfoFunc(\"eglFenceNV\", eglFenceNV == NULL);\r\n  glewInfoFunc(\"eglGetSyncAttribNV\", eglGetSyncAttribNV == NULL);\r\n  glewInfoFunc(\"eglSignalSyncNV\", eglSignalSyncNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_sync */\r\n\r\n#ifdef EGL_NV_system_time\r\n\r\nstatic void _glewInfo_EGL_NV_system_time (void)\r\n{\r\n  glewPrintExt(\"EGL_NV_system_time\", EGLEW_NV_system_time, eglewIsSupported(\"EGL_NV_system_time\"), eglewGetExtension(\"EGL_NV_system_time\"));\r\n\r\n  glewInfoFunc(\"eglGetSystemTimeFrequencyNV\", eglGetSystemTimeFrequencyNV == NULL);\r\n  glewInfoFunc(\"eglGetSystemTimeNV\", eglGetSystemTimeNV == NULL);\r\n}\r\n\r\n#endif /* EGL_NV_system_time */\r\n\r\n#ifdef EGL_TIZEN_image_native_buffer\r\n\r\nstatic void _glewInfo_EGL_TIZEN_image_native_buffer (void)\r\n{\r\n  glewPrintExt(\"EGL_TIZEN_image_native_buffer\", EGLEW_TIZEN_image_native_buffer, eglewIsSupported(\"EGL_TIZEN_image_native_buffer\"), eglewGetExtension(\"EGL_TIZEN_image_native_buffer\"));\r\n}\r\n\r\n#endif /* EGL_TIZEN_image_native_buffer */\r\n\r\n#ifdef EGL_TIZEN_image_native_surface\r\n\r\nstatic void _glewInfo_EGL_TIZEN_image_native_surface (void)\r\n{\r\n  glewPrintExt(\"EGL_TIZEN_image_native_surface\", EGLEW_TIZEN_image_native_surface, eglewIsSupported(\"EGL_TIZEN_image_native_surface\"), eglewGetExtension(\"EGL_TIZEN_image_native_surface\"));\r\n}\r\n\r\n#endif /* EGL_TIZEN_image_native_surface */\r\n\r\n#elif _WIN32\r\n\r\n#ifdef WGL_3DFX_multisample\r\n\r\nstatic void _glewInfo_WGL_3DFX_multisample (void)\r\n{\r\n  glewPrintExt(\"WGL_3DFX_multisample\", WGLEW_3DFX_multisample, wglewIsSupported(\"WGL_3DFX_multisample\"), wglewGetExtension(\"WGL_3DFX_multisample\"));\r\n}\r\n\r\n#endif /* WGL_3DFX_multisample */\r\n\r\n#ifdef WGL_3DL_stereo_control\r\n\r\nstatic void _glewInfo_WGL_3DL_stereo_control (void)\r\n{\r\n  glewPrintExt(\"WGL_3DL_stereo_control\", WGLEW_3DL_stereo_control, wglewIsSupported(\"WGL_3DL_stereo_control\"), wglewGetExtension(\"WGL_3DL_stereo_control\"));\r\n\r\n  glewInfoFunc(\"wglSetStereoEmitterState3DL\", wglSetStereoEmitterState3DL == NULL);\r\n}\r\n\r\n#endif /* WGL_3DL_stereo_control */\r\n\r\n#ifdef WGL_AMD_gpu_association\r\n\r\nstatic void _glewInfo_WGL_AMD_gpu_association (void)\r\n{\r\n  glewPrintExt(\"WGL_AMD_gpu_association\", WGLEW_AMD_gpu_association, wglewIsSupported(\"WGL_AMD_gpu_association\"), wglewGetExtension(\"WGL_AMD_gpu_association\"));\r\n\r\n  glewInfoFunc(\"wglBlitContextFramebufferAMD\", wglBlitContextFramebufferAMD == NULL);\r\n  glewInfoFunc(\"wglCreateAssociatedContextAMD\", wglCreateAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"wglCreateAssociatedContextAttribsAMD\", wglCreateAssociatedContextAttribsAMD == NULL);\r\n  glewInfoFunc(\"wglDeleteAssociatedContextAMD\", wglDeleteAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"wglGetContextGPUIDAMD\", wglGetContextGPUIDAMD == NULL);\r\n  glewInfoFunc(\"wglGetCurrentAssociatedContextAMD\", wglGetCurrentAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"wglGetGPUIDsAMD\", wglGetGPUIDsAMD == NULL);\r\n  glewInfoFunc(\"wglGetGPUInfoAMD\", wglGetGPUInfoAMD == NULL);\r\n  glewInfoFunc(\"wglMakeAssociatedContextCurrentAMD\", wglMakeAssociatedContextCurrentAMD == NULL);\r\n}\r\n\r\n#endif /* WGL_AMD_gpu_association */\r\n\r\n#ifdef WGL_ARB_buffer_region\r\n\r\nstatic void _glewInfo_WGL_ARB_buffer_region (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_buffer_region\", WGLEW_ARB_buffer_region, wglewIsSupported(\"WGL_ARB_buffer_region\"), wglewGetExtension(\"WGL_ARB_buffer_region\"));\r\n\r\n  glewInfoFunc(\"wglCreateBufferRegionARB\", wglCreateBufferRegionARB == NULL);\r\n  glewInfoFunc(\"wglDeleteBufferRegionARB\", wglDeleteBufferRegionARB == NULL);\r\n  glewInfoFunc(\"wglRestoreBufferRegionARB\", wglRestoreBufferRegionARB == NULL);\r\n  glewInfoFunc(\"wglSaveBufferRegionARB\", wglSaveBufferRegionARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_buffer_region */\r\n\r\n#ifdef WGL_ARB_context_flush_control\r\n\r\nstatic void _glewInfo_WGL_ARB_context_flush_control (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_context_flush_control\", WGLEW_ARB_context_flush_control, wglewIsSupported(\"WGL_ARB_context_flush_control\"), wglewGetExtension(\"WGL_ARB_context_flush_control\"));\r\n}\r\n\r\n#endif /* WGL_ARB_context_flush_control */\r\n\r\n#ifdef WGL_ARB_create_context\r\n\r\nstatic void _glewInfo_WGL_ARB_create_context (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_create_context\", WGLEW_ARB_create_context, wglewIsSupported(\"WGL_ARB_create_context\"), wglewGetExtension(\"WGL_ARB_create_context\"));\r\n\r\n  glewInfoFunc(\"wglCreateContextAttribsARB\", wglCreateContextAttribsARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_create_context */\r\n\r\n#ifdef WGL_ARB_create_context_no_error\r\n\r\nstatic void _glewInfo_WGL_ARB_create_context_no_error (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_create_context_no_error\", WGLEW_ARB_create_context_no_error, wglewIsSupported(\"WGL_ARB_create_context_no_error\"), wglewGetExtension(\"WGL_ARB_create_context_no_error\"));\r\n}\r\n\r\n#endif /* WGL_ARB_create_context_no_error */\r\n\r\n#ifdef WGL_ARB_create_context_profile\r\n\r\nstatic void _glewInfo_WGL_ARB_create_context_profile (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_create_context_profile\", WGLEW_ARB_create_context_profile, wglewIsSupported(\"WGL_ARB_create_context_profile\"), wglewGetExtension(\"WGL_ARB_create_context_profile\"));\r\n}\r\n\r\n#endif /* WGL_ARB_create_context_profile */\r\n\r\n#ifdef WGL_ARB_create_context_robustness\r\n\r\nstatic void _glewInfo_WGL_ARB_create_context_robustness (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_create_context_robustness\", WGLEW_ARB_create_context_robustness, wglewIsSupported(\"WGL_ARB_create_context_robustness\"), wglewGetExtension(\"WGL_ARB_create_context_robustness\"));\r\n}\r\n\r\n#endif /* WGL_ARB_create_context_robustness */\r\n\r\n#ifdef WGL_ARB_extensions_string\r\n\r\nstatic void _glewInfo_WGL_ARB_extensions_string (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_extensions_string\", WGLEW_ARB_extensions_string, wglewIsSupported(\"WGL_ARB_extensions_string\"), wglewGetExtension(\"WGL_ARB_extensions_string\"));\r\n\r\n  glewInfoFunc(\"wglGetExtensionsStringARB\", wglGetExtensionsStringARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_extensions_string */\r\n\r\n#ifdef WGL_ARB_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_WGL_ARB_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_framebuffer_sRGB\", WGLEW_ARB_framebuffer_sRGB, wglewIsSupported(\"WGL_ARB_framebuffer_sRGB\"), wglewGetExtension(\"WGL_ARB_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* WGL_ARB_framebuffer_sRGB */\r\n\r\n#ifdef WGL_ARB_make_current_read\r\n\r\nstatic void _glewInfo_WGL_ARB_make_current_read (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_make_current_read\", WGLEW_ARB_make_current_read, wglewIsSupported(\"WGL_ARB_make_current_read\"), wglewGetExtension(\"WGL_ARB_make_current_read\"));\r\n\r\n  glewInfoFunc(\"wglGetCurrentReadDCARB\", wglGetCurrentReadDCARB == NULL);\r\n  glewInfoFunc(\"wglMakeContextCurrentARB\", wglMakeContextCurrentARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_make_current_read */\r\n\r\n#ifdef WGL_ARB_multisample\r\n\r\nstatic void _glewInfo_WGL_ARB_multisample (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_multisample\", WGLEW_ARB_multisample, wglewIsSupported(\"WGL_ARB_multisample\"), wglewGetExtension(\"WGL_ARB_multisample\"));\r\n}\r\n\r\n#endif /* WGL_ARB_multisample */\r\n\r\n#ifdef WGL_ARB_pbuffer\r\n\r\nstatic void _glewInfo_WGL_ARB_pbuffer (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_pbuffer\", WGLEW_ARB_pbuffer, wglewIsSupported(\"WGL_ARB_pbuffer\"), wglewGetExtension(\"WGL_ARB_pbuffer\"));\r\n\r\n  glewInfoFunc(\"wglCreatePbufferARB\", wglCreatePbufferARB == NULL);\r\n  glewInfoFunc(\"wglDestroyPbufferARB\", wglDestroyPbufferARB == NULL);\r\n  glewInfoFunc(\"wglGetPbufferDCARB\", wglGetPbufferDCARB == NULL);\r\n  glewInfoFunc(\"wglQueryPbufferARB\", wglQueryPbufferARB == NULL);\r\n  glewInfoFunc(\"wglReleasePbufferDCARB\", wglReleasePbufferDCARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_pbuffer */\r\n\r\n#ifdef WGL_ARB_pixel_format\r\n\r\nstatic void _glewInfo_WGL_ARB_pixel_format (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_pixel_format\", WGLEW_ARB_pixel_format, wglewIsSupported(\"WGL_ARB_pixel_format\"), wglewGetExtension(\"WGL_ARB_pixel_format\"));\r\n\r\n  glewInfoFunc(\"wglChoosePixelFormatARB\", wglChoosePixelFormatARB == NULL);\r\n  glewInfoFunc(\"wglGetPixelFormatAttribfvARB\", wglGetPixelFormatAttribfvARB == NULL);\r\n  glewInfoFunc(\"wglGetPixelFormatAttribivARB\", wglGetPixelFormatAttribivARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_pixel_format */\r\n\r\n#ifdef WGL_ARB_pixel_format_float\r\n\r\nstatic void _glewInfo_WGL_ARB_pixel_format_float (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_pixel_format_float\", WGLEW_ARB_pixel_format_float, wglewIsSupported(\"WGL_ARB_pixel_format_float\"), wglewGetExtension(\"WGL_ARB_pixel_format_float\"));\r\n}\r\n\r\n#endif /* WGL_ARB_pixel_format_float */\r\n\r\n#ifdef WGL_ARB_render_texture\r\n\r\nstatic void _glewInfo_WGL_ARB_render_texture (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_render_texture\", WGLEW_ARB_render_texture, wglewIsSupported(\"WGL_ARB_render_texture\"), wglewGetExtension(\"WGL_ARB_render_texture\"));\r\n\r\n  glewInfoFunc(\"wglBindTexImageARB\", wglBindTexImageARB == NULL);\r\n  glewInfoFunc(\"wglReleaseTexImageARB\", wglReleaseTexImageARB == NULL);\r\n  glewInfoFunc(\"wglSetPbufferAttribARB\", wglSetPbufferAttribARB == NULL);\r\n}\r\n\r\n#endif /* WGL_ARB_render_texture */\r\n\r\n#ifdef WGL_ARB_robustness_application_isolation\r\n\r\nstatic void _glewInfo_WGL_ARB_robustness_application_isolation (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_robustness_application_isolation\", WGLEW_ARB_robustness_application_isolation, wglewIsSupported(\"WGL_ARB_robustness_application_isolation\"), wglewGetExtension(\"WGL_ARB_robustness_application_isolation\"));\r\n}\r\n\r\n#endif /* WGL_ARB_robustness_application_isolation */\r\n\r\n#ifdef WGL_ARB_robustness_share_group_isolation\r\n\r\nstatic void _glewInfo_WGL_ARB_robustness_share_group_isolation (void)\r\n{\r\n  glewPrintExt(\"WGL_ARB_robustness_share_group_isolation\", WGLEW_ARB_robustness_share_group_isolation, wglewIsSupported(\"WGL_ARB_robustness_share_group_isolation\"), wglewGetExtension(\"WGL_ARB_robustness_share_group_isolation\"));\r\n}\r\n\r\n#endif /* WGL_ARB_robustness_share_group_isolation */\r\n\r\n#ifdef WGL_ATI_pixel_format_float\r\n\r\nstatic void _glewInfo_WGL_ATI_pixel_format_float (void)\r\n{\r\n  glewPrintExt(\"WGL_ATI_pixel_format_float\", WGLEW_ATI_pixel_format_float, wglewIsSupported(\"WGL_ATI_pixel_format_float\"), wglewGetExtension(\"WGL_ATI_pixel_format_float\"));\r\n}\r\n\r\n#endif /* WGL_ATI_pixel_format_float */\r\n\r\n#ifdef WGL_ATI_render_texture_rectangle\r\n\r\nstatic void _glewInfo_WGL_ATI_render_texture_rectangle (void)\r\n{\r\n  glewPrintExt(\"WGL_ATI_render_texture_rectangle\", WGLEW_ATI_render_texture_rectangle, wglewIsSupported(\"WGL_ATI_render_texture_rectangle\"), wglewGetExtension(\"WGL_ATI_render_texture_rectangle\"));\r\n}\r\n\r\n#endif /* WGL_ATI_render_texture_rectangle */\r\n\r\n#ifdef WGL_EXT_colorspace\r\n\r\nstatic void _glewInfo_WGL_EXT_colorspace (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_colorspace\", WGLEW_EXT_colorspace, wglewIsSupported(\"WGL_EXT_colorspace\"), wglewGetExtension(\"WGL_EXT_colorspace\"));\r\n}\r\n\r\n#endif /* WGL_EXT_colorspace */\r\n\r\n#ifdef WGL_EXT_create_context_es2_profile\r\n\r\nstatic void _glewInfo_WGL_EXT_create_context_es2_profile (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_create_context_es2_profile\", WGLEW_EXT_create_context_es2_profile, wglewIsSupported(\"WGL_EXT_create_context_es2_profile\"), wglewGetExtension(\"WGL_EXT_create_context_es2_profile\"));\r\n}\r\n\r\n#endif /* WGL_EXT_create_context_es2_profile */\r\n\r\n#ifdef WGL_EXT_create_context_es_profile\r\n\r\nstatic void _glewInfo_WGL_EXT_create_context_es_profile (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_create_context_es_profile\", WGLEW_EXT_create_context_es_profile, wglewIsSupported(\"WGL_EXT_create_context_es_profile\"), wglewGetExtension(\"WGL_EXT_create_context_es_profile\"));\r\n}\r\n\r\n#endif /* WGL_EXT_create_context_es_profile */\r\n\r\n#ifdef WGL_EXT_depth_float\r\n\r\nstatic void _glewInfo_WGL_EXT_depth_float (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_depth_float\", WGLEW_EXT_depth_float, wglewIsSupported(\"WGL_EXT_depth_float\"), wglewGetExtension(\"WGL_EXT_depth_float\"));\r\n}\r\n\r\n#endif /* WGL_EXT_depth_float */\r\n\r\n#ifdef WGL_EXT_display_color_table\r\n\r\nstatic void _glewInfo_WGL_EXT_display_color_table (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_display_color_table\", WGLEW_EXT_display_color_table, wglewIsSupported(\"WGL_EXT_display_color_table\"), wglewGetExtension(\"WGL_EXT_display_color_table\"));\r\n\r\n  glewInfoFunc(\"wglBindDisplayColorTableEXT\", wglBindDisplayColorTableEXT == NULL);\r\n  glewInfoFunc(\"wglCreateDisplayColorTableEXT\", wglCreateDisplayColorTableEXT == NULL);\r\n  glewInfoFunc(\"wglDestroyDisplayColorTableEXT\", wglDestroyDisplayColorTableEXT == NULL);\r\n  glewInfoFunc(\"wglLoadDisplayColorTableEXT\", wglLoadDisplayColorTableEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_display_color_table */\r\n\r\n#ifdef WGL_EXT_extensions_string\r\n\r\nstatic void _glewInfo_WGL_EXT_extensions_string (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_extensions_string\", WGLEW_EXT_extensions_string, wglewIsSupported(\"WGL_EXT_extensions_string\"), wglewGetExtension(\"WGL_EXT_extensions_string\"));\r\n\r\n  glewInfoFunc(\"wglGetExtensionsStringEXT\", wglGetExtensionsStringEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_extensions_string */\r\n\r\n#ifdef WGL_EXT_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_WGL_EXT_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_framebuffer_sRGB\", WGLEW_EXT_framebuffer_sRGB, wglewIsSupported(\"WGL_EXT_framebuffer_sRGB\"), wglewGetExtension(\"WGL_EXT_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* WGL_EXT_framebuffer_sRGB */\r\n\r\n#ifdef WGL_EXT_make_current_read\r\n\r\nstatic void _glewInfo_WGL_EXT_make_current_read (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_make_current_read\", WGLEW_EXT_make_current_read, wglewIsSupported(\"WGL_EXT_make_current_read\"), wglewGetExtension(\"WGL_EXT_make_current_read\"));\r\n\r\n  glewInfoFunc(\"wglGetCurrentReadDCEXT\", wglGetCurrentReadDCEXT == NULL);\r\n  glewInfoFunc(\"wglMakeContextCurrentEXT\", wglMakeContextCurrentEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_make_current_read */\r\n\r\n#ifdef WGL_EXT_multisample\r\n\r\nstatic void _glewInfo_WGL_EXT_multisample (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_multisample\", WGLEW_EXT_multisample, wglewIsSupported(\"WGL_EXT_multisample\"), wglewGetExtension(\"WGL_EXT_multisample\"));\r\n}\r\n\r\n#endif /* WGL_EXT_multisample */\r\n\r\n#ifdef WGL_EXT_pbuffer\r\n\r\nstatic void _glewInfo_WGL_EXT_pbuffer (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_pbuffer\", WGLEW_EXT_pbuffer, wglewIsSupported(\"WGL_EXT_pbuffer\"), wglewGetExtension(\"WGL_EXT_pbuffer\"));\r\n\r\n  glewInfoFunc(\"wglCreatePbufferEXT\", wglCreatePbufferEXT == NULL);\r\n  glewInfoFunc(\"wglDestroyPbufferEXT\", wglDestroyPbufferEXT == NULL);\r\n  glewInfoFunc(\"wglGetPbufferDCEXT\", wglGetPbufferDCEXT == NULL);\r\n  glewInfoFunc(\"wglQueryPbufferEXT\", wglQueryPbufferEXT == NULL);\r\n  glewInfoFunc(\"wglReleasePbufferDCEXT\", wglReleasePbufferDCEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_pbuffer */\r\n\r\n#ifdef WGL_EXT_pixel_format\r\n\r\nstatic void _glewInfo_WGL_EXT_pixel_format (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_pixel_format\", WGLEW_EXT_pixel_format, wglewIsSupported(\"WGL_EXT_pixel_format\"), wglewGetExtension(\"WGL_EXT_pixel_format\"));\r\n\r\n  glewInfoFunc(\"wglChoosePixelFormatEXT\", wglChoosePixelFormatEXT == NULL);\r\n  glewInfoFunc(\"wglGetPixelFormatAttribfvEXT\", wglGetPixelFormatAttribfvEXT == NULL);\r\n  glewInfoFunc(\"wglGetPixelFormatAttribivEXT\", wglGetPixelFormatAttribivEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_pixel_format */\r\n\r\n#ifdef WGL_EXT_pixel_format_packed_float\r\n\r\nstatic void _glewInfo_WGL_EXT_pixel_format_packed_float (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_pixel_format_packed_float\", WGLEW_EXT_pixel_format_packed_float, wglewIsSupported(\"WGL_EXT_pixel_format_packed_float\"), wglewGetExtension(\"WGL_EXT_pixel_format_packed_float\"));\r\n}\r\n\r\n#endif /* WGL_EXT_pixel_format_packed_float */\r\n\r\n#ifdef WGL_EXT_swap_control\r\n\r\nstatic void _glewInfo_WGL_EXT_swap_control (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_swap_control\", WGLEW_EXT_swap_control, wglewIsSupported(\"WGL_EXT_swap_control\"), wglewGetExtension(\"WGL_EXT_swap_control\"));\r\n\r\n  glewInfoFunc(\"wglGetSwapIntervalEXT\", wglGetSwapIntervalEXT == NULL);\r\n  glewInfoFunc(\"wglSwapIntervalEXT\", wglSwapIntervalEXT == NULL);\r\n}\r\n\r\n#endif /* WGL_EXT_swap_control */\r\n\r\n#ifdef WGL_EXT_swap_control_tear\r\n\r\nstatic void _glewInfo_WGL_EXT_swap_control_tear (void)\r\n{\r\n  glewPrintExt(\"WGL_EXT_swap_control_tear\", WGLEW_EXT_swap_control_tear, wglewIsSupported(\"WGL_EXT_swap_control_tear\"), wglewGetExtension(\"WGL_EXT_swap_control_tear\"));\r\n}\r\n\r\n#endif /* WGL_EXT_swap_control_tear */\r\n\r\n#ifdef WGL_I3D_digital_video_control\r\n\r\nstatic void _glewInfo_WGL_I3D_digital_video_control (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_digital_video_control\", WGLEW_I3D_digital_video_control, wglewIsSupported(\"WGL_I3D_digital_video_control\"), wglewGetExtension(\"WGL_I3D_digital_video_control\"));\r\n\r\n  glewInfoFunc(\"wglGetDigitalVideoParametersI3D\", wglGetDigitalVideoParametersI3D == NULL);\r\n  glewInfoFunc(\"wglSetDigitalVideoParametersI3D\", wglSetDigitalVideoParametersI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_digital_video_control */\r\n\r\n#ifdef WGL_I3D_gamma\r\n\r\nstatic void _glewInfo_WGL_I3D_gamma (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_gamma\", WGLEW_I3D_gamma, wglewIsSupported(\"WGL_I3D_gamma\"), wglewGetExtension(\"WGL_I3D_gamma\"));\r\n\r\n  glewInfoFunc(\"wglGetGammaTableI3D\", wglGetGammaTableI3D == NULL);\r\n  glewInfoFunc(\"wglGetGammaTableParametersI3D\", wglGetGammaTableParametersI3D == NULL);\r\n  glewInfoFunc(\"wglSetGammaTableI3D\", wglSetGammaTableI3D == NULL);\r\n  glewInfoFunc(\"wglSetGammaTableParametersI3D\", wglSetGammaTableParametersI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_gamma */\r\n\r\n#ifdef WGL_I3D_genlock\r\n\r\nstatic void _glewInfo_WGL_I3D_genlock (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_genlock\", WGLEW_I3D_genlock, wglewIsSupported(\"WGL_I3D_genlock\"), wglewGetExtension(\"WGL_I3D_genlock\"));\r\n\r\n  glewInfoFunc(\"wglDisableGenlockI3D\", wglDisableGenlockI3D == NULL);\r\n  glewInfoFunc(\"wglEnableGenlockI3D\", wglEnableGenlockI3D == NULL);\r\n  glewInfoFunc(\"wglGenlockSampleRateI3D\", wglGenlockSampleRateI3D == NULL);\r\n  glewInfoFunc(\"wglGenlockSourceDelayI3D\", wglGenlockSourceDelayI3D == NULL);\r\n  glewInfoFunc(\"wglGenlockSourceEdgeI3D\", wglGenlockSourceEdgeI3D == NULL);\r\n  glewInfoFunc(\"wglGenlockSourceI3D\", wglGenlockSourceI3D == NULL);\r\n  glewInfoFunc(\"wglGetGenlockSampleRateI3D\", wglGetGenlockSampleRateI3D == NULL);\r\n  glewInfoFunc(\"wglGetGenlockSourceDelayI3D\", wglGetGenlockSourceDelayI3D == NULL);\r\n  glewInfoFunc(\"wglGetGenlockSourceEdgeI3D\", wglGetGenlockSourceEdgeI3D == NULL);\r\n  glewInfoFunc(\"wglGetGenlockSourceI3D\", wglGetGenlockSourceI3D == NULL);\r\n  glewInfoFunc(\"wglIsEnabledGenlockI3D\", wglIsEnabledGenlockI3D == NULL);\r\n  glewInfoFunc(\"wglQueryGenlockMaxSourceDelayI3D\", wglQueryGenlockMaxSourceDelayI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_genlock */\r\n\r\n#ifdef WGL_I3D_image_buffer\r\n\r\nstatic void _glewInfo_WGL_I3D_image_buffer (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_image_buffer\", WGLEW_I3D_image_buffer, wglewIsSupported(\"WGL_I3D_image_buffer\"), wglewGetExtension(\"WGL_I3D_image_buffer\"));\r\n\r\n  glewInfoFunc(\"wglAssociateImageBufferEventsI3D\", wglAssociateImageBufferEventsI3D == NULL);\r\n  glewInfoFunc(\"wglCreateImageBufferI3D\", wglCreateImageBufferI3D == NULL);\r\n  glewInfoFunc(\"wglDestroyImageBufferI3D\", wglDestroyImageBufferI3D == NULL);\r\n  glewInfoFunc(\"wglReleaseImageBufferEventsI3D\", wglReleaseImageBufferEventsI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_image_buffer */\r\n\r\n#ifdef WGL_I3D_swap_frame_lock\r\n\r\nstatic void _glewInfo_WGL_I3D_swap_frame_lock (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_swap_frame_lock\", WGLEW_I3D_swap_frame_lock, wglewIsSupported(\"WGL_I3D_swap_frame_lock\"), wglewGetExtension(\"WGL_I3D_swap_frame_lock\"));\r\n\r\n  glewInfoFunc(\"wglDisableFrameLockI3D\", wglDisableFrameLockI3D == NULL);\r\n  glewInfoFunc(\"wglEnableFrameLockI3D\", wglEnableFrameLockI3D == NULL);\r\n  glewInfoFunc(\"wglIsEnabledFrameLockI3D\", wglIsEnabledFrameLockI3D == NULL);\r\n  glewInfoFunc(\"wglQueryFrameLockMasterI3D\", wglQueryFrameLockMasterI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_swap_frame_lock */\r\n\r\n#ifdef WGL_I3D_swap_frame_usage\r\n\r\nstatic void _glewInfo_WGL_I3D_swap_frame_usage (void)\r\n{\r\n  glewPrintExt(\"WGL_I3D_swap_frame_usage\", WGLEW_I3D_swap_frame_usage, wglewIsSupported(\"WGL_I3D_swap_frame_usage\"), wglewGetExtension(\"WGL_I3D_swap_frame_usage\"));\r\n\r\n  glewInfoFunc(\"wglBeginFrameTrackingI3D\", wglBeginFrameTrackingI3D == NULL);\r\n  glewInfoFunc(\"wglEndFrameTrackingI3D\", wglEndFrameTrackingI3D == NULL);\r\n  glewInfoFunc(\"wglGetFrameUsageI3D\", wglGetFrameUsageI3D == NULL);\r\n  glewInfoFunc(\"wglQueryFrameTrackingI3D\", wglQueryFrameTrackingI3D == NULL);\r\n}\r\n\r\n#endif /* WGL_I3D_swap_frame_usage */\r\n\r\n#ifdef WGL_NV_DX_interop\r\n\r\nstatic void _glewInfo_WGL_NV_DX_interop (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_DX_interop\", WGLEW_NV_DX_interop, wglewIsSupported(\"WGL_NV_DX_interop\"), wglewGetExtension(\"WGL_NV_DX_interop\"));\r\n\r\n  glewInfoFunc(\"wglDXCloseDeviceNV\", wglDXCloseDeviceNV == NULL);\r\n  glewInfoFunc(\"wglDXLockObjectsNV\", wglDXLockObjectsNV == NULL);\r\n  glewInfoFunc(\"wglDXObjectAccessNV\", wglDXObjectAccessNV == NULL);\r\n  glewInfoFunc(\"wglDXOpenDeviceNV\", wglDXOpenDeviceNV == NULL);\r\n  glewInfoFunc(\"wglDXRegisterObjectNV\", wglDXRegisterObjectNV == NULL);\r\n  glewInfoFunc(\"wglDXSetResourceShareHandleNV\", wglDXSetResourceShareHandleNV == NULL);\r\n  glewInfoFunc(\"wglDXUnlockObjectsNV\", wglDXUnlockObjectsNV == NULL);\r\n  glewInfoFunc(\"wglDXUnregisterObjectNV\", wglDXUnregisterObjectNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_DX_interop */\r\n\r\n#ifdef WGL_NV_DX_interop2\r\n\r\nstatic void _glewInfo_WGL_NV_DX_interop2 (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_DX_interop2\", WGLEW_NV_DX_interop2, wglewIsSupported(\"WGL_NV_DX_interop2\"), wglewGetExtension(\"WGL_NV_DX_interop2\"));\r\n}\r\n\r\n#endif /* WGL_NV_DX_interop2 */\r\n\r\n#ifdef WGL_NV_copy_image\r\n\r\nstatic void _glewInfo_WGL_NV_copy_image (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_copy_image\", WGLEW_NV_copy_image, wglewIsSupported(\"WGL_NV_copy_image\"), wglewGetExtension(\"WGL_NV_copy_image\"));\r\n\r\n  glewInfoFunc(\"wglCopyImageSubDataNV\", wglCopyImageSubDataNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_copy_image */\r\n\r\n#ifdef WGL_NV_delay_before_swap\r\n\r\nstatic void _glewInfo_WGL_NV_delay_before_swap (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_delay_before_swap\", WGLEW_NV_delay_before_swap, wglewIsSupported(\"WGL_NV_delay_before_swap\"), wglewGetExtension(\"WGL_NV_delay_before_swap\"));\r\n\r\n  glewInfoFunc(\"wglDelayBeforeSwapNV\", wglDelayBeforeSwapNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_delay_before_swap */\r\n\r\n#ifdef WGL_NV_float_buffer\r\n\r\nstatic void _glewInfo_WGL_NV_float_buffer (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_float_buffer\", WGLEW_NV_float_buffer, wglewIsSupported(\"WGL_NV_float_buffer\"), wglewGetExtension(\"WGL_NV_float_buffer\"));\r\n}\r\n\r\n#endif /* WGL_NV_float_buffer */\r\n\r\n#ifdef WGL_NV_gpu_affinity\r\n\r\nstatic void _glewInfo_WGL_NV_gpu_affinity (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_gpu_affinity\", WGLEW_NV_gpu_affinity, wglewIsSupported(\"WGL_NV_gpu_affinity\"), wglewGetExtension(\"WGL_NV_gpu_affinity\"));\r\n\r\n  glewInfoFunc(\"wglCreateAffinityDCNV\", wglCreateAffinityDCNV == NULL);\r\n  glewInfoFunc(\"wglDeleteDCNV\", wglDeleteDCNV == NULL);\r\n  glewInfoFunc(\"wglEnumGpuDevicesNV\", wglEnumGpuDevicesNV == NULL);\r\n  glewInfoFunc(\"wglEnumGpusFromAffinityDCNV\", wglEnumGpusFromAffinityDCNV == NULL);\r\n  glewInfoFunc(\"wglEnumGpusNV\", wglEnumGpusNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_gpu_affinity */\r\n\r\n#ifdef WGL_NV_multisample_coverage\r\n\r\nstatic void _glewInfo_WGL_NV_multisample_coverage (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_multisample_coverage\", WGLEW_NV_multisample_coverage, wglewIsSupported(\"WGL_NV_multisample_coverage\"), wglewGetExtension(\"WGL_NV_multisample_coverage\"));\r\n}\r\n\r\n#endif /* WGL_NV_multisample_coverage */\r\n\r\n#ifdef WGL_NV_present_video\r\n\r\nstatic void _glewInfo_WGL_NV_present_video (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_present_video\", WGLEW_NV_present_video, wglewIsSupported(\"WGL_NV_present_video\"), wglewGetExtension(\"WGL_NV_present_video\"));\r\n\r\n  glewInfoFunc(\"wglBindVideoDeviceNV\", wglBindVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"wglEnumerateVideoDevicesNV\", wglEnumerateVideoDevicesNV == NULL);\r\n  glewInfoFunc(\"wglQueryCurrentContextNV\", wglQueryCurrentContextNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_present_video */\r\n\r\n#ifdef WGL_NV_render_depth_texture\r\n\r\nstatic void _glewInfo_WGL_NV_render_depth_texture (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_render_depth_texture\", WGLEW_NV_render_depth_texture, wglewIsSupported(\"WGL_NV_render_depth_texture\"), wglewGetExtension(\"WGL_NV_render_depth_texture\"));\r\n}\r\n\r\n#endif /* WGL_NV_render_depth_texture */\r\n\r\n#ifdef WGL_NV_render_texture_rectangle\r\n\r\nstatic void _glewInfo_WGL_NV_render_texture_rectangle (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_render_texture_rectangle\", WGLEW_NV_render_texture_rectangle, wglewIsSupported(\"WGL_NV_render_texture_rectangle\"), wglewGetExtension(\"WGL_NV_render_texture_rectangle\"));\r\n}\r\n\r\n#endif /* WGL_NV_render_texture_rectangle */\r\n\r\n#ifdef WGL_NV_swap_group\r\n\r\nstatic void _glewInfo_WGL_NV_swap_group (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_swap_group\", WGLEW_NV_swap_group, wglewIsSupported(\"WGL_NV_swap_group\"), wglewGetExtension(\"WGL_NV_swap_group\"));\r\n\r\n  glewInfoFunc(\"wglBindSwapBarrierNV\", wglBindSwapBarrierNV == NULL);\r\n  glewInfoFunc(\"wglJoinSwapGroupNV\", wglJoinSwapGroupNV == NULL);\r\n  glewInfoFunc(\"wglQueryFrameCountNV\", wglQueryFrameCountNV == NULL);\r\n  glewInfoFunc(\"wglQueryMaxSwapGroupsNV\", wglQueryMaxSwapGroupsNV == NULL);\r\n  glewInfoFunc(\"wglQuerySwapGroupNV\", wglQuerySwapGroupNV == NULL);\r\n  glewInfoFunc(\"wglResetFrameCountNV\", wglResetFrameCountNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_swap_group */\r\n\r\n#ifdef WGL_NV_vertex_array_range\r\n\r\nstatic void _glewInfo_WGL_NV_vertex_array_range (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_vertex_array_range\", WGLEW_NV_vertex_array_range, wglewIsSupported(\"WGL_NV_vertex_array_range\"), wglewGetExtension(\"WGL_NV_vertex_array_range\"));\r\n\r\n  glewInfoFunc(\"wglAllocateMemoryNV\", wglAllocateMemoryNV == NULL);\r\n  glewInfoFunc(\"wglFreeMemoryNV\", wglFreeMemoryNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_vertex_array_range */\r\n\r\n#ifdef WGL_NV_video_capture\r\n\r\nstatic void _glewInfo_WGL_NV_video_capture (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_video_capture\", WGLEW_NV_video_capture, wglewIsSupported(\"WGL_NV_video_capture\"), wglewGetExtension(\"WGL_NV_video_capture\"));\r\n\r\n  glewInfoFunc(\"wglBindVideoCaptureDeviceNV\", wglBindVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"wglEnumerateVideoCaptureDevicesNV\", wglEnumerateVideoCaptureDevicesNV == NULL);\r\n  glewInfoFunc(\"wglLockVideoCaptureDeviceNV\", wglLockVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"wglQueryVideoCaptureDeviceNV\", wglQueryVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"wglReleaseVideoCaptureDeviceNV\", wglReleaseVideoCaptureDeviceNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_video_capture */\r\n\r\n#ifdef WGL_NV_video_output\r\n\r\nstatic void _glewInfo_WGL_NV_video_output (void)\r\n{\r\n  glewPrintExt(\"WGL_NV_video_output\", WGLEW_NV_video_output, wglewIsSupported(\"WGL_NV_video_output\"), wglewGetExtension(\"WGL_NV_video_output\"));\r\n\r\n  glewInfoFunc(\"wglBindVideoImageNV\", wglBindVideoImageNV == NULL);\r\n  glewInfoFunc(\"wglGetVideoDeviceNV\", wglGetVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"wglGetVideoInfoNV\", wglGetVideoInfoNV == NULL);\r\n  glewInfoFunc(\"wglReleaseVideoDeviceNV\", wglReleaseVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"wglReleaseVideoImageNV\", wglReleaseVideoImageNV == NULL);\r\n  glewInfoFunc(\"wglSendPbufferToVideoNV\", wglSendPbufferToVideoNV == NULL);\r\n}\r\n\r\n#endif /* WGL_NV_video_output */\r\n\r\n#ifdef WGL_OML_sync_control\r\n\r\nstatic void _glewInfo_WGL_OML_sync_control (void)\r\n{\r\n  glewPrintExt(\"WGL_OML_sync_control\", WGLEW_OML_sync_control, wglewIsSupported(\"WGL_OML_sync_control\"), wglewGetExtension(\"WGL_OML_sync_control\"));\r\n\r\n  glewInfoFunc(\"wglGetMscRateOML\", wglGetMscRateOML == NULL);\r\n  glewInfoFunc(\"wglGetSyncValuesOML\", wglGetSyncValuesOML == NULL);\r\n  glewInfoFunc(\"wglSwapBuffersMscOML\", wglSwapBuffersMscOML == NULL);\r\n  glewInfoFunc(\"wglSwapLayerBuffersMscOML\", wglSwapLayerBuffersMscOML == NULL);\r\n  glewInfoFunc(\"wglWaitForMscOML\", wglWaitForMscOML == NULL);\r\n  glewInfoFunc(\"wglWaitForSbcOML\", wglWaitForSbcOML == NULL);\r\n}\r\n\r\n#endif /* WGL_OML_sync_control */\r\n\r\n#else /* _UNIX */\r\n\r\n#ifdef GLX_VERSION_1_2\r\n\r\nstatic void _glewInfo_GLX_VERSION_1_2 (void)\r\n{\r\n  glewPrintExt(\"GLX_VERSION_1_2\", GLXEW_VERSION_1_2, GLXEW_VERSION_1_2, GLXEW_VERSION_1_2);\r\n\r\n  glewInfoFunc(\"glXGetCurrentDisplay\", glXGetCurrentDisplay == NULL);\r\n}\r\n\r\n#endif /* GLX_VERSION_1_2 */\r\n\r\n#ifdef GLX_VERSION_1_3\r\n\r\nstatic void _glewInfo_GLX_VERSION_1_3 (void)\r\n{\r\n  glewPrintExt(\"GLX_VERSION_1_3\", GLXEW_VERSION_1_3, GLXEW_VERSION_1_3, GLXEW_VERSION_1_3);\r\n\r\n  glewInfoFunc(\"glXChooseFBConfig\", glXChooseFBConfig == NULL);\r\n  glewInfoFunc(\"glXCreateNewContext\", glXCreateNewContext == NULL);\r\n  glewInfoFunc(\"glXCreatePbuffer\", glXCreatePbuffer == NULL);\r\n  glewInfoFunc(\"glXCreatePixmap\", glXCreatePixmap == NULL);\r\n  glewInfoFunc(\"glXCreateWindow\", glXCreateWindow == NULL);\r\n  glewInfoFunc(\"glXDestroyPbuffer\", glXDestroyPbuffer == NULL);\r\n  glewInfoFunc(\"glXDestroyPixmap\", glXDestroyPixmap == NULL);\r\n  glewInfoFunc(\"glXDestroyWindow\", glXDestroyWindow == NULL);\r\n  glewInfoFunc(\"glXGetCurrentReadDrawable\", glXGetCurrentReadDrawable == NULL);\r\n  glewInfoFunc(\"glXGetFBConfigAttrib\", glXGetFBConfigAttrib == NULL);\r\n  glewInfoFunc(\"glXGetFBConfigs\", glXGetFBConfigs == NULL);\r\n  glewInfoFunc(\"glXGetSelectedEvent\", glXGetSelectedEvent == NULL);\r\n  glewInfoFunc(\"glXGetVisualFromFBConfig\", glXGetVisualFromFBConfig == NULL);\r\n  glewInfoFunc(\"glXMakeContextCurrent\", glXMakeContextCurrent == NULL);\r\n  glewInfoFunc(\"glXQueryContext\", glXQueryContext == NULL);\r\n  glewInfoFunc(\"glXQueryDrawable\", glXQueryDrawable == NULL);\r\n  glewInfoFunc(\"glXSelectEvent\", glXSelectEvent == NULL);\r\n}\r\n\r\n#endif /* GLX_VERSION_1_3 */\r\n\r\n#ifdef GLX_VERSION_1_4\r\n\r\nstatic void _glewInfo_GLX_VERSION_1_4 (void)\r\n{\r\n  glewPrintExt(\"GLX_VERSION_1_4\", GLXEW_VERSION_1_4, GLXEW_VERSION_1_4, GLXEW_VERSION_1_4);\r\n}\r\n\r\n#endif /* GLX_VERSION_1_4 */\r\n\r\n#ifdef GLX_3DFX_multisample\r\n\r\nstatic void _glewInfo_GLX_3DFX_multisample (void)\r\n{\r\n  glewPrintExt(\"GLX_3DFX_multisample\", GLXEW_3DFX_multisample, glxewIsSupported(\"GLX_3DFX_multisample\"), glxewGetExtension(\"GLX_3DFX_multisample\"));\r\n}\r\n\r\n#endif /* GLX_3DFX_multisample */\r\n\r\n#ifdef GLX_AMD_gpu_association\r\n\r\nstatic void _glewInfo_GLX_AMD_gpu_association (void)\r\n{\r\n  glewPrintExt(\"GLX_AMD_gpu_association\", GLXEW_AMD_gpu_association, glxewIsSupported(\"GLX_AMD_gpu_association\"), glxewGetExtension(\"GLX_AMD_gpu_association\"));\r\n\r\n  glewInfoFunc(\"glXBlitContextFramebufferAMD\", glXBlitContextFramebufferAMD == NULL);\r\n  glewInfoFunc(\"glXCreateAssociatedContextAMD\", glXCreateAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"glXCreateAssociatedContextAttribsAMD\", glXCreateAssociatedContextAttribsAMD == NULL);\r\n  glewInfoFunc(\"glXDeleteAssociatedContextAMD\", glXDeleteAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"glXGetContextGPUIDAMD\", glXGetContextGPUIDAMD == NULL);\r\n  glewInfoFunc(\"glXGetCurrentAssociatedContextAMD\", glXGetCurrentAssociatedContextAMD == NULL);\r\n  glewInfoFunc(\"glXGetGPUIDsAMD\", glXGetGPUIDsAMD == NULL);\r\n  glewInfoFunc(\"glXGetGPUInfoAMD\", glXGetGPUInfoAMD == NULL);\r\n  glewInfoFunc(\"glXMakeAssociatedContextCurrentAMD\", glXMakeAssociatedContextCurrentAMD == NULL);\r\n}\r\n\r\n#endif /* GLX_AMD_gpu_association */\r\n\r\n#ifdef GLX_ARB_context_flush_control\r\n\r\nstatic void _glewInfo_GLX_ARB_context_flush_control (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_context_flush_control\", GLXEW_ARB_context_flush_control, glxewIsSupported(\"GLX_ARB_context_flush_control\"), glxewGetExtension(\"GLX_ARB_context_flush_control\"));\r\n}\r\n\r\n#endif /* GLX_ARB_context_flush_control */\r\n\r\n#ifdef GLX_ARB_create_context\r\n\r\nstatic void _glewInfo_GLX_ARB_create_context (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_create_context\", GLXEW_ARB_create_context, glxewIsSupported(\"GLX_ARB_create_context\"), glxewGetExtension(\"GLX_ARB_create_context\"));\r\n\r\n  glewInfoFunc(\"glXCreateContextAttribsARB\", glXCreateContextAttribsARB == NULL);\r\n}\r\n\r\n#endif /* GLX_ARB_create_context */\r\n\r\n#ifdef GLX_ARB_create_context_no_error\r\n\r\nstatic void _glewInfo_GLX_ARB_create_context_no_error (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_create_context_no_error\", GLXEW_ARB_create_context_no_error, glxewIsSupported(\"GLX_ARB_create_context_no_error\"), glxewGetExtension(\"GLX_ARB_create_context_no_error\"));\r\n}\r\n\r\n#endif /* GLX_ARB_create_context_no_error */\r\n\r\n#ifdef GLX_ARB_create_context_profile\r\n\r\nstatic void _glewInfo_GLX_ARB_create_context_profile (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_create_context_profile\", GLXEW_ARB_create_context_profile, glxewIsSupported(\"GLX_ARB_create_context_profile\"), glxewGetExtension(\"GLX_ARB_create_context_profile\"));\r\n}\r\n\r\n#endif /* GLX_ARB_create_context_profile */\r\n\r\n#ifdef GLX_ARB_create_context_robustness\r\n\r\nstatic void _glewInfo_GLX_ARB_create_context_robustness (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_create_context_robustness\", GLXEW_ARB_create_context_robustness, glxewIsSupported(\"GLX_ARB_create_context_robustness\"), glxewGetExtension(\"GLX_ARB_create_context_robustness\"));\r\n}\r\n\r\n#endif /* GLX_ARB_create_context_robustness */\r\n\r\n#ifdef GLX_ARB_fbconfig_float\r\n\r\nstatic void _glewInfo_GLX_ARB_fbconfig_float (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_fbconfig_float\", GLXEW_ARB_fbconfig_float, glxewIsSupported(\"GLX_ARB_fbconfig_float\"), glxewGetExtension(\"GLX_ARB_fbconfig_float\"));\r\n}\r\n\r\n#endif /* GLX_ARB_fbconfig_float */\r\n\r\n#ifdef GLX_ARB_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_GLX_ARB_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_framebuffer_sRGB\", GLXEW_ARB_framebuffer_sRGB, glxewIsSupported(\"GLX_ARB_framebuffer_sRGB\"), glxewGetExtension(\"GLX_ARB_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* GLX_ARB_framebuffer_sRGB */\r\n\r\n#ifdef GLX_ARB_get_proc_address\r\n\r\nstatic void _glewInfo_GLX_ARB_get_proc_address (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_get_proc_address\", GLXEW_ARB_get_proc_address, glxewIsSupported(\"GLX_ARB_get_proc_address\"), glxewGetExtension(\"GLX_ARB_get_proc_address\"));\r\n}\r\n\r\n#endif /* GLX_ARB_get_proc_address */\r\n\r\n#ifdef GLX_ARB_multisample\r\n\r\nstatic void _glewInfo_GLX_ARB_multisample (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_multisample\", GLXEW_ARB_multisample, glxewIsSupported(\"GLX_ARB_multisample\"), glxewGetExtension(\"GLX_ARB_multisample\"));\r\n}\r\n\r\n#endif /* GLX_ARB_multisample */\r\n\r\n#ifdef GLX_ARB_robustness_application_isolation\r\n\r\nstatic void _glewInfo_GLX_ARB_robustness_application_isolation (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_robustness_application_isolation\", GLXEW_ARB_robustness_application_isolation, glxewIsSupported(\"GLX_ARB_robustness_application_isolation\"), glxewGetExtension(\"GLX_ARB_robustness_application_isolation\"));\r\n}\r\n\r\n#endif /* GLX_ARB_robustness_application_isolation */\r\n\r\n#ifdef GLX_ARB_robustness_share_group_isolation\r\n\r\nstatic void _glewInfo_GLX_ARB_robustness_share_group_isolation (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_robustness_share_group_isolation\", GLXEW_ARB_robustness_share_group_isolation, glxewIsSupported(\"GLX_ARB_robustness_share_group_isolation\"), glxewGetExtension(\"GLX_ARB_robustness_share_group_isolation\"));\r\n}\r\n\r\n#endif /* GLX_ARB_robustness_share_group_isolation */\r\n\r\n#ifdef GLX_ARB_vertex_buffer_object\r\n\r\nstatic void _glewInfo_GLX_ARB_vertex_buffer_object (void)\r\n{\r\n  glewPrintExt(\"GLX_ARB_vertex_buffer_object\", GLXEW_ARB_vertex_buffer_object, glxewIsSupported(\"GLX_ARB_vertex_buffer_object\"), glxewGetExtension(\"GLX_ARB_vertex_buffer_object\"));\r\n}\r\n\r\n#endif /* GLX_ARB_vertex_buffer_object */\r\n\r\n#ifdef GLX_ATI_pixel_format_float\r\n\r\nstatic void _glewInfo_GLX_ATI_pixel_format_float (void)\r\n{\r\n  glewPrintExt(\"GLX_ATI_pixel_format_float\", GLXEW_ATI_pixel_format_float, glxewIsSupported(\"GLX_ATI_pixel_format_float\"), glxewGetExtension(\"GLX_ATI_pixel_format_float\"));\r\n}\r\n\r\n#endif /* GLX_ATI_pixel_format_float */\r\n\r\n#ifdef GLX_ATI_render_texture\r\n\r\nstatic void _glewInfo_GLX_ATI_render_texture (void)\r\n{\r\n  glewPrintExt(\"GLX_ATI_render_texture\", GLXEW_ATI_render_texture, glxewIsSupported(\"GLX_ATI_render_texture\"), glxewGetExtension(\"GLX_ATI_render_texture\"));\r\n\r\n  glewInfoFunc(\"glXBindTexImageATI\", glXBindTexImageATI == NULL);\r\n  glewInfoFunc(\"glXDrawableAttribATI\", glXDrawableAttribATI == NULL);\r\n  glewInfoFunc(\"glXReleaseTexImageATI\", glXReleaseTexImageATI == NULL);\r\n}\r\n\r\n#endif /* GLX_ATI_render_texture */\r\n\r\n#ifdef GLX_EXT_buffer_age\r\n\r\nstatic void _glewInfo_GLX_EXT_buffer_age (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_buffer_age\", GLXEW_EXT_buffer_age, glxewIsSupported(\"GLX_EXT_buffer_age\"), glxewGetExtension(\"GLX_EXT_buffer_age\"));\r\n}\r\n\r\n#endif /* GLX_EXT_buffer_age */\r\n\r\n#ifdef GLX_EXT_create_context_es2_profile\r\n\r\nstatic void _glewInfo_GLX_EXT_create_context_es2_profile (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_create_context_es2_profile\", GLXEW_EXT_create_context_es2_profile, glxewIsSupported(\"GLX_EXT_create_context_es2_profile\"), glxewGetExtension(\"GLX_EXT_create_context_es2_profile\"));\r\n}\r\n\r\n#endif /* GLX_EXT_create_context_es2_profile */\r\n\r\n#ifdef GLX_EXT_create_context_es_profile\r\n\r\nstatic void _glewInfo_GLX_EXT_create_context_es_profile (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_create_context_es_profile\", GLXEW_EXT_create_context_es_profile, glxewIsSupported(\"GLX_EXT_create_context_es_profile\"), glxewGetExtension(\"GLX_EXT_create_context_es_profile\"));\r\n}\r\n\r\n#endif /* GLX_EXT_create_context_es_profile */\r\n\r\n#ifdef GLX_EXT_fbconfig_packed_float\r\n\r\nstatic void _glewInfo_GLX_EXT_fbconfig_packed_float (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_fbconfig_packed_float\", GLXEW_EXT_fbconfig_packed_float, glxewIsSupported(\"GLX_EXT_fbconfig_packed_float\"), glxewGetExtension(\"GLX_EXT_fbconfig_packed_float\"));\r\n}\r\n\r\n#endif /* GLX_EXT_fbconfig_packed_float */\r\n\r\n#ifdef GLX_EXT_framebuffer_sRGB\r\n\r\nstatic void _glewInfo_GLX_EXT_framebuffer_sRGB (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_framebuffer_sRGB\", GLXEW_EXT_framebuffer_sRGB, glxewIsSupported(\"GLX_EXT_framebuffer_sRGB\"), glxewGetExtension(\"GLX_EXT_framebuffer_sRGB\"));\r\n}\r\n\r\n#endif /* GLX_EXT_framebuffer_sRGB */\r\n\r\n#ifdef GLX_EXT_import_context\r\n\r\nstatic void _glewInfo_GLX_EXT_import_context (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_import_context\", GLXEW_EXT_import_context, glxewIsSupported(\"GLX_EXT_import_context\"), glxewGetExtension(\"GLX_EXT_import_context\"));\r\n\r\n  glewInfoFunc(\"glXFreeContextEXT\", glXFreeContextEXT == NULL);\r\n  glewInfoFunc(\"glXGetContextIDEXT\", glXGetContextIDEXT == NULL);\r\n  glewInfoFunc(\"glXImportContextEXT\", glXImportContextEXT == NULL);\r\n  glewInfoFunc(\"glXQueryContextInfoEXT\", glXQueryContextInfoEXT == NULL);\r\n}\r\n\r\n#endif /* GLX_EXT_import_context */\r\n\r\n#ifdef GLX_EXT_libglvnd\r\n\r\nstatic void _glewInfo_GLX_EXT_libglvnd (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_libglvnd\", GLXEW_EXT_libglvnd, glxewIsSupported(\"GLX_EXT_libglvnd\"), glxewGetExtension(\"GLX_EXT_libglvnd\"));\r\n}\r\n\r\n#endif /* GLX_EXT_libglvnd */\r\n\r\n#ifdef GLX_EXT_scene_marker\r\n\r\nstatic void _glewInfo_GLX_EXT_scene_marker (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_scene_marker\", GLXEW_EXT_scene_marker, glxewIsSupported(\"GLX_EXT_scene_marker\"), glxewGetExtension(\"GLX_EXT_scene_marker\"));\r\n}\r\n\r\n#endif /* GLX_EXT_scene_marker */\r\n\r\n#ifdef GLX_EXT_stereo_tree\r\n\r\nstatic void _glewInfo_GLX_EXT_stereo_tree (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_stereo_tree\", GLXEW_EXT_stereo_tree, glxewIsSupported(\"GLX_EXT_stereo_tree\"), glxewGetExtension(\"GLX_EXT_stereo_tree\"));\r\n}\r\n\r\n#endif /* GLX_EXT_stereo_tree */\r\n\r\n#ifdef GLX_EXT_swap_control\r\n\r\nstatic void _glewInfo_GLX_EXT_swap_control (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_swap_control\", GLXEW_EXT_swap_control, glxewIsSupported(\"GLX_EXT_swap_control\"), glxewGetExtension(\"GLX_EXT_swap_control\"));\r\n\r\n  glewInfoFunc(\"glXSwapIntervalEXT\", glXSwapIntervalEXT == NULL);\r\n}\r\n\r\n#endif /* GLX_EXT_swap_control */\r\n\r\n#ifdef GLX_EXT_swap_control_tear\r\n\r\nstatic void _glewInfo_GLX_EXT_swap_control_tear (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_swap_control_tear\", GLXEW_EXT_swap_control_tear, glxewIsSupported(\"GLX_EXT_swap_control_tear\"), glxewGetExtension(\"GLX_EXT_swap_control_tear\"));\r\n}\r\n\r\n#endif /* GLX_EXT_swap_control_tear */\r\n\r\n#ifdef GLX_EXT_texture_from_pixmap\r\n\r\nstatic void _glewInfo_GLX_EXT_texture_from_pixmap (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_texture_from_pixmap\", GLXEW_EXT_texture_from_pixmap, glxewIsSupported(\"GLX_EXT_texture_from_pixmap\"), glxewGetExtension(\"GLX_EXT_texture_from_pixmap\"));\r\n\r\n  glewInfoFunc(\"glXBindTexImageEXT\", glXBindTexImageEXT == NULL);\r\n  glewInfoFunc(\"glXReleaseTexImageEXT\", glXReleaseTexImageEXT == NULL);\r\n}\r\n\r\n#endif /* GLX_EXT_texture_from_pixmap */\r\n\r\n#ifdef GLX_EXT_visual_info\r\n\r\nstatic void _glewInfo_GLX_EXT_visual_info (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_visual_info\", GLXEW_EXT_visual_info, glxewIsSupported(\"GLX_EXT_visual_info\"), glxewGetExtension(\"GLX_EXT_visual_info\"));\r\n}\r\n\r\n#endif /* GLX_EXT_visual_info */\r\n\r\n#ifdef GLX_EXT_visual_rating\r\n\r\nstatic void _glewInfo_GLX_EXT_visual_rating (void)\r\n{\r\n  glewPrintExt(\"GLX_EXT_visual_rating\", GLXEW_EXT_visual_rating, glxewIsSupported(\"GLX_EXT_visual_rating\"), glxewGetExtension(\"GLX_EXT_visual_rating\"));\r\n}\r\n\r\n#endif /* GLX_EXT_visual_rating */\r\n\r\n#ifdef GLX_INTEL_swap_event\r\n\r\nstatic void _glewInfo_GLX_INTEL_swap_event (void)\r\n{\r\n  glewPrintExt(\"GLX_INTEL_swap_event\", GLXEW_INTEL_swap_event, glxewIsSupported(\"GLX_INTEL_swap_event\"), glxewGetExtension(\"GLX_INTEL_swap_event\"));\r\n}\r\n\r\n#endif /* GLX_INTEL_swap_event */\r\n\r\n#ifdef GLX_MESA_agp_offset\r\n\r\nstatic void _glewInfo_GLX_MESA_agp_offset (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_agp_offset\", GLXEW_MESA_agp_offset, glxewIsSupported(\"GLX_MESA_agp_offset\"), glxewGetExtension(\"GLX_MESA_agp_offset\"));\r\n\r\n  glewInfoFunc(\"glXGetAGPOffsetMESA\", glXGetAGPOffsetMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_agp_offset */\r\n\r\n#ifdef GLX_MESA_copy_sub_buffer\r\n\r\nstatic void _glewInfo_GLX_MESA_copy_sub_buffer (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_copy_sub_buffer\", GLXEW_MESA_copy_sub_buffer, glxewIsSupported(\"GLX_MESA_copy_sub_buffer\"), glxewGetExtension(\"GLX_MESA_copy_sub_buffer\"));\r\n\r\n  glewInfoFunc(\"glXCopySubBufferMESA\", glXCopySubBufferMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_copy_sub_buffer */\r\n\r\n#ifdef GLX_MESA_pixmap_colormap\r\n\r\nstatic void _glewInfo_GLX_MESA_pixmap_colormap (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_pixmap_colormap\", GLXEW_MESA_pixmap_colormap, glxewIsSupported(\"GLX_MESA_pixmap_colormap\"), glxewGetExtension(\"GLX_MESA_pixmap_colormap\"));\r\n\r\n  glewInfoFunc(\"glXCreateGLXPixmapMESA\", glXCreateGLXPixmapMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_pixmap_colormap */\r\n\r\n#ifdef GLX_MESA_query_renderer\r\n\r\nstatic void _glewInfo_GLX_MESA_query_renderer (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_query_renderer\", GLXEW_MESA_query_renderer, glxewIsSupported(\"GLX_MESA_query_renderer\"), glxewGetExtension(\"GLX_MESA_query_renderer\"));\r\n\r\n  glewInfoFunc(\"glXQueryCurrentRendererIntegerMESA\", glXQueryCurrentRendererIntegerMESA == NULL);\r\n  glewInfoFunc(\"glXQueryCurrentRendererStringMESA\", glXQueryCurrentRendererStringMESA == NULL);\r\n  glewInfoFunc(\"glXQueryRendererIntegerMESA\", glXQueryRendererIntegerMESA == NULL);\r\n  glewInfoFunc(\"glXQueryRendererStringMESA\", glXQueryRendererStringMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_query_renderer */\r\n\r\n#ifdef GLX_MESA_release_buffers\r\n\r\nstatic void _glewInfo_GLX_MESA_release_buffers (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_release_buffers\", GLXEW_MESA_release_buffers, glxewIsSupported(\"GLX_MESA_release_buffers\"), glxewGetExtension(\"GLX_MESA_release_buffers\"));\r\n\r\n  glewInfoFunc(\"glXReleaseBuffersMESA\", glXReleaseBuffersMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_release_buffers */\r\n\r\n#ifdef GLX_MESA_set_3dfx_mode\r\n\r\nstatic void _glewInfo_GLX_MESA_set_3dfx_mode (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_set_3dfx_mode\", GLXEW_MESA_set_3dfx_mode, glxewIsSupported(\"GLX_MESA_set_3dfx_mode\"), glxewGetExtension(\"GLX_MESA_set_3dfx_mode\"));\r\n\r\n  glewInfoFunc(\"glXSet3DfxModeMESA\", glXSet3DfxModeMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_set_3dfx_mode */\r\n\r\n#ifdef GLX_MESA_swap_control\r\n\r\nstatic void _glewInfo_GLX_MESA_swap_control (void)\r\n{\r\n  glewPrintExt(\"GLX_MESA_swap_control\", GLXEW_MESA_swap_control, glxewIsSupported(\"GLX_MESA_swap_control\"), glxewGetExtension(\"GLX_MESA_swap_control\"));\r\n\r\n  glewInfoFunc(\"glXGetSwapIntervalMESA\", glXGetSwapIntervalMESA == NULL);\r\n  glewInfoFunc(\"glXSwapIntervalMESA\", glXSwapIntervalMESA == NULL);\r\n}\r\n\r\n#endif /* GLX_MESA_swap_control */\r\n\r\n#ifdef GLX_NV_copy_buffer\r\n\r\nstatic void _glewInfo_GLX_NV_copy_buffer (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_copy_buffer\", GLXEW_NV_copy_buffer, glxewIsSupported(\"GLX_NV_copy_buffer\"), glxewGetExtension(\"GLX_NV_copy_buffer\"));\r\n\r\n  glewInfoFunc(\"glXCopyBufferSubDataNV\", glXCopyBufferSubDataNV == NULL);\r\n  glewInfoFunc(\"glXNamedCopyBufferSubDataNV\", glXNamedCopyBufferSubDataNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_copy_buffer */\r\n\r\n#ifdef GLX_NV_copy_image\r\n\r\nstatic void _glewInfo_GLX_NV_copy_image (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_copy_image\", GLXEW_NV_copy_image, glxewIsSupported(\"GLX_NV_copy_image\"), glxewGetExtension(\"GLX_NV_copy_image\"));\r\n\r\n  glewInfoFunc(\"glXCopyImageSubDataNV\", glXCopyImageSubDataNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_copy_image */\r\n\r\n#ifdef GLX_NV_delay_before_swap\r\n\r\nstatic void _glewInfo_GLX_NV_delay_before_swap (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_delay_before_swap\", GLXEW_NV_delay_before_swap, glxewIsSupported(\"GLX_NV_delay_before_swap\"), glxewGetExtension(\"GLX_NV_delay_before_swap\"));\r\n\r\n  glewInfoFunc(\"glXDelayBeforeSwapNV\", glXDelayBeforeSwapNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_delay_before_swap */\r\n\r\n#ifdef GLX_NV_float_buffer\r\n\r\nstatic void _glewInfo_GLX_NV_float_buffer (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_float_buffer\", GLXEW_NV_float_buffer, glxewIsSupported(\"GLX_NV_float_buffer\"), glxewGetExtension(\"GLX_NV_float_buffer\"));\r\n}\r\n\r\n#endif /* GLX_NV_float_buffer */\r\n\r\n#ifdef GLX_NV_multisample_coverage\r\n\r\nstatic void _glewInfo_GLX_NV_multisample_coverage (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_multisample_coverage\", GLXEW_NV_multisample_coverage, glxewIsSupported(\"GLX_NV_multisample_coverage\"), glxewGetExtension(\"GLX_NV_multisample_coverage\"));\r\n}\r\n\r\n#endif /* GLX_NV_multisample_coverage */\r\n\r\n#ifdef GLX_NV_present_video\r\n\r\nstatic void _glewInfo_GLX_NV_present_video (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_present_video\", GLXEW_NV_present_video, glxewIsSupported(\"GLX_NV_present_video\"), glxewGetExtension(\"GLX_NV_present_video\"));\r\n\r\n  glewInfoFunc(\"glXBindVideoDeviceNV\", glXBindVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"glXEnumerateVideoDevicesNV\", glXEnumerateVideoDevicesNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_present_video */\r\n\r\n#ifdef GLX_NV_robustness_video_memory_purge\r\n\r\nstatic void _glewInfo_GLX_NV_robustness_video_memory_purge (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_robustness_video_memory_purge\", GLXEW_NV_robustness_video_memory_purge, glxewIsSupported(\"GLX_NV_robustness_video_memory_purge\"), glxewGetExtension(\"GLX_NV_robustness_video_memory_purge\"));\r\n}\r\n\r\n#endif /* GLX_NV_robustness_video_memory_purge */\r\n\r\n#ifdef GLX_NV_swap_group\r\n\r\nstatic void _glewInfo_GLX_NV_swap_group (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_swap_group\", GLXEW_NV_swap_group, glxewIsSupported(\"GLX_NV_swap_group\"), glxewGetExtension(\"GLX_NV_swap_group\"));\r\n\r\n  glewInfoFunc(\"glXBindSwapBarrierNV\", glXBindSwapBarrierNV == NULL);\r\n  glewInfoFunc(\"glXJoinSwapGroupNV\", glXJoinSwapGroupNV == NULL);\r\n  glewInfoFunc(\"glXQueryFrameCountNV\", glXQueryFrameCountNV == NULL);\r\n  glewInfoFunc(\"glXQueryMaxSwapGroupsNV\", glXQueryMaxSwapGroupsNV == NULL);\r\n  glewInfoFunc(\"glXQuerySwapGroupNV\", glXQuerySwapGroupNV == NULL);\r\n  glewInfoFunc(\"glXResetFrameCountNV\", glXResetFrameCountNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_swap_group */\r\n\r\n#ifdef GLX_NV_vertex_array_range\r\n\r\nstatic void _glewInfo_GLX_NV_vertex_array_range (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_vertex_array_range\", GLXEW_NV_vertex_array_range, glxewIsSupported(\"GLX_NV_vertex_array_range\"), glxewGetExtension(\"GLX_NV_vertex_array_range\"));\r\n\r\n  glewInfoFunc(\"glXAllocateMemoryNV\", glXAllocateMemoryNV == NULL);\r\n  glewInfoFunc(\"glXFreeMemoryNV\", glXFreeMemoryNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_vertex_array_range */\r\n\r\n#ifdef GLX_NV_video_capture\r\n\r\nstatic void _glewInfo_GLX_NV_video_capture (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_video_capture\", GLXEW_NV_video_capture, glxewIsSupported(\"GLX_NV_video_capture\"), glxewGetExtension(\"GLX_NV_video_capture\"));\r\n\r\n  glewInfoFunc(\"glXBindVideoCaptureDeviceNV\", glXBindVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"glXEnumerateVideoCaptureDevicesNV\", glXEnumerateVideoCaptureDevicesNV == NULL);\r\n  glewInfoFunc(\"glXLockVideoCaptureDeviceNV\", glXLockVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"glXQueryVideoCaptureDeviceNV\", glXQueryVideoCaptureDeviceNV == NULL);\r\n  glewInfoFunc(\"glXReleaseVideoCaptureDeviceNV\", glXReleaseVideoCaptureDeviceNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_video_capture */\r\n\r\n#ifdef GLX_NV_video_out\r\n\r\nstatic void _glewInfo_GLX_NV_video_out (void)\r\n{\r\n  glewPrintExt(\"GLX_NV_video_out\", GLXEW_NV_video_out, glxewIsSupported(\"GLX_NV_video_out\"), glxewGetExtension(\"GLX_NV_video_out\"));\r\n\r\n  glewInfoFunc(\"glXBindVideoImageNV\", glXBindVideoImageNV == NULL);\r\n  glewInfoFunc(\"glXGetVideoDeviceNV\", glXGetVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"glXGetVideoInfoNV\", glXGetVideoInfoNV == NULL);\r\n  glewInfoFunc(\"glXReleaseVideoDeviceNV\", glXReleaseVideoDeviceNV == NULL);\r\n  glewInfoFunc(\"glXReleaseVideoImageNV\", glXReleaseVideoImageNV == NULL);\r\n  glewInfoFunc(\"glXSendPbufferToVideoNV\", glXSendPbufferToVideoNV == NULL);\r\n}\r\n\r\n#endif /* GLX_NV_video_out */\r\n\r\n#ifdef GLX_OML_swap_method\r\n\r\nstatic void _glewInfo_GLX_OML_swap_method (void)\r\n{\r\n  glewPrintExt(\"GLX_OML_swap_method\", GLXEW_OML_swap_method, glxewIsSupported(\"GLX_OML_swap_method\"), glxewGetExtension(\"GLX_OML_swap_method\"));\r\n}\r\n\r\n#endif /* GLX_OML_swap_method */\r\n\r\n#ifdef GLX_OML_sync_control\r\n\r\nstatic void _glewInfo_GLX_OML_sync_control (void)\r\n{\r\n  glewPrintExt(\"GLX_OML_sync_control\", GLXEW_OML_sync_control, glxewIsSupported(\"GLX_OML_sync_control\"), glxewGetExtension(\"GLX_OML_sync_control\"));\r\n\r\n  glewInfoFunc(\"glXGetMscRateOML\", glXGetMscRateOML == NULL);\r\n  glewInfoFunc(\"glXGetSyncValuesOML\", glXGetSyncValuesOML == NULL);\r\n  glewInfoFunc(\"glXSwapBuffersMscOML\", glXSwapBuffersMscOML == NULL);\r\n  glewInfoFunc(\"glXWaitForMscOML\", glXWaitForMscOML == NULL);\r\n  glewInfoFunc(\"glXWaitForSbcOML\", glXWaitForSbcOML == NULL);\r\n}\r\n\r\n#endif /* GLX_OML_sync_control */\r\n\r\n#ifdef GLX_SGIS_blended_overlay\r\n\r\nstatic void _glewInfo_GLX_SGIS_blended_overlay (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIS_blended_overlay\", GLXEW_SGIS_blended_overlay, glxewIsSupported(\"GLX_SGIS_blended_overlay\"), glxewGetExtension(\"GLX_SGIS_blended_overlay\"));\r\n}\r\n\r\n#endif /* GLX_SGIS_blended_overlay */\r\n\r\n#ifdef GLX_SGIS_color_range\r\n\r\nstatic void _glewInfo_GLX_SGIS_color_range (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIS_color_range\", GLXEW_SGIS_color_range, glxewIsSupported(\"GLX_SGIS_color_range\"), glxewGetExtension(\"GLX_SGIS_color_range\"));\r\n}\r\n\r\n#endif /* GLX_SGIS_color_range */\r\n\r\n#ifdef GLX_SGIS_multisample\r\n\r\nstatic void _glewInfo_GLX_SGIS_multisample (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIS_multisample\", GLXEW_SGIS_multisample, glxewIsSupported(\"GLX_SGIS_multisample\"), glxewGetExtension(\"GLX_SGIS_multisample\"));\r\n}\r\n\r\n#endif /* GLX_SGIS_multisample */\r\n\r\n#ifdef GLX_SGIS_shared_multisample\r\n\r\nstatic void _glewInfo_GLX_SGIS_shared_multisample (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIS_shared_multisample\", GLXEW_SGIS_shared_multisample, glxewIsSupported(\"GLX_SGIS_shared_multisample\"), glxewGetExtension(\"GLX_SGIS_shared_multisample\"));\r\n}\r\n\r\n#endif /* GLX_SGIS_shared_multisample */\r\n\r\n#ifdef GLX_SGIX_fbconfig\r\n\r\nstatic void _glewInfo_GLX_SGIX_fbconfig (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_fbconfig\", GLXEW_SGIX_fbconfig, glxewIsSupported(\"GLX_SGIX_fbconfig\"), glxewGetExtension(\"GLX_SGIX_fbconfig\"));\r\n\r\n  glewInfoFunc(\"glXChooseFBConfigSGIX\", glXChooseFBConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXCreateContextWithConfigSGIX\", glXCreateContextWithConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXCreateGLXPixmapWithConfigSGIX\", glXCreateGLXPixmapWithConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXGetFBConfigAttribSGIX\", glXGetFBConfigAttribSGIX == NULL);\r\n  glewInfoFunc(\"glXGetFBConfigFromVisualSGIX\", glXGetFBConfigFromVisualSGIX == NULL);\r\n  glewInfoFunc(\"glXGetVisualFromFBConfigSGIX\", glXGetVisualFromFBConfigSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_fbconfig */\r\n\r\n#ifdef GLX_SGIX_hyperpipe\r\n\r\nstatic void _glewInfo_GLX_SGIX_hyperpipe (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_hyperpipe\", GLXEW_SGIX_hyperpipe, glxewIsSupported(\"GLX_SGIX_hyperpipe\"), glxewGetExtension(\"GLX_SGIX_hyperpipe\"));\r\n\r\n  glewInfoFunc(\"glXBindHyperpipeSGIX\", glXBindHyperpipeSGIX == NULL);\r\n  glewInfoFunc(\"glXDestroyHyperpipeConfigSGIX\", glXDestroyHyperpipeConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXHyperpipeAttribSGIX\", glXHyperpipeAttribSGIX == NULL);\r\n  glewInfoFunc(\"glXHyperpipeConfigSGIX\", glXHyperpipeConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryHyperpipeAttribSGIX\", glXQueryHyperpipeAttribSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryHyperpipeBestAttribSGIX\", glXQueryHyperpipeBestAttribSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryHyperpipeConfigSGIX\", glXQueryHyperpipeConfigSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryHyperpipeNetworkSGIX\", glXQueryHyperpipeNetworkSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_hyperpipe */\r\n\r\n#ifdef GLX_SGIX_pbuffer\r\n\r\nstatic void _glewInfo_GLX_SGIX_pbuffer (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_pbuffer\", GLXEW_SGIX_pbuffer, glxewIsSupported(\"GLX_SGIX_pbuffer\"), glxewGetExtension(\"GLX_SGIX_pbuffer\"));\r\n\r\n  glewInfoFunc(\"glXCreateGLXPbufferSGIX\", glXCreateGLXPbufferSGIX == NULL);\r\n  glewInfoFunc(\"glXDestroyGLXPbufferSGIX\", glXDestroyGLXPbufferSGIX == NULL);\r\n  glewInfoFunc(\"glXGetSelectedEventSGIX\", glXGetSelectedEventSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryGLXPbufferSGIX\", glXQueryGLXPbufferSGIX == NULL);\r\n  glewInfoFunc(\"glXSelectEventSGIX\", glXSelectEventSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_pbuffer */\r\n\r\n#ifdef GLX_SGIX_swap_barrier\r\n\r\nstatic void _glewInfo_GLX_SGIX_swap_barrier (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_swap_barrier\", GLXEW_SGIX_swap_barrier, glxewIsSupported(\"GLX_SGIX_swap_barrier\"), glxewGetExtension(\"GLX_SGIX_swap_barrier\"));\r\n\r\n  glewInfoFunc(\"glXBindSwapBarrierSGIX\", glXBindSwapBarrierSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryMaxSwapBarriersSGIX\", glXQueryMaxSwapBarriersSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_swap_barrier */\r\n\r\n#ifdef GLX_SGIX_swap_group\r\n\r\nstatic void _glewInfo_GLX_SGIX_swap_group (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_swap_group\", GLXEW_SGIX_swap_group, glxewIsSupported(\"GLX_SGIX_swap_group\"), glxewGetExtension(\"GLX_SGIX_swap_group\"));\r\n\r\n  glewInfoFunc(\"glXJoinSwapGroupSGIX\", glXJoinSwapGroupSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_swap_group */\r\n\r\n#ifdef GLX_SGIX_video_resize\r\n\r\nstatic void _glewInfo_GLX_SGIX_video_resize (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_video_resize\", GLXEW_SGIX_video_resize, glxewIsSupported(\"GLX_SGIX_video_resize\"), glxewGetExtension(\"GLX_SGIX_video_resize\"));\r\n\r\n  glewInfoFunc(\"glXBindChannelToWindowSGIX\", glXBindChannelToWindowSGIX == NULL);\r\n  glewInfoFunc(\"glXChannelRectSGIX\", glXChannelRectSGIX == NULL);\r\n  glewInfoFunc(\"glXChannelRectSyncSGIX\", glXChannelRectSyncSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryChannelDeltasSGIX\", glXQueryChannelDeltasSGIX == NULL);\r\n  glewInfoFunc(\"glXQueryChannelRectSGIX\", glXQueryChannelRectSGIX == NULL);\r\n}\r\n\r\n#endif /* GLX_SGIX_video_resize */\r\n\r\n#ifdef GLX_SGIX_visual_select_group\r\n\r\nstatic void _glewInfo_GLX_SGIX_visual_select_group (void)\r\n{\r\n  glewPrintExt(\"GLX_SGIX_visual_select_group\", GLXEW_SGIX_visual_select_group, glxewIsSupported(\"GLX_SGIX_visual_select_group\"), glxewGetExtension(\"GLX_SGIX_visual_select_group\"));\r\n}\r\n\r\n#endif /* GLX_SGIX_visual_select_group */\r\n\r\n#ifdef GLX_SGI_cushion\r\n\r\nstatic void _glewInfo_GLX_SGI_cushion (void)\r\n{\r\n  glewPrintExt(\"GLX_SGI_cushion\", GLXEW_SGI_cushion, glxewIsSupported(\"GLX_SGI_cushion\"), glxewGetExtension(\"GLX_SGI_cushion\"));\r\n\r\n  glewInfoFunc(\"glXCushionSGI\", glXCushionSGI == NULL);\r\n}\r\n\r\n#endif /* GLX_SGI_cushion */\r\n\r\n#ifdef GLX_SGI_make_current_read\r\n\r\nstatic void _glewInfo_GLX_SGI_make_current_read (void)\r\n{\r\n  glewPrintExt(\"GLX_SGI_make_current_read\", GLXEW_SGI_make_current_read, glxewIsSupported(\"GLX_SGI_make_current_read\"), glxewGetExtension(\"GLX_SGI_make_current_read\"));\r\n\r\n  glewInfoFunc(\"glXGetCurrentReadDrawableSGI\", glXGetCurrentReadDrawableSGI == NULL);\r\n  glewInfoFunc(\"glXMakeCurrentReadSGI\", glXMakeCurrentReadSGI == NULL);\r\n}\r\n\r\n#endif /* GLX_SGI_make_current_read */\r\n\r\n#ifdef GLX_SGI_swap_control\r\n\r\nstatic void _glewInfo_GLX_SGI_swap_control (void)\r\n{\r\n  glewPrintExt(\"GLX_SGI_swap_control\", GLXEW_SGI_swap_control, glxewIsSupported(\"GLX_SGI_swap_control\"), glxewGetExtension(\"GLX_SGI_swap_control\"));\r\n\r\n  glewInfoFunc(\"glXSwapIntervalSGI\", glXSwapIntervalSGI == NULL);\r\n}\r\n\r\n#endif /* GLX_SGI_swap_control */\r\n\r\n#ifdef GLX_SGI_video_sync\r\n\r\nstatic void _glewInfo_GLX_SGI_video_sync (void)\r\n{\r\n  glewPrintExt(\"GLX_SGI_video_sync\", GLXEW_SGI_video_sync, glxewIsSupported(\"GLX_SGI_video_sync\"), glxewGetExtension(\"GLX_SGI_video_sync\"));\r\n\r\n  glewInfoFunc(\"glXGetVideoSyncSGI\", glXGetVideoSyncSGI == NULL);\r\n  glewInfoFunc(\"glXWaitVideoSyncSGI\", glXWaitVideoSyncSGI == NULL);\r\n}\r\n\r\n#endif /* GLX_SGI_video_sync */\r\n\r\n#ifdef GLX_SUN_get_transparent_index\r\n\r\nstatic void _glewInfo_GLX_SUN_get_transparent_index (void)\r\n{\r\n  glewPrintExt(\"GLX_SUN_get_transparent_index\", GLXEW_SUN_get_transparent_index, glxewIsSupported(\"GLX_SUN_get_transparent_index\"), glxewGetExtension(\"GLX_SUN_get_transparent_index\"));\r\n\r\n  glewInfoFunc(\"glXGetTransparentIndexSUN\", glXGetTransparentIndexSUN == NULL);\r\n}\r\n\r\n#endif /* GLX_SUN_get_transparent_index */\r\n\r\n#ifdef GLX_SUN_video_resize\r\n\r\nstatic void _glewInfo_GLX_SUN_video_resize (void)\r\n{\r\n  glewPrintExt(\"GLX_SUN_video_resize\", GLXEW_SUN_video_resize, glxewIsSupported(\"GLX_SUN_video_resize\"), glxewGetExtension(\"GLX_SUN_video_resize\"));\r\n\r\n  glewInfoFunc(\"glXGetVideoResizeSUN\", glXGetVideoResizeSUN == NULL);\r\n  glewInfoFunc(\"glXVideoResizeSUN\", glXVideoResizeSUN == NULL);\r\n}\r\n\r\n#endif /* GLX_SUN_video_resize */\r\n\r\n#endif /* _WIN32 */\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nstatic void glewInfo (void)\r\n{\r\n#ifdef GL_VERSION_1_1\r\n  _glewInfo_GL_VERSION_1_1();\r\n#endif /* GL_VERSION_1_1 */\r\n#ifdef GL_VERSION_1_2\r\n  _glewInfo_GL_VERSION_1_2();\r\n#endif /* GL_VERSION_1_2 */\r\n#ifdef GL_VERSION_1_2_1\r\n  _glewInfo_GL_VERSION_1_2_1();\r\n#endif /* GL_VERSION_1_2_1 */\r\n#ifdef GL_VERSION_1_3\r\n  _glewInfo_GL_VERSION_1_3();\r\n#endif /* GL_VERSION_1_3 */\r\n#ifdef GL_VERSION_1_4\r\n  _glewInfo_GL_VERSION_1_4();\r\n#endif /* GL_VERSION_1_4 */\r\n#ifdef GL_VERSION_1_5\r\n  _glewInfo_GL_VERSION_1_5();\r\n#endif /* GL_VERSION_1_5 */\r\n#ifdef GL_VERSION_2_0\r\n  _glewInfo_GL_VERSION_2_0();\r\n#endif /* GL_VERSION_2_0 */\r\n#ifdef GL_VERSION_2_1\r\n  _glewInfo_GL_VERSION_2_1();\r\n#endif /* GL_VERSION_2_1 */\r\n#ifdef GL_VERSION_3_0\r\n  _glewInfo_GL_VERSION_3_0();\r\n#endif /* GL_VERSION_3_0 */\r\n#ifdef GL_VERSION_3_1\r\n  _glewInfo_GL_VERSION_3_1();\r\n#endif /* GL_VERSION_3_1 */\r\n#ifdef GL_VERSION_3_2\r\n  _glewInfo_GL_VERSION_3_2();\r\n#endif /* GL_VERSION_3_2 */\r\n#ifdef GL_VERSION_3_3\r\n  _glewInfo_GL_VERSION_3_3();\r\n#endif /* GL_VERSION_3_3 */\r\n#ifdef GL_VERSION_4_0\r\n  _glewInfo_GL_VERSION_4_0();\r\n#endif /* GL_VERSION_4_0 */\r\n#ifdef GL_VERSION_4_1\r\n  _glewInfo_GL_VERSION_4_1();\r\n#endif /* GL_VERSION_4_1 */\r\n#ifdef GL_VERSION_4_2\r\n  _glewInfo_GL_VERSION_4_2();\r\n#endif /* GL_VERSION_4_2 */\r\n#ifdef GL_VERSION_4_3\r\n  _glewInfo_GL_VERSION_4_3();\r\n#endif /* GL_VERSION_4_3 */\r\n#ifdef GL_VERSION_4_4\r\n  _glewInfo_GL_VERSION_4_4();\r\n#endif /* GL_VERSION_4_4 */\r\n#ifdef GL_VERSION_4_5\r\n  _glewInfo_GL_VERSION_4_5();\r\n#endif /* GL_VERSION_4_5 */\r\n#ifdef GL_VERSION_4_6\r\n  _glewInfo_GL_VERSION_4_6();\r\n#endif /* GL_VERSION_4_6 */\r\n#ifdef GL_3DFX_multisample\r\n  _glewInfo_GL_3DFX_multisample();\r\n#endif /* GL_3DFX_multisample */\r\n#ifdef GL_3DFX_tbuffer\r\n  _glewInfo_GL_3DFX_tbuffer();\r\n#endif /* GL_3DFX_tbuffer */\r\n#ifdef GL_3DFX_texture_compression_FXT1\r\n  _glewInfo_GL_3DFX_texture_compression_FXT1();\r\n#endif /* GL_3DFX_texture_compression_FXT1 */\r\n#ifdef GL_AMD_blend_minmax_factor\r\n  _glewInfo_GL_AMD_blend_minmax_factor();\r\n#endif /* GL_AMD_blend_minmax_factor */\r\n#ifdef GL_AMD_compressed_3DC_texture\r\n  _glewInfo_GL_AMD_compressed_3DC_texture();\r\n#endif /* GL_AMD_compressed_3DC_texture */\r\n#ifdef GL_AMD_compressed_ATC_texture\r\n  _glewInfo_GL_AMD_compressed_ATC_texture();\r\n#endif /* GL_AMD_compressed_ATC_texture */\r\n#ifdef GL_AMD_conservative_depth\r\n  _glewInfo_GL_AMD_conservative_depth();\r\n#endif /* GL_AMD_conservative_depth */\r\n#ifdef GL_AMD_debug_output\r\n  _glewInfo_GL_AMD_debug_output();\r\n#endif /* GL_AMD_debug_output */\r\n#ifdef GL_AMD_depth_clamp_separate\r\n  _glewInfo_GL_AMD_depth_clamp_separate();\r\n#endif /* GL_AMD_depth_clamp_separate */\r\n#ifdef GL_AMD_draw_buffers_blend\r\n  _glewInfo_GL_AMD_draw_buffers_blend();\r\n#endif /* GL_AMD_draw_buffers_blend */\r\n#ifdef GL_AMD_framebuffer_sample_positions\r\n  _glewInfo_GL_AMD_framebuffer_sample_positions();\r\n#endif /* GL_AMD_framebuffer_sample_positions */\r\n#ifdef GL_AMD_gcn_shader\r\n  _glewInfo_GL_AMD_gcn_shader();\r\n#endif /* GL_AMD_gcn_shader */\r\n#ifdef GL_AMD_gpu_shader_half_float\r\n  _glewInfo_GL_AMD_gpu_shader_half_float();\r\n#endif /* GL_AMD_gpu_shader_half_float */\r\n#ifdef GL_AMD_gpu_shader_int16\r\n  _glewInfo_GL_AMD_gpu_shader_int16();\r\n#endif /* GL_AMD_gpu_shader_int16 */\r\n#ifdef GL_AMD_gpu_shader_int64\r\n  _glewInfo_GL_AMD_gpu_shader_int64();\r\n#endif /* GL_AMD_gpu_shader_int64 */\r\n#ifdef GL_AMD_interleaved_elements\r\n  _glewInfo_GL_AMD_interleaved_elements();\r\n#endif /* GL_AMD_interleaved_elements */\r\n#ifdef GL_AMD_multi_draw_indirect\r\n  _glewInfo_GL_AMD_multi_draw_indirect();\r\n#endif /* GL_AMD_multi_draw_indirect */\r\n#ifdef GL_AMD_name_gen_delete\r\n  _glewInfo_GL_AMD_name_gen_delete();\r\n#endif /* GL_AMD_name_gen_delete */\r\n#ifdef GL_AMD_occlusion_query_event\r\n  _glewInfo_GL_AMD_occlusion_query_event();\r\n#endif /* GL_AMD_occlusion_query_event */\r\n#ifdef GL_AMD_performance_monitor\r\n  _glewInfo_GL_AMD_performance_monitor();\r\n#endif /* GL_AMD_performance_monitor */\r\n#ifdef GL_AMD_pinned_memory\r\n  _glewInfo_GL_AMD_pinned_memory();\r\n#endif /* GL_AMD_pinned_memory */\r\n#ifdef GL_AMD_program_binary_Z400\r\n  _glewInfo_GL_AMD_program_binary_Z400();\r\n#endif /* GL_AMD_program_binary_Z400 */\r\n#ifdef GL_AMD_query_buffer_object\r\n  _glewInfo_GL_AMD_query_buffer_object();\r\n#endif /* GL_AMD_query_buffer_object */\r\n#ifdef GL_AMD_sample_positions\r\n  _glewInfo_GL_AMD_sample_positions();\r\n#endif /* GL_AMD_sample_positions */\r\n#ifdef GL_AMD_seamless_cubemap_per_texture\r\n  _glewInfo_GL_AMD_seamless_cubemap_per_texture();\r\n#endif /* GL_AMD_seamless_cubemap_per_texture */\r\n#ifdef GL_AMD_shader_atomic_counter_ops\r\n  _glewInfo_GL_AMD_shader_atomic_counter_ops();\r\n#endif /* GL_AMD_shader_atomic_counter_ops */\r\n#ifdef GL_AMD_shader_ballot\r\n  _glewInfo_GL_AMD_shader_ballot();\r\n#endif /* GL_AMD_shader_ballot */\r\n#ifdef GL_AMD_shader_explicit_vertex_parameter\r\n  _glewInfo_GL_AMD_shader_explicit_vertex_parameter();\r\n#endif /* GL_AMD_shader_explicit_vertex_parameter */\r\n#ifdef GL_AMD_shader_stencil_export\r\n  _glewInfo_GL_AMD_shader_stencil_export();\r\n#endif /* GL_AMD_shader_stencil_export */\r\n#ifdef GL_AMD_shader_stencil_value_export\r\n  _glewInfo_GL_AMD_shader_stencil_value_export();\r\n#endif /* GL_AMD_shader_stencil_value_export */\r\n#ifdef GL_AMD_shader_trinary_minmax\r\n  _glewInfo_GL_AMD_shader_trinary_minmax();\r\n#endif /* GL_AMD_shader_trinary_minmax */\r\n#ifdef GL_AMD_sparse_texture\r\n  _glewInfo_GL_AMD_sparse_texture();\r\n#endif /* GL_AMD_sparse_texture */\r\n#ifdef GL_AMD_stencil_operation_extended\r\n  _glewInfo_GL_AMD_stencil_operation_extended();\r\n#endif /* GL_AMD_stencil_operation_extended */\r\n#ifdef GL_AMD_texture_gather_bias_lod\r\n  _glewInfo_GL_AMD_texture_gather_bias_lod();\r\n#endif /* GL_AMD_texture_gather_bias_lod */\r\n#ifdef GL_AMD_texture_texture4\r\n  _glewInfo_GL_AMD_texture_texture4();\r\n#endif /* GL_AMD_texture_texture4 */\r\n#ifdef GL_AMD_transform_feedback3_lines_triangles\r\n  _glewInfo_GL_AMD_transform_feedback3_lines_triangles();\r\n#endif /* GL_AMD_transform_feedback3_lines_triangles */\r\n#ifdef GL_AMD_transform_feedback4\r\n  _glewInfo_GL_AMD_transform_feedback4();\r\n#endif /* GL_AMD_transform_feedback4 */\r\n#ifdef GL_AMD_vertex_shader_layer\r\n  _glewInfo_GL_AMD_vertex_shader_layer();\r\n#endif /* GL_AMD_vertex_shader_layer */\r\n#ifdef GL_AMD_vertex_shader_tessellator\r\n  _glewInfo_GL_AMD_vertex_shader_tessellator();\r\n#endif /* GL_AMD_vertex_shader_tessellator */\r\n#ifdef GL_AMD_vertex_shader_viewport_index\r\n  _glewInfo_GL_AMD_vertex_shader_viewport_index();\r\n#endif /* GL_AMD_vertex_shader_viewport_index */\r\n#ifdef GL_ANDROID_extension_pack_es31a\r\n  _glewInfo_GL_ANDROID_extension_pack_es31a();\r\n#endif /* GL_ANDROID_extension_pack_es31a */\r\n#ifdef GL_ANGLE_depth_texture\r\n  _glewInfo_GL_ANGLE_depth_texture();\r\n#endif /* GL_ANGLE_depth_texture */\r\n#ifdef GL_ANGLE_framebuffer_blit\r\n  _glewInfo_GL_ANGLE_framebuffer_blit();\r\n#endif /* GL_ANGLE_framebuffer_blit */\r\n#ifdef GL_ANGLE_framebuffer_multisample\r\n  _glewInfo_GL_ANGLE_framebuffer_multisample();\r\n#endif /* GL_ANGLE_framebuffer_multisample */\r\n#ifdef GL_ANGLE_instanced_arrays\r\n  _glewInfo_GL_ANGLE_instanced_arrays();\r\n#endif /* GL_ANGLE_instanced_arrays */\r\n#ifdef GL_ANGLE_pack_reverse_row_order\r\n  _glewInfo_GL_ANGLE_pack_reverse_row_order();\r\n#endif /* GL_ANGLE_pack_reverse_row_order */\r\n#ifdef GL_ANGLE_program_binary\r\n  _glewInfo_GL_ANGLE_program_binary();\r\n#endif /* GL_ANGLE_program_binary */\r\n#ifdef GL_ANGLE_texture_compression_dxt1\r\n  _glewInfo_GL_ANGLE_texture_compression_dxt1();\r\n#endif /* GL_ANGLE_texture_compression_dxt1 */\r\n#ifdef GL_ANGLE_texture_compression_dxt3\r\n  _glewInfo_GL_ANGLE_texture_compression_dxt3();\r\n#endif /* GL_ANGLE_texture_compression_dxt3 */\r\n#ifdef GL_ANGLE_texture_compression_dxt5\r\n  _glewInfo_GL_ANGLE_texture_compression_dxt5();\r\n#endif /* GL_ANGLE_texture_compression_dxt5 */\r\n#ifdef GL_ANGLE_texture_usage\r\n  _glewInfo_GL_ANGLE_texture_usage();\r\n#endif /* GL_ANGLE_texture_usage */\r\n#ifdef GL_ANGLE_timer_query\r\n  _glewInfo_GL_ANGLE_timer_query();\r\n#endif /* GL_ANGLE_timer_query */\r\n#ifdef GL_ANGLE_translated_shader_source\r\n  _glewInfo_GL_ANGLE_translated_shader_source();\r\n#endif /* GL_ANGLE_translated_shader_source */\r\n#ifdef GL_APPLE_aux_depth_stencil\r\n  _glewInfo_GL_APPLE_aux_depth_stencil();\r\n#endif /* GL_APPLE_aux_depth_stencil */\r\n#ifdef GL_APPLE_client_storage\r\n  _glewInfo_GL_APPLE_client_storage();\r\n#endif /* GL_APPLE_client_storage */\r\n#ifdef GL_APPLE_clip_distance\r\n  _glewInfo_GL_APPLE_clip_distance();\r\n#endif /* GL_APPLE_clip_distance */\r\n#ifdef GL_APPLE_color_buffer_packed_float\r\n  _glewInfo_GL_APPLE_color_buffer_packed_float();\r\n#endif /* GL_APPLE_color_buffer_packed_float */\r\n#ifdef GL_APPLE_copy_texture_levels\r\n  _glewInfo_GL_APPLE_copy_texture_levels();\r\n#endif /* GL_APPLE_copy_texture_levels */\r\n#ifdef GL_APPLE_element_array\r\n  _glewInfo_GL_APPLE_element_array();\r\n#endif /* GL_APPLE_element_array */\r\n#ifdef GL_APPLE_fence\r\n  _glewInfo_GL_APPLE_fence();\r\n#endif /* GL_APPLE_fence */\r\n#ifdef GL_APPLE_float_pixels\r\n  _glewInfo_GL_APPLE_float_pixels();\r\n#endif /* GL_APPLE_float_pixels */\r\n#ifdef GL_APPLE_flush_buffer_range\r\n  _glewInfo_GL_APPLE_flush_buffer_range();\r\n#endif /* GL_APPLE_flush_buffer_range */\r\n#ifdef GL_APPLE_framebuffer_multisample\r\n  _glewInfo_GL_APPLE_framebuffer_multisample();\r\n#endif /* GL_APPLE_framebuffer_multisample */\r\n#ifdef GL_APPLE_object_purgeable\r\n  _glewInfo_GL_APPLE_object_purgeable();\r\n#endif /* GL_APPLE_object_purgeable */\r\n#ifdef GL_APPLE_pixel_buffer\r\n  _glewInfo_GL_APPLE_pixel_buffer();\r\n#endif /* GL_APPLE_pixel_buffer */\r\n#ifdef GL_APPLE_rgb_422\r\n  _glewInfo_GL_APPLE_rgb_422();\r\n#endif /* GL_APPLE_rgb_422 */\r\n#ifdef GL_APPLE_row_bytes\r\n  _glewInfo_GL_APPLE_row_bytes();\r\n#endif /* GL_APPLE_row_bytes */\r\n#ifdef GL_APPLE_specular_vector\r\n  _glewInfo_GL_APPLE_specular_vector();\r\n#endif /* GL_APPLE_specular_vector */\r\n#ifdef GL_APPLE_sync\r\n  _glewInfo_GL_APPLE_sync();\r\n#endif /* GL_APPLE_sync */\r\n#ifdef GL_APPLE_texture_2D_limited_npot\r\n  _glewInfo_GL_APPLE_texture_2D_limited_npot();\r\n#endif /* GL_APPLE_texture_2D_limited_npot */\r\n#ifdef GL_APPLE_texture_format_BGRA8888\r\n  _glewInfo_GL_APPLE_texture_format_BGRA8888();\r\n#endif /* GL_APPLE_texture_format_BGRA8888 */\r\n#ifdef GL_APPLE_texture_max_level\r\n  _glewInfo_GL_APPLE_texture_max_level();\r\n#endif /* GL_APPLE_texture_max_level */\r\n#ifdef GL_APPLE_texture_packed_float\r\n  _glewInfo_GL_APPLE_texture_packed_float();\r\n#endif /* GL_APPLE_texture_packed_float */\r\n#ifdef GL_APPLE_texture_range\r\n  _glewInfo_GL_APPLE_texture_range();\r\n#endif /* GL_APPLE_texture_range */\r\n#ifdef GL_APPLE_transform_hint\r\n  _glewInfo_GL_APPLE_transform_hint();\r\n#endif /* GL_APPLE_transform_hint */\r\n#ifdef GL_APPLE_vertex_array_object\r\n  _glewInfo_GL_APPLE_vertex_array_object();\r\n#endif /* GL_APPLE_vertex_array_object */\r\n#ifdef GL_APPLE_vertex_array_range\r\n  _glewInfo_GL_APPLE_vertex_array_range();\r\n#endif /* GL_APPLE_vertex_array_range */\r\n#ifdef GL_APPLE_vertex_program_evaluators\r\n  _glewInfo_GL_APPLE_vertex_program_evaluators();\r\n#endif /* GL_APPLE_vertex_program_evaluators */\r\n#ifdef GL_APPLE_ycbcr_422\r\n  _glewInfo_GL_APPLE_ycbcr_422();\r\n#endif /* GL_APPLE_ycbcr_422 */\r\n#ifdef GL_ARB_ES2_compatibility\r\n  _glewInfo_GL_ARB_ES2_compatibility();\r\n#endif /* GL_ARB_ES2_compatibility */\r\n#ifdef GL_ARB_ES3_1_compatibility\r\n  _glewInfo_GL_ARB_ES3_1_compatibility();\r\n#endif /* GL_ARB_ES3_1_compatibility */\r\n#ifdef GL_ARB_ES3_2_compatibility\r\n  _glewInfo_GL_ARB_ES3_2_compatibility();\r\n#endif /* GL_ARB_ES3_2_compatibility */\r\n#ifdef GL_ARB_ES3_compatibility\r\n  _glewInfo_GL_ARB_ES3_compatibility();\r\n#endif /* GL_ARB_ES3_compatibility */\r\n#ifdef GL_ARB_arrays_of_arrays\r\n  _glewInfo_GL_ARB_arrays_of_arrays();\r\n#endif /* GL_ARB_arrays_of_arrays */\r\n#ifdef GL_ARB_base_instance\r\n  _glewInfo_GL_ARB_base_instance();\r\n#endif /* GL_ARB_base_instance */\r\n#ifdef GL_ARB_bindless_texture\r\n  _glewInfo_GL_ARB_bindless_texture();\r\n#endif /* GL_ARB_bindless_texture */\r\n#ifdef GL_ARB_blend_func_extended\r\n  _glewInfo_GL_ARB_blend_func_extended();\r\n#endif /* GL_ARB_blend_func_extended */\r\n#ifdef GL_ARB_buffer_storage\r\n  _glewInfo_GL_ARB_buffer_storage();\r\n#endif /* GL_ARB_buffer_storage */\r\n#ifdef GL_ARB_cl_event\r\n  _glewInfo_GL_ARB_cl_event();\r\n#endif /* GL_ARB_cl_event */\r\n#ifdef GL_ARB_clear_buffer_object\r\n  _glewInfo_GL_ARB_clear_buffer_object();\r\n#endif /* GL_ARB_clear_buffer_object */\r\n#ifdef GL_ARB_clear_texture\r\n  _glewInfo_GL_ARB_clear_texture();\r\n#endif /* GL_ARB_clear_texture */\r\n#ifdef GL_ARB_clip_control\r\n  _glewInfo_GL_ARB_clip_control();\r\n#endif /* GL_ARB_clip_control */\r\n#ifdef GL_ARB_color_buffer_float\r\n  _glewInfo_GL_ARB_color_buffer_float();\r\n#endif /* GL_ARB_color_buffer_float */\r\n#ifdef GL_ARB_compatibility\r\n  _glewInfo_GL_ARB_compatibility();\r\n#endif /* GL_ARB_compatibility */\r\n#ifdef GL_ARB_compressed_texture_pixel_storage\r\n  _glewInfo_GL_ARB_compressed_texture_pixel_storage();\r\n#endif /* GL_ARB_compressed_texture_pixel_storage */\r\n#ifdef GL_ARB_compute_shader\r\n  _glewInfo_GL_ARB_compute_shader();\r\n#endif /* GL_ARB_compute_shader */\r\n#ifdef GL_ARB_compute_variable_group_size\r\n  _glewInfo_GL_ARB_compute_variable_group_size();\r\n#endif /* GL_ARB_compute_variable_group_size */\r\n#ifdef GL_ARB_conditional_render_inverted\r\n  _glewInfo_GL_ARB_conditional_render_inverted();\r\n#endif /* GL_ARB_conditional_render_inverted */\r\n#ifdef GL_ARB_conservative_depth\r\n  _glewInfo_GL_ARB_conservative_depth();\r\n#endif /* GL_ARB_conservative_depth */\r\n#ifdef GL_ARB_copy_buffer\r\n  _glewInfo_GL_ARB_copy_buffer();\r\n#endif /* GL_ARB_copy_buffer */\r\n#ifdef GL_ARB_copy_image\r\n  _glewInfo_GL_ARB_copy_image();\r\n#endif /* GL_ARB_copy_image */\r\n#ifdef GL_ARB_cull_distance\r\n  _glewInfo_GL_ARB_cull_distance();\r\n#endif /* GL_ARB_cull_distance */\r\n#ifdef GL_ARB_debug_output\r\n  _glewInfo_GL_ARB_debug_output();\r\n#endif /* GL_ARB_debug_output */\r\n#ifdef GL_ARB_depth_buffer_float\r\n  _glewInfo_GL_ARB_depth_buffer_float();\r\n#endif /* GL_ARB_depth_buffer_float */\r\n#ifdef GL_ARB_depth_clamp\r\n  _glewInfo_GL_ARB_depth_clamp();\r\n#endif /* GL_ARB_depth_clamp */\r\n#ifdef GL_ARB_depth_texture\r\n  _glewInfo_GL_ARB_depth_texture();\r\n#endif /* GL_ARB_depth_texture */\r\n#ifdef GL_ARB_derivative_control\r\n  _glewInfo_GL_ARB_derivative_control();\r\n#endif /* GL_ARB_derivative_control */\r\n#ifdef GL_ARB_direct_state_access\r\n  _glewInfo_GL_ARB_direct_state_access();\r\n#endif /* GL_ARB_direct_state_access */\r\n#ifdef GL_ARB_draw_buffers\r\n  _glewInfo_GL_ARB_draw_buffers();\r\n#endif /* GL_ARB_draw_buffers */\r\n#ifdef GL_ARB_draw_buffers_blend\r\n  _glewInfo_GL_ARB_draw_buffers_blend();\r\n#endif /* GL_ARB_draw_buffers_blend */\r\n#ifdef GL_ARB_draw_elements_base_vertex\r\n  _glewInfo_GL_ARB_draw_elements_base_vertex();\r\n#endif /* GL_ARB_draw_elements_base_vertex */\r\n#ifdef GL_ARB_draw_indirect\r\n  _glewInfo_GL_ARB_draw_indirect();\r\n#endif /* GL_ARB_draw_indirect */\r\n#ifdef GL_ARB_draw_instanced\r\n  _glewInfo_GL_ARB_draw_instanced();\r\n#endif /* GL_ARB_draw_instanced */\r\n#ifdef GL_ARB_enhanced_layouts\r\n  _glewInfo_GL_ARB_enhanced_layouts();\r\n#endif /* GL_ARB_enhanced_layouts */\r\n#ifdef GL_ARB_explicit_attrib_location\r\n  _glewInfo_GL_ARB_explicit_attrib_location();\r\n#endif /* GL_ARB_explicit_attrib_location */\r\n#ifdef GL_ARB_explicit_uniform_location\r\n  _glewInfo_GL_ARB_explicit_uniform_location();\r\n#endif /* GL_ARB_explicit_uniform_location */\r\n#ifdef GL_ARB_fragment_coord_conventions\r\n  _glewInfo_GL_ARB_fragment_coord_conventions();\r\n#endif /* GL_ARB_fragment_coord_conventions */\r\n#ifdef GL_ARB_fragment_layer_viewport\r\n  _glewInfo_GL_ARB_fragment_layer_viewport();\r\n#endif /* GL_ARB_fragment_layer_viewport */\r\n#ifdef GL_ARB_fragment_program\r\n  _glewInfo_GL_ARB_fragment_program();\r\n#endif /* GL_ARB_fragment_program */\r\n#ifdef GL_ARB_fragment_program_shadow\r\n  _glewInfo_GL_ARB_fragment_program_shadow();\r\n#endif /* GL_ARB_fragment_program_shadow */\r\n#ifdef GL_ARB_fragment_shader\r\n  _glewInfo_GL_ARB_fragment_shader();\r\n#endif /* GL_ARB_fragment_shader */\r\n#ifdef GL_ARB_fragment_shader_interlock\r\n  _glewInfo_GL_ARB_fragment_shader_interlock();\r\n#endif /* GL_ARB_fragment_shader_interlock */\r\n#ifdef GL_ARB_framebuffer_no_attachments\r\n  _glewInfo_GL_ARB_framebuffer_no_attachments();\r\n#endif /* GL_ARB_framebuffer_no_attachments */\r\n#ifdef GL_ARB_framebuffer_object\r\n  _glewInfo_GL_ARB_framebuffer_object();\r\n#endif /* GL_ARB_framebuffer_object */\r\n#ifdef GL_ARB_framebuffer_sRGB\r\n  _glewInfo_GL_ARB_framebuffer_sRGB();\r\n#endif /* GL_ARB_framebuffer_sRGB */\r\n#ifdef GL_ARB_geometry_shader4\r\n  _glewInfo_GL_ARB_geometry_shader4();\r\n#endif /* GL_ARB_geometry_shader4 */\r\n#ifdef GL_ARB_get_program_binary\r\n  _glewInfo_GL_ARB_get_program_binary();\r\n#endif /* GL_ARB_get_program_binary */\r\n#ifdef GL_ARB_get_texture_sub_image\r\n  _glewInfo_GL_ARB_get_texture_sub_image();\r\n#endif /* GL_ARB_get_texture_sub_image */\r\n#ifdef GL_ARB_gl_spirv\r\n  _glewInfo_GL_ARB_gl_spirv();\r\n#endif /* GL_ARB_gl_spirv */\r\n#ifdef GL_ARB_gpu_shader5\r\n  _glewInfo_GL_ARB_gpu_shader5();\r\n#endif /* GL_ARB_gpu_shader5 */\r\n#ifdef GL_ARB_gpu_shader_fp64\r\n  _glewInfo_GL_ARB_gpu_shader_fp64();\r\n#endif /* GL_ARB_gpu_shader_fp64 */\r\n#ifdef GL_ARB_gpu_shader_int64\r\n  _glewInfo_GL_ARB_gpu_shader_int64();\r\n#endif /* GL_ARB_gpu_shader_int64 */\r\n#ifdef GL_ARB_half_float_pixel\r\n  _glewInfo_GL_ARB_half_float_pixel();\r\n#endif /* GL_ARB_half_float_pixel */\r\n#ifdef GL_ARB_half_float_vertex\r\n  _glewInfo_GL_ARB_half_float_vertex();\r\n#endif /* GL_ARB_half_float_vertex */\r\n#ifdef GL_ARB_imaging\r\n  _glewInfo_GL_ARB_imaging();\r\n#endif /* GL_ARB_imaging */\r\n#ifdef GL_ARB_indirect_parameters\r\n  _glewInfo_GL_ARB_indirect_parameters();\r\n#endif /* GL_ARB_indirect_parameters */\r\n#ifdef GL_ARB_instanced_arrays\r\n  _glewInfo_GL_ARB_instanced_arrays();\r\n#endif /* GL_ARB_instanced_arrays */\r\n#ifdef GL_ARB_internalformat_query\r\n  _glewInfo_GL_ARB_internalformat_query();\r\n#endif /* GL_ARB_internalformat_query */\r\n#ifdef GL_ARB_internalformat_query2\r\n  _glewInfo_GL_ARB_internalformat_query2();\r\n#endif /* GL_ARB_internalformat_query2 */\r\n#ifdef GL_ARB_invalidate_subdata\r\n  _glewInfo_GL_ARB_invalidate_subdata();\r\n#endif /* GL_ARB_invalidate_subdata */\r\n#ifdef GL_ARB_map_buffer_alignment\r\n  _glewInfo_GL_ARB_map_buffer_alignment();\r\n#endif /* GL_ARB_map_buffer_alignment */\r\n#ifdef GL_ARB_map_buffer_range\r\n  _glewInfo_GL_ARB_map_buffer_range();\r\n#endif /* GL_ARB_map_buffer_range */\r\n#ifdef GL_ARB_matrix_palette\r\n  _glewInfo_GL_ARB_matrix_palette();\r\n#endif /* GL_ARB_matrix_palette */\r\n#ifdef GL_ARB_multi_bind\r\n  _glewInfo_GL_ARB_multi_bind();\r\n#endif /* GL_ARB_multi_bind */\r\n#ifdef GL_ARB_multi_draw_indirect\r\n  _glewInfo_GL_ARB_multi_draw_indirect();\r\n#endif /* GL_ARB_multi_draw_indirect */\r\n#ifdef GL_ARB_multisample\r\n  _glewInfo_GL_ARB_multisample();\r\n#endif /* GL_ARB_multisample */\r\n#ifdef GL_ARB_multitexture\r\n  _glewInfo_GL_ARB_multitexture();\r\n#endif /* GL_ARB_multitexture */\r\n#ifdef GL_ARB_occlusion_query\r\n  _glewInfo_GL_ARB_occlusion_query();\r\n#endif /* GL_ARB_occlusion_query */\r\n#ifdef GL_ARB_occlusion_query2\r\n  _glewInfo_GL_ARB_occlusion_query2();\r\n#endif /* GL_ARB_occlusion_query2 */\r\n#ifdef GL_ARB_parallel_shader_compile\r\n  _glewInfo_GL_ARB_parallel_shader_compile();\r\n#endif /* GL_ARB_parallel_shader_compile */\r\n#ifdef GL_ARB_pipeline_statistics_query\r\n  _glewInfo_GL_ARB_pipeline_statistics_query();\r\n#endif /* GL_ARB_pipeline_statistics_query */\r\n#ifdef GL_ARB_pixel_buffer_object\r\n  _glewInfo_GL_ARB_pixel_buffer_object();\r\n#endif /* GL_ARB_pixel_buffer_object */\r\n#ifdef GL_ARB_point_parameters\r\n  _glewInfo_GL_ARB_point_parameters();\r\n#endif /* GL_ARB_point_parameters */\r\n#ifdef GL_ARB_point_sprite\r\n  _glewInfo_GL_ARB_point_sprite();\r\n#endif /* GL_ARB_point_sprite */\r\n#ifdef GL_ARB_polygon_offset_clamp\r\n  _glewInfo_GL_ARB_polygon_offset_clamp();\r\n#endif /* GL_ARB_polygon_offset_clamp */\r\n#ifdef GL_ARB_post_depth_coverage\r\n  _glewInfo_GL_ARB_post_depth_coverage();\r\n#endif /* GL_ARB_post_depth_coverage */\r\n#ifdef GL_ARB_program_interface_query\r\n  _glewInfo_GL_ARB_program_interface_query();\r\n#endif /* GL_ARB_program_interface_query */\r\n#ifdef GL_ARB_provoking_vertex\r\n  _glewInfo_GL_ARB_provoking_vertex();\r\n#endif /* GL_ARB_provoking_vertex */\r\n#ifdef GL_ARB_query_buffer_object\r\n  _glewInfo_GL_ARB_query_buffer_object();\r\n#endif /* GL_ARB_query_buffer_object */\r\n#ifdef GL_ARB_robust_buffer_access_behavior\r\n  _glewInfo_GL_ARB_robust_buffer_access_behavior();\r\n#endif /* GL_ARB_robust_buffer_access_behavior */\r\n#ifdef GL_ARB_robustness\r\n  _glewInfo_GL_ARB_robustness();\r\n#endif /* GL_ARB_robustness */\r\n#ifdef GL_ARB_robustness_application_isolation\r\n  _glewInfo_GL_ARB_robustness_application_isolation();\r\n#endif /* GL_ARB_robustness_application_isolation */\r\n#ifdef GL_ARB_robustness_share_group_isolation\r\n  _glewInfo_GL_ARB_robustness_share_group_isolation();\r\n#endif /* GL_ARB_robustness_share_group_isolation */\r\n#ifdef GL_ARB_sample_locations\r\n  _glewInfo_GL_ARB_sample_locations();\r\n#endif /* GL_ARB_sample_locations */\r\n#ifdef GL_ARB_sample_shading\r\n  _glewInfo_GL_ARB_sample_shading();\r\n#endif /* GL_ARB_sample_shading */\r\n#ifdef GL_ARB_sampler_objects\r\n  _glewInfo_GL_ARB_sampler_objects();\r\n#endif /* GL_ARB_sampler_objects */\r\n#ifdef GL_ARB_seamless_cube_map\r\n  _glewInfo_GL_ARB_seamless_cube_map();\r\n#endif /* GL_ARB_seamless_cube_map */\r\n#ifdef GL_ARB_seamless_cubemap_per_texture\r\n  _glewInfo_GL_ARB_seamless_cubemap_per_texture();\r\n#endif /* GL_ARB_seamless_cubemap_per_texture */\r\n#ifdef GL_ARB_separate_shader_objects\r\n  _glewInfo_GL_ARB_separate_shader_objects();\r\n#endif /* GL_ARB_separate_shader_objects */\r\n#ifdef GL_ARB_shader_atomic_counter_ops\r\n  _glewInfo_GL_ARB_shader_atomic_counter_ops();\r\n#endif /* GL_ARB_shader_atomic_counter_ops */\r\n#ifdef GL_ARB_shader_atomic_counters\r\n  _glewInfo_GL_ARB_shader_atomic_counters();\r\n#endif /* GL_ARB_shader_atomic_counters */\r\n#ifdef GL_ARB_shader_ballot\r\n  _glewInfo_GL_ARB_shader_ballot();\r\n#endif /* GL_ARB_shader_ballot */\r\n#ifdef GL_ARB_shader_bit_encoding\r\n  _glewInfo_GL_ARB_shader_bit_encoding();\r\n#endif /* GL_ARB_shader_bit_encoding */\r\n#ifdef GL_ARB_shader_clock\r\n  _glewInfo_GL_ARB_shader_clock();\r\n#endif /* GL_ARB_shader_clock */\r\n#ifdef GL_ARB_shader_draw_parameters\r\n  _glewInfo_GL_ARB_shader_draw_parameters();\r\n#endif /* GL_ARB_shader_draw_parameters */\r\n#ifdef GL_ARB_shader_group_vote\r\n  _glewInfo_GL_ARB_shader_group_vote();\r\n#endif /* GL_ARB_shader_group_vote */\r\n#ifdef GL_ARB_shader_image_load_store\r\n  _glewInfo_GL_ARB_shader_image_load_store();\r\n#endif /* GL_ARB_shader_image_load_store */\r\n#ifdef GL_ARB_shader_image_size\r\n  _glewInfo_GL_ARB_shader_image_size();\r\n#endif /* GL_ARB_shader_image_size */\r\n#ifdef GL_ARB_shader_objects\r\n  _glewInfo_GL_ARB_shader_objects();\r\n#endif /* GL_ARB_shader_objects */\r\n#ifdef GL_ARB_shader_precision\r\n  _glewInfo_GL_ARB_shader_precision();\r\n#endif /* GL_ARB_shader_precision */\r\n#ifdef GL_ARB_shader_stencil_export\r\n  _glewInfo_GL_ARB_shader_stencil_export();\r\n#endif /* GL_ARB_shader_stencil_export */\r\n#ifdef GL_ARB_shader_storage_buffer_object\r\n  _glewInfo_GL_ARB_shader_storage_buffer_object();\r\n#endif /* GL_ARB_shader_storage_buffer_object */\r\n#ifdef GL_ARB_shader_subroutine\r\n  _glewInfo_GL_ARB_shader_subroutine();\r\n#endif /* GL_ARB_shader_subroutine */\r\n#ifdef GL_ARB_shader_texture_image_samples\r\n  _glewInfo_GL_ARB_shader_texture_image_samples();\r\n#endif /* GL_ARB_shader_texture_image_samples */\r\n#ifdef GL_ARB_shader_texture_lod\r\n  _glewInfo_GL_ARB_shader_texture_lod();\r\n#endif /* GL_ARB_shader_texture_lod */\r\n#ifdef GL_ARB_shader_viewport_layer_array\r\n  _glewInfo_GL_ARB_shader_viewport_layer_array();\r\n#endif /* GL_ARB_shader_viewport_layer_array */\r\n#ifdef GL_ARB_shading_language_100\r\n  _glewInfo_GL_ARB_shading_language_100();\r\n#endif /* GL_ARB_shading_language_100 */\r\n#ifdef GL_ARB_shading_language_420pack\r\n  _glewInfo_GL_ARB_shading_language_420pack();\r\n#endif /* GL_ARB_shading_language_420pack */\r\n#ifdef GL_ARB_shading_language_include\r\n  _glewInfo_GL_ARB_shading_language_include();\r\n#endif /* GL_ARB_shading_language_include */\r\n#ifdef GL_ARB_shading_language_packing\r\n  _glewInfo_GL_ARB_shading_language_packing();\r\n#endif /* GL_ARB_shading_language_packing */\r\n#ifdef GL_ARB_shadow\r\n  _glewInfo_GL_ARB_shadow();\r\n#endif /* GL_ARB_shadow */\r\n#ifdef GL_ARB_shadow_ambient\r\n  _glewInfo_GL_ARB_shadow_ambient();\r\n#endif /* GL_ARB_shadow_ambient */\r\n#ifdef GL_ARB_sparse_buffer\r\n  _glewInfo_GL_ARB_sparse_buffer();\r\n#endif /* GL_ARB_sparse_buffer */\r\n#ifdef GL_ARB_sparse_texture\r\n  _glewInfo_GL_ARB_sparse_texture();\r\n#endif /* GL_ARB_sparse_texture */\r\n#ifdef GL_ARB_sparse_texture2\r\n  _glewInfo_GL_ARB_sparse_texture2();\r\n#endif /* GL_ARB_sparse_texture2 */\r\n#ifdef GL_ARB_sparse_texture_clamp\r\n  _glewInfo_GL_ARB_sparse_texture_clamp();\r\n#endif /* GL_ARB_sparse_texture_clamp */\r\n#ifdef GL_ARB_spirv_extensions\r\n  _glewInfo_GL_ARB_spirv_extensions();\r\n#endif /* GL_ARB_spirv_extensions */\r\n#ifdef GL_ARB_stencil_texturing\r\n  _glewInfo_GL_ARB_stencil_texturing();\r\n#endif /* GL_ARB_stencil_texturing */\r\n#ifdef GL_ARB_sync\r\n  _glewInfo_GL_ARB_sync();\r\n#endif /* GL_ARB_sync */\r\n#ifdef GL_ARB_tessellation_shader\r\n  _glewInfo_GL_ARB_tessellation_shader();\r\n#endif /* GL_ARB_tessellation_shader */\r\n#ifdef GL_ARB_texture_barrier\r\n  _glewInfo_GL_ARB_texture_barrier();\r\n#endif /* GL_ARB_texture_barrier */\r\n#ifdef GL_ARB_texture_border_clamp\r\n  _glewInfo_GL_ARB_texture_border_clamp();\r\n#endif /* GL_ARB_texture_border_clamp */\r\n#ifdef GL_ARB_texture_buffer_object\r\n  _glewInfo_GL_ARB_texture_buffer_object();\r\n#endif /* GL_ARB_texture_buffer_object */\r\n#ifdef GL_ARB_texture_buffer_object_rgb32\r\n  _glewInfo_GL_ARB_texture_buffer_object_rgb32();\r\n#endif /* GL_ARB_texture_buffer_object_rgb32 */\r\n#ifdef GL_ARB_texture_buffer_range\r\n  _glewInfo_GL_ARB_texture_buffer_range();\r\n#endif /* GL_ARB_texture_buffer_range */\r\n#ifdef GL_ARB_texture_compression\r\n  _glewInfo_GL_ARB_texture_compression();\r\n#endif /* GL_ARB_texture_compression */\r\n#ifdef GL_ARB_texture_compression_bptc\r\n  _glewInfo_GL_ARB_texture_compression_bptc();\r\n#endif /* GL_ARB_texture_compression_bptc */\r\n#ifdef GL_ARB_texture_compression_rgtc\r\n  _glewInfo_GL_ARB_texture_compression_rgtc();\r\n#endif /* GL_ARB_texture_compression_rgtc */\r\n#ifdef GL_ARB_texture_cube_map\r\n  _glewInfo_GL_ARB_texture_cube_map();\r\n#endif /* GL_ARB_texture_cube_map */\r\n#ifdef GL_ARB_texture_cube_map_array\r\n  _glewInfo_GL_ARB_texture_cube_map_array();\r\n#endif /* GL_ARB_texture_cube_map_array */\r\n#ifdef GL_ARB_texture_env_add\r\n  _glewInfo_GL_ARB_texture_env_add();\r\n#endif /* GL_ARB_texture_env_add */\r\n#ifdef GL_ARB_texture_env_combine\r\n  _glewInfo_GL_ARB_texture_env_combine();\r\n#endif /* GL_ARB_texture_env_combine */\r\n#ifdef GL_ARB_texture_env_crossbar\r\n  _glewInfo_GL_ARB_texture_env_crossbar();\r\n#endif /* GL_ARB_texture_env_crossbar */\r\n#ifdef GL_ARB_texture_env_dot3\r\n  _glewInfo_GL_ARB_texture_env_dot3();\r\n#endif /* GL_ARB_texture_env_dot3 */\r\n#ifdef GL_ARB_texture_filter_anisotropic\r\n  _glewInfo_GL_ARB_texture_filter_anisotropic();\r\n#endif /* GL_ARB_texture_filter_anisotropic */\r\n#ifdef GL_ARB_texture_filter_minmax\r\n  _glewInfo_GL_ARB_texture_filter_minmax();\r\n#endif /* GL_ARB_texture_filter_minmax */\r\n#ifdef GL_ARB_texture_float\r\n  _glewInfo_GL_ARB_texture_float();\r\n#endif /* GL_ARB_texture_float */\r\n#ifdef GL_ARB_texture_gather\r\n  _glewInfo_GL_ARB_texture_gather();\r\n#endif /* GL_ARB_texture_gather */\r\n#ifdef GL_ARB_texture_mirror_clamp_to_edge\r\n  _glewInfo_GL_ARB_texture_mirror_clamp_to_edge();\r\n#endif /* GL_ARB_texture_mirror_clamp_to_edge */\r\n#ifdef GL_ARB_texture_mirrored_repeat\r\n  _glewInfo_GL_ARB_texture_mirrored_repeat();\r\n#endif /* GL_ARB_texture_mirrored_repeat */\r\n#ifdef GL_ARB_texture_multisample\r\n  _glewInfo_GL_ARB_texture_multisample();\r\n#endif /* GL_ARB_texture_multisample */\r\n#ifdef GL_ARB_texture_non_power_of_two\r\n  _glewInfo_GL_ARB_texture_non_power_of_two();\r\n#endif /* GL_ARB_texture_non_power_of_two */\r\n#ifdef GL_ARB_texture_query_levels\r\n  _glewInfo_GL_ARB_texture_query_levels();\r\n#endif /* GL_ARB_texture_query_levels */\r\n#ifdef GL_ARB_texture_query_lod\r\n  _glewInfo_GL_ARB_texture_query_lod();\r\n#endif /* GL_ARB_texture_query_lod */\r\n#ifdef GL_ARB_texture_rectangle\r\n  _glewInfo_GL_ARB_texture_rectangle();\r\n#endif /* GL_ARB_texture_rectangle */\r\n#ifdef GL_ARB_texture_rg\r\n  _glewInfo_GL_ARB_texture_rg();\r\n#endif /* GL_ARB_texture_rg */\r\n#ifdef GL_ARB_texture_rgb10_a2ui\r\n  _glewInfo_GL_ARB_texture_rgb10_a2ui();\r\n#endif /* GL_ARB_texture_rgb10_a2ui */\r\n#ifdef GL_ARB_texture_stencil8\r\n  _glewInfo_GL_ARB_texture_stencil8();\r\n#endif /* GL_ARB_texture_stencil8 */\r\n#ifdef GL_ARB_texture_storage\r\n  _glewInfo_GL_ARB_texture_storage();\r\n#endif /* GL_ARB_texture_storage */\r\n#ifdef GL_ARB_texture_storage_multisample\r\n  _glewInfo_GL_ARB_texture_storage_multisample();\r\n#endif /* GL_ARB_texture_storage_multisample */\r\n#ifdef GL_ARB_texture_swizzle\r\n  _glewInfo_GL_ARB_texture_swizzle();\r\n#endif /* GL_ARB_texture_swizzle */\r\n#ifdef GL_ARB_texture_view\r\n  _glewInfo_GL_ARB_texture_view();\r\n#endif /* GL_ARB_texture_view */\r\n#ifdef GL_ARB_timer_query\r\n  _glewInfo_GL_ARB_timer_query();\r\n#endif /* GL_ARB_timer_query */\r\n#ifdef GL_ARB_transform_feedback2\r\n  _glewInfo_GL_ARB_transform_feedback2();\r\n#endif /* GL_ARB_transform_feedback2 */\r\n#ifdef GL_ARB_transform_feedback3\r\n  _glewInfo_GL_ARB_transform_feedback3();\r\n#endif /* GL_ARB_transform_feedback3 */\r\n#ifdef GL_ARB_transform_feedback_instanced\r\n  _glewInfo_GL_ARB_transform_feedback_instanced();\r\n#endif /* GL_ARB_transform_feedback_instanced */\r\n#ifdef GL_ARB_transform_feedback_overflow_query\r\n  _glewInfo_GL_ARB_transform_feedback_overflow_query();\r\n#endif /* GL_ARB_transform_feedback_overflow_query */\r\n#ifdef GL_ARB_transpose_matrix\r\n  _glewInfo_GL_ARB_transpose_matrix();\r\n#endif /* GL_ARB_transpose_matrix */\r\n#ifdef GL_ARB_uniform_buffer_object\r\n  _glewInfo_GL_ARB_uniform_buffer_object();\r\n#endif /* GL_ARB_uniform_buffer_object */\r\n#ifdef GL_ARB_vertex_array_bgra\r\n  _glewInfo_GL_ARB_vertex_array_bgra();\r\n#endif /* GL_ARB_vertex_array_bgra */\r\n#ifdef GL_ARB_vertex_array_object\r\n  _glewInfo_GL_ARB_vertex_array_object();\r\n#endif /* GL_ARB_vertex_array_object */\r\n#ifdef GL_ARB_vertex_attrib_64bit\r\n  _glewInfo_GL_ARB_vertex_attrib_64bit();\r\n#endif /* GL_ARB_vertex_attrib_64bit */\r\n#ifdef GL_ARB_vertex_attrib_binding\r\n  _glewInfo_GL_ARB_vertex_attrib_binding();\r\n#endif /* GL_ARB_vertex_attrib_binding */\r\n#ifdef GL_ARB_vertex_blend\r\n  _glewInfo_GL_ARB_vertex_blend();\r\n#endif /* GL_ARB_vertex_blend */\r\n#ifdef GL_ARB_vertex_buffer_object\r\n  _glewInfo_GL_ARB_vertex_buffer_object();\r\n#endif /* GL_ARB_vertex_buffer_object */\r\n#ifdef GL_ARB_vertex_program\r\n  _glewInfo_GL_ARB_vertex_program();\r\n#endif /* GL_ARB_vertex_program */\r\n#ifdef GL_ARB_vertex_shader\r\n  _glewInfo_GL_ARB_vertex_shader();\r\n#endif /* GL_ARB_vertex_shader */\r\n#ifdef GL_ARB_vertex_type_10f_11f_11f_rev\r\n  _glewInfo_GL_ARB_vertex_type_10f_11f_11f_rev();\r\n#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */\r\n#ifdef GL_ARB_vertex_type_2_10_10_10_rev\r\n  _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev();\r\n#endif /* GL_ARB_vertex_type_2_10_10_10_rev */\r\n#ifdef GL_ARB_viewport_array\r\n  _glewInfo_GL_ARB_viewport_array();\r\n#endif /* GL_ARB_viewport_array */\r\n#ifdef GL_ARB_window_pos\r\n  _glewInfo_GL_ARB_window_pos();\r\n#endif /* GL_ARB_window_pos */\r\n#ifdef GL_ARM_mali_program_binary\r\n  _glewInfo_GL_ARM_mali_program_binary();\r\n#endif /* GL_ARM_mali_program_binary */\r\n#ifdef GL_ARM_mali_shader_binary\r\n  _glewInfo_GL_ARM_mali_shader_binary();\r\n#endif /* GL_ARM_mali_shader_binary */\r\n#ifdef GL_ARM_rgba8\r\n  _glewInfo_GL_ARM_rgba8();\r\n#endif /* GL_ARM_rgba8 */\r\n#ifdef GL_ARM_shader_framebuffer_fetch\r\n  _glewInfo_GL_ARM_shader_framebuffer_fetch();\r\n#endif /* GL_ARM_shader_framebuffer_fetch */\r\n#ifdef GL_ARM_shader_framebuffer_fetch_depth_stencil\r\n  _glewInfo_GL_ARM_shader_framebuffer_fetch_depth_stencil();\r\n#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */\r\n#ifdef GL_ATIX_point_sprites\r\n  _glewInfo_GL_ATIX_point_sprites();\r\n#endif /* GL_ATIX_point_sprites */\r\n#ifdef GL_ATIX_texture_env_combine3\r\n  _glewInfo_GL_ATIX_texture_env_combine3();\r\n#endif /* GL_ATIX_texture_env_combine3 */\r\n#ifdef GL_ATIX_texture_env_route\r\n  _glewInfo_GL_ATIX_texture_env_route();\r\n#endif /* GL_ATIX_texture_env_route */\r\n#ifdef GL_ATIX_vertex_shader_output_point_size\r\n  _glewInfo_GL_ATIX_vertex_shader_output_point_size();\r\n#endif /* GL_ATIX_vertex_shader_output_point_size */\r\n#ifdef GL_ATI_draw_buffers\r\n  _glewInfo_GL_ATI_draw_buffers();\r\n#endif /* GL_ATI_draw_buffers */\r\n#ifdef GL_ATI_element_array\r\n  _glewInfo_GL_ATI_element_array();\r\n#endif /* GL_ATI_element_array */\r\n#ifdef GL_ATI_envmap_bumpmap\r\n  _glewInfo_GL_ATI_envmap_bumpmap();\r\n#endif /* GL_ATI_envmap_bumpmap */\r\n#ifdef GL_ATI_fragment_shader\r\n  _glewInfo_GL_ATI_fragment_shader();\r\n#endif /* GL_ATI_fragment_shader */\r\n#ifdef GL_ATI_map_object_buffer\r\n  _glewInfo_GL_ATI_map_object_buffer();\r\n#endif /* GL_ATI_map_object_buffer */\r\n#ifdef GL_ATI_meminfo\r\n  _glewInfo_GL_ATI_meminfo();\r\n#endif /* GL_ATI_meminfo */\r\n#ifdef GL_ATI_pn_triangles\r\n  _glewInfo_GL_ATI_pn_triangles();\r\n#endif /* GL_ATI_pn_triangles */\r\n#ifdef GL_ATI_separate_stencil\r\n  _glewInfo_GL_ATI_separate_stencil();\r\n#endif /* GL_ATI_separate_stencil */\r\n#ifdef GL_ATI_shader_texture_lod\r\n  _glewInfo_GL_ATI_shader_texture_lod();\r\n#endif /* GL_ATI_shader_texture_lod */\r\n#ifdef GL_ATI_text_fragment_shader\r\n  _glewInfo_GL_ATI_text_fragment_shader();\r\n#endif /* GL_ATI_text_fragment_shader */\r\n#ifdef GL_ATI_texture_compression_3dc\r\n  _glewInfo_GL_ATI_texture_compression_3dc();\r\n#endif /* GL_ATI_texture_compression_3dc */\r\n#ifdef GL_ATI_texture_env_combine3\r\n  _glewInfo_GL_ATI_texture_env_combine3();\r\n#endif /* GL_ATI_texture_env_combine3 */\r\n#ifdef GL_ATI_texture_float\r\n  _glewInfo_GL_ATI_texture_float();\r\n#endif /* GL_ATI_texture_float */\r\n#ifdef GL_ATI_texture_mirror_once\r\n  _glewInfo_GL_ATI_texture_mirror_once();\r\n#endif /* GL_ATI_texture_mirror_once */\r\n#ifdef GL_ATI_vertex_array_object\r\n  _glewInfo_GL_ATI_vertex_array_object();\r\n#endif /* GL_ATI_vertex_array_object */\r\n#ifdef GL_ATI_vertex_attrib_array_object\r\n  _glewInfo_GL_ATI_vertex_attrib_array_object();\r\n#endif /* GL_ATI_vertex_attrib_array_object */\r\n#ifdef GL_ATI_vertex_streams\r\n  _glewInfo_GL_ATI_vertex_streams();\r\n#endif /* GL_ATI_vertex_streams */\r\n#ifdef GL_EGL_KHR_context_flush_control\r\n  _glewInfo_GL_EGL_KHR_context_flush_control();\r\n#endif /* GL_EGL_KHR_context_flush_control */\r\n#ifdef GL_EGL_NV_robustness_video_memory_purge\r\n  _glewInfo_GL_EGL_NV_robustness_video_memory_purge();\r\n#endif /* GL_EGL_NV_robustness_video_memory_purge */\r\n#ifdef GL_EXT_422_pixels\r\n  _glewInfo_GL_EXT_422_pixels();\r\n#endif /* GL_EXT_422_pixels */\r\n#ifdef GL_EXT_Cg_shader\r\n  _glewInfo_GL_EXT_Cg_shader();\r\n#endif /* GL_EXT_Cg_shader */\r\n#ifdef GL_EXT_EGL_image_array\r\n  _glewInfo_GL_EXT_EGL_image_array();\r\n#endif /* GL_EXT_EGL_image_array */\r\n#ifdef GL_EXT_YUV_target\r\n  _glewInfo_GL_EXT_YUV_target();\r\n#endif /* GL_EXT_YUV_target */\r\n#ifdef GL_EXT_abgr\r\n  _glewInfo_GL_EXT_abgr();\r\n#endif /* GL_EXT_abgr */\r\n#ifdef GL_EXT_base_instance\r\n  _glewInfo_GL_EXT_base_instance();\r\n#endif /* GL_EXT_base_instance */\r\n#ifdef GL_EXT_bgra\r\n  _glewInfo_GL_EXT_bgra();\r\n#endif /* GL_EXT_bgra */\r\n#ifdef GL_EXT_bindable_uniform\r\n  _glewInfo_GL_EXT_bindable_uniform();\r\n#endif /* GL_EXT_bindable_uniform */\r\n#ifdef GL_EXT_blend_color\r\n  _glewInfo_GL_EXT_blend_color();\r\n#endif /* GL_EXT_blend_color */\r\n#ifdef GL_EXT_blend_equation_separate\r\n  _glewInfo_GL_EXT_blend_equation_separate();\r\n#endif /* GL_EXT_blend_equation_separate */\r\n#ifdef GL_EXT_blend_func_extended\r\n  _glewInfo_GL_EXT_blend_func_extended();\r\n#endif /* GL_EXT_blend_func_extended */\r\n#ifdef GL_EXT_blend_func_separate\r\n  _glewInfo_GL_EXT_blend_func_separate();\r\n#endif /* GL_EXT_blend_func_separate */\r\n#ifdef GL_EXT_blend_logic_op\r\n  _glewInfo_GL_EXT_blend_logic_op();\r\n#endif /* GL_EXT_blend_logic_op */\r\n#ifdef GL_EXT_blend_minmax\r\n  _glewInfo_GL_EXT_blend_minmax();\r\n#endif /* GL_EXT_blend_minmax */\r\n#ifdef GL_EXT_blend_subtract\r\n  _glewInfo_GL_EXT_blend_subtract();\r\n#endif /* GL_EXT_blend_subtract */\r\n#ifdef GL_EXT_buffer_storage\r\n  _glewInfo_GL_EXT_buffer_storage();\r\n#endif /* GL_EXT_buffer_storage */\r\n#ifdef GL_EXT_clear_texture\r\n  _glewInfo_GL_EXT_clear_texture();\r\n#endif /* GL_EXT_clear_texture */\r\n#ifdef GL_EXT_clip_cull_distance\r\n  _glewInfo_GL_EXT_clip_cull_distance();\r\n#endif /* GL_EXT_clip_cull_distance */\r\n#ifdef GL_EXT_clip_volume_hint\r\n  _glewInfo_GL_EXT_clip_volume_hint();\r\n#endif /* GL_EXT_clip_volume_hint */\r\n#ifdef GL_EXT_cmyka\r\n  _glewInfo_GL_EXT_cmyka();\r\n#endif /* GL_EXT_cmyka */\r\n#ifdef GL_EXT_color_buffer_float\r\n  _glewInfo_GL_EXT_color_buffer_float();\r\n#endif /* GL_EXT_color_buffer_float */\r\n#ifdef GL_EXT_color_buffer_half_float\r\n  _glewInfo_GL_EXT_color_buffer_half_float();\r\n#endif /* GL_EXT_color_buffer_half_float */\r\n#ifdef GL_EXT_color_subtable\r\n  _glewInfo_GL_EXT_color_subtable();\r\n#endif /* GL_EXT_color_subtable */\r\n#ifdef GL_EXT_compiled_vertex_array\r\n  _glewInfo_GL_EXT_compiled_vertex_array();\r\n#endif /* GL_EXT_compiled_vertex_array */\r\n#ifdef GL_EXT_compressed_ETC1_RGB8_sub_texture\r\n  _glewInfo_GL_EXT_compressed_ETC1_RGB8_sub_texture();\r\n#endif /* GL_EXT_compressed_ETC1_RGB8_sub_texture */\r\n#ifdef GL_EXT_conservative_depth\r\n  _glewInfo_GL_EXT_conservative_depth();\r\n#endif /* GL_EXT_conservative_depth */\r\n#ifdef GL_EXT_convolution\r\n  _glewInfo_GL_EXT_convolution();\r\n#endif /* GL_EXT_convolution */\r\n#ifdef GL_EXT_coordinate_frame\r\n  _glewInfo_GL_EXT_coordinate_frame();\r\n#endif /* GL_EXT_coordinate_frame */\r\n#ifdef GL_EXT_copy_image\r\n  _glewInfo_GL_EXT_copy_image();\r\n#endif /* GL_EXT_copy_image */\r\n#ifdef GL_EXT_copy_texture\r\n  _glewInfo_GL_EXT_copy_texture();\r\n#endif /* GL_EXT_copy_texture */\r\n#ifdef GL_EXT_cull_vertex\r\n  _glewInfo_GL_EXT_cull_vertex();\r\n#endif /* GL_EXT_cull_vertex */\r\n#ifdef GL_EXT_debug_label\r\n  _glewInfo_GL_EXT_debug_label();\r\n#endif /* GL_EXT_debug_label */\r\n#ifdef GL_EXT_debug_marker\r\n  _glewInfo_GL_EXT_debug_marker();\r\n#endif /* GL_EXT_debug_marker */\r\n#ifdef GL_EXT_depth_bounds_test\r\n  _glewInfo_GL_EXT_depth_bounds_test();\r\n#endif /* GL_EXT_depth_bounds_test */\r\n#ifdef GL_EXT_direct_state_access\r\n  _glewInfo_GL_EXT_direct_state_access();\r\n#endif /* GL_EXT_direct_state_access */\r\n#ifdef GL_EXT_discard_framebuffer\r\n  _glewInfo_GL_EXT_discard_framebuffer();\r\n#endif /* GL_EXT_discard_framebuffer */\r\n#ifdef GL_EXT_draw_buffers\r\n  _glewInfo_GL_EXT_draw_buffers();\r\n#endif /* GL_EXT_draw_buffers */\r\n#ifdef GL_EXT_draw_buffers2\r\n  _glewInfo_GL_EXT_draw_buffers2();\r\n#endif /* GL_EXT_draw_buffers2 */\r\n#ifdef GL_EXT_draw_buffers_indexed\r\n  _glewInfo_GL_EXT_draw_buffers_indexed();\r\n#endif /* GL_EXT_draw_buffers_indexed */\r\n#ifdef GL_EXT_draw_elements_base_vertex\r\n  _glewInfo_GL_EXT_draw_elements_base_vertex();\r\n#endif /* GL_EXT_draw_elements_base_vertex */\r\n#ifdef GL_EXT_draw_instanced\r\n  _glewInfo_GL_EXT_draw_instanced();\r\n#endif /* GL_EXT_draw_instanced */\r\n#ifdef GL_EXT_draw_range_elements\r\n  _glewInfo_GL_EXT_draw_range_elements();\r\n#endif /* GL_EXT_draw_range_elements */\r\n#ifdef GL_EXT_external_buffer\r\n  _glewInfo_GL_EXT_external_buffer();\r\n#endif /* GL_EXT_external_buffer */\r\n#ifdef GL_EXT_float_blend\r\n  _glewInfo_GL_EXT_float_blend();\r\n#endif /* GL_EXT_float_blend */\r\n#ifdef GL_EXT_fog_coord\r\n  _glewInfo_GL_EXT_fog_coord();\r\n#endif /* GL_EXT_fog_coord */\r\n#ifdef GL_EXT_frag_depth\r\n  _glewInfo_GL_EXT_frag_depth();\r\n#endif /* GL_EXT_frag_depth */\r\n#ifdef GL_EXT_fragment_lighting\r\n  _glewInfo_GL_EXT_fragment_lighting();\r\n#endif /* GL_EXT_fragment_lighting */\r\n#ifdef GL_EXT_framebuffer_blit\r\n  _glewInfo_GL_EXT_framebuffer_blit();\r\n#endif /* GL_EXT_framebuffer_blit */\r\n#ifdef GL_EXT_framebuffer_multisample\r\n  _glewInfo_GL_EXT_framebuffer_multisample();\r\n#endif /* GL_EXT_framebuffer_multisample */\r\n#ifdef GL_EXT_framebuffer_multisample_blit_scaled\r\n  _glewInfo_GL_EXT_framebuffer_multisample_blit_scaled();\r\n#endif /* GL_EXT_framebuffer_multisample_blit_scaled */\r\n#ifdef GL_EXT_framebuffer_object\r\n  _glewInfo_GL_EXT_framebuffer_object();\r\n#endif /* GL_EXT_framebuffer_object */\r\n#ifdef GL_EXT_framebuffer_sRGB\r\n  _glewInfo_GL_EXT_framebuffer_sRGB();\r\n#endif /* GL_EXT_framebuffer_sRGB */\r\n#ifdef GL_EXT_geometry_point_size\r\n  _glewInfo_GL_EXT_geometry_point_size();\r\n#endif /* GL_EXT_geometry_point_size */\r\n#ifdef GL_EXT_geometry_shader\r\n  _glewInfo_GL_EXT_geometry_shader();\r\n#endif /* GL_EXT_geometry_shader */\r\n#ifdef GL_EXT_geometry_shader4\r\n  _glewInfo_GL_EXT_geometry_shader4();\r\n#endif /* GL_EXT_geometry_shader4 */\r\n#ifdef GL_EXT_gpu_program_parameters\r\n  _glewInfo_GL_EXT_gpu_program_parameters();\r\n#endif /* GL_EXT_gpu_program_parameters */\r\n#ifdef GL_EXT_gpu_shader4\r\n  _glewInfo_GL_EXT_gpu_shader4();\r\n#endif /* GL_EXT_gpu_shader4 */\r\n#ifdef GL_EXT_gpu_shader5\r\n  _glewInfo_GL_EXT_gpu_shader5();\r\n#endif /* GL_EXT_gpu_shader5 */\r\n#ifdef GL_EXT_histogram\r\n  _glewInfo_GL_EXT_histogram();\r\n#endif /* GL_EXT_histogram */\r\n#ifdef GL_EXT_index_array_formats\r\n  _glewInfo_GL_EXT_index_array_formats();\r\n#endif /* GL_EXT_index_array_formats */\r\n#ifdef GL_EXT_index_func\r\n  _glewInfo_GL_EXT_index_func();\r\n#endif /* GL_EXT_index_func */\r\n#ifdef GL_EXT_index_material\r\n  _glewInfo_GL_EXT_index_material();\r\n#endif /* GL_EXT_index_material */\r\n#ifdef GL_EXT_index_texture\r\n  _glewInfo_GL_EXT_index_texture();\r\n#endif /* GL_EXT_index_texture */\r\n#ifdef GL_EXT_instanced_arrays\r\n  _glewInfo_GL_EXT_instanced_arrays();\r\n#endif /* GL_EXT_instanced_arrays */\r\n#ifdef GL_EXT_light_texture\r\n  _glewInfo_GL_EXT_light_texture();\r\n#endif /* GL_EXT_light_texture */\r\n#ifdef GL_EXT_map_buffer_range\r\n  _glewInfo_GL_EXT_map_buffer_range();\r\n#endif /* GL_EXT_map_buffer_range */\r\n#ifdef GL_EXT_memory_object\r\n  _glewInfo_GL_EXT_memory_object();\r\n#endif /* GL_EXT_memory_object */\r\n#ifdef GL_EXT_memory_object_fd\r\n  _glewInfo_GL_EXT_memory_object_fd();\r\n#endif /* GL_EXT_memory_object_fd */\r\n#ifdef GL_EXT_memory_object_win32\r\n  _glewInfo_GL_EXT_memory_object_win32();\r\n#endif /* GL_EXT_memory_object_win32 */\r\n#ifdef GL_EXT_misc_attribute\r\n  _glewInfo_GL_EXT_misc_attribute();\r\n#endif /* GL_EXT_misc_attribute */\r\n#ifdef GL_EXT_multi_draw_arrays\r\n  _glewInfo_GL_EXT_multi_draw_arrays();\r\n#endif /* GL_EXT_multi_draw_arrays */\r\n#ifdef GL_EXT_multi_draw_indirect\r\n  _glewInfo_GL_EXT_multi_draw_indirect();\r\n#endif /* GL_EXT_multi_draw_indirect */\r\n#ifdef GL_EXT_multiple_textures\r\n  _glewInfo_GL_EXT_multiple_textures();\r\n#endif /* GL_EXT_multiple_textures */\r\n#ifdef GL_EXT_multisample\r\n  _glewInfo_GL_EXT_multisample();\r\n#endif /* GL_EXT_multisample */\r\n#ifdef GL_EXT_multisample_compatibility\r\n  _glewInfo_GL_EXT_multisample_compatibility();\r\n#endif /* GL_EXT_multisample_compatibility */\r\n#ifdef GL_EXT_multisampled_render_to_texture\r\n  _glewInfo_GL_EXT_multisampled_render_to_texture();\r\n#endif /* GL_EXT_multisampled_render_to_texture */\r\n#ifdef GL_EXT_multisampled_render_to_texture2\r\n  _glewInfo_GL_EXT_multisampled_render_to_texture2();\r\n#endif /* GL_EXT_multisampled_render_to_texture2 */\r\n#ifdef GL_EXT_multiview_draw_buffers\r\n  _glewInfo_GL_EXT_multiview_draw_buffers();\r\n#endif /* GL_EXT_multiview_draw_buffers */\r\n#ifdef GL_EXT_packed_depth_stencil\r\n  _glewInfo_GL_EXT_packed_depth_stencil();\r\n#endif /* GL_EXT_packed_depth_stencil */\r\n#ifdef GL_EXT_packed_float\r\n  _glewInfo_GL_EXT_packed_float();\r\n#endif /* GL_EXT_packed_float */\r\n#ifdef GL_EXT_packed_pixels\r\n  _glewInfo_GL_EXT_packed_pixels();\r\n#endif /* GL_EXT_packed_pixels */\r\n#ifdef GL_EXT_paletted_texture\r\n  _glewInfo_GL_EXT_paletted_texture();\r\n#endif /* GL_EXT_paletted_texture */\r\n#ifdef GL_EXT_pixel_buffer_object\r\n  _glewInfo_GL_EXT_pixel_buffer_object();\r\n#endif /* GL_EXT_pixel_buffer_object */\r\n#ifdef GL_EXT_pixel_transform\r\n  _glewInfo_GL_EXT_pixel_transform();\r\n#endif /* GL_EXT_pixel_transform */\r\n#ifdef GL_EXT_pixel_transform_color_table\r\n  _glewInfo_GL_EXT_pixel_transform_color_table();\r\n#endif /* GL_EXT_pixel_transform_color_table */\r\n#ifdef GL_EXT_point_parameters\r\n  _glewInfo_GL_EXT_point_parameters();\r\n#endif /* GL_EXT_point_parameters */\r\n#ifdef GL_EXT_polygon_offset\r\n  _glewInfo_GL_EXT_polygon_offset();\r\n#endif /* GL_EXT_polygon_offset */\r\n#ifdef GL_EXT_polygon_offset_clamp\r\n  _glewInfo_GL_EXT_polygon_offset_clamp();\r\n#endif /* GL_EXT_polygon_offset_clamp */\r\n#ifdef GL_EXT_post_depth_coverage\r\n  _glewInfo_GL_EXT_post_depth_coverage();\r\n#endif /* GL_EXT_post_depth_coverage */\r\n#ifdef GL_EXT_provoking_vertex\r\n  _glewInfo_GL_EXT_provoking_vertex();\r\n#endif /* GL_EXT_provoking_vertex */\r\n#ifdef GL_EXT_pvrtc_sRGB\r\n  _glewInfo_GL_EXT_pvrtc_sRGB();\r\n#endif /* GL_EXT_pvrtc_sRGB */\r\n#ifdef GL_EXT_raster_multisample\r\n  _glewInfo_GL_EXT_raster_multisample();\r\n#endif /* GL_EXT_raster_multisample */\r\n#ifdef GL_EXT_read_format_bgra\r\n  _glewInfo_GL_EXT_read_format_bgra();\r\n#endif /* GL_EXT_read_format_bgra */\r\n#ifdef GL_EXT_render_snorm\r\n  _glewInfo_GL_EXT_render_snorm();\r\n#endif /* GL_EXT_render_snorm */\r\n#ifdef GL_EXT_rescale_normal\r\n  _glewInfo_GL_EXT_rescale_normal();\r\n#endif /* GL_EXT_rescale_normal */\r\n#ifdef GL_EXT_sRGB\r\n  _glewInfo_GL_EXT_sRGB();\r\n#endif /* GL_EXT_sRGB */\r\n#ifdef GL_EXT_sRGB_write_control\r\n  _glewInfo_GL_EXT_sRGB_write_control();\r\n#endif /* GL_EXT_sRGB_write_control */\r\n#ifdef GL_EXT_scene_marker\r\n  _glewInfo_GL_EXT_scene_marker();\r\n#endif /* GL_EXT_scene_marker */\r\n#ifdef GL_EXT_secondary_color\r\n  _glewInfo_GL_EXT_secondary_color();\r\n#endif /* GL_EXT_secondary_color */\r\n#ifdef GL_EXT_semaphore\r\n  _glewInfo_GL_EXT_semaphore();\r\n#endif /* GL_EXT_semaphore */\r\n#ifdef GL_EXT_semaphore_fd\r\n  _glewInfo_GL_EXT_semaphore_fd();\r\n#endif /* GL_EXT_semaphore_fd */\r\n#ifdef GL_EXT_semaphore_win32\r\n  _glewInfo_GL_EXT_semaphore_win32();\r\n#endif /* GL_EXT_semaphore_win32 */\r\n#ifdef GL_EXT_separate_shader_objects\r\n  _glewInfo_GL_EXT_separate_shader_objects();\r\n#endif /* GL_EXT_separate_shader_objects */\r\n#ifdef GL_EXT_separate_specular_color\r\n  _glewInfo_GL_EXT_separate_specular_color();\r\n#endif /* GL_EXT_separate_specular_color */\r\n#ifdef GL_EXT_shader_framebuffer_fetch\r\n  _glewInfo_GL_EXT_shader_framebuffer_fetch();\r\n#endif /* GL_EXT_shader_framebuffer_fetch */\r\n#ifdef GL_EXT_shader_group_vote\r\n  _glewInfo_GL_EXT_shader_group_vote();\r\n#endif /* GL_EXT_shader_group_vote */\r\n#ifdef GL_EXT_shader_image_load_formatted\r\n  _glewInfo_GL_EXT_shader_image_load_formatted();\r\n#endif /* GL_EXT_shader_image_load_formatted */\r\n#ifdef GL_EXT_shader_image_load_store\r\n  _glewInfo_GL_EXT_shader_image_load_store();\r\n#endif /* GL_EXT_shader_image_load_store */\r\n#ifdef GL_EXT_shader_implicit_conversions\r\n  _glewInfo_GL_EXT_shader_implicit_conversions();\r\n#endif /* GL_EXT_shader_implicit_conversions */\r\n#ifdef GL_EXT_shader_integer_mix\r\n  _glewInfo_GL_EXT_shader_integer_mix();\r\n#endif /* GL_EXT_shader_integer_mix */\r\n#ifdef GL_EXT_shader_io_blocks\r\n  _glewInfo_GL_EXT_shader_io_blocks();\r\n#endif /* GL_EXT_shader_io_blocks */\r\n#ifdef GL_EXT_shader_non_constant_global_initializers\r\n  _glewInfo_GL_EXT_shader_non_constant_global_initializers();\r\n#endif /* GL_EXT_shader_non_constant_global_initializers */\r\n#ifdef GL_EXT_shader_pixel_local_storage\r\n  _glewInfo_GL_EXT_shader_pixel_local_storage();\r\n#endif /* GL_EXT_shader_pixel_local_storage */\r\n#ifdef GL_EXT_shader_pixel_local_storage2\r\n  _glewInfo_GL_EXT_shader_pixel_local_storage2();\r\n#endif /* GL_EXT_shader_pixel_local_storage2 */\r\n#ifdef GL_EXT_shader_texture_lod\r\n  _glewInfo_GL_EXT_shader_texture_lod();\r\n#endif /* GL_EXT_shader_texture_lod */\r\n#ifdef GL_EXT_shadow_funcs\r\n  _glewInfo_GL_EXT_shadow_funcs();\r\n#endif /* GL_EXT_shadow_funcs */\r\n#ifdef GL_EXT_shadow_samplers\r\n  _glewInfo_GL_EXT_shadow_samplers();\r\n#endif /* GL_EXT_shadow_samplers */\r\n#ifdef GL_EXT_shared_texture_palette\r\n  _glewInfo_GL_EXT_shared_texture_palette();\r\n#endif /* GL_EXT_shared_texture_palette */\r\n#ifdef GL_EXT_sparse_texture\r\n  _glewInfo_GL_EXT_sparse_texture();\r\n#endif /* GL_EXT_sparse_texture */\r\n#ifdef GL_EXT_sparse_texture2\r\n  _glewInfo_GL_EXT_sparse_texture2();\r\n#endif /* GL_EXT_sparse_texture2 */\r\n#ifdef GL_EXT_stencil_clear_tag\r\n  _glewInfo_GL_EXT_stencil_clear_tag();\r\n#endif /* GL_EXT_stencil_clear_tag */\r\n#ifdef GL_EXT_stencil_two_side\r\n  _glewInfo_GL_EXT_stencil_two_side();\r\n#endif /* GL_EXT_stencil_two_side */\r\n#ifdef GL_EXT_stencil_wrap\r\n  _glewInfo_GL_EXT_stencil_wrap();\r\n#endif /* GL_EXT_stencil_wrap */\r\n#ifdef GL_EXT_subtexture\r\n  _glewInfo_GL_EXT_subtexture();\r\n#endif /* GL_EXT_subtexture */\r\n#ifdef GL_EXT_texture\r\n  _glewInfo_GL_EXT_texture();\r\n#endif /* GL_EXT_texture */\r\n#ifdef GL_EXT_texture3D\r\n  _glewInfo_GL_EXT_texture3D();\r\n#endif /* GL_EXT_texture3D */\r\n#ifdef GL_EXT_texture_array\r\n  _glewInfo_GL_EXT_texture_array();\r\n#endif /* GL_EXT_texture_array */\r\n#ifdef GL_EXT_texture_buffer_object\r\n  _glewInfo_GL_EXT_texture_buffer_object();\r\n#endif /* GL_EXT_texture_buffer_object */\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode\r\n  _glewInfo_GL_EXT_texture_compression_astc_decode_mode();\r\n#endif /* GL_EXT_texture_compression_astc_decode_mode */\r\n#ifdef GL_EXT_texture_compression_astc_decode_mode_rgb9e5\r\n  _glewInfo_GL_EXT_texture_compression_astc_decode_mode_rgb9e5();\r\n#endif /* GL_EXT_texture_compression_astc_decode_mode_rgb9e5 */\r\n#ifdef GL_EXT_texture_compression_bptc\r\n  _glewInfo_GL_EXT_texture_compression_bptc();\r\n#endif /* GL_EXT_texture_compression_bptc */\r\n#ifdef GL_EXT_texture_compression_dxt1\r\n  _glewInfo_GL_EXT_texture_compression_dxt1();\r\n#endif /* GL_EXT_texture_compression_dxt1 */\r\n#ifdef GL_EXT_texture_compression_latc\r\n  _glewInfo_GL_EXT_texture_compression_latc();\r\n#endif /* GL_EXT_texture_compression_latc */\r\n#ifdef GL_EXT_texture_compression_rgtc\r\n  _glewInfo_GL_EXT_texture_compression_rgtc();\r\n#endif /* GL_EXT_texture_compression_rgtc */\r\n#ifdef GL_EXT_texture_compression_s3tc\r\n  _glewInfo_GL_EXT_texture_compression_s3tc();\r\n#endif /* GL_EXT_texture_compression_s3tc */\r\n#ifdef GL_EXT_texture_cube_map\r\n  _glewInfo_GL_EXT_texture_cube_map();\r\n#endif /* GL_EXT_texture_cube_map */\r\n#ifdef GL_EXT_texture_cube_map_array\r\n  _glewInfo_GL_EXT_texture_cube_map_array();\r\n#endif /* GL_EXT_texture_cube_map_array */\r\n#ifdef GL_EXT_texture_edge_clamp\r\n  _glewInfo_GL_EXT_texture_edge_clamp();\r\n#endif /* GL_EXT_texture_edge_clamp */\r\n#ifdef GL_EXT_texture_env\r\n  _glewInfo_GL_EXT_texture_env();\r\n#endif /* GL_EXT_texture_env */\r\n#ifdef GL_EXT_texture_env_add\r\n  _glewInfo_GL_EXT_texture_env_add();\r\n#endif /* GL_EXT_texture_env_add */\r\n#ifdef GL_EXT_texture_env_combine\r\n  _glewInfo_GL_EXT_texture_env_combine();\r\n#endif /* GL_EXT_texture_env_combine */\r\n#ifdef GL_EXT_texture_env_dot3\r\n  _glewInfo_GL_EXT_texture_env_dot3();\r\n#endif /* GL_EXT_texture_env_dot3 */\r\n#ifdef GL_EXT_texture_filter_anisotropic\r\n  _glewInfo_GL_EXT_texture_filter_anisotropic();\r\n#endif /* GL_EXT_texture_filter_anisotropic */\r\n#ifdef GL_EXT_texture_filter_minmax\r\n  _glewInfo_GL_EXT_texture_filter_minmax();\r\n#endif /* GL_EXT_texture_filter_minmax */\r\n#ifdef GL_EXT_texture_format_BGRA8888\r\n  _glewInfo_GL_EXT_texture_format_BGRA8888();\r\n#endif /* GL_EXT_texture_format_BGRA8888 */\r\n#ifdef GL_EXT_texture_integer\r\n  _glewInfo_GL_EXT_texture_integer();\r\n#endif /* GL_EXT_texture_integer */\r\n#ifdef GL_EXT_texture_lod_bias\r\n  _glewInfo_GL_EXT_texture_lod_bias();\r\n#endif /* GL_EXT_texture_lod_bias */\r\n#ifdef GL_EXT_texture_mirror_clamp\r\n  _glewInfo_GL_EXT_texture_mirror_clamp();\r\n#endif /* GL_EXT_texture_mirror_clamp */\r\n#ifdef GL_EXT_texture_norm16\r\n  _glewInfo_GL_EXT_texture_norm16();\r\n#endif /* GL_EXT_texture_norm16 */\r\n#ifdef GL_EXT_texture_object\r\n  _glewInfo_GL_EXT_texture_object();\r\n#endif /* GL_EXT_texture_object */\r\n#ifdef GL_EXT_texture_perturb_normal\r\n  _glewInfo_GL_EXT_texture_perturb_normal();\r\n#endif /* GL_EXT_texture_perturb_normal */\r\n#ifdef GL_EXT_texture_rectangle\r\n  _glewInfo_GL_EXT_texture_rectangle();\r\n#endif /* GL_EXT_texture_rectangle */\r\n#ifdef GL_EXT_texture_rg\r\n  _glewInfo_GL_EXT_texture_rg();\r\n#endif /* GL_EXT_texture_rg */\r\n#ifdef GL_EXT_texture_sRGB\r\n  _glewInfo_GL_EXT_texture_sRGB();\r\n#endif /* GL_EXT_texture_sRGB */\r\n#ifdef GL_EXT_texture_sRGB_R8\r\n  _glewInfo_GL_EXT_texture_sRGB_R8();\r\n#endif /* GL_EXT_texture_sRGB_R8 */\r\n#ifdef GL_EXT_texture_sRGB_RG8\r\n  _glewInfo_GL_EXT_texture_sRGB_RG8();\r\n#endif /* GL_EXT_texture_sRGB_RG8 */\r\n#ifdef GL_EXT_texture_sRGB_decode\r\n  _glewInfo_GL_EXT_texture_sRGB_decode();\r\n#endif /* GL_EXT_texture_sRGB_decode */\r\n#ifdef GL_EXT_texture_shared_exponent\r\n  _glewInfo_GL_EXT_texture_shared_exponent();\r\n#endif /* GL_EXT_texture_shared_exponent */\r\n#ifdef GL_EXT_texture_snorm\r\n  _glewInfo_GL_EXT_texture_snorm();\r\n#endif /* GL_EXT_texture_snorm */\r\n#ifdef GL_EXT_texture_storage\r\n  _glewInfo_GL_EXT_texture_storage();\r\n#endif /* GL_EXT_texture_storage */\r\n#ifdef GL_EXT_texture_swizzle\r\n  _glewInfo_GL_EXT_texture_swizzle();\r\n#endif /* GL_EXT_texture_swizzle */\r\n#ifdef GL_EXT_texture_type_2_10_10_10_REV\r\n  _glewInfo_GL_EXT_texture_type_2_10_10_10_REV();\r\n#endif /* GL_EXT_texture_type_2_10_10_10_REV */\r\n#ifdef GL_EXT_texture_view\r\n  _glewInfo_GL_EXT_texture_view();\r\n#endif /* GL_EXT_texture_view */\r\n#ifdef GL_EXT_timer_query\r\n  _glewInfo_GL_EXT_timer_query();\r\n#endif /* GL_EXT_timer_query */\r\n#ifdef GL_EXT_transform_feedback\r\n  _glewInfo_GL_EXT_transform_feedback();\r\n#endif /* GL_EXT_transform_feedback */\r\n#ifdef GL_EXT_unpack_subimage\r\n  _glewInfo_GL_EXT_unpack_subimage();\r\n#endif /* GL_EXT_unpack_subimage */\r\n#ifdef GL_EXT_vertex_array\r\n  _glewInfo_GL_EXT_vertex_array();\r\n#endif /* GL_EXT_vertex_array */\r\n#ifdef GL_EXT_vertex_array_bgra\r\n  _glewInfo_GL_EXT_vertex_array_bgra();\r\n#endif /* GL_EXT_vertex_array_bgra */\r\n#ifdef GL_EXT_vertex_array_setXXX\r\n  _glewInfo_GL_EXT_vertex_array_setXXX();\r\n#endif /* GL_EXT_vertex_array_setXXX */\r\n#ifdef GL_EXT_vertex_attrib_64bit\r\n  _glewInfo_GL_EXT_vertex_attrib_64bit();\r\n#endif /* GL_EXT_vertex_attrib_64bit */\r\n#ifdef GL_EXT_vertex_shader\r\n  _glewInfo_GL_EXT_vertex_shader();\r\n#endif /* GL_EXT_vertex_shader */\r\n#ifdef GL_EXT_vertex_weighting\r\n  _glewInfo_GL_EXT_vertex_weighting();\r\n#endif /* GL_EXT_vertex_weighting */\r\n#ifdef GL_EXT_win32_keyed_mutex\r\n  _glewInfo_GL_EXT_win32_keyed_mutex();\r\n#endif /* GL_EXT_win32_keyed_mutex */\r\n#ifdef GL_EXT_window_rectangles\r\n  _glewInfo_GL_EXT_window_rectangles();\r\n#endif /* GL_EXT_window_rectangles */\r\n#ifdef GL_EXT_x11_sync_object\r\n  _glewInfo_GL_EXT_x11_sync_object();\r\n#endif /* GL_EXT_x11_sync_object */\r\n#ifdef GL_GREMEDY_frame_terminator\r\n  _glewInfo_GL_GREMEDY_frame_terminator();\r\n#endif /* GL_GREMEDY_frame_terminator */\r\n#ifdef GL_GREMEDY_string_marker\r\n  _glewInfo_GL_GREMEDY_string_marker();\r\n#endif /* GL_GREMEDY_string_marker */\r\n#ifdef GL_HP_convolution_border_modes\r\n  _glewInfo_GL_HP_convolution_border_modes();\r\n#endif /* GL_HP_convolution_border_modes */\r\n#ifdef GL_HP_image_transform\r\n  _glewInfo_GL_HP_image_transform();\r\n#endif /* GL_HP_image_transform */\r\n#ifdef GL_HP_occlusion_test\r\n  _glewInfo_GL_HP_occlusion_test();\r\n#endif /* GL_HP_occlusion_test */\r\n#ifdef GL_HP_texture_lighting\r\n  _glewInfo_GL_HP_texture_lighting();\r\n#endif /* GL_HP_texture_lighting */\r\n#ifdef GL_IBM_cull_vertex\r\n  _glewInfo_GL_IBM_cull_vertex();\r\n#endif /* GL_IBM_cull_vertex */\r\n#ifdef GL_IBM_multimode_draw_arrays\r\n  _glewInfo_GL_IBM_multimode_draw_arrays();\r\n#endif /* GL_IBM_multimode_draw_arrays */\r\n#ifdef GL_IBM_rasterpos_clip\r\n  _glewInfo_GL_IBM_rasterpos_clip();\r\n#endif /* GL_IBM_rasterpos_clip */\r\n#ifdef GL_IBM_static_data\r\n  _glewInfo_GL_IBM_static_data();\r\n#endif /* GL_IBM_static_data */\r\n#ifdef GL_IBM_texture_mirrored_repeat\r\n  _glewInfo_GL_IBM_texture_mirrored_repeat();\r\n#endif /* GL_IBM_texture_mirrored_repeat */\r\n#ifdef GL_IBM_vertex_array_lists\r\n  _glewInfo_GL_IBM_vertex_array_lists();\r\n#endif /* GL_IBM_vertex_array_lists */\r\n#ifdef GL_INGR_color_clamp\r\n  _glewInfo_GL_INGR_color_clamp();\r\n#endif /* GL_INGR_color_clamp */\r\n#ifdef GL_INGR_interlace_read\r\n  _glewInfo_GL_INGR_interlace_read();\r\n#endif /* GL_INGR_interlace_read */\r\n#ifdef GL_INTEL_conservative_rasterization\r\n  _glewInfo_GL_INTEL_conservative_rasterization();\r\n#endif /* GL_INTEL_conservative_rasterization */\r\n#ifdef GL_INTEL_fragment_shader_ordering\r\n  _glewInfo_GL_INTEL_fragment_shader_ordering();\r\n#endif /* GL_INTEL_fragment_shader_ordering */\r\n#ifdef GL_INTEL_framebuffer_CMAA\r\n  _glewInfo_GL_INTEL_framebuffer_CMAA();\r\n#endif /* GL_INTEL_framebuffer_CMAA */\r\n#ifdef GL_INTEL_map_texture\r\n  _glewInfo_GL_INTEL_map_texture();\r\n#endif /* GL_INTEL_map_texture */\r\n#ifdef GL_INTEL_parallel_arrays\r\n  _glewInfo_GL_INTEL_parallel_arrays();\r\n#endif /* GL_INTEL_parallel_arrays */\r\n#ifdef GL_INTEL_performance_query\r\n  _glewInfo_GL_INTEL_performance_query();\r\n#endif /* GL_INTEL_performance_query */\r\n#ifdef GL_INTEL_texture_scissor\r\n  _glewInfo_GL_INTEL_texture_scissor();\r\n#endif /* GL_INTEL_texture_scissor */\r\n#ifdef GL_KHR_blend_equation_advanced\r\n  _glewInfo_GL_KHR_blend_equation_advanced();\r\n#endif /* GL_KHR_blend_equation_advanced */\r\n#ifdef GL_KHR_blend_equation_advanced_coherent\r\n  _glewInfo_GL_KHR_blend_equation_advanced_coherent();\r\n#endif /* GL_KHR_blend_equation_advanced_coherent */\r\n#ifdef GL_KHR_context_flush_control\r\n  _glewInfo_GL_KHR_context_flush_control();\r\n#endif /* GL_KHR_context_flush_control */\r\n#ifdef GL_KHR_debug\r\n  _glewInfo_GL_KHR_debug();\r\n#endif /* GL_KHR_debug */\r\n#ifdef GL_KHR_no_error\r\n  _glewInfo_GL_KHR_no_error();\r\n#endif /* GL_KHR_no_error */\r\n#ifdef GL_KHR_parallel_shader_compile\r\n  _glewInfo_GL_KHR_parallel_shader_compile();\r\n#endif /* GL_KHR_parallel_shader_compile */\r\n#ifdef GL_KHR_robust_buffer_access_behavior\r\n  _glewInfo_GL_KHR_robust_buffer_access_behavior();\r\n#endif /* GL_KHR_robust_buffer_access_behavior */\r\n#ifdef GL_KHR_robustness\r\n  _glewInfo_GL_KHR_robustness();\r\n#endif /* GL_KHR_robustness */\r\n#ifdef GL_KHR_texture_compression_astc_hdr\r\n  _glewInfo_GL_KHR_texture_compression_astc_hdr();\r\n#endif /* GL_KHR_texture_compression_astc_hdr */\r\n#ifdef GL_KHR_texture_compression_astc_ldr\r\n  _glewInfo_GL_KHR_texture_compression_astc_ldr();\r\n#endif /* GL_KHR_texture_compression_astc_ldr */\r\n#ifdef GL_KHR_texture_compression_astc_sliced_3d\r\n  _glewInfo_GL_KHR_texture_compression_astc_sliced_3d();\r\n#endif /* GL_KHR_texture_compression_astc_sliced_3d */\r\n#ifdef GL_KTX_buffer_region\r\n  _glewInfo_GL_KTX_buffer_region();\r\n#endif /* GL_KTX_buffer_region */\r\n#ifdef GL_MESAX_texture_stack\r\n  _glewInfo_GL_MESAX_texture_stack();\r\n#endif /* GL_MESAX_texture_stack */\r\n#ifdef GL_MESA_pack_invert\r\n  _glewInfo_GL_MESA_pack_invert();\r\n#endif /* GL_MESA_pack_invert */\r\n#ifdef GL_MESA_resize_buffers\r\n  _glewInfo_GL_MESA_resize_buffers();\r\n#endif /* GL_MESA_resize_buffers */\r\n#ifdef GL_MESA_shader_integer_functions\r\n  _glewInfo_GL_MESA_shader_integer_functions();\r\n#endif /* GL_MESA_shader_integer_functions */\r\n#ifdef GL_MESA_window_pos\r\n  _glewInfo_GL_MESA_window_pos();\r\n#endif /* GL_MESA_window_pos */\r\n#ifdef GL_MESA_ycbcr_texture\r\n  _glewInfo_GL_MESA_ycbcr_texture();\r\n#endif /* GL_MESA_ycbcr_texture */\r\n#ifdef GL_NVX_blend_equation_advanced_multi_draw_buffers\r\n  _glewInfo_GL_NVX_blend_equation_advanced_multi_draw_buffers();\r\n#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */\r\n#ifdef GL_NVX_conditional_render\r\n  _glewInfo_GL_NVX_conditional_render();\r\n#endif /* GL_NVX_conditional_render */\r\n#ifdef GL_NVX_gpu_memory_info\r\n  _glewInfo_GL_NVX_gpu_memory_info();\r\n#endif /* GL_NVX_gpu_memory_info */\r\n#ifdef GL_NVX_linked_gpu_multicast\r\n  _glewInfo_GL_NVX_linked_gpu_multicast();\r\n#endif /* GL_NVX_linked_gpu_multicast */\r\n#ifdef GL_NV_3dvision_settings\r\n  _glewInfo_GL_NV_3dvision_settings();\r\n#endif /* GL_NV_3dvision_settings */\r\n#ifdef GL_NV_EGL_stream_consumer_external\r\n  _glewInfo_GL_NV_EGL_stream_consumer_external();\r\n#endif /* GL_NV_EGL_stream_consumer_external */\r\n#ifdef GL_NV_alpha_to_coverage_dither_control\r\n  _glewInfo_GL_NV_alpha_to_coverage_dither_control();\r\n#endif /* GL_NV_alpha_to_coverage_dither_control */\r\n#ifdef GL_NV_bgr\r\n  _glewInfo_GL_NV_bgr();\r\n#endif /* GL_NV_bgr */\r\n#ifdef GL_NV_bindless_multi_draw_indirect\r\n  _glewInfo_GL_NV_bindless_multi_draw_indirect();\r\n#endif /* GL_NV_bindless_multi_draw_indirect */\r\n#ifdef GL_NV_bindless_multi_draw_indirect_count\r\n  _glewInfo_GL_NV_bindless_multi_draw_indirect_count();\r\n#endif /* GL_NV_bindless_multi_draw_indirect_count */\r\n#ifdef GL_NV_bindless_texture\r\n  _glewInfo_GL_NV_bindless_texture();\r\n#endif /* GL_NV_bindless_texture */\r\n#ifdef GL_NV_blend_equation_advanced\r\n  _glewInfo_GL_NV_blend_equation_advanced();\r\n#endif /* GL_NV_blend_equation_advanced */\r\n#ifdef GL_NV_blend_equation_advanced_coherent\r\n  _glewInfo_GL_NV_blend_equation_advanced_coherent();\r\n#endif /* GL_NV_blend_equation_advanced_coherent */\r\n#ifdef GL_NV_blend_minmax_factor\r\n  _glewInfo_GL_NV_blend_minmax_factor();\r\n#endif /* GL_NV_blend_minmax_factor */\r\n#ifdef GL_NV_blend_square\r\n  _glewInfo_GL_NV_blend_square();\r\n#endif /* GL_NV_blend_square */\r\n#ifdef GL_NV_clip_space_w_scaling\r\n  _glewInfo_GL_NV_clip_space_w_scaling();\r\n#endif /* GL_NV_clip_space_w_scaling */\r\n#ifdef GL_NV_command_list\r\n  _glewInfo_GL_NV_command_list();\r\n#endif /* GL_NV_command_list */\r\n#ifdef GL_NV_compute_program5\r\n  _glewInfo_GL_NV_compute_program5();\r\n#endif /* GL_NV_compute_program5 */\r\n#ifdef GL_NV_conditional_render\r\n  _glewInfo_GL_NV_conditional_render();\r\n#endif /* GL_NV_conditional_render */\r\n#ifdef GL_NV_conservative_raster\r\n  _glewInfo_GL_NV_conservative_raster();\r\n#endif /* GL_NV_conservative_raster */\r\n#ifdef GL_NV_conservative_raster_dilate\r\n  _glewInfo_GL_NV_conservative_raster_dilate();\r\n#endif /* GL_NV_conservative_raster_dilate */\r\n#ifdef GL_NV_conservative_raster_pre_snap_triangles\r\n  _glewInfo_GL_NV_conservative_raster_pre_snap_triangles();\r\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\r\n#ifdef GL_NV_copy_buffer\r\n  _glewInfo_GL_NV_copy_buffer();\r\n#endif /* GL_NV_copy_buffer */\r\n#ifdef GL_NV_copy_depth_to_color\r\n  _glewInfo_GL_NV_copy_depth_to_color();\r\n#endif /* GL_NV_copy_depth_to_color */\r\n#ifdef GL_NV_copy_image\r\n  _glewInfo_GL_NV_copy_image();\r\n#endif /* GL_NV_copy_image */\r\n#ifdef GL_NV_deep_texture3D\r\n  _glewInfo_GL_NV_deep_texture3D();\r\n#endif /* GL_NV_deep_texture3D */\r\n#ifdef GL_NV_depth_buffer_float\r\n  _glewInfo_GL_NV_depth_buffer_float();\r\n#endif /* GL_NV_depth_buffer_float */\r\n#ifdef GL_NV_depth_clamp\r\n  _glewInfo_GL_NV_depth_clamp();\r\n#endif /* GL_NV_depth_clamp */\r\n#ifdef GL_NV_depth_range_unclamped\r\n  _glewInfo_GL_NV_depth_range_unclamped();\r\n#endif /* GL_NV_depth_range_unclamped */\r\n#ifdef GL_NV_draw_buffers\r\n  _glewInfo_GL_NV_draw_buffers();\r\n#endif /* GL_NV_draw_buffers */\r\n#ifdef GL_NV_draw_instanced\r\n  _glewInfo_GL_NV_draw_instanced();\r\n#endif /* GL_NV_draw_instanced */\r\n#ifdef GL_NV_draw_texture\r\n  _glewInfo_GL_NV_draw_texture();\r\n#endif /* GL_NV_draw_texture */\r\n#ifdef GL_NV_draw_vulkan_image\r\n  _glewInfo_GL_NV_draw_vulkan_image();\r\n#endif /* GL_NV_draw_vulkan_image */\r\n#ifdef GL_NV_evaluators\r\n  _glewInfo_GL_NV_evaluators();\r\n#endif /* GL_NV_evaluators */\r\n#ifdef GL_NV_explicit_attrib_location\r\n  _glewInfo_GL_NV_explicit_attrib_location();\r\n#endif /* GL_NV_explicit_attrib_location */\r\n#ifdef GL_NV_explicit_multisample\r\n  _glewInfo_GL_NV_explicit_multisample();\r\n#endif /* GL_NV_explicit_multisample */\r\n#ifdef GL_NV_fbo_color_attachments\r\n  _glewInfo_GL_NV_fbo_color_attachments();\r\n#endif /* GL_NV_fbo_color_attachments */\r\n#ifdef GL_NV_fence\r\n  _glewInfo_GL_NV_fence();\r\n#endif /* GL_NV_fence */\r\n#ifdef GL_NV_fill_rectangle\r\n  _glewInfo_GL_NV_fill_rectangle();\r\n#endif /* GL_NV_fill_rectangle */\r\n#ifdef GL_NV_float_buffer\r\n  _glewInfo_GL_NV_float_buffer();\r\n#endif /* GL_NV_float_buffer */\r\n#ifdef GL_NV_fog_distance\r\n  _glewInfo_GL_NV_fog_distance();\r\n#endif /* GL_NV_fog_distance */\r\n#ifdef GL_NV_fragment_coverage_to_color\r\n  _glewInfo_GL_NV_fragment_coverage_to_color();\r\n#endif /* GL_NV_fragment_coverage_to_color */\r\n#ifdef GL_NV_fragment_program\r\n  _glewInfo_GL_NV_fragment_program();\r\n#endif /* GL_NV_fragment_program */\r\n#ifdef GL_NV_fragment_program2\r\n  _glewInfo_GL_NV_fragment_program2();\r\n#endif /* GL_NV_fragment_program2 */\r\n#ifdef GL_NV_fragment_program4\r\n  _glewInfo_GL_NV_fragment_program4();\r\n#endif /* GL_NV_fragment_program4 */\r\n#ifdef GL_NV_fragment_program_option\r\n  _glewInfo_GL_NV_fragment_program_option();\r\n#endif /* GL_NV_fragment_program_option */\r\n#ifdef GL_NV_fragment_shader_interlock\r\n  _glewInfo_GL_NV_fragment_shader_interlock();\r\n#endif /* GL_NV_fragment_shader_interlock */\r\n#ifdef GL_NV_framebuffer_blit\r\n  _glewInfo_GL_NV_framebuffer_blit();\r\n#endif /* GL_NV_framebuffer_blit */\r\n#ifdef GL_NV_framebuffer_mixed_samples\r\n  _glewInfo_GL_NV_framebuffer_mixed_samples();\r\n#endif /* GL_NV_framebuffer_mixed_samples */\r\n#ifdef GL_NV_framebuffer_multisample\r\n  _glewInfo_GL_NV_framebuffer_multisample();\r\n#endif /* GL_NV_framebuffer_multisample */\r\n#ifdef GL_NV_framebuffer_multisample_coverage\r\n  _glewInfo_GL_NV_framebuffer_multisample_coverage();\r\n#endif /* GL_NV_framebuffer_multisample_coverage */\r\n#ifdef GL_NV_generate_mipmap_sRGB\r\n  _glewInfo_GL_NV_generate_mipmap_sRGB();\r\n#endif /* GL_NV_generate_mipmap_sRGB */\r\n#ifdef GL_NV_geometry_program4\r\n  _glewInfo_GL_NV_geometry_program4();\r\n#endif /* GL_NV_geometry_program4 */\r\n#ifdef GL_NV_geometry_shader4\r\n  _glewInfo_GL_NV_geometry_shader4();\r\n#endif /* GL_NV_geometry_shader4 */\r\n#ifdef GL_NV_geometry_shader_passthrough\r\n  _glewInfo_GL_NV_geometry_shader_passthrough();\r\n#endif /* GL_NV_geometry_shader_passthrough */\r\n#ifdef GL_NV_gpu_multicast\r\n  _glewInfo_GL_NV_gpu_multicast();\r\n#endif /* GL_NV_gpu_multicast */\r\n#ifdef GL_NV_gpu_program4\r\n  _glewInfo_GL_NV_gpu_program4();\r\n#endif /* GL_NV_gpu_program4 */\r\n#ifdef GL_NV_gpu_program5\r\n  _glewInfo_GL_NV_gpu_program5();\r\n#endif /* GL_NV_gpu_program5 */\r\n#ifdef GL_NV_gpu_program5_mem_extended\r\n  _glewInfo_GL_NV_gpu_program5_mem_extended();\r\n#endif /* GL_NV_gpu_program5_mem_extended */\r\n#ifdef GL_NV_gpu_program_fp64\r\n  _glewInfo_GL_NV_gpu_program_fp64();\r\n#endif /* GL_NV_gpu_program_fp64 */\r\n#ifdef GL_NV_gpu_shader5\r\n  _glewInfo_GL_NV_gpu_shader5();\r\n#endif /* GL_NV_gpu_shader5 */\r\n#ifdef GL_NV_half_float\r\n  _glewInfo_GL_NV_half_float();\r\n#endif /* GL_NV_half_float */\r\n#ifdef GL_NV_image_formats\r\n  _glewInfo_GL_NV_image_formats();\r\n#endif /* GL_NV_image_formats */\r\n#ifdef GL_NV_instanced_arrays\r\n  _glewInfo_GL_NV_instanced_arrays();\r\n#endif /* GL_NV_instanced_arrays */\r\n#ifdef GL_NV_internalformat_sample_query\r\n  _glewInfo_GL_NV_internalformat_sample_query();\r\n#endif /* GL_NV_internalformat_sample_query */\r\n#ifdef GL_NV_light_max_exponent\r\n  _glewInfo_GL_NV_light_max_exponent();\r\n#endif /* GL_NV_light_max_exponent */\r\n#ifdef GL_NV_multisample_coverage\r\n  _glewInfo_GL_NV_multisample_coverage();\r\n#endif /* GL_NV_multisample_coverage */\r\n#ifdef GL_NV_multisample_filter_hint\r\n  _glewInfo_GL_NV_multisample_filter_hint();\r\n#endif /* GL_NV_multisample_filter_hint */\r\n#ifdef GL_NV_non_square_matrices\r\n  _glewInfo_GL_NV_non_square_matrices();\r\n#endif /* GL_NV_non_square_matrices */\r\n#ifdef GL_NV_occlusion_query\r\n  _glewInfo_GL_NV_occlusion_query();\r\n#endif /* GL_NV_occlusion_query */\r\n#ifdef GL_NV_pack_subimage\r\n  _glewInfo_GL_NV_pack_subimage();\r\n#endif /* GL_NV_pack_subimage */\r\n#ifdef GL_NV_packed_depth_stencil\r\n  _glewInfo_GL_NV_packed_depth_stencil();\r\n#endif /* GL_NV_packed_depth_stencil */\r\n#ifdef GL_NV_packed_float\r\n  _glewInfo_GL_NV_packed_float();\r\n#endif /* GL_NV_packed_float */\r\n#ifdef GL_NV_packed_float_linear\r\n  _glewInfo_GL_NV_packed_float_linear();\r\n#endif /* GL_NV_packed_float_linear */\r\n#ifdef GL_NV_parameter_buffer_object\r\n  _glewInfo_GL_NV_parameter_buffer_object();\r\n#endif /* GL_NV_parameter_buffer_object */\r\n#ifdef GL_NV_parameter_buffer_object2\r\n  _glewInfo_GL_NV_parameter_buffer_object2();\r\n#endif /* GL_NV_parameter_buffer_object2 */\r\n#ifdef GL_NV_path_rendering\r\n  _glewInfo_GL_NV_path_rendering();\r\n#endif /* GL_NV_path_rendering */\r\n#ifdef GL_NV_path_rendering_shared_edge\r\n  _glewInfo_GL_NV_path_rendering_shared_edge();\r\n#endif /* GL_NV_path_rendering_shared_edge */\r\n#ifdef GL_NV_pixel_buffer_object\r\n  _glewInfo_GL_NV_pixel_buffer_object();\r\n#endif /* GL_NV_pixel_buffer_object */\r\n#ifdef GL_NV_pixel_data_range\r\n  _glewInfo_GL_NV_pixel_data_range();\r\n#endif /* GL_NV_pixel_data_range */\r\n#ifdef GL_NV_platform_binary\r\n  _glewInfo_GL_NV_platform_binary();\r\n#endif /* GL_NV_platform_binary */\r\n#ifdef GL_NV_point_sprite\r\n  _glewInfo_GL_NV_point_sprite();\r\n#endif /* GL_NV_point_sprite */\r\n#ifdef GL_NV_polygon_mode\r\n  _glewInfo_GL_NV_polygon_mode();\r\n#endif /* GL_NV_polygon_mode */\r\n#ifdef GL_NV_present_video\r\n  _glewInfo_GL_NV_present_video();\r\n#endif /* GL_NV_present_video */\r\n#ifdef GL_NV_primitive_restart\r\n  _glewInfo_GL_NV_primitive_restart();\r\n#endif /* GL_NV_primitive_restart */\r\n#ifdef GL_NV_read_depth\r\n  _glewInfo_GL_NV_read_depth();\r\n#endif /* GL_NV_read_depth */\r\n#ifdef GL_NV_read_depth_stencil\r\n  _glewInfo_GL_NV_read_depth_stencil();\r\n#endif /* GL_NV_read_depth_stencil */\r\n#ifdef GL_NV_read_stencil\r\n  _glewInfo_GL_NV_read_stencil();\r\n#endif /* GL_NV_read_stencil */\r\n#ifdef GL_NV_register_combiners\r\n  _glewInfo_GL_NV_register_combiners();\r\n#endif /* GL_NV_register_combiners */\r\n#ifdef GL_NV_register_combiners2\r\n  _glewInfo_GL_NV_register_combiners2();\r\n#endif /* GL_NV_register_combiners2 */\r\n#ifdef GL_NV_robustness_video_memory_purge\r\n  _glewInfo_GL_NV_robustness_video_memory_purge();\r\n#endif /* GL_NV_robustness_video_memory_purge */\r\n#ifdef GL_NV_sRGB_formats\r\n  _glewInfo_GL_NV_sRGB_formats();\r\n#endif /* GL_NV_sRGB_formats */\r\n#ifdef GL_NV_sample_locations\r\n  _glewInfo_GL_NV_sample_locations();\r\n#endif /* GL_NV_sample_locations */\r\n#ifdef GL_NV_sample_mask_override_coverage\r\n  _glewInfo_GL_NV_sample_mask_override_coverage();\r\n#endif /* GL_NV_sample_mask_override_coverage */\r\n#ifdef GL_NV_shader_atomic_counters\r\n  _glewInfo_GL_NV_shader_atomic_counters();\r\n#endif /* GL_NV_shader_atomic_counters */\r\n#ifdef GL_NV_shader_atomic_float\r\n  _glewInfo_GL_NV_shader_atomic_float();\r\n#endif /* GL_NV_shader_atomic_float */\r\n#ifdef GL_NV_shader_atomic_float64\r\n  _glewInfo_GL_NV_shader_atomic_float64();\r\n#endif /* GL_NV_shader_atomic_float64 */\r\n#ifdef GL_NV_shader_atomic_fp16_vector\r\n  _glewInfo_GL_NV_shader_atomic_fp16_vector();\r\n#endif /* GL_NV_shader_atomic_fp16_vector */\r\n#ifdef GL_NV_shader_atomic_int64\r\n  _glewInfo_GL_NV_shader_atomic_int64();\r\n#endif /* GL_NV_shader_atomic_int64 */\r\n#ifdef GL_NV_shader_buffer_load\r\n  _glewInfo_GL_NV_shader_buffer_load();\r\n#endif /* GL_NV_shader_buffer_load */\r\n#ifdef GL_NV_shader_noperspective_interpolation\r\n  _glewInfo_GL_NV_shader_noperspective_interpolation();\r\n#endif /* GL_NV_shader_noperspective_interpolation */\r\n#ifdef GL_NV_shader_storage_buffer_object\r\n  _glewInfo_GL_NV_shader_storage_buffer_object();\r\n#endif /* GL_NV_shader_storage_buffer_object */\r\n#ifdef GL_NV_shader_thread_group\r\n  _glewInfo_GL_NV_shader_thread_group();\r\n#endif /* GL_NV_shader_thread_group */\r\n#ifdef GL_NV_shader_thread_shuffle\r\n  _glewInfo_GL_NV_shader_thread_shuffle();\r\n#endif /* GL_NV_shader_thread_shuffle */\r\n#ifdef GL_NV_shadow_samplers_array\r\n  _glewInfo_GL_NV_shadow_samplers_array();\r\n#endif /* GL_NV_shadow_samplers_array */\r\n#ifdef GL_NV_shadow_samplers_cube\r\n  _glewInfo_GL_NV_shadow_samplers_cube();\r\n#endif /* GL_NV_shadow_samplers_cube */\r\n#ifdef GL_NV_stereo_view_rendering\r\n  _glewInfo_GL_NV_stereo_view_rendering();\r\n#endif /* GL_NV_stereo_view_rendering */\r\n#ifdef GL_NV_tessellation_program5\r\n  _glewInfo_GL_NV_tessellation_program5();\r\n#endif /* GL_NV_tessellation_program5 */\r\n#ifdef GL_NV_texgen_emboss\r\n  _glewInfo_GL_NV_texgen_emboss();\r\n#endif /* GL_NV_texgen_emboss */\r\n#ifdef GL_NV_texgen_reflection\r\n  _glewInfo_GL_NV_texgen_reflection();\r\n#endif /* GL_NV_texgen_reflection */\r\n#ifdef GL_NV_texture_array\r\n  _glewInfo_GL_NV_texture_array();\r\n#endif /* GL_NV_texture_array */\r\n#ifdef GL_NV_texture_barrier\r\n  _glewInfo_GL_NV_texture_barrier();\r\n#endif /* GL_NV_texture_barrier */\r\n#ifdef GL_NV_texture_border_clamp\r\n  _glewInfo_GL_NV_texture_border_clamp();\r\n#endif /* GL_NV_texture_border_clamp */\r\n#ifdef GL_NV_texture_compression_latc\r\n  _glewInfo_GL_NV_texture_compression_latc();\r\n#endif /* GL_NV_texture_compression_latc */\r\n#ifdef GL_NV_texture_compression_s3tc\r\n  _glewInfo_GL_NV_texture_compression_s3tc();\r\n#endif /* GL_NV_texture_compression_s3tc */\r\n#ifdef GL_NV_texture_compression_s3tc_update\r\n  _glewInfo_GL_NV_texture_compression_s3tc_update();\r\n#endif /* GL_NV_texture_compression_s3tc_update */\r\n#ifdef GL_NV_texture_compression_vtc\r\n  _glewInfo_GL_NV_texture_compression_vtc();\r\n#endif /* GL_NV_texture_compression_vtc */\r\n#ifdef GL_NV_texture_env_combine4\r\n  _glewInfo_GL_NV_texture_env_combine4();\r\n#endif /* GL_NV_texture_env_combine4 */\r\n#ifdef GL_NV_texture_expand_normal\r\n  _glewInfo_GL_NV_texture_expand_normal();\r\n#endif /* GL_NV_texture_expand_normal */\r\n#ifdef GL_NV_texture_multisample\r\n  _glewInfo_GL_NV_texture_multisample();\r\n#endif /* GL_NV_texture_multisample */\r\n#ifdef GL_NV_texture_npot_2D_mipmap\r\n  _glewInfo_GL_NV_texture_npot_2D_mipmap();\r\n#endif /* GL_NV_texture_npot_2D_mipmap */\r\n#ifdef GL_NV_texture_rectangle\r\n  _glewInfo_GL_NV_texture_rectangle();\r\n#endif /* GL_NV_texture_rectangle */\r\n#ifdef GL_NV_texture_rectangle_compressed\r\n  _glewInfo_GL_NV_texture_rectangle_compressed();\r\n#endif /* GL_NV_texture_rectangle_compressed */\r\n#ifdef GL_NV_texture_shader\r\n  _glewInfo_GL_NV_texture_shader();\r\n#endif /* GL_NV_texture_shader */\r\n#ifdef GL_NV_texture_shader2\r\n  _glewInfo_GL_NV_texture_shader2();\r\n#endif /* GL_NV_texture_shader2 */\r\n#ifdef GL_NV_texture_shader3\r\n  _glewInfo_GL_NV_texture_shader3();\r\n#endif /* GL_NV_texture_shader3 */\r\n#ifdef GL_NV_transform_feedback\r\n  _glewInfo_GL_NV_transform_feedback();\r\n#endif /* GL_NV_transform_feedback */\r\n#ifdef GL_NV_transform_feedback2\r\n  _glewInfo_GL_NV_transform_feedback2();\r\n#endif /* GL_NV_transform_feedback2 */\r\n#ifdef GL_NV_uniform_buffer_unified_memory\r\n  _glewInfo_GL_NV_uniform_buffer_unified_memory();\r\n#endif /* GL_NV_uniform_buffer_unified_memory */\r\n#ifdef GL_NV_vdpau_interop\r\n  _glewInfo_GL_NV_vdpau_interop();\r\n#endif /* GL_NV_vdpau_interop */\r\n#ifdef GL_NV_vertex_array_range\r\n  _glewInfo_GL_NV_vertex_array_range();\r\n#endif /* GL_NV_vertex_array_range */\r\n#ifdef GL_NV_vertex_array_range2\r\n  _glewInfo_GL_NV_vertex_array_range2();\r\n#endif /* GL_NV_vertex_array_range2 */\r\n#ifdef GL_NV_vertex_attrib_integer_64bit\r\n  _glewInfo_GL_NV_vertex_attrib_integer_64bit();\r\n#endif /* GL_NV_vertex_attrib_integer_64bit */\r\n#ifdef GL_NV_vertex_buffer_unified_memory\r\n  _glewInfo_GL_NV_vertex_buffer_unified_memory();\r\n#endif /* GL_NV_vertex_buffer_unified_memory */\r\n#ifdef GL_NV_vertex_program\r\n  _glewInfo_GL_NV_vertex_program();\r\n#endif /* GL_NV_vertex_program */\r\n#ifdef GL_NV_vertex_program1_1\r\n  _glewInfo_GL_NV_vertex_program1_1();\r\n#endif /* GL_NV_vertex_program1_1 */\r\n#ifdef GL_NV_vertex_program2\r\n  _glewInfo_GL_NV_vertex_program2();\r\n#endif /* GL_NV_vertex_program2 */\r\n#ifdef GL_NV_vertex_program2_option\r\n  _glewInfo_GL_NV_vertex_program2_option();\r\n#endif /* GL_NV_vertex_program2_option */\r\n#ifdef GL_NV_vertex_program3\r\n  _glewInfo_GL_NV_vertex_program3();\r\n#endif /* GL_NV_vertex_program3 */\r\n#ifdef GL_NV_vertex_program4\r\n  _glewInfo_GL_NV_vertex_program4();\r\n#endif /* GL_NV_vertex_program4 */\r\n#ifdef GL_NV_video_capture\r\n  _glewInfo_GL_NV_video_capture();\r\n#endif /* GL_NV_video_capture */\r\n#ifdef GL_NV_viewport_array\r\n  _glewInfo_GL_NV_viewport_array();\r\n#endif /* GL_NV_viewport_array */\r\n#ifdef GL_NV_viewport_array2\r\n  _glewInfo_GL_NV_viewport_array2();\r\n#endif /* GL_NV_viewport_array2 */\r\n#ifdef GL_NV_viewport_swizzle\r\n  _glewInfo_GL_NV_viewport_swizzle();\r\n#endif /* GL_NV_viewport_swizzle */\r\n#ifdef GL_OES_byte_coordinates\r\n  _glewInfo_GL_OES_byte_coordinates();\r\n#endif /* GL_OES_byte_coordinates */\r\n#ifdef GL_OML_interlace\r\n  _glewInfo_GL_OML_interlace();\r\n#endif /* GL_OML_interlace */\r\n#ifdef GL_OML_resample\r\n  _glewInfo_GL_OML_resample();\r\n#endif /* GL_OML_resample */\r\n#ifdef GL_OML_subsample\r\n  _glewInfo_GL_OML_subsample();\r\n#endif /* GL_OML_subsample */\r\n#ifdef GL_OVR_multiview\r\n  _glewInfo_GL_OVR_multiview();\r\n#endif /* GL_OVR_multiview */\r\n#ifdef GL_OVR_multiview2\r\n  _glewInfo_GL_OVR_multiview2();\r\n#endif /* GL_OVR_multiview2 */\r\n#ifdef GL_OVR_multiview_multisampled_render_to_texture\r\n  _glewInfo_GL_OVR_multiview_multisampled_render_to_texture();\r\n#endif /* GL_OVR_multiview_multisampled_render_to_texture */\r\n#ifdef GL_PGI_misc_hints\r\n  _glewInfo_GL_PGI_misc_hints();\r\n#endif /* GL_PGI_misc_hints */\r\n#ifdef GL_PGI_vertex_hints\r\n  _glewInfo_GL_PGI_vertex_hints();\r\n#endif /* GL_PGI_vertex_hints */\r\n#ifdef GL_QCOM_alpha_test\r\n  _glewInfo_GL_QCOM_alpha_test();\r\n#endif /* GL_QCOM_alpha_test */\r\n#ifdef GL_QCOM_binning_control\r\n  _glewInfo_GL_QCOM_binning_control();\r\n#endif /* GL_QCOM_binning_control */\r\n#ifdef GL_QCOM_driver_control\r\n  _glewInfo_GL_QCOM_driver_control();\r\n#endif /* GL_QCOM_driver_control */\r\n#ifdef GL_QCOM_extended_get\r\n  _glewInfo_GL_QCOM_extended_get();\r\n#endif /* GL_QCOM_extended_get */\r\n#ifdef GL_QCOM_extended_get2\r\n  _glewInfo_GL_QCOM_extended_get2();\r\n#endif /* GL_QCOM_extended_get2 */\r\n#ifdef GL_QCOM_framebuffer_foveated\r\n  _glewInfo_GL_QCOM_framebuffer_foveated();\r\n#endif /* GL_QCOM_framebuffer_foveated */\r\n#ifdef GL_QCOM_perfmon_global_mode\r\n  _glewInfo_GL_QCOM_perfmon_global_mode();\r\n#endif /* GL_QCOM_perfmon_global_mode */\r\n#ifdef GL_QCOM_shader_framebuffer_fetch_noncoherent\r\n  _glewInfo_GL_QCOM_shader_framebuffer_fetch_noncoherent();\r\n#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */\r\n#ifdef GL_QCOM_tiled_rendering\r\n  _glewInfo_GL_QCOM_tiled_rendering();\r\n#endif /* GL_QCOM_tiled_rendering */\r\n#ifdef GL_QCOM_writeonly_rendering\r\n  _glewInfo_GL_QCOM_writeonly_rendering();\r\n#endif /* GL_QCOM_writeonly_rendering */\r\n#ifdef GL_REGAL_ES1_0_compatibility\r\n  _glewInfo_GL_REGAL_ES1_0_compatibility();\r\n#endif /* GL_REGAL_ES1_0_compatibility */\r\n#ifdef GL_REGAL_ES1_1_compatibility\r\n  _glewInfo_GL_REGAL_ES1_1_compatibility();\r\n#endif /* GL_REGAL_ES1_1_compatibility */\r\n#ifdef GL_REGAL_enable\r\n  _glewInfo_GL_REGAL_enable();\r\n#endif /* GL_REGAL_enable */\r\n#ifdef GL_REGAL_error_string\r\n  _glewInfo_GL_REGAL_error_string();\r\n#endif /* GL_REGAL_error_string */\r\n#ifdef GL_REGAL_extension_query\r\n  _glewInfo_GL_REGAL_extension_query();\r\n#endif /* GL_REGAL_extension_query */\r\n#ifdef GL_REGAL_log\r\n  _glewInfo_GL_REGAL_log();\r\n#endif /* GL_REGAL_log */\r\n#ifdef GL_REGAL_proc_address\r\n  _glewInfo_GL_REGAL_proc_address();\r\n#endif /* GL_REGAL_proc_address */\r\n#ifdef GL_REND_screen_coordinates\r\n  _glewInfo_GL_REND_screen_coordinates();\r\n#endif /* GL_REND_screen_coordinates */\r\n#ifdef GL_S3_s3tc\r\n  _glewInfo_GL_S3_s3tc();\r\n#endif /* GL_S3_s3tc */\r\n#ifdef GL_SGIS_clip_band_hint\r\n  _glewInfo_GL_SGIS_clip_band_hint();\r\n#endif /* GL_SGIS_clip_band_hint */\r\n#ifdef GL_SGIS_color_range\r\n  _glewInfo_GL_SGIS_color_range();\r\n#endif /* GL_SGIS_color_range */\r\n#ifdef GL_SGIS_detail_texture\r\n  _glewInfo_GL_SGIS_detail_texture();\r\n#endif /* GL_SGIS_detail_texture */\r\n#ifdef GL_SGIS_fog_function\r\n  _glewInfo_GL_SGIS_fog_function();\r\n#endif /* GL_SGIS_fog_function */\r\n#ifdef GL_SGIS_generate_mipmap\r\n  _glewInfo_GL_SGIS_generate_mipmap();\r\n#endif /* GL_SGIS_generate_mipmap */\r\n#ifdef GL_SGIS_line_texgen\r\n  _glewInfo_GL_SGIS_line_texgen();\r\n#endif /* GL_SGIS_line_texgen */\r\n#ifdef GL_SGIS_multisample\r\n  _glewInfo_GL_SGIS_multisample();\r\n#endif /* GL_SGIS_multisample */\r\n#ifdef GL_SGIS_multitexture\r\n  _glewInfo_GL_SGIS_multitexture();\r\n#endif /* GL_SGIS_multitexture */\r\n#ifdef GL_SGIS_pixel_texture\r\n  _glewInfo_GL_SGIS_pixel_texture();\r\n#endif /* GL_SGIS_pixel_texture */\r\n#ifdef GL_SGIS_point_line_texgen\r\n  _glewInfo_GL_SGIS_point_line_texgen();\r\n#endif /* GL_SGIS_point_line_texgen */\r\n#ifdef GL_SGIS_shared_multisample\r\n  _glewInfo_GL_SGIS_shared_multisample();\r\n#endif /* GL_SGIS_shared_multisample */\r\n#ifdef GL_SGIS_sharpen_texture\r\n  _glewInfo_GL_SGIS_sharpen_texture();\r\n#endif /* GL_SGIS_sharpen_texture */\r\n#ifdef GL_SGIS_texture4D\r\n  _glewInfo_GL_SGIS_texture4D();\r\n#endif /* GL_SGIS_texture4D */\r\n#ifdef GL_SGIS_texture_border_clamp\r\n  _glewInfo_GL_SGIS_texture_border_clamp();\r\n#endif /* GL_SGIS_texture_border_clamp */\r\n#ifdef GL_SGIS_texture_edge_clamp\r\n  _glewInfo_GL_SGIS_texture_edge_clamp();\r\n#endif /* GL_SGIS_texture_edge_clamp */\r\n#ifdef GL_SGIS_texture_filter4\r\n  _glewInfo_GL_SGIS_texture_filter4();\r\n#endif /* GL_SGIS_texture_filter4 */\r\n#ifdef GL_SGIS_texture_lod\r\n  _glewInfo_GL_SGIS_texture_lod();\r\n#endif /* GL_SGIS_texture_lod */\r\n#ifdef GL_SGIS_texture_select\r\n  _glewInfo_GL_SGIS_texture_select();\r\n#endif /* GL_SGIS_texture_select */\r\n#ifdef GL_SGIX_async\r\n  _glewInfo_GL_SGIX_async();\r\n#endif /* GL_SGIX_async */\r\n#ifdef GL_SGIX_async_histogram\r\n  _glewInfo_GL_SGIX_async_histogram();\r\n#endif /* GL_SGIX_async_histogram */\r\n#ifdef GL_SGIX_async_pixel\r\n  _glewInfo_GL_SGIX_async_pixel();\r\n#endif /* GL_SGIX_async_pixel */\r\n#ifdef GL_SGIX_bali_g_instruments\r\n  _glewInfo_GL_SGIX_bali_g_instruments();\r\n#endif /* GL_SGIX_bali_g_instruments */\r\n#ifdef GL_SGIX_bali_r_instruments\r\n  _glewInfo_GL_SGIX_bali_r_instruments();\r\n#endif /* GL_SGIX_bali_r_instruments */\r\n#ifdef GL_SGIX_bali_timer_instruments\r\n  _glewInfo_GL_SGIX_bali_timer_instruments();\r\n#endif /* GL_SGIX_bali_timer_instruments */\r\n#ifdef GL_SGIX_blend_alpha_minmax\r\n  _glewInfo_GL_SGIX_blend_alpha_minmax();\r\n#endif /* GL_SGIX_blend_alpha_minmax */\r\n#ifdef GL_SGIX_blend_cadd\r\n  _glewInfo_GL_SGIX_blend_cadd();\r\n#endif /* GL_SGIX_blend_cadd */\r\n#ifdef GL_SGIX_blend_cmultiply\r\n  _glewInfo_GL_SGIX_blend_cmultiply();\r\n#endif /* GL_SGIX_blend_cmultiply */\r\n#ifdef GL_SGIX_calligraphic_fragment\r\n  _glewInfo_GL_SGIX_calligraphic_fragment();\r\n#endif /* GL_SGIX_calligraphic_fragment */\r\n#ifdef GL_SGIX_clipmap\r\n  _glewInfo_GL_SGIX_clipmap();\r\n#endif /* GL_SGIX_clipmap */\r\n#ifdef GL_SGIX_color_matrix_accuracy\r\n  _glewInfo_GL_SGIX_color_matrix_accuracy();\r\n#endif /* GL_SGIX_color_matrix_accuracy */\r\n#ifdef GL_SGIX_color_table_index_mode\r\n  _glewInfo_GL_SGIX_color_table_index_mode();\r\n#endif /* GL_SGIX_color_table_index_mode */\r\n#ifdef GL_SGIX_complex_polar\r\n  _glewInfo_GL_SGIX_complex_polar();\r\n#endif /* GL_SGIX_complex_polar */\r\n#ifdef GL_SGIX_convolution_accuracy\r\n  _glewInfo_GL_SGIX_convolution_accuracy();\r\n#endif /* GL_SGIX_convolution_accuracy */\r\n#ifdef GL_SGIX_cube_map\r\n  _glewInfo_GL_SGIX_cube_map();\r\n#endif /* GL_SGIX_cube_map */\r\n#ifdef GL_SGIX_cylinder_texgen\r\n  _glewInfo_GL_SGIX_cylinder_texgen();\r\n#endif /* GL_SGIX_cylinder_texgen */\r\n#ifdef GL_SGIX_datapipe\r\n  _glewInfo_GL_SGIX_datapipe();\r\n#endif /* GL_SGIX_datapipe */\r\n#ifdef GL_SGIX_decimation\r\n  _glewInfo_GL_SGIX_decimation();\r\n#endif /* GL_SGIX_decimation */\r\n#ifdef GL_SGIX_depth_pass_instrument\r\n  _glewInfo_GL_SGIX_depth_pass_instrument();\r\n#endif /* GL_SGIX_depth_pass_instrument */\r\n#ifdef GL_SGIX_depth_texture\r\n  _glewInfo_GL_SGIX_depth_texture();\r\n#endif /* GL_SGIX_depth_texture */\r\n#ifdef GL_SGIX_dvc\r\n  _glewInfo_GL_SGIX_dvc();\r\n#endif /* GL_SGIX_dvc */\r\n#ifdef GL_SGIX_flush_raster\r\n  _glewInfo_GL_SGIX_flush_raster();\r\n#endif /* GL_SGIX_flush_raster */\r\n#ifdef GL_SGIX_fog_blend\r\n  _glewInfo_GL_SGIX_fog_blend();\r\n#endif /* GL_SGIX_fog_blend */\r\n#ifdef GL_SGIX_fog_factor_to_alpha\r\n  _glewInfo_GL_SGIX_fog_factor_to_alpha();\r\n#endif /* GL_SGIX_fog_factor_to_alpha */\r\n#ifdef GL_SGIX_fog_layers\r\n  _glewInfo_GL_SGIX_fog_layers();\r\n#endif /* GL_SGIX_fog_layers */\r\n#ifdef GL_SGIX_fog_offset\r\n  _glewInfo_GL_SGIX_fog_offset();\r\n#endif /* GL_SGIX_fog_offset */\r\n#ifdef GL_SGIX_fog_patchy\r\n  _glewInfo_GL_SGIX_fog_patchy();\r\n#endif /* GL_SGIX_fog_patchy */\r\n#ifdef GL_SGIX_fog_scale\r\n  _glewInfo_GL_SGIX_fog_scale();\r\n#endif /* GL_SGIX_fog_scale */\r\n#ifdef GL_SGIX_fog_texture\r\n  _glewInfo_GL_SGIX_fog_texture();\r\n#endif /* GL_SGIX_fog_texture */\r\n#ifdef GL_SGIX_fragment_lighting_space\r\n  _glewInfo_GL_SGIX_fragment_lighting_space();\r\n#endif /* GL_SGIX_fragment_lighting_space */\r\n#ifdef GL_SGIX_fragment_specular_lighting\r\n  _glewInfo_GL_SGIX_fragment_specular_lighting();\r\n#endif /* GL_SGIX_fragment_specular_lighting */\r\n#ifdef GL_SGIX_fragments_instrument\r\n  _glewInfo_GL_SGIX_fragments_instrument();\r\n#endif /* GL_SGIX_fragments_instrument */\r\n#ifdef GL_SGIX_framezoom\r\n  _glewInfo_GL_SGIX_framezoom();\r\n#endif /* GL_SGIX_framezoom */\r\n#ifdef GL_SGIX_icc_texture\r\n  _glewInfo_GL_SGIX_icc_texture();\r\n#endif /* GL_SGIX_icc_texture */\r\n#ifdef GL_SGIX_igloo_interface\r\n  _glewInfo_GL_SGIX_igloo_interface();\r\n#endif /* GL_SGIX_igloo_interface */\r\n#ifdef GL_SGIX_image_compression\r\n  _glewInfo_GL_SGIX_image_compression();\r\n#endif /* GL_SGIX_image_compression */\r\n#ifdef GL_SGIX_impact_pixel_texture\r\n  _glewInfo_GL_SGIX_impact_pixel_texture();\r\n#endif /* GL_SGIX_impact_pixel_texture */\r\n#ifdef GL_SGIX_instrument_error\r\n  _glewInfo_GL_SGIX_instrument_error();\r\n#endif /* GL_SGIX_instrument_error */\r\n#ifdef GL_SGIX_interlace\r\n  _glewInfo_GL_SGIX_interlace();\r\n#endif /* GL_SGIX_interlace */\r\n#ifdef GL_SGIX_ir_instrument1\r\n  _glewInfo_GL_SGIX_ir_instrument1();\r\n#endif /* GL_SGIX_ir_instrument1 */\r\n#ifdef GL_SGIX_line_quality_hint\r\n  _glewInfo_GL_SGIX_line_quality_hint();\r\n#endif /* GL_SGIX_line_quality_hint */\r\n#ifdef GL_SGIX_list_priority\r\n  _glewInfo_GL_SGIX_list_priority();\r\n#endif /* GL_SGIX_list_priority */\r\n#ifdef GL_SGIX_mpeg1\r\n  _glewInfo_GL_SGIX_mpeg1();\r\n#endif /* GL_SGIX_mpeg1 */\r\n#ifdef GL_SGIX_mpeg2\r\n  _glewInfo_GL_SGIX_mpeg2();\r\n#endif /* GL_SGIX_mpeg2 */\r\n#ifdef GL_SGIX_nonlinear_lighting_pervertex\r\n  _glewInfo_GL_SGIX_nonlinear_lighting_pervertex();\r\n#endif /* GL_SGIX_nonlinear_lighting_pervertex */\r\n#ifdef GL_SGIX_nurbs_eval\r\n  _glewInfo_GL_SGIX_nurbs_eval();\r\n#endif /* GL_SGIX_nurbs_eval */\r\n#ifdef GL_SGIX_occlusion_instrument\r\n  _glewInfo_GL_SGIX_occlusion_instrument();\r\n#endif /* GL_SGIX_occlusion_instrument */\r\n#ifdef GL_SGIX_packed_6bytes\r\n  _glewInfo_GL_SGIX_packed_6bytes();\r\n#endif /* GL_SGIX_packed_6bytes */\r\n#ifdef GL_SGIX_pixel_texture\r\n  _glewInfo_GL_SGIX_pixel_texture();\r\n#endif /* GL_SGIX_pixel_texture */\r\n#ifdef GL_SGIX_pixel_texture_bits\r\n  _glewInfo_GL_SGIX_pixel_texture_bits();\r\n#endif /* GL_SGIX_pixel_texture_bits */\r\n#ifdef GL_SGIX_pixel_texture_lod\r\n  _glewInfo_GL_SGIX_pixel_texture_lod();\r\n#endif /* GL_SGIX_pixel_texture_lod */\r\n#ifdef GL_SGIX_pixel_tiles\r\n  _glewInfo_GL_SGIX_pixel_tiles();\r\n#endif /* GL_SGIX_pixel_tiles */\r\n#ifdef GL_SGIX_polynomial_ffd\r\n  _glewInfo_GL_SGIX_polynomial_ffd();\r\n#endif /* GL_SGIX_polynomial_ffd */\r\n#ifdef GL_SGIX_quad_mesh\r\n  _glewInfo_GL_SGIX_quad_mesh();\r\n#endif /* GL_SGIX_quad_mesh */\r\n#ifdef GL_SGIX_reference_plane\r\n  _glewInfo_GL_SGIX_reference_plane();\r\n#endif /* GL_SGIX_reference_plane */\r\n#ifdef GL_SGIX_resample\r\n  _glewInfo_GL_SGIX_resample();\r\n#endif /* GL_SGIX_resample */\r\n#ifdef GL_SGIX_scalebias_hint\r\n  _glewInfo_GL_SGIX_scalebias_hint();\r\n#endif /* GL_SGIX_scalebias_hint */\r\n#ifdef GL_SGIX_shadow\r\n  _glewInfo_GL_SGIX_shadow();\r\n#endif /* GL_SGIX_shadow */\r\n#ifdef GL_SGIX_shadow_ambient\r\n  _glewInfo_GL_SGIX_shadow_ambient();\r\n#endif /* GL_SGIX_shadow_ambient */\r\n#ifdef GL_SGIX_slim\r\n  _glewInfo_GL_SGIX_slim();\r\n#endif /* GL_SGIX_slim */\r\n#ifdef GL_SGIX_spotlight_cutoff\r\n  _glewInfo_GL_SGIX_spotlight_cutoff();\r\n#endif /* GL_SGIX_spotlight_cutoff */\r\n#ifdef GL_SGIX_sprite\r\n  _glewInfo_GL_SGIX_sprite();\r\n#endif /* GL_SGIX_sprite */\r\n#ifdef GL_SGIX_subdiv_patch\r\n  _glewInfo_GL_SGIX_subdiv_patch();\r\n#endif /* GL_SGIX_subdiv_patch */\r\n#ifdef GL_SGIX_subsample\r\n  _glewInfo_GL_SGIX_subsample();\r\n#endif /* GL_SGIX_subsample */\r\n#ifdef GL_SGIX_tag_sample_buffer\r\n  _glewInfo_GL_SGIX_tag_sample_buffer();\r\n#endif /* GL_SGIX_tag_sample_buffer */\r\n#ifdef GL_SGIX_texture_add_env\r\n  _glewInfo_GL_SGIX_texture_add_env();\r\n#endif /* GL_SGIX_texture_add_env */\r\n#ifdef GL_SGIX_texture_coordinate_clamp\r\n  _glewInfo_GL_SGIX_texture_coordinate_clamp();\r\n#endif /* GL_SGIX_texture_coordinate_clamp */\r\n#ifdef GL_SGIX_texture_lod_bias\r\n  _glewInfo_GL_SGIX_texture_lod_bias();\r\n#endif /* GL_SGIX_texture_lod_bias */\r\n#ifdef GL_SGIX_texture_mipmap_anisotropic\r\n  _glewInfo_GL_SGIX_texture_mipmap_anisotropic();\r\n#endif /* GL_SGIX_texture_mipmap_anisotropic */\r\n#ifdef GL_SGIX_texture_multi_buffer\r\n  _glewInfo_GL_SGIX_texture_multi_buffer();\r\n#endif /* GL_SGIX_texture_multi_buffer */\r\n#ifdef GL_SGIX_texture_phase\r\n  _glewInfo_GL_SGIX_texture_phase();\r\n#endif /* GL_SGIX_texture_phase */\r\n#ifdef GL_SGIX_texture_range\r\n  _glewInfo_GL_SGIX_texture_range();\r\n#endif /* GL_SGIX_texture_range */\r\n#ifdef GL_SGIX_texture_scale_bias\r\n  _glewInfo_GL_SGIX_texture_scale_bias();\r\n#endif /* GL_SGIX_texture_scale_bias */\r\n#ifdef GL_SGIX_texture_supersample\r\n  _glewInfo_GL_SGIX_texture_supersample();\r\n#endif /* GL_SGIX_texture_supersample */\r\n#ifdef GL_SGIX_vector_ops\r\n  _glewInfo_GL_SGIX_vector_ops();\r\n#endif /* GL_SGIX_vector_ops */\r\n#ifdef GL_SGIX_vertex_array_object\r\n  _glewInfo_GL_SGIX_vertex_array_object();\r\n#endif /* GL_SGIX_vertex_array_object */\r\n#ifdef GL_SGIX_vertex_preclip\r\n  _glewInfo_GL_SGIX_vertex_preclip();\r\n#endif /* GL_SGIX_vertex_preclip */\r\n#ifdef GL_SGIX_vertex_preclip_hint\r\n  _glewInfo_GL_SGIX_vertex_preclip_hint();\r\n#endif /* GL_SGIX_vertex_preclip_hint */\r\n#ifdef GL_SGIX_ycrcb\r\n  _glewInfo_GL_SGIX_ycrcb();\r\n#endif /* GL_SGIX_ycrcb */\r\n#ifdef GL_SGIX_ycrcb_subsample\r\n  _glewInfo_GL_SGIX_ycrcb_subsample();\r\n#endif /* GL_SGIX_ycrcb_subsample */\r\n#ifdef GL_SGIX_ycrcba\r\n  _glewInfo_GL_SGIX_ycrcba();\r\n#endif /* GL_SGIX_ycrcba */\r\n#ifdef GL_SGI_color_matrix\r\n  _glewInfo_GL_SGI_color_matrix();\r\n#endif /* GL_SGI_color_matrix */\r\n#ifdef GL_SGI_color_table\r\n  _glewInfo_GL_SGI_color_table();\r\n#endif /* GL_SGI_color_table */\r\n#ifdef GL_SGI_complex\r\n  _glewInfo_GL_SGI_complex();\r\n#endif /* GL_SGI_complex */\r\n#ifdef GL_SGI_complex_type\r\n  _glewInfo_GL_SGI_complex_type();\r\n#endif /* GL_SGI_complex_type */\r\n#ifdef GL_SGI_fft\r\n  _glewInfo_GL_SGI_fft();\r\n#endif /* GL_SGI_fft */\r\n#ifdef GL_SGI_texture_color_table\r\n  _glewInfo_GL_SGI_texture_color_table();\r\n#endif /* GL_SGI_texture_color_table */\r\n#ifdef GL_SUNX_constant_data\r\n  _glewInfo_GL_SUNX_constant_data();\r\n#endif /* GL_SUNX_constant_data */\r\n#ifdef GL_SUN_convolution_border_modes\r\n  _glewInfo_GL_SUN_convolution_border_modes();\r\n#endif /* GL_SUN_convolution_border_modes */\r\n#ifdef GL_SUN_global_alpha\r\n  _glewInfo_GL_SUN_global_alpha();\r\n#endif /* GL_SUN_global_alpha */\r\n#ifdef GL_SUN_mesh_array\r\n  _glewInfo_GL_SUN_mesh_array();\r\n#endif /* GL_SUN_mesh_array */\r\n#ifdef GL_SUN_read_video_pixels\r\n  _glewInfo_GL_SUN_read_video_pixels();\r\n#endif /* GL_SUN_read_video_pixels */\r\n#ifdef GL_SUN_slice_accum\r\n  _glewInfo_GL_SUN_slice_accum();\r\n#endif /* GL_SUN_slice_accum */\r\n#ifdef GL_SUN_triangle_list\r\n  _glewInfo_GL_SUN_triangle_list();\r\n#endif /* GL_SUN_triangle_list */\r\n#ifdef GL_SUN_vertex\r\n  _glewInfo_GL_SUN_vertex();\r\n#endif /* GL_SUN_vertex */\r\n#ifdef GL_WIN_phong_shading\r\n  _glewInfo_GL_WIN_phong_shading();\r\n#endif /* GL_WIN_phong_shading */\r\n#ifdef GL_WIN_scene_markerXXX\r\n  _glewInfo_GL_WIN_scene_markerXXX();\r\n#endif /* GL_WIN_scene_markerXXX */\r\n#ifdef GL_WIN_specular_fog\r\n  _glewInfo_GL_WIN_specular_fog();\r\n#endif /* GL_WIN_specular_fog */\r\n#ifdef GL_WIN_swap_hint\r\n  _glewInfo_GL_WIN_swap_hint();\r\n#endif /* GL_WIN_swap_hint */\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)\r\n\r\nstatic void wglewInfo ()\r\n{\r\n#ifdef WGL_3DFX_multisample\r\n  _glewInfo_WGL_3DFX_multisample();\r\n#endif /* WGL_3DFX_multisample */\r\n#ifdef WGL_3DL_stereo_control\r\n  _glewInfo_WGL_3DL_stereo_control();\r\n#endif /* WGL_3DL_stereo_control */\r\n#ifdef WGL_AMD_gpu_association\r\n  _glewInfo_WGL_AMD_gpu_association();\r\n#endif /* WGL_AMD_gpu_association */\r\n#ifdef WGL_ARB_buffer_region\r\n  _glewInfo_WGL_ARB_buffer_region();\r\n#endif /* WGL_ARB_buffer_region */\r\n#ifdef WGL_ARB_context_flush_control\r\n  _glewInfo_WGL_ARB_context_flush_control();\r\n#endif /* WGL_ARB_context_flush_control */\r\n#ifdef WGL_ARB_create_context\r\n  _glewInfo_WGL_ARB_create_context();\r\n#endif /* WGL_ARB_create_context */\r\n#ifdef WGL_ARB_create_context_no_error\r\n  _glewInfo_WGL_ARB_create_context_no_error();\r\n#endif /* WGL_ARB_create_context_no_error */\r\n#ifdef WGL_ARB_create_context_profile\r\n  _glewInfo_WGL_ARB_create_context_profile();\r\n#endif /* WGL_ARB_create_context_profile */\r\n#ifdef WGL_ARB_create_context_robustness\r\n  _glewInfo_WGL_ARB_create_context_robustness();\r\n#endif /* WGL_ARB_create_context_robustness */\r\n#ifdef WGL_ARB_extensions_string\r\n  _glewInfo_WGL_ARB_extensions_string();\r\n#endif /* WGL_ARB_extensions_string */\r\n#ifdef WGL_ARB_framebuffer_sRGB\r\n  _glewInfo_WGL_ARB_framebuffer_sRGB();\r\n#endif /* WGL_ARB_framebuffer_sRGB */\r\n#ifdef WGL_ARB_make_current_read\r\n  _glewInfo_WGL_ARB_make_current_read();\r\n#endif /* WGL_ARB_make_current_read */\r\n#ifdef WGL_ARB_multisample\r\n  _glewInfo_WGL_ARB_multisample();\r\n#endif /* WGL_ARB_multisample */\r\n#ifdef WGL_ARB_pbuffer\r\n  _glewInfo_WGL_ARB_pbuffer();\r\n#endif /* WGL_ARB_pbuffer */\r\n#ifdef WGL_ARB_pixel_format\r\n  _glewInfo_WGL_ARB_pixel_format();\r\n#endif /* WGL_ARB_pixel_format */\r\n#ifdef WGL_ARB_pixel_format_float\r\n  _glewInfo_WGL_ARB_pixel_format_float();\r\n#endif /* WGL_ARB_pixel_format_float */\r\n#ifdef WGL_ARB_render_texture\r\n  _glewInfo_WGL_ARB_render_texture();\r\n#endif /* WGL_ARB_render_texture */\r\n#ifdef WGL_ARB_robustness_application_isolation\r\n  _glewInfo_WGL_ARB_robustness_application_isolation();\r\n#endif /* WGL_ARB_robustness_application_isolation */\r\n#ifdef WGL_ARB_robustness_share_group_isolation\r\n  _glewInfo_WGL_ARB_robustness_share_group_isolation();\r\n#endif /* WGL_ARB_robustness_share_group_isolation */\r\n#ifdef WGL_ATI_pixel_format_float\r\n  _glewInfo_WGL_ATI_pixel_format_float();\r\n#endif /* WGL_ATI_pixel_format_float */\r\n#ifdef WGL_ATI_render_texture_rectangle\r\n  _glewInfo_WGL_ATI_render_texture_rectangle();\r\n#endif /* WGL_ATI_render_texture_rectangle */\r\n#ifdef WGL_EXT_colorspace\r\n  _glewInfo_WGL_EXT_colorspace();\r\n#endif /* WGL_EXT_colorspace */\r\n#ifdef WGL_EXT_create_context_es2_profile\r\n  _glewInfo_WGL_EXT_create_context_es2_profile();\r\n#endif /* WGL_EXT_create_context_es2_profile */\r\n#ifdef WGL_EXT_create_context_es_profile\r\n  _glewInfo_WGL_EXT_create_context_es_profile();\r\n#endif /* WGL_EXT_create_context_es_profile */\r\n#ifdef WGL_EXT_depth_float\r\n  _glewInfo_WGL_EXT_depth_float();\r\n#endif /* WGL_EXT_depth_float */\r\n#ifdef WGL_EXT_display_color_table\r\n  _glewInfo_WGL_EXT_display_color_table();\r\n#endif /* WGL_EXT_display_color_table */\r\n#ifdef WGL_EXT_extensions_string\r\n  _glewInfo_WGL_EXT_extensions_string();\r\n#endif /* WGL_EXT_extensions_string */\r\n#ifdef WGL_EXT_framebuffer_sRGB\r\n  _glewInfo_WGL_EXT_framebuffer_sRGB();\r\n#endif /* WGL_EXT_framebuffer_sRGB */\r\n#ifdef WGL_EXT_make_current_read\r\n  _glewInfo_WGL_EXT_make_current_read();\r\n#endif /* WGL_EXT_make_current_read */\r\n#ifdef WGL_EXT_multisample\r\n  _glewInfo_WGL_EXT_multisample();\r\n#endif /* WGL_EXT_multisample */\r\n#ifdef WGL_EXT_pbuffer\r\n  _glewInfo_WGL_EXT_pbuffer();\r\n#endif /* WGL_EXT_pbuffer */\r\n#ifdef WGL_EXT_pixel_format\r\n  _glewInfo_WGL_EXT_pixel_format();\r\n#endif /* WGL_EXT_pixel_format */\r\n#ifdef WGL_EXT_pixel_format_packed_float\r\n  _glewInfo_WGL_EXT_pixel_format_packed_float();\r\n#endif /* WGL_EXT_pixel_format_packed_float */\r\n#ifdef WGL_EXT_swap_control\r\n  _glewInfo_WGL_EXT_swap_control();\r\n#endif /* WGL_EXT_swap_control */\r\n#ifdef WGL_EXT_swap_control_tear\r\n  _glewInfo_WGL_EXT_swap_control_tear();\r\n#endif /* WGL_EXT_swap_control_tear */\r\n#ifdef WGL_I3D_digital_video_control\r\n  _glewInfo_WGL_I3D_digital_video_control();\r\n#endif /* WGL_I3D_digital_video_control */\r\n#ifdef WGL_I3D_gamma\r\n  _glewInfo_WGL_I3D_gamma();\r\n#endif /* WGL_I3D_gamma */\r\n#ifdef WGL_I3D_genlock\r\n  _glewInfo_WGL_I3D_genlock();\r\n#endif /* WGL_I3D_genlock */\r\n#ifdef WGL_I3D_image_buffer\r\n  _glewInfo_WGL_I3D_image_buffer();\r\n#endif /* WGL_I3D_image_buffer */\r\n#ifdef WGL_I3D_swap_frame_lock\r\n  _glewInfo_WGL_I3D_swap_frame_lock();\r\n#endif /* WGL_I3D_swap_frame_lock */\r\n#ifdef WGL_I3D_swap_frame_usage\r\n  _glewInfo_WGL_I3D_swap_frame_usage();\r\n#endif /* WGL_I3D_swap_frame_usage */\r\n#ifdef WGL_NV_DX_interop\r\n  _glewInfo_WGL_NV_DX_interop();\r\n#endif /* WGL_NV_DX_interop */\r\n#ifdef WGL_NV_DX_interop2\r\n  _glewInfo_WGL_NV_DX_interop2();\r\n#endif /* WGL_NV_DX_interop2 */\r\n#ifdef WGL_NV_copy_image\r\n  _glewInfo_WGL_NV_copy_image();\r\n#endif /* WGL_NV_copy_image */\r\n#ifdef WGL_NV_delay_before_swap\r\n  _glewInfo_WGL_NV_delay_before_swap();\r\n#endif /* WGL_NV_delay_before_swap */\r\n#ifdef WGL_NV_float_buffer\r\n  _glewInfo_WGL_NV_float_buffer();\r\n#endif /* WGL_NV_float_buffer */\r\n#ifdef WGL_NV_gpu_affinity\r\n  _glewInfo_WGL_NV_gpu_affinity();\r\n#endif /* WGL_NV_gpu_affinity */\r\n#ifdef WGL_NV_multisample_coverage\r\n  _glewInfo_WGL_NV_multisample_coverage();\r\n#endif /* WGL_NV_multisample_coverage */\r\n#ifdef WGL_NV_present_video\r\n  _glewInfo_WGL_NV_present_video();\r\n#endif /* WGL_NV_present_video */\r\n#ifdef WGL_NV_render_depth_texture\r\n  _glewInfo_WGL_NV_render_depth_texture();\r\n#endif /* WGL_NV_render_depth_texture */\r\n#ifdef WGL_NV_render_texture_rectangle\r\n  _glewInfo_WGL_NV_render_texture_rectangle();\r\n#endif /* WGL_NV_render_texture_rectangle */\r\n#ifdef WGL_NV_swap_group\r\n  _glewInfo_WGL_NV_swap_group();\r\n#endif /* WGL_NV_swap_group */\r\n#ifdef WGL_NV_vertex_array_range\r\n  _glewInfo_WGL_NV_vertex_array_range();\r\n#endif /* WGL_NV_vertex_array_range */\r\n#ifdef WGL_NV_video_capture\r\n  _glewInfo_WGL_NV_video_capture();\r\n#endif /* WGL_NV_video_capture */\r\n#ifdef WGL_NV_video_output\r\n  _glewInfo_WGL_NV_video_output();\r\n#endif /* WGL_NV_video_output */\r\n#ifdef WGL_OML_sync_control\r\n  _glewInfo_WGL_OML_sync_control();\r\n#endif /* WGL_OML_sync_control */\r\n}\r\n\r\n#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */\r\n\r\nstatic void glxewInfo ()\r\n{\r\n#ifdef GLX_VERSION_1_2\r\n  _glewInfo_GLX_VERSION_1_2();\r\n#endif /* GLX_VERSION_1_2 */\r\n#ifdef GLX_VERSION_1_3\r\n  _glewInfo_GLX_VERSION_1_3();\r\n#endif /* GLX_VERSION_1_3 */\r\n#ifdef GLX_VERSION_1_4\r\n  _glewInfo_GLX_VERSION_1_4();\r\n#endif /* GLX_VERSION_1_4 */\r\n#ifdef GLX_3DFX_multisample\r\n  _glewInfo_GLX_3DFX_multisample();\r\n#endif /* GLX_3DFX_multisample */\r\n#ifdef GLX_AMD_gpu_association\r\n  _glewInfo_GLX_AMD_gpu_association();\r\n#endif /* GLX_AMD_gpu_association */\r\n#ifdef GLX_ARB_context_flush_control\r\n  _glewInfo_GLX_ARB_context_flush_control();\r\n#endif /* GLX_ARB_context_flush_control */\r\n#ifdef GLX_ARB_create_context\r\n  _glewInfo_GLX_ARB_create_context();\r\n#endif /* GLX_ARB_create_context */\r\n#ifdef GLX_ARB_create_context_no_error\r\n  _glewInfo_GLX_ARB_create_context_no_error();\r\n#endif /* GLX_ARB_create_context_no_error */\r\n#ifdef GLX_ARB_create_context_profile\r\n  _glewInfo_GLX_ARB_create_context_profile();\r\n#endif /* GLX_ARB_create_context_profile */\r\n#ifdef GLX_ARB_create_context_robustness\r\n  _glewInfo_GLX_ARB_create_context_robustness();\r\n#endif /* GLX_ARB_create_context_robustness */\r\n#ifdef GLX_ARB_fbconfig_float\r\n  _glewInfo_GLX_ARB_fbconfig_float();\r\n#endif /* GLX_ARB_fbconfig_float */\r\n#ifdef GLX_ARB_framebuffer_sRGB\r\n  _glewInfo_GLX_ARB_framebuffer_sRGB();\r\n#endif /* GLX_ARB_framebuffer_sRGB */\r\n#ifdef GLX_ARB_get_proc_address\r\n  _glewInfo_GLX_ARB_get_proc_address();\r\n#endif /* GLX_ARB_get_proc_address */\r\n#ifdef GLX_ARB_multisample\r\n  _glewInfo_GLX_ARB_multisample();\r\n#endif /* GLX_ARB_multisample */\r\n#ifdef GLX_ARB_robustness_application_isolation\r\n  _glewInfo_GLX_ARB_robustness_application_isolation();\r\n#endif /* GLX_ARB_robustness_application_isolation */\r\n#ifdef GLX_ARB_robustness_share_group_isolation\r\n  _glewInfo_GLX_ARB_robustness_share_group_isolation();\r\n#endif /* GLX_ARB_robustness_share_group_isolation */\r\n#ifdef GLX_ARB_vertex_buffer_object\r\n  _glewInfo_GLX_ARB_vertex_buffer_object();\r\n#endif /* GLX_ARB_vertex_buffer_object */\r\n#ifdef GLX_ATI_pixel_format_float\r\n  _glewInfo_GLX_ATI_pixel_format_float();\r\n#endif /* GLX_ATI_pixel_format_float */\r\n#ifdef GLX_ATI_render_texture\r\n  _glewInfo_GLX_ATI_render_texture();\r\n#endif /* GLX_ATI_render_texture */\r\n#ifdef GLX_EXT_buffer_age\r\n  _glewInfo_GLX_EXT_buffer_age();\r\n#endif /* GLX_EXT_buffer_age */\r\n#ifdef GLX_EXT_create_context_es2_profile\r\n  _glewInfo_GLX_EXT_create_context_es2_profile();\r\n#endif /* GLX_EXT_create_context_es2_profile */\r\n#ifdef GLX_EXT_create_context_es_profile\r\n  _glewInfo_GLX_EXT_create_context_es_profile();\r\n#endif /* GLX_EXT_create_context_es_profile */\r\n#ifdef GLX_EXT_fbconfig_packed_float\r\n  _glewInfo_GLX_EXT_fbconfig_packed_float();\r\n#endif /* GLX_EXT_fbconfig_packed_float */\r\n#ifdef GLX_EXT_framebuffer_sRGB\r\n  _glewInfo_GLX_EXT_framebuffer_sRGB();\r\n#endif /* GLX_EXT_framebuffer_sRGB */\r\n#ifdef GLX_EXT_import_context\r\n  _glewInfo_GLX_EXT_import_context();\r\n#endif /* GLX_EXT_import_context */\r\n#ifdef GLX_EXT_libglvnd\r\n  _glewInfo_GLX_EXT_libglvnd();\r\n#endif /* GLX_EXT_libglvnd */\r\n#ifdef GLX_EXT_scene_marker\r\n  _glewInfo_GLX_EXT_scene_marker();\r\n#endif /* GLX_EXT_scene_marker */\r\n#ifdef GLX_EXT_stereo_tree\r\n  _glewInfo_GLX_EXT_stereo_tree();\r\n#endif /* GLX_EXT_stereo_tree */\r\n#ifdef GLX_EXT_swap_control\r\n  _glewInfo_GLX_EXT_swap_control();\r\n#endif /* GLX_EXT_swap_control */\r\n#ifdef GLX_EXT_swap_control_tear\r\n  _glewInfo_GLX_EXT_swap_control_tear();\r\n#endif /* GLX_EXT_swap_control_tear */\r\n#ifdef GLX_EXT_texture_from_pixmap\r\n  _glewInfo_GLX_EXT_texture_from_pixmap();\r\n#endif /* GLX_EXT_texture_from_pixmap */\r\n#ifdef GLX_EXT_visual_info\r\n  _glewInfo_GLX_EXT_visual_info();\r\n#endif /* GLX_EXT_visual_info */\r\n#ifdef GLX_EXT_visual_rating\r\n  _glewInfo_GLX_EXT_visual_rating();\r\n#endif /* GLX_EXT_visual_rating */\r\n#ifdef GLX_INTEL_swap_event\r\n  _glewInfo_GLX_INTEL_swap_event();\r\n#endif /* GLX_INTEL_swap_event */\r\n#ifdef GLX_MESA_agp_offset\r\n  _glewInfo_GLX_MESA_agp_offset();\r\n#endif /* GLX_MESA_agp_offset */\r\n#ifdef GLX_MESA_copy_sub_buffer\r\n  _glewInfo_GLX_MESA_copy_sub_buffer();\r\n#endif /* GLX_MESA_copy_sub_buffer */\r\n#ifdef GLX_MESA_pixmap_colormap\r\n  _glewInfo_GLX_MESA_pixmap_colormap();\r\n#endif /* GLX_MESA_pixmap_colormap */\r\n#ifdef GLX_MESA_query_renderer\r\n  _glewInfo_GLX_MESA_query_renderer();\r\n#endif /* GLX_MESA_query_renderer */\r\n#ifdef GLX_MESA_release_buffers\r\n  _glewInfo_GLX_MESA_release_buffers();\r\n#endif /* GLX_MESA_release_buffers */\r\n#ifdef GLX_MESA_set_3dfx_mode\r\n  _glewInfo_GLX_MESA_set_3dfx_mode();\r\n#endif /* GLX_MESA_set_3dfx_mode */\r\n#ifdef GLX_MESA_swap_control\r\n  _glewInfo_GLX_MESA_swap_control();\r\n#endif /* GLX_MESA_swap_control */\r\n#ifdef GLX_NV_copy_buffer\r\n  _glewInfo_GLX_NV_copy_buffer();\r\n#endif /* GLX_NV_copy_buffer */\r\n#ifdef GLX_NV_copy_image\r\n  _glewInfo_GLX_NV_copy_image();\r\n#endif /* GLX_NV_copy_image */\r\n#ifdef GLX_NV_delay_before_swap\r\n  _glewInfo_GLX_NV_delay_before_swap();\r\n#endif /* GLX_NV_delay_before_swap */\r\n#ifdef GLX_NV_float_buffer\r\n  _glewInfo_GLX_NV_float_buffer();\r\n#endif /* GLX_NV_float_buffer */\r\n#ifdef GLX_NV_multisample_coverage\r\n  _glewInfo_GLX_NV_multisample_coverage();\r\n#endif /* GLX_NV_multisample_coverage */\r\n#ifdef GLX_NV_present_video\r\n  _glewInfo_GLX_NV_present_video();\r\n#endif /* GLX_NV_present_video */\r\n#ifdef GLX_NV_robustness_video_memory_purge\r\n  _glewInfo_GLX_NV_robustness_video_memory_purge();\r\n#endif /* GLX_NV_robustness_video_memory_purge */\r\n#ifdef GLX_NV_swap_group\r\n  _glewInfo_GLX_NV_swap_group();\r\n#endif /* GLX_NV_swap_group */\r\n#ifdef GLX_NV_vertex_array_range\r\n  _glewInfo_GLX_NV_vertex_array_range();\r\n#endif /* GLX_NV_vertex_array_range */\r\n#ifdef GLX_NV_video_capture\r\n  _glewInfo_GLX_NV_video_capture();\r\n#endif /* GLX_NV_video_capture */\r\n#ifdef GLX_NV_video_out\r\n  _glewInfo_GLX_NV_video_out();\r\n#endif /* GLX_NV_video_out */\r\n#ifdef GLX_OML_swap_method\r\n  _glewInfo_GLX_OML_swap_method();\r\n#endif /* GLX_OML_swap_method */\r\n#ifdef GLX_OML_sync_control\r\n  _glewInfo_GLX_OML_sync_control();\r\n#endif /* GLX_OML_sync_control */\r\n#ifdef GLX_SGIS_blended_overlay\r\n  _glewInfo_GLX_SGIS_blended_overlay();\r\n#endif /* GLX_SGIS_blended_overlay */\r\n#ifdef GLX_SGIS_color_range\r\n  _glewInfo_GLX_SGIS_color_range();\r\n#endif /* GLX_SGIS_color_range */\r\n#ifdef GLX_SGIS_multisample\r\n  _glewInfo_GLX_SGIS_multisample();\r\n#endif /* GLX_SGIS_multisample */\r\n#ifdef GLX_SGIS_shared_multisample\r\n  _glewInfo_GLX_SGIS_shared_multisample();\r\n#endif /* GLX_SGIS_shared_multisample */\r\n#ifdef GLX_SGIX_fbconfig\r\n  _glewInfo_GLX_SGIX_fbconfig();\r\n#endif /* GLX_SGIX_fbconfig */\r\n#ifdef GLX_SGIX_hyperpipe\r\n  _glewInfo_GLX_SGIX_hyperpipe();\r\n#endif /* GLX_SGIX_hyperpipe */\r\n#ifdef GLX_SGIX_pbuffer\r\n  _glewInfo_GLX_SGIX_pbuffer();\r\n#endif /* GLX_SGIX_pbuffer */\r\n#ifdef GLX_SGIX_swap_barrier\r\n  _glewInfo_GLX_SGIX_swap_barrier();\r\n#endif /* GLX_SGIX_swap_barrier */\r\n#ifdef GLX_SGIX_swap_group\r\n  _glewInfo_GLX_SGIX_swap_group();\r\n#endif /* GLX_SGIX_swap_group */\r\n#ifdef GLX_SGIX_video_resize\r\n  _glewInfo_GLX_SGIX_video_resize();\r\n#endif /* GLX_SGIX_video_resize */\r\n#ifdef GLX_SGIX_visual_select_group\r\n  _glewInfo_GLX_SGIX_visual_select_group();\r\n#endif /* GLX_SGIX_visual_select_group */\r\n#ifdef GLX_SGI_cushion\r\n  _glewInfo_GLX_SGI_cushion();\r\n#endif /* GLX_SGI_cushion */\r\n#ifdef GLX_SGI_make_current_read\r\n  _glewInfo_GLX_SGI_make_current_read();\r\n#endif /* GLX_SGI_make_current_read */\r\n#ifdef GLX_SGI_swap_control\r\n  _glewInfo_GLX_SGI_swap_control();\r\n#endif /* GLX_SGI_swap_control */\r\n#ifdef GLX_SGI_video_sync\r\n  _glewInfo_GLX_SGI_video_sync();\r\n#endif /* GLX_SGI_video_sync */\r\n#ifdef GLX_SUN_get_transparent_index\r\n  _glewInfo_GLX_SUN_get_transparent_index();\r\n#endif /* GLX_SUN_get_transparent_index */\r\n#ifdef GLX_SUN_video_resize\r\n  _glewInfo_GLX_SUN_video_resize();\r\n#endif /* GLX_SUN_video_resize */\r\n}\r\n\r\n#elif defined(GLEW_EGL)\r\n\r\nstatic void eglewInfo ()\r\n{\r\n#ifdef EGL_VERSION_1_0\r\n  _glewInfo_EGL_VERSION_1_0();\r\n#endif /* EGL_VERSION_1_0 */\r\n#ifdef EGL_VERSION_1_1\r\n  _glewInfo_EGL_VERSION_1_1();\r\n#endif /* EGL_VERSION_1_1 */\r\n#ifdef EGL_VERSION_1_2\r\n  _glewInfo_EGL_VERSION_1_2();\r\n#endif /* EGL_VERSION_1_2 */\r\n#ifdef EGL_VERSION_1_3\r\n  _glewInfo_EGL_VERSION_1_3();\r\n#endif /* EGL_VERSION_1_3 */\r\n#ifdef EGL_VERSION_1_4\r\n  _glewInfo_EGL_VERSION_1_4();\r\n#endif /* EGL_VERSION_1_4 */\r\n#ifdef EGL_VERSION_1_5\r\n  _glewInfo_EGL_VERSION_1_5();\r\n#endif /* EGL_VERSION_1_5 */\r\n#ifdef EGL_ANDROID_blob_cache\r\n  _glewInfo_EGL_ANDROID_blob_cache();\r\n#endif /* EGL_ANDROID_blob_cache */\r\n#ifdef EGL_ANDROID_create_native_client_buffer\r\n  _glewInfo_EGL_ANDROID_create_native_client_buffer();\r\n#endif /* EGL_ANDROID_create_native_client_buffer */\r\n#ifdef EGL_ANDROID_framebuffer_target\r\n  _glewInfo_EGL_ANDROID_framebuffer_target();\r\n#endif /* EGL_ANDROID_framebuffer_target */\r\n#ifdef EGL_ANDROID_front_buffer_auto_refresh\r\n  _glewInfo_EGL_ANDROID_front_buffer_auto_refresh();\r\n#endif /* EGL_ANDROID_front_buffer_auto_refresh */\r\n#ifdef EGL_ANDROID_image_native_buffer\r\n  _glewInfo_EGL_ANDROID_image_native_buffer();\r\n#endif /* EGL_ANDROID_image_native_buffer */\r\n#ifdef EGL_ANDROID_native_fence_sync\r\n  _glewInfo_EGL_ANDROID_native_fence_sync();\r\n#endif /* EGL_ANDROID_native_fence_sync */\r\n#ifdef EGL_ANDROID_presentation_time\r\n  _glewInfo_EGL_ANDROID_presentation_time();\r\n#endif /* EGL_ANDROID_presentation_time */\r\n#ifdef EGL_ANDROID_recordable\r\n  _glewInfo_EGL_ANDROID_recordable();\r\n#endif /* EGL_ANDROID_recordable */\r\n#ifdef EGL_ANGLE_d3d_share_handle_client_buffer\r\n  _glewInfo_EGL_ANGLE_d3d_share_handle_client_buffer();\r\n#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */\r\n#ifdef EGL_ANGLE_device_d3d\r\n  _glewInfo_EGL_ANGLE_device_d3d();\r\n#endif /* EGL_ANGLE_device_d3d */\r\n#ifdef EGL_ANGLE_query_surface_pointer\r\n  _glewInfo_EGL_ANGLE_query_surface_pointer();\r\n#endif /* EGL_ANGLE_query_surface_pointer */\r\n#ifdef EGL_ANGLE_surface_d3d_texture_2d_share_handle\r\n  _glewInfo_EGL_ANGLE_surface_d3d_texture_2d_share_handle();\r\n#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */\r\n#ifdef EGL_ANGLE_window_fixed_size\r\n  _glewInfo_EGL_ANGLE_window_fixed_size();\r\n#endif /* EGL_ANGLE_window_fixed_size */\r\n#ifdef EGL_ARM_implicit_external_sync\r\n  _glewInfo_EGL_ARM_implicit_external_sync();\r\n#endif /* EGL_ARM_implicit_external_sync */\r\n#ifdef EGL_ARM_pixmap_multisample_discard\r\n  _glewInfo_EGL_ARM_pixmap_multisample_discard();\r\n#endif /* EGL_ARM_pixmap_multisample_discard */\r\n#ifdef EGL_EXT_buffer_age\r\n  _glewInfo_EGL_EXT_buffer_age();\r\n#endif /* EGL_EXT_buffer_age */\r\n#ifdef EGL_EXT_client_extensions\r\n  _glewInfo_EGL_EXT_client_extensions();\r\n#endif /* EGL_EXT_client_extensions */\r\n#ifdef EGL_EXT_create_context_robustness\r\n  _glewInfo_EGL_EXT_create_context_robustness();\r\n#endif /* EGL_EXT_create_context_robustness */\r\n#ifdef EGL_EXT_device_base\r\n  _glewInfo_EGL_EXT_device_base();\r\n#endif /* EGL_EXT_device_base */\r\n#ifdef EGL_EXT_device_drm\r\n  _glewInfo_EGL_EXT_device_drm();\r\n#endif /* EGL_EXT_device_drm */\r\n#ifdef EGL_EXT_device_enumeration\r\n  _glewInfo_EGL_EXT_device_enumeration();\r\n#endif /* EGL_EXT_device_enumeration */\r\n#ifdef EGL_EXT_device_openwf\r\n  _glewInfo_EGL_EXT_device_openwf();\r\n#endif /* EGL_EXT_device_openwf */\r\n#ifdef EGL_EXT_device_query\r\n  _glewInfo_EGL_EXT_device_query();\r\n#endif /* EGL_EXT_device_query */\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_linear\r\n  _glewInfo_EGL_EXT_gl_colorspace_bt2020_linear();\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_linear */\r\n#ifdef EGL_EXT_gl_colorspace_bt2020_pq\r\n  _glewInfo_EGL_EXT_gl_colorspace_bt2020_pq();\r\n#endif /* EGL_EXT_gl_colorspace_bt2020_pq */\r\n#ifdef EGL_EXT_gl_colorspace_scrgb_linear\r\n  _glewInfo_EGL_EXT_gl_colorspace_scrgb_linear();\r\n#endif /* EGL_EXT_gl_colorspace_scrgb_linear */\r\n#ifdef EGL_EXT_image_dma_buf_import\r\n  _glewInfo_EGL_EXT_image_dma_buf_import();\r\n#endif /* EGL_EXT_image_dma_buf_import */\r\n#ifdef EGL_EXT_image_dma_buf_import_modifiers\r\n  _glewInfo_EGL_EXT_image_dma_buf_import_modifiers();\r\n#endif /* EGL_EXT_image_dma_buf_import_modifiers */\r\n#ifdef EGL_EXT_multiview_window\r\n  _glewInfo_EGL_EXT_multiview_window();\r\n#endif /* EGL_EXT_multiview_window */\r\n#ifdef EGL_EXT_output_base\r\n  _glewInfo_EGL_EXT_output_base();\r\n#endif /* EGL_EXT_output_base */\r\n#ifdef EGL_EXT_output_drm\r\n  _glewInfo_EGL_EXT_output_drm();\r\n#endif /* EGL_EXT_output_drm */\r\n#ifdef EGL_EXT_output_openwf\r\n  _glewInfo_EGL_EXT_output_openwf();\r\n#endif /* EGL_EXT_output_openwf */\r\n#ifdef EGL_EXT_pixel_format_float\r\n  _glewInfo_EGL_EXT_pixel_format_float();\r\n#endif /* EGL_EXT_pixel_format_float */\r\n#ifdef EGL_EXT_platform_base\r\n  _glewInfo_EGL_EXT_platform_base();\r\n#endif /* EGL_EXT_platform_base */\r\n#ifdef EGL_EXT_platform_device\r\n  _glewInfo_EGL_EXT_platform_device();\r\n#endif /* EGL_EXT_platform_device */\r\n#ifdef EGL_EXT_platform_wayland\r\n  _glewInfo_EGL_EXT_platform_wayland();\r\n#endif /* EGL_EXT_platform_wayland */\r\n#ifdef EGL_EXT_platform_x11\r\n  _glewInfo_EGL_EXT_platform_x11();\r\n#endif /* EGL_EXT_platform_x11 */\r\n#ifdef EGL_EXT_protected_content\r\n  _glewInfo_EGL_EXT_protected_content();\r\n#endif /* EGL_EXT_protected_content */\r\n#ifdef EGL_EXT_protected_surface\r\n  _glewInfo_EGL_EXT_protected_surface();\r\n#endif /* EGL_EXT_protected_surface */\r\n#ifdef EGL_EXT_stream_consumer_egloutput\r\n  _glewInfo_EGL_EXT_stream_consumer_egloutput();\r\n#endif /* EGL_EXT_stream_consumer_egloutput */\r\n#ifdef EGL_EXT_surface_SMPTE2086_metadata\r\n  _glewInfo_EGL_EXT_surface_SMPTE2086_metadata();\r\n#endif /* EGL_EXT_surface_SMPTE2086_metadata */\r\n#ifdef EGL_EXT_swap_buffers_with_damage\r\n  _glewInfo_EGL_EXT_swap_buffers_with_damage();\r\n#endif /* EGL_EXT_swap_buffers_with_damage */\r\n#ifdef EGL_EXT_yuv_surface\r\n  _glewInfo_EGL_EXT_yuv_surface();\r\n#endif /* EGL_EXT_yuv_surface */\r\n#ifdef EGL_HI_clientpixmap\r\n  _glewInfo_EGL_HI_clientpixmap();\r\n#endif /* EGL_HI_clientpixmap */\r\n#ifdef EGL_HI_colorformats\r\n  _glewInfo_EGL_HI_colorformats();\r\n#endif /* EGL_HI_colorformats */\r\n#ifdef EGL_IMG_context_priority\r\n  _glewInfo_EGL_IMG_context_priority();\r\n#endif /* EGL_IMG_context_priority */\r\n#ifdef EGL_IMG_image_plane_attribs\r\n  _glewInfo_EGL_IMG_image_plane_attribs();\r\n#endif /* EGL_IMG_image_plane_attribs */\r\n#ifdef EGL_KHR_cl_event\r\n  _glewInfo_EGL_KHR_cl_event();\r\n#endif /* EGL_KHR_cl_event */\r\n#ifdef EGL_KHR_cl_event2\r\n  _glewInfo_EGL_KHR_cl_event2();\r\n#endif /* EGL_KHR_cl_event2 */\r\n#ifdef EGL_KHR_client_get_all_proc_addresses\r\n  _glewInfo_EGL_KHR_client_get_all_proc_addresses();\r\n#endif /* EGL_KHR_client_get_all_proc_addresses */\r\n#ifdef EGL_KHR_config_attribs\r\n  _glewInfo_EGL_KHR_config_attribs();\r\n#endif /* EGL_KHR_config_attribs */\r\n#ifdef EGL_KHR_context_flush_control\r\n  _glewInfo_EGL_KHR_context_flush_control();\r\n#endif /* EGL_KHR_context_flush_control */\r\n#ifdef EGL_KHR_create_context\r\n  _glewInfo_EGL_KHR_create_context();\r\n#endif /* EGL_KHR_create_context */\r\n#ifdef EGL_KHR_create_context_no_error\r\n  _glewInfo_EGL_KHR_create_context_no_error();\r\n#endif /* EGL_KHR_create_context_no_error */\r\n#ifdef EGL_KHR_debug\r\n  _glewInfo_EGL_KHR_debug();\r\n#endif /* EGL_KHR_debug */\r\n#ifdef EGL_KHR_fence_sync\r\n  _glewInfo_EGL_KHR_fence_sync();\r\n#endif /* EGL_KHR_fence_sync */\r\n#ifdef EGL_KHR_get_all_proc_addresses\r\n  _glewInfo_EGL_KHR_get_all_proc_addresses();\r\n#endif /* EGL_KHR_get_all_proc_addresses */\r\n#ifdef EGL_KHR_gl_colorspace\r\n  _glewInfo_EGL_KHR_gl_colorspace();\r\n#endif /* EGL_KHR_gl_colorspace */\r\n#ifdef EGL_KHR_gl_renderbuffer_image\r\n  _glewInfo_EGL_KHR_gl_renderbuffer_image();\r\n#endif /* EGL_KHR_gl_renderbuffer_image */\r\n#ifdef EGL_KHR_gl_texture_2D_image\r\n  _glewInfo_EGL_KHR_gl_texture_2D_image();\r\n#endif /* EGL_KHR_gl_texture_2D_image */\r\n#ifdef EGL_KHR_gl_texture_3D_image\r\n  _glewInfo_EGL_KHR_gl_texture_3D_image();\r\n#endif /* EGL_KHR_gl_texture_3D_image */\r\n#ifdef EGL_KHR_gl_texture_cubemap_image\r\n  _glewInfo_EGL_KHR_gl_texture_cubemap_image();\r\n#endif /* EGL_KHR_gl_texture_cubemap_image */\r\n#ifdef EGL_KHR_image\r\n  _glewInfo_EGL_KHR_image();\r\n#endif /* EGL_KHR_image */\r\n#ifdef EGL_KHR_image_base\r\n  _glewInfo_EGL_KHR_image_base();\r\n#endif /* EGL_KHR_image_base */\r\n#ifdef EGL_KHR_image_pixmap\r\n  _glewInfo_EGL_KHR_image_pixmap();\r\n#endif /* EGL_KHR_image_pixmap */\r\n#ifdef EGL_KHR_lock_surface\r\n  _glewInfo_EGL_KHR_lock_surface();\r\n#endif /* EGL_KHR_lock_surface */\r\n#ifdef EGL_KHR_lock_surface2\r\n  _glewInfo_EGL_KHR_lock_surface2();\r\n#endif /* EGL_KHR_lock_surface2 */\r\n#ifdef EGL_KHR_lock_surface3\r\n  _glewInfo_EGL_KHR_lock_surface3();\r\n#endif /* EGL_KHR_lock_surface3 */\r\n#ifdef EGL_KHR_mutable_render_buffer\r\n  _glewInfo_EGL_KHR_mutable_render_buffer();\r\n#endif /* EGL_KHR_mutable_render_buffer */\r\n#ifdef EGL_KHR_no_config_context\r\n  _glewInfo_EGL_KHR_no_config_context();\r\n#endif /* EGL_KHR_no_config_context */\r\n#ifdef EGL_KHR_partial_update\r\n  _glewInfo_EGL_KHR_partial_update();\r\n#endif /* EGL_KHR_partial_update */\r\n#ifdef EGL_KHR_platform_android\r\n  _glewInfo_EGL_KHR_platform_android();\r\n#endif /* EGL_KHR_platform_android */\r\n#ifdef EGL_KHR_platform_gbm\r\n  _glewInfo_EGL_KHR_platform_gbm();\r\n#endif /* EGL_KHR_platform_gbm */\r\n#ifdef EGL_KHR_platform_wayland\r\n  _glewInfo_EGL_KHR_platform_wayland();\r\n#endif /* EGL_KHR_platform_wayland */\r\n#ifdef EGL_KHR_platform_x11\r\n  _glewInfo_EGL_KHR_platform_x11();\r\n#endif /* EGL_KHR_platform_x11 */\r\n#ifdef EGL_KHR_reusable_sync\r\n  _glewInfo_EGL_KHR_reusable_sync();\r\n#endif /* EGL_KHR_reusable_sync */\r\n#ifdef EGL_KHR_stream\r\n  _glewInfo_EGL_KHR_stream();\r\n#endif /* EGL_KHR_stream */\r\n#ifdef EGL_KHR_stream_attrib\r\n  _glewInfo_EGL_KHR_stream_attrib();\r\n#endif /* EGL_KHR_stream_attrib */\r\n#ifdef EGL_KHR_stream_consumer_gltexture\r\n  _glewInfo_EGL_KHR_stream_consumer_gltexture();\r\n#endif /* EGL_KHR_stream_consumer_gltexture */\r\n#ifdef EGL_KHR_stream_cross_process_fd\r\n  _glewInfo_EGL_KHR_stream_cross_process_fd();\r\n#endif /* EGL_KHR_stream_cross_process_fd */\r\n#ifdef EGL_KHR_stream_fifo\r\n  _glewInfo_EGL_KHR_stream_fifo();\r\n#endif /* EGL_KHR_stream_fifo */\r\n#ifdef EGL_KHR_stream_producer_aldatalocator\r\n  _glewInfo_EGL_KHR_stream_producer_aldatalocator();\r\n#endif /* EGL_KHR_stream_producer_aldatalocator */\r\n#ifdef EGL_KHR_stream_producer_eglsurface\r\n  _glewInfo_EGL_KHR_stream_producer_eglsurface();\r\n#endif /* EGL_KHR_stream_producer_eglsurface */\r\n#ifdef EGL_KHR_surfaceless_context\r\n  _glewInfo_EGL_KHR_surfaceless_context();\r\n#endif /* EGL_KHR_surfaceless_context */\r\n#ifdef EGL_KHR_swap_buffers_with_damage\r\n  _glewInfo_EGL_KHR_swap_buffers_with_damage();\r\n#endif /* EGL_KHR_swap_buffers_with_damage */\r\n#ifdef EGL_KHR_vg_parent_image\r\n  _glewInfo_EGL_KHR_vg_parent_image();\r\n#endif /* EGL_KHR_vg_parent_image */\r\n#ifdef EGL_KHR_wait_sync\r\n  _glewInfo_EGL_KHR_wait_sync();\r\n#endif /* EGL_KHR_wait_sync */\r\n#ifdef EGL_MESA_drm_image\r\n  _glewInfo_EGL_MESA_drm_image();\r\n#endif /* EGL_MESA_drm_image */\r\n#ifdef EGL_MESA_image_dma_buf_export\r\n  _glewInfo_EGL_MESA_image_dma_buf_export();\r\n#endif /* EGL_MESA_image_dma_buf_export */\r\n#ifdef EGL_MESA_platform_gbm\r\n  _glewInfo_EGL_MESA_platform_gbm();\r\n#endif /* EGL_MESA_platform_gbm */\r\n#ifdef EGL_MESA_platform_surfaceless\r\n  _glewInfo_EGL_MESA_platform_surfaceless();\r\n#endif /* EGL_MESA_platform_surfaceless */\r\n#ifdef EGL_NOK_swap_region\r\n  _glewInfo_EGL_NOK_swap_region();\r\n#endif /* EGL_NOK_swap_region */\r\n#ifdef EGL_NOK_swap_region2\r\n  _glewInfo_EGL_NOK_swap_region2();\r\n#endif /* EGL_NOK_swap_region2 */\r\n#ifdef EGL_NOK_texture_from_pixmap\r\n  _glewInfo_EGL_NOK_texture_from_pixmap();\r\n#endif /* EGL_NOK_texture_from_pixmap */\r\n#ifdef EGL_NV_3dvision_surface\r\n  _glewInfo_EGL_NV_3dvision_surface();\r\n#endif /* EGL_NV_3dvision_surface */\r\n#ifdef EGL_NV_coverage_sample\r\n  _glewInfo_EGL_NV_coverage_sample();\r\n#endif /* EGL_NV_coverage_sample */\r\n#ifdef EGL_NV_coverage_sample_resolve\r\n  _glewInfo_EGL_NV_coverage_sample_resolve();\r\n#endif /* EGL_NV_coverage_sample_resolve */\r\n#ifdef EGL_NV_cuda_event\r\n  _glewInfo_EGL_NV_cuda_event();\r\n#endif /* EGL_NV_cuda_event */\r\n#ifdef EGL_NV_depth_nonlinear\r\n  _glewInfo_EGL_NV_depth_nonlinear();\r\n#endif /* EGL_NV_depth_nonlinear */\r\n#ifdef EGL_NV_device_cuda\r\n  _glewInfo_EGL_NV_device_cuda();\r\n#endif /* EGL_NV_device_cuda */\r\n#ifdef EGL_NV_native_query\r\n  _glewInfo_EGL_NV_native_query();\r\n#endif /* EGL_NV_native_query */\r\n#ifdef EGL_NV_post_convert_rounding\r\n  _glewInfo_EGL_NV_post_convert_rounding();\r\n#endif /* EGL_NV_post_convert_rounding */\r\n#ifdef EGL_NV_post_sub_buffer\r\n  _glewInfo_EGL_NV_post_sub_buffer();\r\n#endif /* EGL_NV_post_sub_buffer */\r\n#ifdef EGL_NV_robustness_video_memory_purge\r\n  _glewInfo_EGL_NV_robustness_video_memory_purge();\r\n#endif /* EGL_NV_robustness_video_memory_purge */\r\n#ifdef EGL_NV_stream_consumer_gltexture_yuv\r\n  _glewInfo_EGL_NV_stream_consumer_gltexture_yuv();\r\n#endif /* EGL_NV_stream_consumer_gltexture_yuv */\r\n#ifdef EGL_NV_stream_cross_display\r\n  _glewInfo_EGL_NV_stream_cross_display();\r\n#endif /* EGL_NV_stream_cross_display */\r\n#ifdef EGL_NV_stream_cross_object\r\n  _glewInfo_EGL_NV_stream_cross_object();\r\n#endif /* EGL_NV_stream_cross_object */\r\n#ifdef EGL_NV_stream_cross_partition\r\n  _glewInfo_EGL_NV_stream_cross_partition();\r\n#endif /* EGL_NV_stream_cross_partition */\r\n#ifdef EGL_NV_stream_cross_process\r\n  _glewInfo_EGL_NV_stream_cross_process();\r\n#endif /* EGL_NV_stream_cross_process */\r\n#ifdef EGL_NV_stream_cross_system\r\n  _glewInfo_EGL_NV_stream_cross_system();\r\n#endif /* EGL_NV_stream_cross_system */\r\n#ifdef EGL_NV_stream_fifo_next\r\n  _glewInfo_EGL_NV_stream_fifo_next();\r\n#endif /* EGL_NV_stream_fifo_next */\r\n#ifdef EGL_NV_stream_fifo_synchronous\r\n  _glewInfo_EGL_NV_stream_fifo_synchronous();\r\n#endif /* EGL_NV_stream_fifo_synchronous */\r\n#ifdef EGL_NV_stream_frame_limits\r\n  _glewInfo_EGL_NV_stream_frame_limits();\r\n#endif /* EGL_NV_stream_frame_limits */\r\n#ifdef EGL_NV_stream_metadata\r\n  _glewInfo_EGL_NV_stream_metadata();\r\n#endif /* EGL_NV_stream_metadata */\r\n#ifdef EGL_NV_stream_remote\r\n  _glewInfo_EGL_NV_stream_remote();\r\n#endif /* EGL_NV_stream_remote */\r\n#ifdef EGL_NV_stream_reset\r\n  _glewInfo_EGL_NV_stream_reset();\r\n#endif /* EGL_NV_stream_reset */\r\n#ifdef EGL_NV_stream_socket\r\n  _glewInfo_EGL_NV_stream_socket();\r\n#endif /* EGL_NV_stream_socket */\r\n#ifdef EGL_NV_stream_socket_inet\r\n  _glewInfo_EGL_NV_stream_socket_inet();\r\n#endif /* EGL_NV_stream_socket_inet */\r\n#ifdef EGL_NV_stream_socket_unix\r\n  _glewInfo_EGL_NV_stream_socket_unix();\r\n#endif /* EGL_NV_stream_socket_unix */\r\n#ifdef EGL_NV_stream_sync\r\n  _glewInfo_EGL_NV_stream_sync();\r\n#endif /* EGL_NV_stream_sync */\r\n#ifdef EGL_NV_sync\r\n  _glewInfo_EGL_NV_sync();\r\n#endif /* EGL_NV_sync */\r\n#ifdef EGL_NV_system_time\r\n  _glewInfo_EGL_NV_system_time();\r\n#endif /* EGL_NV_system_time */\r\n#ifdef EGL_TIZEN_image_native_buffer\r\n  _glewInfo_EGL_TIZEN_image_native_buffer();\r\n#endif /* EGL_TIZEN_image_native_buffer */\r\n#ifdef EGL_TIZEN_image_native_surface\r\n  _glewInfo_EGL_TIZEN_image_native_surface();\r\n#endif /* EGL_TIZEN_image_native_surface */\r\n}\r\n\r\n#endif /* _WIN32 */\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nint main (int argc, char** argv)\r\n{\r\n  GLuint err;\r\n  struct createParams params =\r\n  {\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n    -1,  /* pixelformat */\r\n#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\n    \"\",  /* display */\r\n    -1,  /* visual */\r\n#endif\r\n    0,   /* major */\r\n    0,   /* minor */\r\n    0,   /* profile mask */\r\n    0    /* flags */\r\n  };\r\n\r\n#if defined(GLEW_EGL)\r\n  typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);\r\n  PFNGLGETSTRINGPROC getString;\r\n#endif\r\n\r\n  if (glewParseArgs(argc-1, argv+1, &params))\r\n  {\r\n    fprintf(stderr, \"Usage: glewinfo \"\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n      \"[-pf <pixelformat>] \"\r\n#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\n      \"[-display <display>] \"\r\n      \"[-visual <visual id>] \"\r\n#endif\r\n      \"[-version <OpenGL version>] \"\r\n      \"[-profile core|compatibility] \"\r\n      \"[-flag debug|forward]\"\r\n      \"\\n\");\r\n    return 1;\r\n  }\r\n\r\n  if (GL_TRUE == glewCreateContext(&params))\r\n  {\r\n    fprintf(stderr, \"Error: glewCreateContext failed\\n\");\r\n    glewDestroyContext();\r\n    return 1;\r\n  }\r\n  glewExperimental = GL_TRUE;\r\n  err = glewInit();\r\n  if (GLEW_OK != err)\r\n  {\r\n    fprintf(stderr, \"Error [main]: glewInit failed: %s\\n\", glewGetErrorString(err));\r\n    glewDestroyContext();\r\n    return 1;\r\n  }\r\n\r\n#if defined(GLEW_EGL)\r\n  getString = (PFNGLGETSTRINGPROC) eglGetProcAddress(\"glGetString\");\r\n  if (!getString)\r\n  {\r\n    fprintf(stderr, \"Error: eglGetProcAddress failed to fetch glGetString\\n\");\r\n    glewDestroyContext();\r\n    return 1;\r\n  }\r\n#endif\r\n\r\n#if defined(_WIN32)\r\n#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r\n  if (fopen_s(&f, \"glewinfo.txt\", \"w\") != 0)\r\n    f = stdout;\r\n#else\r\n  f = fopen(\"glewinfo.txt\", \"w\");\r\n#endif\r\n  if (f == NULL) f = stdout;\r\n#else\r\n  f = stdout;\r\n#endif\r\n  fprintf(f, \"---------------------------\\n\");\r\n  fprintf(f, \"    GLEW Extension Info\\n\");\r\n  fprintf(f, \"---------------------------\\n\\n\");\r\n  fprintf(f, \"GLEW version %s\\n\", glewGetString(GLEW_VERSION));\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n  fprintf(f, \"Reporting capabilities of pixelformat %d\\n\", params.pixelformat);\r\n#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\n  fprintf(f, \"Reporting capabilities of display %s, visual 0x%x\\n\",\r\n    params.display == NULL ? getenv(\"DISPLAY\") : params.display, params.visual);\r\n#endif\r\n#if defined(GLEW_EGL)\r\n  fprintf(f, \"Running on a %s from %s\\n\",\r\n    getString(GL_RENDERER), getString(GL_VENDOR));\r\n  fprintf(f, \"OpenGL version %s is supported\\n\", getString(GL_VERSION));\r\n#else\r\n  fprintf(f, \"Running on a %s from %s\\n\",\r\n    glGetString(GL_RENDERER), glGetString(GL_VENDOR));\r\n  fprintf(f, \"OpenGL version %s is supported\\n\", glGetString(GL_VERSION));\r\n#endif\r\n  glewInfo();\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n  eglewInfo();\r\n#elif defined(_WIN32)\r\n  wglewInfo();\r\n#else\r\n  glxewInfo();\r\n#endif\r\n  if (f != stdout) fclose(f);\r\n  glewDestroyContext();\r\n  return 0;\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\nGLboolean glewParseArgs (int argc, char** argv, struct createParams *params)\r\n{\r\n  int p = 0;\r\n  while (p < argc)\r\n  {\r\n    if (!strcmp(argv[p], \"-version\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      if (sscanf(argv[p++], \"%d.%d\", &params->major, &params->minor) != 2) return GL_TRUE;\r\n    }\r\n    else if (!strcmp(argv[p], \"-profile\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      if      (strcmp(\"core\",         argv[p]) == 0) params->profile |= 1;\r\n      else if (strcmp(\"compatibility\",argv[p]) == 0) params->profile |= 2;\r\n      else return GL_TRUE;\r\n      ++p;\r\n    }\r\n    else if (!strcmp(argv[p], \"-flag\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      if      (strcmp(\"debug\",  argv[p]) == 0) params->flags |= 1;\r\n      else if (strcmp(\"forward\",argv[p]) == 0) params->flags |= 2;\r\n      else return GL_TRUE;\r\n      ++p;\r\n    }\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n    else if (!strcmp(argv[p], \"-pf\") || !strcmp(argv[p], \"-pixelformat\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      params->pixelformat = strtol(argv[p++], NULL, 0);\r\n    }\r\n#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)\r\n    else if (!strcmp(argv[p], \"-display\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      params->display = argv[p++];\r\n     }\r\n    else if (!strcmp(argv[p], \"-visual\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      params->visual = (int)strtol(argv[p++], NULL, 0);\r\n    }\r\n#endif\r\n    else\r\n      return GL_TRUE;\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#if defined(GLEW_EGL)\r\nEGLDisplay  display;\r\nEGLContext  ctx;\r\n\r\n/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */\r\n\r\nGLboolean glewCreateContext (struct createParams *params)\r\n{\r\n  EGLDeviceEXT devices[1];\r\n  EGLint numDevices;\r\n  EGLSurface  surface;\r\n  EGLint majorVersion, minorVersion;\r\n  EGLint configAttribs[] = {\r\n        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\r\n        EGL_RED_SIZE, 1,\r\n        EGL_GREEN_SIZE, 1,\r\n        EGL_BLUE_SIZE, 1,\r\n        EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,\r\n        EGL_NONE\r\n   };\r\n  static const EGLint contextAttribs[] = {\r\n    EGL_CONTEXT_CLIENT_VERSION, 2,\r\n    EGL_NONE\r\n  };\r\n  static const EGLint pBufferAttribs[] = {\r\n    EGL_WIDTH,  128,\r\n    EGL_HEIGHT, 128,\r\n    EGL_NONE\r\n  };\r\n  EGLConfig config;\r\n  EGLint numConfig;\r\n  EGLBoolean pBuffer;\r\n\r\n  PFNEGLQUERYDEVICESEXTPROC       queryDevices = NULL;\r\n  PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL;\r\n  PFNEGLGETERRORPROC              getError = NULL;\r\n  PFNEGLGETDISPLAYPROC            getDisplay = NULL;\r\n  PFNEGLINITIALIZEPROC            initialize = NULL;\r\n  PFNEGLBINDAPIPROC               bindAPI    = NULL;\r\n  PFNEGLCHOOSECONFIGPROC          chooseConfig = NULL;\r\n  PFNEGLCREATEWINDOWSURFACEPROC   createWindowSurface = NULL;\r\n  PFNEGLCREATECONTEXTPROC         createContext = NULL;\r\n  PFNEGLMAKECURRENTPROC           makeCurrent = NULL;\r\n  PFNEGLCREATEPBUFFERSURFACEPROC  createPbufferSurface = NULL;\r\n\r\n  /* Load necessary entry points */\r\n  queryDevices         = (PFNEGLQUERYDEVICESEXTPROC)       eglGetProcAddress(\"eglQueryDevicesEXT\");\r\n  getPlatformDisplay   = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress(\"eglGetPlatformDisplayEXT\");\r\n  getError             = (PFNEGLGETERRORPROC)              eglGetProcAddress(\"eglGetError\");\r\n  getDisplay           = (PFNEGLGETDISPLAYPROC)            eglGetProcAddress(\"eglGetDisplay\");\r\n  initialize           = (PFNEGLINITIALIZEPROC)            eglGetProcAddress(\"eglInitialize\");\r\n  bindAPI              = (PFNEGLBINDAPIPROC)               eglGetProcAddress(\"eglBindAPI\");\r\n  chooseConfig         = (PFNEGLCHOOSECONFIGPROC)          eglGetProcAddress(\"eglChooseConfig\");\r\n  createWindowSurface  = (PFNEGLCREATEWINDOWSURFACEPROC)   eglGetProcAddress(\"eglCreateWindowSurface\");\r\n  createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC)  eglGetProcAddress(\"eglCreatePbufferSurface\");\r\n  createContext        = (PFNEGLCREATECONTEXTPROC)         eglGetProcAddress(\"eglCreateContext\");\r\n  makeCurrent          = (PFNEGLMAKECURRENTPROC)           eglGetProcAddress(\"eglMakeCurrent\");\r\n  if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent)\r\n    return GL_TRUE;\r\n\r\n  pBuffer = 0;\r\n  display = EGL_NO_DISPLAY;\r\n  if (queryDevices && getPlatformDisplay)\r\n  {\r\n    queryDevices(1, devices, &numDevices);\r\n    if (numDevices==1)\r\n    {\r\n      /* Nvidia EGL doesn't need X11 for p-buffer surface */\r\n      display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0);\r\n      configAttribs[1] = EGL_PBUFFER_BIT;\r\n      pBuffer = 1;\r\n    }\r\n  }\r\n  if (display==EGL_NO_DISPLAY)\r\n  {\r\n    /* Fall-back to X11 surface, works on Mesa */\r\n    display = getDisplay(EGL_DEFAULT_DISPLAY);\r\n  }\r\n  if (display == EGL_NO_DISPLAY)\r\n    return GL_TRUE;\r\n\r\n  eglewInit(display);\r\n\r\n  if (bindAPI(EGL_OPENGL_API) != EGL_TRUE)\r\n    return GL_TRUE;\r\n\r\n  if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1))\r\n    return GL_TRUE;\r\n\r\n  ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL);\r\n  if (NULL == ctx)\r\n    return GL_TRUE;\r\n\r\n  surface = EGL_NO_SURFACE;\r\n  /* Create a p-buffer surface if possible */\r\n  if (pBuffer && createPbufferSurface)\r\n  {\r\n    surface = createPbufferSurface(display, config, pBufferAttribs);\r\n  }\r\n  /* Create a generic surface without a native window, if necessary */\r\n  if (surface==EGL_NO_SURFACE)\r\n  {\r\n    surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL);\r\n  }\r\n#if 0\r\n  if (surface == EGL_NO_SURFACE)\r\n    return GL_TRUE;\r\n#endif\r\n\r\n  if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE)\r\n    return GL_TRUE;\r\n\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  if (NULL != ctx) eglDestroyContext(display, ctx);\r\n}\r\n\r\n#elif defined(GLEW_OSMESA)\r\nOSMesaContext ctx;\r\n\r\nstatic const GLint osmFormat = GL_UNSIGNED_BYTE;\r\nstatic const GLint osmWidth = 640;\r\nstatic const GLint osmHeight = 480;\r\nstatic GLubyte *osmPixels = NULL;\r\n\r\nGLboolean glewCreateContext (struct createParams *params)\r\n{\r\n  ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);\r\n  if (NULL == ctx) return GL_TRUE;\r\n  if (NULL == osmPixels)\r\n  {\r\n    osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);\r\n  }\r\n  if (!OSMesaMakeCurrent(ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))\r\n  {\r\n      return GL_TRUE;\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  if (NULL != ctx) OSMesaDestroyContext(ctx);\r\n}\r\n\r\n#elif defined(_WIN32)\r\n\r\nHWND wnd = NULL;\r\nHDC dc = NULL;\r\nHGLRC rc = NULL;\r\n\r\nGLboolean glewCreateContext (struct createParams* params)\r\n{\r\n  WNDCLASS wc;\r\n  PIXELFORMATDESCRIPTOR pfd;\r\n  /* register window class */\r\n  ZeroMemory(&wc, sizeof(WNDCLASS));\r\n  wc.hInstance = GetModuleHandle(NULL);\r\n  wc.lpfnWndProc = DefWindowProc;\r\n  wc.lpszClassName = \"GLEW\";\r\n  if (0 == RegisterClass(&wc)) return GL_TRUE;\r\n  /* create window */\r\n  wnd = CreateWindow(\"GLEW\", \"GLEW\", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,\r\n                     CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL);\r\n  if (NULL == wnd) return GL_TRUE;\r\n  /* get the device context */\r\n  dc = GetDC(wnd);\r\n  if (NULL == dc) return GL_TRUE;\r\n  /* find pixel format */\r\n  ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));\r\n  if (params->pixelformat == -1) /* find default */\r\n  {\r\n    pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);\r\n    pfd.nVersion = 1;\r\n    pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;\r\n    params->pixelformat = ChoosePixelFormat(dc, &pfd);\r\n    if (params->pixelformat == 0) return GL_TRUE;\r\n  }\r\n  /* set the pixel format for the dc */\r\n  if (FALSE == SetPixelFormat(dc, params->pixelformat, &pfd)) return GL_TRUE;\r\n  /* create rendering context */\r\n  rc = wglCreateContext(dc);\r\n  if (NULL == rc) return GL_TRUE;\r\n  if (FALSE == wglMakeCurrent(dc, rc)) return GL_TRUE;\r\n  if (params->major || params->profile || params->flags)\r\n  {\r\n    HGLRC oldRC = rc;\r\n    int contextAttrs[20];\r\n    int i;\r\n\r\n    wglewInit();\r\n\r\n    /* Intel HD 3000 has WGL_ARB_create_context, but not WGL_ARB_create_context_profile */\r\n    if (!wglewGetExtension(\"WGL_ARB_create_context\"))\r\n      return GL_TRUE;\r\n\r\n    i = 0;\r\n    if (params->major)\r\n    {\r\n      contextAttrs[i++] = WGL_CONTEXT_MAJOR_VERSION_ARB;\r\n      contextAttrs[i++] = params->major;\r\n      contextAttrs[i++] = WGL_CONTEXT_MINOR_VERSION_ARB;\r\n      contextAttrs[i++] = params->minor;\r\n    }\r\n    if (params->profile)\r\n    {\r\n      contextAttrs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB;\r\n      contextAttrs[i++] = params->profile;\r\n    }\r\n    if (params->flags)\r\n    {\r\n      contextAttrs[i++] = WGL_CONTEXT_FLAGS_ARB;\r\n      contextAttrs[i++] = params->flags;\r\n    }\r\n    contextAttrs[i++] = 0;\r\n    rc = wglCreateContextAttribsARB(dc, 0, contextAttrs);\r\n\r\n    if (NULL == rc) return GL_TRUE;\r\n    if (!wglMakeCurrent(dc, rc)) return GL_TRUE;\r\n\r\n    wglDeleteContext(oldRC);\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  if (NULL != rc) wglMakeCurrent(NULL, NULL);\r\n  if (NULL != rc) wglDeleteContext(rc);\r\n  if (NULL != wnd && NULL != dc) ReleaseDC(wnd, dc);\r\n  if (NULL != wnd) DestroyWindow(wnd);\r\n  UnregisterClass(\"GLEW\", GetModuleHandle(NULL));\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n\r\n#include <OpenGL/OpenGL.h>\r\n#include <OpenGL/CGLTypes.h>\r\n\r\nCGLContextObj ctx, octx;\r\n\r\nGLboolean glewCreateContext (struct createParams *params)\r\n{\r\n  CGLPixelFormatAttribute contextAttrs[20];\r\n  int i;\r\n  CGLPixelFormatObj pf;\r\n  GLint npix;\r\n  CGLError error;\r\n\r\n  i = 0;\r\n  contextAttrs[i++] = kCGLPFAAccelerated; /* No software rendering */\r\n\r\n  /* MAC_OS_X_VERSION_10_7  == 1070 */\r\n  #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070\r\n  if (params->profile & GL_CONTEXT_CORE_PROFILE_BIT)\r\n  {\r\n    if ((params->major==3 && params->minor>=2) || params->major>3)\r\n    {\r\n      contextAttrs[i++] = kCGLPFAOpenGLProfile;                                /* OSX 10.7 Lion onwards */\r\n      contextAttrs[i++] = (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core;  /* 3.2 Core Context      */\r\n    }\r\n  }\r\n  #endif\r\n\r\n  contextAttrs[i++] = 0;\r\n\r\n  error = CGLChoosePixelFormat(contextAttrs, &pf, &npix);\r\n  if (error) return GL_TRUE;\r\n  error = CGLCreateContext(pf, NULL, &ctx);\r\n  if (error) return GL_TRUE;\r\n  CGLReleasePixelFormat(pf);\r\n  octx = CGLGetCurrentContext();\r\n  error = CGLSetCurrentContext(ctx);\r\n  if (error) return GL_TRUE;\r\n  /* Needed for Regal on the Mac */\r\n  #if defined(GLEW_REGAL) && defined(__APPLE__)\r\n  RegalMakeCurrent(ctx);\r\n  #endif\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  CGLSetCurrentContext(octx);\r\n  CGLReleaseContext(ctx);\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(__HAIKU__)\r\n\r\nGLboolean glewCreateContext (struct createParams *params)\r\n{\r\n  /* TODO: Haiku: We need to call C++ code here */\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  /* TODO: Haiku: We need to call C++ code here */\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */\r\n\r\nDisplay* dpy = NULL;\r\nXVisualInfo* vi = NULL;\r\nXVisualInfo* vis = NULL;\r\nGLXContext ctx = NULL;\r\nWindow wnd = 0;\r\nColormap cmap = 0;\r\n\r\nGLboolean glewCreateContext (struct createParams *params)\r\n{\r\n  int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };\r\n  int erb, evb;\r\n  XSetWindowAttributes swa;\r\n  /* open display */\r\n  dpy = XOpenDisplay(params->display);\r\n  if (NULL == dpy) return GL_TRUE;\r\n  /* query for glx */\r\n  if (!glXQueryExtension(dpy, &erb, &evb)) return GL_TRUE;\r\n  /* choose visual */\r\n  if (params->visual == -1)\r\n  {\r\n    vi = glXChooseVisual(dpy, DefaultScreen(dpy), attrib);\r\n    if (NULL == vi) return GL_TRUE;\r\n    params->visual = (int)XVisualIDFromVisual(vi->visual);\r\n  }\r\n  else\r\n  {\r\n    int n_vis, i;\r\n    vis = XGetVisualInfo(dpy, 0, NULL, &n_vis);\r\n    for (i=0; i<n_vis; i++)\r\n    {\r\n      if ((int)XVisualIDFromVisual(vis[i].visual) == params->visual)\r\n        vi = &vis[i];\r\n    }\r\n    if (vi == NULL) return GL_TRUE;\r\n  }\r\n  /* create context */\r\n  ctx = glXCreateContext(dpy, vi, None, True);\r\n  if (NULL == ctx) return GL_TRUE;\r\n  /* create window */\r\n  /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/\r\n  cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone);\r\n  swa.border_pixel = 0;\r\n  swa.colormap = cmap;\r\n  wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen),\r\n                      0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual,\r\n                      CWBorderPixel | CWColormap, &swa);\r\n  /* make context current */\r\n  if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;\r\n  if (params->major || params->profile || params->flags)\r\n  {\r\n    GLXContext oldCtx = ctx;\r\n    GLXFBConfig *FBConfigs;\r\n    int FBConfigAttrs[] = { GLX_FBCONFIG_ID, 0, None };\r\n    int contextAttrs[20];\r\n    int nelems, i;\r\n\r\n    glxewInit();\r\n\r\n    if (!glxewGetExtension(\"GLX_ARB_create_context\"))\r\n      return GL_TRUE;\r\n\r\n    if (glXQueryContext(dpy, oldCtx, GLX_FBCONFIG_ID, &FBConfigAttrs[1]))\r\n      return GL_TRUE;\r\n    FBConfigs = glXChooseFBConfig(dpy, vi->screen, FBConfigAttrs, &nelems);\r\n\r\n    if (nelems < 1)\r\n      return GL_TRUE;\r\n\r\n    i = 0;\r\n    if (params->major)\r\n    {\r\n      contextAttrs[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB;\r\n      contextAttrs[i++] = params->major;\r\n      contextAttrs[i++] = GLX_CONTEXT_MINOR_VERSION_ARB;\r\n      contextAttrs[i++] = params->minor;\r\n    }\r\n    if (params->profile)\r\n    {\r\n      contextAttrs[i++] = GLX_CONTEXT_PROFILE_MASK_ARB;\r\n      contextAttrs[i++] = params->profile;\r\n    }\r\n    if (params->flags)\r\n    {\r\n      contextAttrs[i++] = GLX_CONTEXT_FLAGS_ARB;\r\n      contextAttrs[i++] = params->flags;\r\n    }\r\n    contextAttrs[i++] = None;\r\n    ctx = glXCreateContextAttribsARB(dpy, *FBConfigs, NULL, True, contextAttrs);\r\n\r\n    if (NULL == ctx) return GL_TRUE;\r\n    if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE;\r\n\r\n    glXDestroyContext(dpy, oldCtx);\r\n\r\n    XFree(FBConfigs);\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid glewDestroyContext ()\r\n{\r\n  if (NULL != dpy && NULL != ctx) glXDestroyContext(dpy, ctx);\r\n  if (NULL != dpy && 0 != wnd) XDestroyWindow(dpy, wnd);\r\n  if (NULL != dpy && 0 != cmap) XFreeColormap(dpy, cmap);\r\n  if (NULL != vis)\r\n    XFree(vis);\r\n  else if (NULL != vi)\r\n    XFree(vi);\r\n  if (NULL != dpy) XCloseDisplay(dpy);\r\n}\r\n\r\n#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */\r\n"
  },
  {
    "path": "custom_backend/glfw/glew/visualinfo.c",
    "content": "/*\r\n** visualinfo.c\r\n**\r\n** Copyright (C) Nate Robins, 1997\r\n**               Michael Wimmer, 1999\r\n**               Milan Ikits, 2002-2008\r\n**               Nigel Stewart, 2008-2013\r\n**\r\n** visualinfo is a small utility that displays all available visuals,\r\n** aka. pixelformats, in an OpenGL system along with renderer version\r\n** information. It shows a table of all the visuals that support OpenGL\r\n** along with their capabilities. The format of the table is similar to\r\n** that of glxinfo on Unix systems:\r\n**\r\n** visual ~= pixel format descriptor\r\n** id       = visual id (integer from 1 - max visuals)\r\n** tp       = type (wn: window, pb: pbuffer, wp: window & pbuffer, bm: bitmap)\r\n** ac\t    = acceleration (ge: generic, fu: full, no: none)\r\n** fm\t    = format (i: integer, f: float, c: color index)\r\n** db\t    = double buffer (y = yes)\r\n** sw       = swap method (x: exchange, c: copy, u: undefined)\r\n** st\t    = stereo (y = yes)\r\n** sz       = total # bits\r\n** r        = # bits of red\r\n** g        = # bits of green\r\n** b        = # bits of blue\r\n** a        = # bits of alpha\r\n** axbf     = # aux buffers\r\n** dpth     = # bits of depth\r\n** stcl     = # bits of stencil\r\n*/\r\n\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <string.h>\r\n#include <GL/glew.h>\r\n#if defined(GLEW_OSMESA)\r\n#define GLAPI extern\r\n#include <GL/osmesa.h>\r\n#elif defined(GLEW_EGL)\r\n#include <GL/eglew.h>\r\n#elif defined(_WIN32)\r\n#include <GL/wglew.h>\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n#include <OpenGL/OpenGL.h>\r\n#include <OpenGL/CGLTypes.h>\r\n#elif !defined(__HAIKU__)\r\n#include <GL/glxew.h>\r\n#endif\r\n\r\n#ifdef GLEW_MX\r\nGLEWContext _glewctx;\r\n#  define glewGetContext() (&_glewctx)\r\n#  ifdef _WIN32\r\nWGLEWContext _wglewctx;\r\n#    define wglewGetContext() (&_wglewctx)\r\n#  elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)\r\nGLXEWContext _glxewctx;\r\n#    define glxewGetContext() (&_glxewctx)\r\n#  endif\r\n#endif /* GLEW_MX */\r\n\r\ntypedef struct GLContextStruct\r\n{\r\n#if defined(GLEW_OSMESA)\r\n  OSMesaContext ctx;\r\n#elif defined(GLEW_EGL)\r\n  EGLContext ctx;\r\n#elif defined(_WIN32)\r\n  HWND wnd;\r\n  HDC dc;\r\n  HGLRC rc;\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n  CGLContextObj ctx, octx;\r\n#elif !defined(__HAIKU__)\r\n  Display* dpy;\r\n  XVisualInfo* vi;\r\n  GLXContext ctx;\r\n  Window wnd;\r\n  Colormap cmap;\r\n#endif\r\n} GLContext;\r\n\r\nvoid InitContext (GLContext* ctx);\r\nGLboolean CreateContext (GLContext* ctx);\r\nvoid DestroyContext (GLContext* ctx);\r\nvoid VisualInfo (GLContext* ctx);\r\nvoid PrintExtensions (const char* s);\r\nGLboolean ParseArgs (int argc, char** argv);\r\n\r\nint showall = 0;\r\nint displaystdout = 0;\r\nint verbose = 0;\r\nint drawableonly = 0;\r\n\r\nchar* display = NULL;\r\nint visual = -1;\r\n\r\nFILE* file = 0;\r\n\r\nint \r\nmain (int argc, char** argv)\r\n{\r\n  GLenum err;\r\n  GLContext ctx;\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* parse arguments */\r\n  if (GL_TRUE == ParseArgs(argc-1, argv+1))\r\n  {\r\n#if defined(_WIN32)\r\n    fprintf(stderr, \"Usage: visualinfo [-a] [-s] [-h] [-pf <id>]\\n\");\r\n    fprintf(stderr, \"        -a: show all visuals\\n\");\r\n    fprintf(stderr, \"        -s: display to stdout instead of visualinfo.txt\\n\");\r\n    fprintf(stderr, \"        -pf <id>: use given pixelformat\\n\");\r\n    fprintf(stderr, \"        -h: this screen\\n\");\r\n#else\r\n    fprintf(stderr, \"Usage: visualinfo [-h] [-display <display>] [-visual <id>]\\n\");\r\n    fprintf(stderr, \"        -h: this screen\\n\");\r\n    fprintf(stderr, \"        -display <display>: use given display\\n\");\r\n    fprintf(stderr, \"        -visual <id>: use given visual\\n\");\r\n#endif\r\n    return 1;\r\n  }\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* create OpenGL rendering context */\r\n  InitContext(&ctx);\r\n  if (GL_TRUE == CreateContext(&ctx))\r\n  {\r\n    fprintf(stderr, \"Error: CreateContext failed\\n\");\r\n    DestroyContext(&ctx);\r\n    return 1;\r\n  }\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* initialize GLEW */\r\n  glewExperimental = GL_TRUE;\r\n#ifdef GLEW_MX\r\n  err = glewContextInit(glewGetContext());\r\n#  ifdef _WIN32\r\n  err = err || wglewContextInit(wglewGetContext());\r\n#  elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)\r\n  err = err || glxewContextInit(glxewGetContext());\r\n#  endif\r\n#else\r\n  err = glewInit();\r\n#endif\r\n  if (GLEW_OK != err)\r\n  {\r\n    fprintf(stderr, \"Error [main]: glewInit failed: %s\\n\", glewGetErrorString(err));\r\n    DestroyContext(&ctx);\r\n    return 1;\r\n  }\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* open file */\r\n#if defined(_WIN32)\r\n  if (!displaystdout)\r\n  {\r\n#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r\n    if (fopen_s(&file, \"visualinfo.txt\", \"w\") != 0)\r\n      file = stdout;\r\n#else\r\n    file = fopen(\"visualinfo.txt\", \"w\");\r\n#endif\r\n  }\r\n  if (file == NULL)\r\n    file = stdout;\r\n#else\r\n  file = stdout;\r\n#endif\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* output header information */\r\n  /* OpenGL extensions */\r\n  fprintf(file, \"OpenGL vendor string: %s\\n\", glGetString(GL_VENDOR));\r\n  fprintf(file, \"OpenGL renderer string: %s\\n\", glGetString(GL_RENDERER));\r\n  fprintf(file, \"OpenGL version string: %s\\n\", glGetString(GL_VERSION));\r\n  fprintf(file, \"OpenGL extensions (GL_): \\n\");\r\n  PrintExtensions((const char*)glGetString(GL_EXTENSIONS));\r\n\r\n#ifndef GLEW_NO_GLU\r\n  /* GLU extensions */\r\n  fprintf(file, \"GLU version string: %s\\n\", gluGetString(GLU_VERSION));\r\n  fprintf(file, \"GLU extensions (GLU_): \\n\");\r\n  PrintExtensions((const char*)gluGetString(GLU_EXTENSIONS));\r\n#endif\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* extensions string */\r\n#if defined(GLEW_OSMESA)\r\n#elif defined(GLEW_EGL)\r\n#elif defined(_WIN32)\r\n  /* WGL extensions */\r\n  if (WGLEW_ARB_extensions_string || WGLEW_EXT_extensions_string)\r\n  {\r\n    fprintf(file, \"WGL extensions (WGL_): \\n\");\r\n    PrintExtensions(wglGetExtensionsStringARB ? \r\n                    (const char*)wglGetExtensionsStringARB(ctx.dc) :\r\n\t\t    (const char*)wglGetExtensionsStringEXT());\r\n  }\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n  \r\n#elif defined(__HAIKU__)\r\n\r\n  /* TODO */\r\n\r\n#else\r\n  /* GLX extensions */\r\n  fprintf(file, \"GLX extensions (GLX_): \\n\");\r\n  PrintExtensions(glXQueryExtensionsString(glXGetCurrentDisplay(), \r\n                                           DefaultScreen(glXGetCurrentDisplay())));\r\n#endif\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* enumerate all the formats */\r\n  VisualInfo(&ctx);\r\n\r\n  /* ---------------------------------------------------------------------- */\r\n  /* release resources */\r\n  DestroyContext(&ctx);\r\n  if (file != stdout)\r\n    fclose(file);\r\n  return 0;\r\n}\r\n\r\n/* do the magic to separate all extensions with comma's, except\r\n   for the last one that _may_ terminate in a space. */\r\nvoid PrintExtensions (const char* s)\r\n{\r\n  char t[80];\r\n  int i=0;\r\n  char* p=0;\r\n\r\n  t[79] = '\\0';\r\n  while (*s)\r\n  {\r\n    t[i++] = *s;\r\n    if(*s == ' ')\r\n    {\r\n      if (*(s+1) != '\\0') {\r\n\tt[i-1] = ',';\r\n\tt[i] = ' ';\r\n\tp = &t[i++];\r\n      }\r\n      else /* zoinks! last one terminated in a space! */\r\n      {\r\n\tt[i-1] = '\\0';\r\n      }\r\n    }\r\n    if(i > 80 - 5)\r\n    {\r\n      *p = t[i] = '\\0';\r\n      fprintf(file, \"    %s\\n\", t);\r\n      p++;\r\n      i = (int)strlen(p);\r\n#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r\n      strcpy_s(t, sizeof(t), p);\r\n#else\r\n      strcpy(t, p);\r\n#endif\r\n    }\r\n    s++;\r\n  }\r\n  t[i] = '\\0';\r\n  fprintf(file, \"    %s.\\n\", t);\r\n}\r\n\r\n/* ---------------------------------------------------------------------- */\r\n\r\n#if defined(GLEW_OSMESA) || defined(GLEW_EGL)\r\n\r\nvoid\r\nVisualInfo (GLContext* ctx)\r\n{\r\n}\r\n\r\n#elif defined(_WIN32)\r\n\r\nvoid\r\nVisualInfoARB (GLContext* ctx)\r\n{\r\n  int attrib[32], value[32], n_attrib, n_pbuffer=0, n_float=0;\r\n  int i, pf, maxpf;\r\n  unsigned int c;\r\n\r\n  /* to get pbuffer capable pixel formats */\r\n  attrib[0] = WGL_DRAW_TO_PBUFFER_ARB;\r\n  attrib[1] = GL_TRUE;\r\n  attrib[2] = 0;\r\n  wglChoosePixelFormatARB(ctx->dc, attrib, 0, 1, &pf, &c);\r\n  /* query number of pixel formats */\r\n  attrib[0] = WGL_NUMBER_PIXEL_FORMATS_ARB;\r\n  wglGetPixelFormatAttribivARB(ctx->dc, 0, 0, 1, attrib, value);\r\n  maxpf = value[0];\r\n  for (i=0; i<32; i++)\r\n    value[i] = 0;\r\n\r\n  attrib[0] = WGL_SUPPORT_OPENGL_ARB;\r\n  attrib[1] = WGL_DRAW_TO_WINDOW_ARB;\r\n  attrib[2] = WGL_DRAW_TO_BITMAP_ARB;\r\n  attrib[3] = WGL_ACCELERATION_ARB;\r\n  /* WGL_NO_ACCELERATION_ARB, WGL_GENERIC_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB */\r\n  attrib[4] = WGL_SWAP_METHOD_ARB;\r\n  /* WGL_SWAP_EXCHANGE_ARB, WGL_SWAP_COPY_ARB, WGL_SWAP_UNDEFINED_ARB */\r\n  attrib[5] = WGL_DOUBLE_BUFFER_ARB;\r\n  attrib[6] = WGL_STEREO_ARB;\r\n  attrib[7] = WGL_PIXEL_TYPE_ARB;\r\n  /* WGL_TYPE_RGBA_ARB, WGL_TYPE_COLORINDEX_ARB,\r\n     WGL_TYPE_RGBA_FLOAT_ATI (WGL_ATI_pixel_format_float) */\r\n  /* Color buffer information */\r\n  attrib[8] = WGL_COLOR_BITS_ARB;\r\n  attrib[9] = WGL_RED_BITS_ARB;\r\n  attrib[10] = WGL_GREEN_BITS_ARB;\r\n  attrib[11] = WGL_BLUE_BITS_ARB;\r\n  attrib[12] = WGL_ALPHA_BITS_ARB;\r\n  /* Accumulation buffer information */\r\n  attrib[13] = WGL_ACCUM_BITS_ARB;\r\n  attrib[14] = WGL_ACCUM_RED_BITS_ARB;\r\n  attrib[15] = WGL_ACCUM_GREEN_BITS_ARB;\r\n  attrib[16] = WGL_ACCUM_BLUE_BITS_ARB;\r\n  attrib[17] = WGL_ACCUM_ALPHA_BITS_ARB;\r\n  /* Depth, stencil, and aux buffer information */\r\n  attrib[18] = WGL_DEPTH_BITS_ARB;\r\n  attrib[19] = WGL_STENCIL_BITS_ARB;\r\n  attrib[20] = WGL_AUX_BUFFERS_ARB;\r\n  /* Layer information */\r\n  attrib[21] = WGL_NUMBER_OVERLAYS_ARB;\r\n  attrib[22] = WGL_NUMBER_UNDERLAYS_ARB;\r\n  attrib[23] = WGL_SWAP_LAYER_BUFFERS_ARB;\r\n  attrib[24] = WGL_SAMPLES_ARB;\r\n  attrib[25] = WGL_SUPPORT_GDI_ARB;\r\n  n_attrib = 26;\r\n  if (WGLEW_ARB_pbuffer)\r\n  {\r\n    attrib[n_attrib] = WGL_DRAW_TO_PBUFFER_ARB;\r\n    n_pbuffer = n_attrib;\r\n    n_attrib++;\r\n  }\r\n  if (WGLEW_NV_float_buffer)\r\n  {\r\n    attrib[n_attrib] = WGL_FLOAT_COMPONENTS_NV;\r\n    n_float = n_attrib;\r\n    n_attrib++;\r\n  }\r\n  \r\n  if (!verbose)\r\n  {\r\n    /* print table header */\r\n    fprintf(file, \" +-----+-------------------------+-----------------+----------+-----------------+----------+\\n\");\r\n    fprintf(file, \" |     |          visual         |      color      | ax dp st |      accum      |   layer  |\\n\");\r\n    fprintf(file, \" |  id | tp ac gd fm db sw st ms |  sz  r  g  b  a | bf th cl |  sz  r  g  b  a | ov un sw |\\n\");\r\n    fprintf(file, \" +-----+-------------------------+-----------------+----------+-----------------+----------+\\n\");\r\n    /* loop through all the pixel formats */\r\n    for(i = 1; i <= maxpf; i++)\r\n    {\r\n      wglGetPixelFormatAttribivARB(ctx->dc, i, 0, n_attrib, attrib, value);\r\n      /* only describe this format if it supports OpenGL */\r\n      if (!value[0]) continue;\r\n      /* by default show only fully accelerated window or pbuffer capable visuals */\r\n      if (!showall\r\n\t  && ((value[2] && !value[1])\r\n\t  || (!WGLEW_ARB_pbuffer || !value[n_pbuffer])\r\n\t  || (value[3] != WGL_FULL_ACCELERATION_ARB))) continue;\r\n      /* print out the information for this visual */\r\n      /* visual id */\r\n      fprintf(file, \" |% 4d | \", i);\r\n      /* visual type */\r\n      if (value[1])\r\n      {\r\n\tif (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, \"wp \");\r\n\telse fprintf(file, \"wn \");\r\n      }\r\n      else\r\n      {\r\n\tif (value[2]) fprintf(file, \"bm \");\r\n\telse if (WGLEW_ARB_pbuffer && value[n_pbuffer]) fprintf(file, \"pb \");\r\n      }\r\n      /* acceleration */\r\n      fprintf(file, \"%s \", value[3] == WGL_FULL_ACCELERATION_ARB ? \"fu\" : \r\n\t      value[3] == WGL_GENERIC_ACCELERATION_ARB ? \"ge\" :\r\n\t      value[3] == WGL_NO_ACCELERATION_ARB ? \"no\" : \". \");\r\n      /* gdi support */\r\n      fprintf(file, \" %c \", value[25] ? 'y' : '.');\r\n      /* format */\r\n      if (WGLEW_NV_float_buffer && value[n_float]) fprintf(file, \" f \");\r\n      else if (WGLEW_ATI_pixel_format_float && value[7] == WGL_TYPE_RGBA_FLOAT_ATI) fprintf(file, \" f \");\r\n      else if (value[7] == WGL_TYPE_RGBA_ARB) fprintf(file, \" i \");\r\n      else if (value[7] == WGL_TYPE_COLORINDEX_ARB) fprintf(file, \" c \");\r\n      else if (value[7] == WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT) fprintf(file,\" p \");\r\n      else fprintf(file,\" ? \");\r\n      /* double buffer */\r\n      fprintf(file, \" %c \", value[5] ? 'y' : '.');\r\n      /* swap method */\r\n      if (value[4] == WGL_SWAP_EXCHANGE_ARB) fprintf(file, \" x \");\r\n      else if (value[4] == WGL_SWAP_COPY_ARB) fprintf(file, \" c \");\r\n      else if (value[4] == WGL_SWAP_UNDEFINED_ARB) fprintf(file, \" . \");\r\n      else fprintf(file, \" . \");\r\n      /* stereo */\r\n      fprintf(file, \" %c \", value[6] ? 'y' : '.');\r\n      /* multisample */\r\n      if (value[24] > 0)\r\n\tfprintf(file, \"%2d | \", value[24]);\r\n      else\r\n\tfprintf(file, \" . | \");\r\n      /* color size */\r\n      if (value[8]) fprintf(file, \"%3d \", value[8]);\r\n      else fprintf(file, \"  . \");\r\n      /* red */\r\n      if (value[9]) fprintf(file, \"%2d \", value[9]); \r\n      else fprintf(file, \" . \");\r\n      /* green */\r\n      if (value[10]) fprintf(file, \"%2d \", value[10]); \r\n      else fprintf(file, \" . \");\r\n      /* blue */\r\n      if (value[11]) fprintf(file, \"%2d \", value[11]);\r\n      else fprintf(file, \" . \");\r\n      /* alpha */\r\n      if (value[12]) fprintf(file, \"%2d | \", value[12]); \r\n      else fprintf(file, \" . | \");\r\n      /* aux buffers */\r\n      if (value[20]) fprintf(file, \"%2d \", value[20]);\r\n      else fprintf(file, \" . \");\r\n      /* depth */\r\n      if (value[18]) fprintf(file, \"%2d \", value[18]);\r\n      else fprintf(file, \" . \");\r\n      /* stencil */\r\n      if (value[19]) fprintf(file, \"%2d | \", value[19]);\r\n      else fprintf(file, \" . | \");\r\n      /* accum size */\r\n      if (value[13]) fprintf(file, \"%3d \", value[13]);\r\n      else fprintf(file, \"  . \");\r\n      /* accum red */\r\n      if (value[14]) fprintf(file, \"%2d \", value[14]);\r\n      else fprintf(file, \" . \");\r\n      /* accum green */\r\n      if (value[15]) fprintf(file, \"%2d \", value[15]);\r\n      else fprintf(file, \" . \");\r\n      /* accum blue */\r\n      if (value[16]) fprintf(file, \"%2d \", value[16]);\r\n      else fprintf(file, \" . \");\r\n      /* accum alpha */\r\n      if (value[17]) fprintf(file, \"%2d | \", value[17]);\r\n      else fprintf(file, \" . | \");\r\n      /* overlay */\r\n      if (value[21]) fprintf(file, \"%2d \", value[21]);\r\n      else fprintf(file, \" . \");\r\n      /* underlay */\r\n      if (value[22]) fprintf(file, \"%2d \", value[22]);\r\n      else fprintf(file, \" . \");\r\n      /* layer swap */\r\n      if (value[23]) fprintf(file, \"y \");\r\n      else fprintf(file, \" . \");\r\n      fprintf(file, \"|\\n\");\r\n    }\r\n    /* print table footer */\r\n    fprintf(file, \" +-----+-------------------------+-----------------+----------+-----------------+----------+\\n\");\r\n    fprintf(file, \" |     |          visual         |      color      | ax dp st |      accum      |   layer  |\\n\");\r\n    fprintf(file, \" |  id | tp ac gd fm db sw st ms |  sz  r  g  b  a | bf th cl |  sz  r  g  b  a | ov un sw |\\n\");\r\n    fprintf(file, \" +-----+-------------------------+-----------------+----------+-----------------+----------+\\n\");\r\n  }\r\n  else /* verbose */\r\n  {\r\n#if 0\r\n    fprintf(file, \"\\n\");\r\n    /* loop through all the pixel formats */\r\n    for(i = 1; i <= maxpf; i++)\r\n    {\t    \r\n      DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);\r\n      /* only describe this format if it supports OpenGL */\r\n      if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)\r\n\t || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;\r\n      fprintf(file, \"Visual ID: %2d  depth=%d  class=%s\\n\", i, pfd.cDepthBits, \r\n\t     pfd.cColorBits <= 8 ? \"PseudoColor\" : \"TrueColor\");\r\n      fprintf(file, \"    bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\\n\", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? \"rgba\" : \"ci\", pfd.dwFlags & PFD_DOUBLEBUFFER, pfd.dwFlags & PFD_STEREO);\r\n      fprintf(file, \"    generic=%d generic accelerated=%d\\n\", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);\r\n      fprintf(file, \"    rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\\n\", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);\r\n      fprintf(file, \"    auxBuffers=%d depthSize=%d stencilSize=%d\\n\", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);\r\n      fprintf(file, \"    accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\\n\", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);\r\n      fprintf(file, \"    multiSample=%d multisampleBuffers=%d\\n\", 0, 0);\r\n      fprintf(file, \"    Opaque.\\n\");\r\n    }\r\n#endif\r\n  }\r\n}\r\n\r\nvoid\r\nVisualInfoGDI (GLContext* ctx)\r\n{\r\n  int i, maxpf;\r\n  PIXELFORMATDESCRIPTOR pfd;\r\n\r\n  /* calling DescribePixelFormat() with NULL pfd (!!!) return maximum\r\n     number of pixel formats */\r\n  maxpf = DescribePixelFormat(ctx->dc, 1, 0, NULL);\r\n\r\n  if (!verbose)\r\n  {\r\n    fprintf(file, \"-----------------------------------------------------------------------------\\n\");\r\n    fprintf(file, \"   visual   x  bf  lv rg d st ge ge  r  g  b a  ax dp st   accum buffs    ms \\n\");\r\n    fprintf(file, \" id  dep tp sp sz  l  ci b ro ne ac sz sz sz sz bf th cl  sz  r  g  b  a ns b\\n\");\r\n    fprintf(file, \"-----------------------------------------------------------------------------\\n\");\r\n\r\n    /* loop through all the pixel formats */\r\n    for(i = 1; i <= maxpf; i++)\r\n    {\r\n      DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);\r\n      /* only describe this format if it supports OpenGL */\r\n      if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)\r\n\t || (drawableonly && (pfd.dwFlags & PFD_DRAW_TO_BITMAP))) continue;\r\n      /* other criteria could be tested here for actual pixel format\r\n\t choosing in an application:\r\n\t   \r\n\t for (...each pixel format...) {\r\n\t if (pfd.dwFlags & PFD_SUPPORT_OPENGL &&\r\n\t pfd.dwFlags & PFD_DOUBLEBUFFER &&\r\n\t pfd.cDepthBits >= 24 &&\r\n\t pfd.cColorBits >= 24)\r\n\t {\r\n\t goto found;\r\n\t }\r\n\t }\r\n\t ... not found so exit ...\r\n\t found:\r\n\t ... found so use it ...\r\n      */\r\n      /* print out the information for this pixel format */\r\n      fprintf(file, \"0x%02x \", i);\r\n      fprintf(file, \"%3d \", pfd.cColorBits);\r\n      if(pfd.dwFlags & PFD_DRAW_TO_WINDOW) fprintf(file, \"wn \");\r\n      else if(pfd.dwFlags & PFD_DRAW_TO_BITMAP) fprintf(file, \"bm \");\r\n      else fprintf(file, \"pb \");\r\n      /* should find transparent pixel from LAYERPLANEDESCRIPTOR */\r\n      fprintf(file, \" . \"); \r\n      fprintf(file, \"%3d \", pfd.cColorBits);\r\n      /* bReserved field indicates number of over/underlays */\r\n      if(pfd.bReserved) fprintf(file, \" %d \", pfd.bReserved);\r\n      else fprintf(file, \" . \"); \r\n      fprintf(file, \" %c \", pfd.iPixelType == PFD_TYPE_RGBA ? 'r' : 'c');\r\n      fprintf(file, \"%c \", pfd.dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.');\r\n      fprintf(file, \" %c \", pfd.dwFlags & PFD_STEREO ? 'y' : '.');\r\n      /* added: */\r\n      fprintf(file, \" %c \", pfd.dwFlags & PFD_GENERIC_FORMAT ? 'y' : '.');\r\n      fprintf(file, \" %c \", pfd.dwFlags & PFD_GENERIC_ACCELERATED ? 'y' : '.');\r\n      if(pfd.cRedBits && pfd.iPixelType == PFD_TYPE_RGBA) \r\n\tfprintf(file, \"%2d \", pfd.cRedBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cGreenBits && pfd.iPixelType == PFD_TYPE_RGBA) \r\n\tfprintf(file, \"%2d \", pfd.cGreenBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cBlueBits && pfd.iPixelType == PFD_TYPE_RGBA) \r\n\tfprintf(file, \"%2d \", pfd.cBlueBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAlphaBits && pfd.iPixelType == PFD_TYPE_RGBA) \r\n\tfprintf(file, \"%2d \", pfd.cAlphaBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAuxBuffers)     fprintf(file, \"%2d \", pfd.cAuxBuffers);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cDepthBits)      fprintf(file, \"%2d \", pfd.cDepthBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cStencilBits)    fprintf(file, \"%2d \", pfd.cStencilBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAccumBits)   fprintf(file, \"%3d \", pfd.cAccumBits);\r\n      else fprintf(file, \"  . \");\r\n      if(pfd.cAccumRedBits)   fprintf(file, \"%2d \", pfd.cAccumRedBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAccumGreenBits) fprintf(file, \"%2d \", pfd.cAccumGreenBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAccumBlueBits)  fprintf(file, \"%2d \", pfd.cAccumBlueBits);\r\n      else fprintf(file, \" . \");\r\n      if(pfd.cAccumAlphaBits) fprintf(file, \"%2d \", pfd.cAccumAlphaBits);\r\n      else fprintf(file, \" . \");\r\n      /* no multisample in win32 */\r\n      fprintf(file, \" . .\\n\");\r\n    }\r\n    /* print table footer */\r\n    fprintf(file, \"-----------------------------------------------------------------------------\\n\");\r\n    fprintf(file, \"   visual   x  bf  lv rg d st ge ge  r  g  b a  ax dp st   accum buffs    ms \\n\");\r\n    fprintf(file, \" id  dep tp sp sz  l  ci b ro ne ac sz sz sz sz bf th cl  sz  r  g  b  a ns b\\n\");\r\n    fprintf(file, \"-----------------------------------------------------------------------------\\n\");\r\n  }\r\n  else /* verbose */\r\n  {\r\n    fprintf(file, \"\\n\");\r\n    /* loop through all the pixel formats */\r\n    for(i = 1; i <= maxpf; i++)\r\n    {\t    \r\n      DescribePixelFormat(ctx->dc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);\r\n      /* only describe this format if it supports OpenGL */\r\n      if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)\r\n\t || (drawableonly && !(pfd.dwFlags & PFD_DRAW_TO_WINDOW))) continue;\r\n      fprintf(file, \"Visual ID: %2d  depth=%d  class=%s\\n\", i, pfd.cDepthBits, \r\n\t     pfd.cColorBits <= 8 ? \"PseudoColor\" : \"TrueColor\");\r\n      fprintf(file, \"    bufferSize=%d level=%d renderType=%s doubleBuffer=%ld stereo=%ld\\n\", pfd.cColorBits, pfd.bReserved, pfd.iPixelType == PFD_TYPE_RGBA ? \"rgba\" : \"ci\", pfd.dwFlags & PFD_DOUBLEBUFFER, pfd.dwFlags & PFD_STEREO);\r\n      fprintf(file, \"    generic=%d generic accelerated=%d\\n\", (pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT, (pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED);\r\n      fprintf(file, \"    rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\\n\", pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits);\r\n      fprintf(file, \"    auxBuffers=%d depthSize=%d stencilSize=%d\\n\", pfd.cAuxBuffers, pfd.cDepthBits, pfd.cStencilBits);\r\n      fprintf(file, \"    accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\\n\", pfd.cAccumRedBits, pfd.cAccumGreenBits, pfd.cAccumBlueBits, pfd.cAccumAlphaBits);\r\n      fprintf(file, \"    multiSample=%d multisampleBuffers=%d\\n\", 0, 0);\r\n      fprintf(file, \"    Opaque.\\n\");\r\n    }\r\n  }\r\n}\r\n\r\nvoid\r\nVisualInfo (GLContext* ctx)\r\n{\r\n  if (WGLEW_ARB_pixel_format)\r\n    VisualInfoARB(ctx);\r\n  else\r\n    VisualInfoGDI(ctx);\r\n}\r\n\r\n/* ---------------------------------------------------------------------- */\r\n\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n\r\nvoid\r\nVisualInfo (__attribute__((unused)) GLContext* ctx)\r\n{\r\n/*\r\n  int attrib[] = { AGL_RGBA, AGL_NONE };\r\n  AGLPixelFormat pf;\r\n  GLint value;\r\n  pf = aglChoosePixelFormat(NULL, 0, attrib);\r\n  while (pf != NULL)\r\n  {\r\n    aglDescribePixelFormat(pf, GL_RGBA, &value);\r\n    fprintf(stderr, \"%d\\n\", value);\r\n    pf = aglNextPixelFormat(pf);\r\n  }\r\n*/\r\n}\r\n\r\n/* ---------------------------------------------------------------------- */\r\n\r\n#elif defined(__HAIKU__)\r\n\r\nvoid\r\nVisualInfo (GLContext* ctx)\r\n{\r\n  /* TODO */\r\n}\r\n\r\n#else /* GLX */\r\n\r\nvoid\r\nVisualInfo (GLContext* ctx)\r\n{\r\n  int n_fbc;\r\n  GLXFBConfig* fbc;\r\n  int value, ret, i;\r\n\r\n  fbc = glXGetFBConfigs(ctx->dpy, DefaultScreen(ctx->dpy), &n_fbc);\r\n\r\n  if (fbc)\r\n  {\r\n    if (!verbose)\r\n    {\r\n      /* print table header */\r\n      fprintf(file, \" +-----+-------------------------+-----------------+----------+-------------+-------+------+\\n\");\r\n      fprintf(file, \" |     |        visual           |      color      | ax dp st |    accum    |   ms  |  cav |\\n\");\r\n      fprintf(file, \" |  id | tp xr cl fm db st lv xp |  sz  r  g  b  a | bf th cl | r  g  b  a  | ns  b |  eat |\\n\");\r\n      fprintf(file, \" +-----+-------------------------+-----------------+----------+-------------+-------+------+\\n\");\r\n      /* loop through all the fbcs */\r\n      for (i=0; i<n_fbc; i++)\r\n      {\r\n        /* print out the information for this fbc */\r\n        /* visual id */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FBCONFIG_ID, &value);\r\n        if (ret != Success)\r\n        {\r\n          fprintf(file, \"|  ?  |\");\r\n        }\r\n        else\r\n        {\r\n          fprintf(file, \" |% 4d | \", value);\r\n        }\r\n        /* visual type */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DRAWABLE_TYPE, &value);\r\n        if (ret != Success)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value & GLX_WINDOW_BIT)\r\n          {\r\n            if (value & GLX_PBUFFER_BIT)\r\n            {\r\n              fprintf(file, \"wp \");\r\n            }\r\n            else\r\n            {\r\n              fprintf(file, \"wn \");\r\n            }\r\n          }\r\n          else\r\n          {\r\n            if (value & GLX_PBUFFER_BIT)\r\n            {\r\n              fprintf(file, \"pb \");\r\n            }\r\n            else if (value & GLX_PIXMAP_BIT)\r\n            {\r\n              fprintf(file, \"pm \");\r\n            }\r\n            else\r\n            {\r\n              fprintf(file, \" ? \");\r\n            }\r\n          }\r\n        }\r\n        /* x renderable */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_RENDERABLE, &value);\r\n        if (ret != Success)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          fprintf(file, value ? \" y \" : \" n \");\r\n        }\r\n        /* class */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_X_VISUAL_TYPE, &value);\r\n        if (ret != Success)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (GLX_TRUE_COLOR == value)\r\n            fprintf(file, \"tc \");\r\n          else if (GLX_DIRECT_COLOR == value)\r\n            fprintf(file, \"dc \");\r\n          else if (GLX_PSEUDO_COLOR == value)\r\n            fprintf(file, \"pc \");\r\n          else if (GLX_STATIC_COLOR == value)\r\n            fprintf(file, \"sc \");\r\n          else if (GLX_GRAY_SCALE == value)\r\n            fprintf(file, \"gs \");\r\n          else if (GLX_STATIC_GRAY == value)\r\n            fprintf(file, \"sg \");\r\n          else if (GLX_X_VISUAL_TYPE == value)\r\n            fprintf(file, \" . \");\r\n          else\r\n            fprintf(file, \" ? \");\r\n        }\r\n        /* format */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RENDER_TYPE, &value);\r\n        if (ret != Success)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (GLXEW_NV_float_buffer)\r\n          {\r\n            int ret2, value2;\r\n            ret2 = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_FLOAT_COMPONENTS_NV, &value2);\r\n            if (Success == ret2 && GL_TRUE == value2)\r\n            {\r\n              fprintf(file, \" f \");\r\n            }\r\n            else if (value & GLX_RGBA_BIT)\r\n              fprintf(file, \" i \");\r\n            else if (value & GLX_COLOR_INDEX_BIT)\r\n              fprintf(file, \" c \");\r\n            else\r\n              fprintf(file, \" ? \");\r\n          }\r\n          else\r\n          {\r\n            if (value & GLX_RGBA_FLOAT_ATI_BIT)\r\n              fprintf(file, \" f \");\r\n            else if (value & GLX_RGBA_BIT)\r\n              fprintf(file, \" i \");\r\n            else if (value & GLX_COLOR_INDEX_BIT)\r\n              fprintf(file, \" c \");\r\n            else\r\n              fprintf(file, \" ? \");\r\n          }\r\n        }\r\n        /* double buffer */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DOUBLEBUFFER, &value);\r\n        fprintf(file, \" %c \", Success != ret ? '?' : (value ? 'y' : '.'));\r\n        /* stereo */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STEREO, &value);\r\n        fprintf(file, \" %c \", Success != ret ? '?' : (value ? 'y' : '.'));\r\n        /* level */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_LEVEL, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          fprintf(file, \"%2d \", value);\r\n        }\r\n        /* transparency */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_TRANSPARENT_TYPE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? | \");\r\n        }\r\n        else\r\n        {\r\n          if (GLX_TRANSPARENT_RGB == value)\r\n            fprintf(file, \" r | \");\r\n          else if (GLX_TRANSPARENT_INDEX == value)\r\n            fprintf(file, \" i | \");\r\n          else if (GLX_NONE == value)\r\n            fprintf(file, \" . | \");\r\n          else\r\n            fprintf(file, \" ? | \");\r\n        }\r\n        /* color size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BUFFER_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \"  ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%3d \", value);\r\n          else\r\n            fprintf(file, \"  . \");\r\n        }\r\n        /* red size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_RED_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* green size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_GREEN_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* blue size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_BLUE_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* alpha size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ALPHA_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? | \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d | \", value);\r\n          else\r\n            fprintf(file, \" . | \");\r\n        }\r\n        /* aux buffers */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_AUX_BUFFERS, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* depth size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_DEPTH_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* stencil size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_STENCIL_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? | \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d | \", value);\r\n          else\r\n            fprintf(file, \" . | \");\r\n        }\r\n        /* accum red size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_RED_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* accum green size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_GREEN_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* accum blue size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_BLUE_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d \", value);\r\n          else\r\n            fprintf(file, \" . \");\r\n        }\r\n        /* accum alpha size */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_ACCUM_ALPHA_SIZE, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? | \");\r\n        }\r\n        else\r\n        {\r\n          if (value)\r\n            fprintf(file, \"%2d | \", value);\r\n          else\r\n            fprintf(file, \" . | \");\r\n        }\r\n        /* multisample */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLES, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? \");\r\n        }\r\n        else\r\n        {\r\n          fprintf(file, \"%2d \", value);\r\n        }\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_SAMPLE_BUFFERS, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \" ? | \");\r\n        }\r\n        else\r\n        {\r\n          fprintf(file, \"%2d | \", value);\r\n        }\r\n        /* caveat */\r\n        ret = glXGetFBConfigAttrib(ctx->dpy, fbc[i], GLX_CONFIG_CAVEAT, &value);\r\n        if (Success != ret)\r\n        {\r\n          fprintf(file, \"???? |\");\r\n        }\r\n        else\r\n        {\r\n          if (GLX_NONE == value)\r\n            fprintf(file, \"none |\\n\");\r\n          else if (GLX_SLOW_CONFIG == value)\r\n            fprintf(file, \"slow |\\n\");\r\n          else if (GLX_NON_CONFORMANT_CONFIG == value)\r\n            fprintf(file, \"ncft |\\n\");\r\n          else\r\n            fprintf(file, \"???? |\\n\");\r\n        }\r\n      }\r\n      /* print table footer */\r\n      fprintf(file, \" +-----+-------------------------+-----------------+----------+-------------+-------+------+\\n\");\r\n      fprintf(file, \" |  id | tp xr cl fm db st lv xp |  sz  r  g  b  a | bf th cl | r  g  b  a  | ns  b |  eat |\\n\");\r\n      fprintf(file, \" |     |        visual           |      color      | ax dp st |    accum    |   ms  |  cav |\\n\");\r\n      fprintf(file, \" +-----+-------------------------+-----------------+----------+-------------+-------+------+\\n\");\r\n    }\r\n  }\r\n}\r\n\r\n#endif\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#if defined(GLEW_OSMESA)\r\nvoid InitContext (GLContext* ctx)\r\n{\r\n  ctx->ctx = NULL;\r\n}\r\n\r\nstatic const GLint osmFormat = GL_UNSIGNED_BYTE;\r\nstatic const GLint osmWidth = 640;\r\nstatic const GLint osmHeight = 480;\r\nstatic GLubyte *osmPixels = NULL;\r\n\r\nGLboolean CreateContext (GLContext* ctx)\r\n{\r\n  if (NULL == ctx) return GL_TRUE;\r\n  ctx->ctx = OSMesaCreateContext(OSMESA_RGBA, NULL);\r\n  if (NULL == ctx->ctx) return GL_TRUE;\r\n  if (NULL == osmPixels)\r\n  {\r\n    osmPixels = (GLubyte *) calloc(osmWidth*osmHeight*4, 1);\r\n  }\r\n  if (!OSMesaMakeCurrent(ctx->ctx, osmPixels, GL_UNSIGNED_BYTE, osmWidth, osmHeight))\r\n  {\r\n      return GL_TRUE;\r\n  }\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid DestroyContext (GLContext* ctx)\r\n{\r\n  if (NULL == ctx) return;\r\n  if (NULL != ctx->ctx) OSMesaDestroyContext(ctx->ctx);\r\n}\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(GLEW_EGL)\r\nvoid InitContext (GLContext* ctx)\r\n{\r\n  ctx->ctx = NULL;\r\n}\r\n\r\nGLboolean CreateContext (GLContext* ctx)\r\n{\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid DestroyContext (GLContext* ctx)\r\n{\r\n  if (NULL == ctx) return;\r\n  return;\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(_WIN32)\r\n\r\nvoid InitContext (GLContext* ctx)\r\n{\r\n  ctx->wnd = NULL;\r\n  ctx->dc = NULL;\r\n  ctx->rc = NULL;\r\n}\r\n\r\nGLboolean CreateContext (GLContext* ctx)\r\n{\r\n  WNDCLASS wc;\r\n  PIXELFORMATDESCRIPTOR pfd;\r\n  /* check for input */\r\n  if (NULL == ctx) return GL_TRUE;\r\n  /* register window class */\r\n  ZeroMemory(&wc, sizeof(WNDCLASS));\r\n  wc.hInstance = GetModuleHandle(NULL);\r\n  wc.lpfnWndProc = DefWindowProc;\r\n  wc.lpszClassName = \"GLEW\";\r\n  if (0 == RegisterClass(&wc)) return GL_TRUE;\r\n  /* create window */\r\n  ctx->wnd = CreateWindow(\"GLEW\", \"GLEW\", 0, CW_USEDEFAULT, CW_USEDEFAULT, \r\n                          CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, \r\n                          GetModuleHandle(NULL), NULL);\r\n  if (NULL == ctx->wnd) return GL_TRUE;\r\n  /* get the device context */\r\n  ctx->dc = GetDC(ctx->wnd);\r\n  if (NULL == ctx->dc) return GL_TRUE;\r\n  /* find pixel format */\r\n  ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));\r\n  if (visual == -1) /* find default */\r\n  {\r\n    pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);\r\n    pfd.nVersion = 1;\r\n    pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;\r\n    visual = ChoosePixelFormat(ctx->dc, &pfd);\r\n    if (0 == visual) return GL_TRUE;\r\n  }\r\n  /* set the pixel format for the dc */\r\n  if (FALSE == SetPixelFormat(ctx->dc, visual, &pfd)) return GL_TRUE;\r\n  /* create rendering context */\r\n  ctx->rc = wglCreateContext(ctx->dc);\r\n  if (NULL == ctx->rc) return GL_TRUE;\r\n  if (FALSE == wglMakeCurrent(ctx->dc, ctx->rc)) return GL_TRUE;\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid DestroyContext (GLContext* ctx)\r\n{\r\n  if (NULL == ctx) return;\r\n  if (NULL != ctx->rc) wglMakeCurrent(NULL, NULL);\r\n  if (NULL != ctx->rc) wglDeleteContext(wglGetCurrentContext());\r\n  if (NULL != ctx->wnd && NULL != ctx->dc) ReleaseDC(ctx->wnd, ctx->dc);\r\n  if (NULL != ctx->wnd) DestroyWindow(ctx->wnd);\r\n  UnregisterClass(\"GLEW\", GetModuleHandle(NULL));\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)\r\n\r\nvoid InitContext (GLContext* ctx)\r\n{\r\n  ctx->ctx = NULL;\r\n  ctx->octx = NULL;\r\n}\r\n\r\nGLboolean CreateContext (GLContext* ctx)\r\n{\r\n  CGLPixelFormatAttribute attrib[] = { kCGLPFAAccelerated, 0 };\r\n  CGLPixelFormatObj pf;\r\n  GLint npix;\r\n  CGLError error;\r\n  /* check input */\r\n  if (NULL == ctx) return GL_TRUE;\r\n  error = CGLChoosePixelFormat(attrib, &pf, &npix);\r\n  if (error) return GL_TRUE;\r\n  error = CGLCreateContext(pf, NULL, &ctx->ctx);\r\n  if (error) return GL_TRUE;\r\n  CGLReleasePixelFormat(pf);\r\n  ctx->octx = CGLGetCurrentContext();\r\n  error = CGLSetCurrentContext(ctx->ctx);\r\n  if (error) return GL_TRUE;\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid DestroyContext (GLContext* ctx)\r\n{\r\n  if (NULL == ctx) return;\r\n  CGLSetCurrentContext(ctx->octx);\r\n  if (NULL != ctx->ctx) CGLReleaseContext(ctx->ctx);\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#elif defined(__HAIKU__)\r\n\r\nvoid\r\nInitContext (GLContext* ctx)\r\n{\r\n  /* TODO */\r\n}\r\n\r\nGLboolean\r\nCreateContext (GLContext* ctx)\r\n{\r\n  /* TODO */\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid\r\nDestroyContext (GLContext* ctx)\r\n{\r\n  /* TODO */\r\n}\r\n\r\n/* ------------------------------------------------------------------------ */\r\n\r\n#else /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */\r\n\r\nvoid InitContext (GLContext* ctx)\r\n{\r\n  ctx->dpy = NULL;\r\n  ctx->vi = NULL;\r\n  ctx->ctx = NULL;\r\n  ctx->wnd = 0;\r\n  ctx->cmap = 0;\r\n}\r\n\r\nGLboolean CreateContext (GLContext* ctx)\r\n{\r\n  int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None };\r\n  int erb, evb;\r\n  XSetWindowAttributes swa;\r\n  /* check input */\r\n  if (NULL == ctx) return GL_TRUE;\r\n  /* open display */\r\n  ctx->dpy = XOpenDisplay(display);\r\n  if (NULL == ctx->dpy) return GL_TRUE;\r\n  /* query for glx */\r\n  if (!glXQueryExtension(ctx->dpy, &erb, &evb)) return GL_TRUE;\r\n  /* choose visual */\r\n  ctx->vi = glXChooseVisual(ctx->dpy, DefaultScreen(ctx->dpy), attrib);\r\n  if (NULL == ctx->vi) return GL_TRUE;\r\n  /* create context */\r\n  ctx->ctx = glXCreateContext(ctx->dpy, ctx->vi, None, True);\r\n  if (NULL == ctx->ctx) return GL_TRUE;\r\n  /* create window */\r\n  /*wnd = XCreateSimpleWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 1, 1, 1, 0, 0);*/\r\n  ctx->cmap = XCreateColormap(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen),\r\n                              ctx->vi->visual, AllocNone);\r\n  swa.border_pixel = 0;\r\n  swa.colormap = ctx->cmap;\r\n  ctx->wnd = XCreateWindow(ctx->dpy, RootWindow(ctx->dpy, ctx->vi->screen), \r\n                           0, 0, 1, 1, 0, ctx->vi->depth, InputOutput, ctx->vi->visual, \r\n                           CWBorderPixel | CWColormap, &swa);\r\n  /* make context current */\r\n  if (!glXMakeCurrent(ctx->dpy, ctx->wnd, ctx->ctx)) return GL_TRUE;\r\n  return GL_FALSE;\r\n}\r\n\r\nvoid DestroyContext (GLContext* ctx)\r\n{\r\n  if (NULL != ctx->dpy && NULL != ctx->ctx) glXDestroyContext(ctx->dpy, ctx->ctx);\r\n  if (NULL != ctx->dpy && 0 != ctx->wnd) XDestroyWindow(ctx->dpy, ctx->wnd);\r\n  if (NULL != ctx->dpy && 0 != ctx->cmap) XFreeColormap(ctx->dpy, ctx->cmap);\r\n  if (NULL != ctx->vi) XFree(ctx->vi);\r\n  if (NULL != ctx->dpy) XCloseDisplay(ctx->dpy);\r\n}\r\n\r\n#endif /* __UNIX || (__APPLE__ && GLEW_APPLE_GLX) */\r\n\r\nGLboolean ParseArgs (int argc, char** argv)\r\n{\r\n  int p = 0;\r\n  while (p < argc)\r\n  {\r\n#if defined(_WIN32)\r\n    if (!strcmp(argv[p], \"-pf\") || !strcmp(argv[p], \"-pixelformat\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      display = NULL;\r\n      visual = strtol(argv[p], NULL, 0);\r\n    }\r\n    else if (!strcmp(argv[p], \"-a\"))\r\n    {\r\n      showall = 1;\r\n    }\r\n    else if (!strcmp(argv[p], \"-s\"))\r\n    {\r\n      displaystdout = 1;\r\n    }\r\n    else if (!strcmp(argv[p], \"-h\"))\r\n    {\r\n      return GL_TRUE;\r\n    }\r\n    else\r\n      return GL_TRUE;\r\n#else\r\n    if (!strcmp(argv[p], \"-display\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      display = argv[p];\r\n    }\r\n    else if (!strcmp(argv[p], \"-visual\"))\r\n    {\r\n      if (++p >= argc) return GL_TRUE;\r\n      visual = (int)strtol(argv[p], NULL, 0);\r\n    }\r\n    else if (!strcmp(argv[p], \"-h\"))\r\n    {\r\n      return GL_TRUE;\r\n    }\r\n    else\r\n      return GL_TRUE;\r\n#endif\r\n    p++;\r\n  }\r\n  return GL_FALSE;\r\n}\r\n"
  },
  {
    "path": "custom_backend/glfw_example.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"glfw/fbg_glfw.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_glfwSetup(800, 600, 4, \"glfw example\", 0, 0, 1);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    // struct _fbg_glfw_context *glfw_context = fbg->user_context;\n    // note: when SSAA argument of fbg_glfwSetup is set higher than 1 fbg->width may return more than the display resolution due to this upscale factor\n    //       so if you need to refer to the real display width / height you must then use glfw_context->width / glfw_context->height\n    //       and use fbg->width / fbg->height when you refer to the fbg drawing context\n\n    float x = 0, y = 0, velx = 3.4, vely = 3.425;\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_glfwClear();\n        \n        fbg_clear(fbg, 0);\n\n        fbg_rect(fbg, x, y, 40, 40, 255, 0, 0);\n\n        fbg_line(fbg, 0, 0, fbg->width - 1, fbg->height-1, 255, 255, 255);\n        int vertices[6] = {100, 100, 200, 100, 100, 200};\n        fbg_polygon(fbg, 3, &vertices[0], 255, 0, 0);\n\n        fbg_draw(fbg);\n        fbg_flip(fbg);\n\n        x += velx;\n        y += vely;\n\n        if (x <= 0) {\n            x = 0;\n            velx = -velx;\n        } else if (x > fbg->width - 40) {\n            x = fbg->width - 40;\n            velx = -velx;\n        }\n\n        if (y <= 0) {\n            y = 0;\n            vely = -vely;\n        } else if (y > fbg->height - 40) {\n            y = fbg->height - 40;\n            vely = -vely;\n        }\n    } while (keep_running && !fbg_glfwShouldClose(fbg));\n\n    fbg_close(fbg);\n}\n"
  },
  {
    "path": "custom_backend/glfw_example_advanced.c",
    "content": "/*\n Advanced FBG GLFW example\n\n FBG HSL feedback effect from FBG content + standard OpenGL content.\n\n Also show how to override the fragment & vertex shader used to draw the FBG content.\n\n This use the cglm library for all the 3D math https://github.com/recp/cglm\n This use the cwobj library to load .obj files https://github.com/grz0zrg/cwobj\n*/\n\n#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include <cglm/cglm.h>\n\n#include \"glfw/fbg_glfw.h\"\n#include \"cwobj/cwobj.h\"\n\n#define pcount (2048 * 4)\n\nfloat points[pcount];\n\nmat4 proj;\n\nstruct _fbg_img *img = NULL;\nGLint ires_loc;\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nvoid generatePoints(struct _fbg *fbg) {\n    for (int i = 0; i < pcount; i += 4) {\n        float vx = fbg_randf(-1, 1);\n        float vy = fbg_randf(-0.005, 0.005);\n\n        points[i] = fbg_randf(vx, fbg->width - vx);\n        points[i + 1] = fbg_randf(vy, fbg->height - vy);\n\n        points[i + 2] = vx;\n        points[i + 3] = vy;\n    }\n}\n\nvoid onResize(struct _fbg *fbg, unsigned int new_width, unsigned int new_height) {\n    fbg_freeImage(img);\n    img = fbg_createImage(fbg, new_width, new_height);\n\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n\n    glUseProgram(glfw_context->simple_program);\n    glUniform2f(ires_loc, new_width, new_height);\n\n    // update proj matrix\n    glm_perspective(glm_rad(45.0f), (float)new_width / (float)new_height, 0.1f, 100.0f, proj);\n\n    generatePoints(fbg);\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_glfwSetup(800, 600, 3, \"glfw example\", 0, 0, 1);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    glfwWindowHint(GLFW_SAMPLES, 4);\n\n    srand((unsigned int)time(NULL));\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n    struct _fbg_img *bone_image = fbg_loadPNG(fbg, \"bone.png\");\n\n    GLuint bone_texture = fbg_glfwCreateTextureFromImage(fbg, bone_image);\n    glBindTexture(GL_TEXTURE_2D, bone_texture);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\n    glGenerateMipmap(GL_TEXTURE_2D);\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    img = fbg_createImage(fbg, fbg->width, fbg->height);\n\n    signal(SIGINT, int_handler);\n\n    generatePoints(fbg);\n\n    float motion = 0;\n\n    struct _fbg_rgb color, color2;\n\n    // we must resize the image upon a FBG resize event since we render the screen into it, we must also update the proj matrix and update some uniforms\n    fbg_setResizeCallback(fbg, onResize);\n\n    // override the internal fragment & vertex shader used to draw the FBG buffer\n    struct _fbg_glfw_context *glfw_context = fbg->user_context;\n    glDeleteProgram(glfw_context->simple_program);\n    glfw_context->simple_program = fbg_glfwCreateProgramFromFiles(\"advanced.vert\", \"advanced.frag\", NULL);\n\n    // we bind some uniforms\n    glUseProgram(glfw_context->simple_program);\n    GLint itime_loc = glGetUniformLocation(glfw_context->simple_program, \"iTime\");\n    GLint imouse_loc = glGetUniformLocation(glfw_context->simple_program, \"iMouse\");\n    ires_loc = glGetUniformLocation(glfw_context->simple_program, \"iResolution\");\n    glUniform1f(itime_loc, 0);\n    glUniform2f(ires_loc, fbg->width, fbg->height);\n\n    // we change the FBG texture to linear\n    glBindTexture(GL_TEXTURE_2D, glfw_context->fbg_texture);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\n    glGenerateMipmap(GL_TEXTURE_2D);\n\n    // we load a cube as a .obj file (this is handled by the cwobj library which is a small single C header obj library)\n    cwobj *cube_mesh = cwobj_load(\"bad_skull.obj\", NULL);\n    cwobj_geo *cube_geo = cube_mesh->geometry;\n    GLuint cube_vao = fbg_glfwCreateVAO(cube_geo->indice_n, &cube_geo->indice[0], sizeof(CWOBJ_INDICE_TYPE),\n                                        cube_geo->vertice_n, &cube_geo->vertice[0],\n                                        cube_geo->texcoord_n, &cube_geo->texcoord[0],\n                                        cube_geo->normal_n, &cube_geo->normal[0],\n                                        cube_geo->color_n, &cube_geo->color[0]);\n\n    // load a simple shader to handle our cube\n    GLuint program_3d = fbg_glfwCreateProgramFromFiles(\"advanced_3d.vert\", \"advanced_3d.frag\", NULL);\n    glUseProgram(program_3d);\n    GLint m_loc = glGetUniformLocation(program_3d, \"m\");\n    GLint v_loc = glGetUniformLocation(program_3d, \"v\");\n    GLint p_loc = glGetUniformLocation(program_3d, \"p\");\n\n    GLuint texLoc = glGetUniformLocation(program_3d, \"t0\");\n    glUniform1i(texLoc, 0);\n    texLoc = glGetUniformLocation(program_3d, \"t1\");\n    glUniform1i(texLoc, 1);\n\n    // setup regular MVP for 3D stuff\n    mat4 view, model;\n\n    glm_perspective(glm_rad(45.0f), (float)fbg->width / (float)fbg->height, 0.1f, 100.0f, proj);\n    glm_lookat((vec3){0.0f, 0.0f, 12.0f}, (vec3){0.0f, 0.0f, 0.0f}, (vec3){0.0f, 1.0f, 0.0f}, view);\n    glm_mat4_identity(model);\n\n    do {\n        //fbg_clear(fbg, 0);\n        fbg_glfwClear();\n\n        fbg_image(fbg, img, 0, 0);\n\n        fbg_drawInto(fbg, img->data);\n\n        fbg_fadeDown(fbg, 1);\n\n        int c = 0;\n        for (int i = 0; i < pcount; i += 4) {\n            float x = points[i];\n            float y = points[i + 1];\n\n            if (x <= 0) {\n                points[i] = fbg->width - 1;\n            }\n\n            if (x >= fbg->width - 1) {\n                points[i] = 0;\n            }\n\n            if (y <= 0) {\n                points[i + 1] = fbg->height - 1;\n            }\n\n            if (y >= fbg->height - 1) {\n                points[i + 1] = 0;\n            }\n\n            float vx = points[i + 2];\n            float vy = points[i + 3];\n\n            fbg_hslToRGB(&color, abs(sin(x / (float)fbg->width * 3.1415 / 2) * 360), fbg_randf(0.5f, 1), 0.5f);\n\n            fbg_getPixel(fbg, x, y, &color2);\n\n            fbg_recta(fbg, x, y, 1, 1, (color.r + color2.r) / 2, (color.g + color2.g) / 2, (color.b + color2.b) / 2, i % 255);\n\n            points[i] += vx;\n            points[i + 1] += vy;\n            \n            c += 1;\n        }\n\n        fbg_drawInto(fbg, NULL);\n\n        fbg_write(fbg, \"FPS:\", 4, 2);\n        fbg_write(fbg, fbg->fps_char, 32 + 8, 2);\n\n        // show the cube over the FBG content\n        glDisable(GL_DEPTH_TEST);\n\n        //glEnable(GL_BLEND);  \n        //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA);\n\n        fbg_draw(fbg);\n\n        // OpenGL stuff\n        glDisable(GL_CULL_FACE);\n        glEnable(GL_DEPTH_TEST);\n        glDepthFunc(GL_LESS);\n\n        glBindVertexArray(cube_vao);\n        glUseProgram(program_3d);\n\n        float scale_motion = 2.75 + fabsf(sin(motion / 24.) / 8.) * 28.;\n\n        glm_translate_make(model, (vec3){0., 0., scale_motion});\n        glm_rotate(model, sin(motion / 8.), (vec3){0., 1., 0.25});\n        glm_rotate(model, cos(motion / 14.) / 2., (vec3){1., 1., 1.});\n\n        //glm_scale(model, (vec3){scale_motion, scale_motion, scale_motion});\n        \n\n        // upload M V P as separate components\n        //glm_mat4_mulN((mat4 *[]){&proj, &view}, 2, vp);\n        glUniformMatrix4fv(v_loc, 1, GL_FALSE, (float *)view);\n        glUniformMatrix4fv(p_loc, 1, GL_FALSE, (float *)proj);\n        glUniformMatrix4fv(m_loc, 1, GL_FALSE, (float *)model);\n\n        glActiveTexture(GL_TEXTURE0);\n        glBindTexture(GL_TEXTURE_2D, glfw_context->fbg_texture);\n        glActiveTexture(GL_TEXTURE1);\n        glBindTexture(GL_TEXTURE_2D, bone_texture);\n        glDrawElements(GL_TRIANGLES, cube_geo->indice_n, GL_UNSIGNED_INT, (void*)0);\n\n        glBindVertexArray(0);\n        glUseProgram(0);\n        //\n\n        fbg_flip(fbg);\n\n        motion += 0.5f;\n\n        // update our uniforms\n        glUseProgram(glfw_context->simple_program);\n        glUniform1f(itime_loc, glfwGetTime());\n\n        double xpos, ypos;\n        glfwGetCursorPos(glfw_context->window, &xpos, &ypos);\n        glUniform4f(imouse_loc, xpos, ypos, 0, 0);\n\n    } while (keep_running && !fbg_glfwShouldClose(fbg));\n\n    cwobj_free(cube_mesh);\n\n    glDeleteProgram(program_3d);\n\n    glDeleteVertexArrays(1, &cube_vao);\n\n    glDeleteTextures(1, &bone_texture);\n\n    fbg_freeImage(img);\n    fbg_freeImage(bone_image);\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}\n"
  },
  {
    "path": "custom_backend/glfw_lua.c",
    "content": "/**\n  * Advanced example which use Lua scripting language to provide a sort of multithreaded Processing-like environment\n  * to build FB Graphics graphical sketches from a Lua script without the need to compile any C code.\n  *\n  * This use 8 cores, all threads (fbg fragments) have their own Lua state and call the Lua draw() function at each frames\n  *\n  * See 'sketch.lua'\n  *\n  * This could be extended to be a complete Processing-like environment easily.\n  *\n  * Note : It only offer clear / rect and image functions inside Lua code and the compositing function is useless (not yet complete)\n  */\n\n#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <math.h>\n#include <string.h>\n\n#include \"glfw/fbg_glfw.h\"\n\n#include <lualib.h>\n#include <lauxlib.h>\n#include \"luajit.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// fbg specific LUA code that we add automatically to any loaded LUA scripts\n// this actually expose a sample of the C fbg library to the LUA script with short function name matching the Processing language\nconst char *fbg_lua_header = \"local ffi = require(\\\"ffi\\\")\\n\"\n                             \"local fbg = ffi.load(\\\"./libfbg.so\\\")\\n\"\n                             \"ffi.cdef[[\\n\"\n                             \"void fbg_background(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b);\\n\"\n                             \"void fbg_frect(struct _fbg *fbg, int x, int y, int w, int h);\\n\"\n                             \"void fbg_fill(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b);\\n\"\n                             \"struct _fbg_img *fbg_loadImage(struct _fbg *fbg, const char *filename);\\n\"\n                             \"void fbg_image(struct _fbg *fbg, struct _fbg_img *img, int x, int y);\\n\"\n                             \"]]\\n\"\n                             // short function names definition (Processing-like interface)\n                             \"function background (r, g, b) fbg.fbg_background(C_fbg, r, g, b) end\\n\"\n                             \"function rect (x, y, w, h, r, g, b) fbg.fbg_frect(C_fbg, x, y, w, h) end\\n\"\n                             \"function fill (r, g, b) fbg.fbg_fill(C_fbg, r, g, b) end\\n\"\n                             \"function loadImage (filename) return fbg.fbg_loadImage(C_fbg, filename) end\\n\"\n                             \"function image (img, x, y) fbg.fbg_image(C_fbg, img, x, y) end\\n\"\n                             \"\\n\\n\";\n\nstruct _fragment_user_data {\n    lua_State *lua_state;\n};\n\nstruct _file_data {\n    char *buffer;\n    long numbytes;\n};\n\n// load a file into a buffer with reserved space for a header\nstruct _file_data *loadFileInBuffer(const char *filename, size_t header_size) {\n    FILE *f = fopen(filename, \"r\");\n\n    if (f == NULL) {\n        return NULL;\n    }\n\n    fseek(f, 0L, SEEK_END);\n    long numbytes = ftell(f);\n\n    fseek(f, 0L, SEEK_SET);\n\n    struct _file_data *fd = (struct _file_data *)malloc(sizeof(struct _file_data));\n    if (fd == NULL) {\n        fclose(f);\n\n        return NULL;\n    }\n\n    fd->numbytes = numbytes;\n\n    fd->buffer = (char*)calloc(numbytes + header_size, sizeof(char));\n    if (fd->buffer == NULL) {\n        fclose(f);\n\n        free(fd);\n\n        return NULL;\n    }\n\n    int br = fread(&fd->buffer[header_size], sizeof(char), numbytes, f);\n    if (br != numbytes) {\n        free(fd->buffer);\n        fclose(f);\n\n        free(fd);\n\n        return NULL;\n    }\n    fclose(f);\n\n    return fd;\n}\n\n// load a 'sketch', a lua script that will get evaluated per fragments (dedicated graphics thread)\nstruct _fragment_user_data *loadSketch(const char *sketch_filename) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    // we create a new lua state per thread\n    user_data->lua_state = luaL_newstate();\n\n    luaL_openlibs(user_data->lua_state);\n\n    size_t header_size = strlen(fbg_lua_header);\n\n    // load file in memory\n    struct _file_data *sketch_content = loadFileInBuffer(sketch_filename, header_size);\n    if (sketch_content == NULL) {\n        printf(\"Couldn't load file: %s\\n\", lua_tostring(user_data->lua_state, -1));\n        fflush(stdout);\n\n        lua_close(user_data->lua_state);\n\n        free(user_data);\n\n        return NULL;\n    }\n\n    // add our fbg specific Lua code\n    memcpy(sketch_content->buffer, fbg_lua_header, header_size);\n\n    // pass buffer to Lua\n    int status = luaL_loadbuffer(user_data->lua_state, sketch_content->buffer, sketch_content->numbytes + header_size, \"sketch_filename\");\n    if (status) {\n        printf(\"luaL_loadbuffer failed: %s\\n\", lua_tostring(user_data->lua_state, -1));\n        fflush(stdout);\n\n        free(sketch_content->buffer);\n        free(sketch_content);\n\n        lua_close(user_data->lua_state);\n\n        free(user_data);\n\n        return NULL;\n    }\n\n    // file data no more needed\n    free(sketch_content->buffer);\n    free(sketch_content);\n\n    // eval script\n    lua_pcall(user_data->lua_state, 0, 0, 0);\n\n    return user_data;\n}\n\nvoid freeSketch(struct _fragment_user_data *user_data) {\n    lua_close(user_data->lua_state);\n\n    free(user_data);\n}\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *sketch = loadSketch(\"sketch.lua\");\n\n    if (sketch == NULL) {\n        return NULL;\n    }\n\n    // register global variables (for fbg context stuff that we will need for our drawing operations)\n    lua_pushlightuserdata(sketch->lua_state, fbg);\n    lua_setglobal(sketch->lua_state, \"C_fbg\");\n\n    lua_pushnumber(sketch->lua_state, fbg->task_id);\n    lua_setglobal(sketch->lua_state, \"C_frag_id\");\n\n    lua_pushnumber(sketch->lua_state, fbg->parallel_tasks);\n    lua_setglobal(sketch->lua_state, \"C_frag_len\");\n\n    lua_pushnumber(sketch->lua_state, fbg->size);\n    lua_setglobal(sketch->lua_state, \"C_size\");\n\n    lua_pushnumber(sketch->lua_state, fbg->width);\n    lua_setglobal(sketch->lua_state, \"C_width\");\n\n    lua_pushnumber(sketch->lua_state, fbg->height);\n    lua_setglobal(sketch->lua_state, \"C_height\");\n\n    return sketch;\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n    \n    if (!ud) {\n        return;\n    }\n\n    // evaluate sketch draw function\n    lua_getglobal(ud->lua_state, \"draw\");\n    lua_pcall(ud->lua_state, 0, 0, 0);\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    freeSketch(ud);\n}\n\nstruct _fragment_user_data *main_sketch = NULL;\n\nvoid fbg_compositing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    // this doesn't work yet (the idea is to allow compositing function to be defined from the Lua script)\n    lua_getglobal(main_sketch->lua_state, \"compositing\");\n    lua_pcall(main_sketch->lua_state, 0, 0, 0);\n\n    for (int j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = fbg->back_buffer[j] + buffer[j];\n    }\n}\n\nint program() {\n    struct _fbg *fbg = fbg_glfwSetup(800, 600, 3, \"glfw example\", 0, 0, 1);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadImage(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 7);\n\n    srand(time(NULL));\n\n    signal(SIGINT, int_handler);\n\n    main_sketch = fragmentStart(fbg);\n\n    do {\n        fbg_glfwClear();\n\n        // evaluate sketch draw function\n        lua_getglobal(main_sketch->lua_state, \"draw\");\n        lua_pcall(main_sketch->lua_state, 0, 0, 0);\n\n        //fbg_clear(fbg, 0);\n\n        for (int j = 0; j < fbg->parallel_tasks; j += 1) {\n            fbg_write(fbg, fbg->fps_char, 2, 2 + j * 10);\n        }\n\n        fbg_draw(fbg, fbg_compositing);\n        fbg_flip(fbg);\n    } while (keep_running && !fbg_glfwShouldClose(fbg));\n\n    fragmentStop(fbg, main_sketch);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n\n    return 0;\n}\n\nint main(int argc, char* argv[]) {\n    return program();\n}"
  },
  {
    "path": "custom_backend/glfw_parallel.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"glfw/fbg_glfw.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// user data example\nstruct _fragment_user_data {\n    float offset_x;\n    float offset_y;\n    float velx;\n    float vely;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->offset_x = fbg->task_id * 32.0f;\n    user_data->offset_y = fbg->task_id * 32.0f;\n\n    float signx = 1;\n    float signy = 1;\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signx = -1;\n    }\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signy = -1;\n    }\n\n    user_data->velx = fbg_randf(4, 8) * signx;\n    user_data->vely = fbg_randf(4, 8) * signy;\n\n    return user_data;\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    float c = (float)fbg->task_id / fbg->parallel_tasks * 255;\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n        \n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    ud->offset_x += ud->velx;\n    ud->offset_y += ud->vely;\n\n    if (ud->offset_x <= 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = 32;\n    } else if (ud->offset_x > fbg->width - 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = fbg->width - 32;\n    }\n\n    if (ud->offset_y <= 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = 32;\n    } else if (ud->offset_y > fbg->height - 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = fbg->height - 32;\n    }\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fbg_XORMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    for (int j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = fbg->back_buffer[j] ^ buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_glfwSetup(800, 600, 3, \"glfw example\", 0, 0, 1);\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 7);\n\n    srand(time(NULL));\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_glfwClear();\n        \n        fbg_clear(fbg, 0);\n    \n        for (int j = 0; j < fbg->parallel_tasks; j += 1) {\n            fbg_write(fbg, fbg->fps_char, 2, 2 + j * 10);\n        }\n\n        fbg_draw(fbg, fbg_XORMixing);\n\n        fbg_flip(fbg);\n    } while (keep_running && !fbg_glfwShouldClose(fbg));\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/opengl_es2/fbg_opengl_es2.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n\n#include \"fbg_opengl_es2.h\"\n\nconst GLfloat fbg_gles2Quad[] = { -1.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, // vertices\n                        0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f }; // UV\n\nconst char *fbg_gles2SimpleVs = \"attribute vec3 vp; \\\n    attribute vec2 vu; \\\n    varying vec2 uv; \\\n    void main() { \\\n        uv = vu; \\\n        gl_Position = vec4(vp, 1.0); \\\n    }\";\n\nconst char *fbg_gles2SimpleFs = \"precision mediump float; \\\n    varying vec2 uv; \\\n    uniform sampler2D t0; \\\n    void main() { \\\n        gl_FragColor = texture2D(t0, uv); \\\n    }\";\n\nvoid fbg_gles2Draw(struct _fbg *fbg);\nvoid fbg_gles2Flip(struct _fbg *fbg);\nvoid fbg_gles2Free(struct _fbg *fbg);\n\n#ifdef FBG_RPI\nstruct _fbg *fbg_gles2Setup() {\n    bcm_host_init();\n#else // fbdev\nstruct _fbg *fbg_gles2Setup(const char *fb_device, int components) {\n#endif\n    struct _fbg_gles2_context *gles2_context = (struct _fbg_gles2_context *)calloc(1, sizeof(struct _fbg_gles2_context));\n    if (!gles2_context) {\n        fprintf(stderr, \"fbg_gles2Setup: gles2 context calloc failed!\\n\");\n        return NULL;\n    }\n\n#ifndef FBG_RPI\n    int fd = open(fb_device, O_RDWR);\n    if (fd == -1) {\n        printf(\"fbg_gles2Setup: cannot open %s device\\n\", fb_device);\n        free(gles2_context);\n        return NULL;\n    }\n\n    if (ioctl(fd, FBIOGET_VSCREENINFO, &gles2_context->vinfo)) {\n        printf(\"fbg_gles2Setup: ioctl FBIOGET_VSCREENINFO failed\\n\");\n        free(gles2_context);\n        close(fd);\n        return NULL;\n    }\n\n    gles2_context->fd = fd;\n#else\n    static EGL_DISPMANX_WINDOW_T nativewindow;\n\n    DISPMANX_ELEMENT_HANDLE_T dispman_element;\n    DISPMANX_DISPLAY_HANDLE_T dispman_display;\n    DISPMANX_UPDATE_HANDLE_T dispman_update;\n    VC_RECT_T dst_rect;\n    VC_RECT_T src_rect;\n#endif\n\n    //setenv(\"EGL_PLATFORM\", \"fbdev\", 0);\n    //setenv(\"FRAMEBUFFER\", fb_device, 0);\n\n    EGLDisplay egl_display;\n    EGLContext egl_context;\n    EGLSurface egl_surface;\n\n    egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);\n    if (egl_display == EGL_NO_DISPLAY) {\n        printf(\"fbg_gles2Setup: eglGetDisplay failed with EGL_NO_DISPLAY\\n\");\n        free(gles2_context);\n#ifndef FBG_RPI\n        close(fd);\n#endif\n        return NULL;\n    }\n \n    if (!eglInitialize(egl_display, NULL, NULL)) {\n        printf(\"fbg_gles2Setup: eglInitialize failed\\n\");\n        free(gles2_context);\n#ifndef FBG_RPI\n        close(fd);\n#endif\n        return NULL;\n    }\n \n#ifdef FBG_RPI\n    static const EGLint attr[] = {\n        EGL_RED_SIZE, 8,\n        EGL_GREEN_SIZE, 8,\n        EGL_BLUE_SIZE, 8,\n        EGL_ALPHA_SIZE, 8,\n        EGL_DEPTH_SIZE, 16,\n        EGL_SAMPLES, 0,\n        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n        EGL_NONE\n    };\n#else\n    static const EGLint attr[] = {\n        /*EGL_RED_SIZE, 8,\n        EGL_GREEN_SIZE, 8,\n        EGL_BLUE_SIZE, 8,\n        EGL_ALPHA_SIZE, 0,\n        EGL_DEPTH_SIZE, 16,\n        EGL_STENCIL_SIZE, 16,*/\n        EGL_BUFFER_SIZE, 16,\n        EGL_RENDERABLE_TYPE,\n        EGL_OPENGL_ES2_BIT,\n        EGL_NONE\n    };\n#endif\n \n    EGLConfig eglconf;\n    EGLint num_config;\n\n#ifndef FBG_RPI\n    if (!eglChooseConfig(egl_display, attr, &eglconf, 1, &num_config)) {\n        printf(\"fbg_gles2Setup: eglChooseConfig failed\\n\");\n        eglTerminate(egl_display);\n        free(gles2_context);\n        close(fd);\n        return NULL;\n    }\n#else\n    if (!eglSaneChooseConfigBRCM(egl_display, attr, &eglconf, 1, &num_config)) {\n        printf(\"fbg_gles2Setup: eglSaneChooseConfigBRCM failed\\n\");\n        eglTerminate(egl_display);\n        free(gles2_context);\n        return NULL;\n    }\n#endif\n\n#ifdef FBG_RPI\n    EGLBoolean result = eglBindAPI(EGL_OPENGL_ES_API);\n    if (result == EGL_FALSE || result == EGL_BAD_PARAMETER) {\n        printf(\"fbg_gles2Setup: eglCreateContext failed with EGL_NO_CONTEXT\\n\");\n        eglTerminate(egl_display);\n        free(gles2_context);\n        return NULL;\n    }\n#endif\n\n    static const EGLint ctxattr[] = {\n        EGL_CONTEXT_CLIENT_VERSION, 2,\n        EGL_NONE\n    };\n    egl_context = eglCreateContext(egl_display, eglconf, EGL_NO_CONTEXT, ctxattr);\n    if (egl_context == EGL_NO_CONTEXT) {\n        printf(\"fbg_gles2Setup: eglCreateContext failed with EGL_NO_CONTEXT\\n\");\n        eglTerminate(egl_display);\n        free(gles2_context);\n#ifndef FBG_RPI\n        close(fd);\n#endif\n        return NULL;\n    }\n\n    uint32_t screen_width, screen_height;\n    uint32_t render_width, render_height;\n\n#ifdef FBG_RPI\n    int32_t success = graphics_get_display_size(0 /* LCD */, &screen_width, &screen_height);\n\n    dst_rect.x = 0;\n    dst_rect.y = 0;\n    dst_rect.width = screen_width;\n    dst_rect.height = screen_height;\n\n    // change this for custom render size\n    render_width = screen_width;\n    render_height = screen_height;\n    \n    src_rect.x = 0;\n    src_rect.y = 0;\n    src_rect.width = render_width << 16;\n    src_rect.height = render_height << 16;        \n\n    dispman_display = vc_dispmanx_display_open(0 /* LCD */);\n    dispman_update = vc_dispmanx_update_start(0);\n        \n    dispman_element = vc_dispmanx_element_add(dispman_update, dispman_display, 0/*layer*/, &dst_rect, 0/*src*/, &src_rect, DISPMANX_PROTECTION_NONE, 0 /*alpha*/, 0/*clamp*/, 0/*transform*/);\n    \n    nativewindow.element = dispman_element;\n    nativewindow.width = render_width;\n    nativewindow.height = render_height;\n    vc_dispmanx_update_submit_sync(dispman_update);\n\n    egl_surface = eglCreateWindowSurface(egl_display, eglconf, &nativewindow, NULL);\n#else\n    const EGLNativeWindowType native_win = (EGLNativeWindowType) NULL;\n    egl_surface = eglCreateWindowSurface(egl_display, eglconf, native_win, NULL);\n\n    screen_width = render_width = gles2_context->vinfo.xres;\n    screen_height = render_height = gles2_context->vinfo.yres;\n#endif\n\n    if (egl_surface == EGL_NO_SURFACE) {\n        printf(\"fbg_gles2Setup: eglCreateWindowSurface failed with EGL_NO_SURFACE\\n\");\n        eglDestroyContext(egl_display, egl_context);\n        eglTerminate(egl_display);\n        free(gles2_context);\n#ifndef FBG_RPI\n        close(fd);\n#endif\n        return NULL;\n    }\n \n    eglMakeCurrent(egl_display, egl_surface, egl_surface, egl_context);\n\n    gles2_context->egl_display = egl_display;\n    gles2_context->egl_context = egl_context;\n    gles2_context->egl_surface = egl_surface;\n\n    gles2_context->simple_program = fbg_gles2CreateProgramFromString(fbg_gles2SimpleVs, fbg_gles2SimpleFs);\n    gles2_context->fbg_vbo = fbg_gles2CreateVBOvu(12, &fbg_gles2Quad[0]);\n    gles2_context->fbg_texture = fbg_gles2CreateTexture(render_width, render_height, components == 4 ? GL_RGBA : GL_RGB);\n\n    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);\n    glPixelStorei(GL_PACK_ALIGNMENT, 1); \n\n    glViewport(0, 0, screen_width, screen_height);\n    glClearColor(0, 0, 0, 1);\n    glClear(GL_COLOR_BUFFER_BIT);\n\n    struct _fbg *fbg = fbg_customSetup(render_width, render_height, components, 1, 1, (void *)gles2_context, fbg_gles2Draw, fbg_gles2Flip, NULL, fbg_gles2Free);\n\n    return fbg;\n}\n\nvoid fbg_gles2UpdateBuffer(struct _fbg *fbg) {\n    if (fbg->components == 4) {\n        glReadPixels(0, 0, fbg->width, fbg->height, GL_RGBA, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    } else if (fbg->components == 3) {\n        glReadPixels(0, 0, fbg->width, fbg->height, GL_RGB, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    }\n}\n\nvoid fbg_gles2Clear() {\n    glClear(GL_COLOR_BUFFER_BIT);\n}\n\nvoid fbg_gles2Draw(struct _fbg *fbg) {\n    struct _fbg_gles2_context *gles2_context = fbg->user_context;\n\n    glUseProgram(gles2_context->simple_program);\n\n    glBindBuffer(GL_ARRAY_BUFFER, gles2_context->fbg_vbo);\n\n    glEnableVertexAttribArray(0);\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);\n    glEnableVertexAttribArray(1);\n    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*) (12 * sizeof(GLfloat)));\n\n    glActiveTexture(GL_TEXTURE0);\n    glBindTexture(GL_TEXTURE_2D, gles2_context->fbg_texture);\n\n    if (fbg->components == 4) {\n        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fbg->width, fbg->height, GL_RGBA, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    } else if (fbg->components == 3) {\n        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, fbg->width, fbg->height, GL_RGB, GL_UNSIGNED_BYTE, fbg->back_buffer);\n    }\n\n    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);\n\n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n    glUseProgram(0);\n\n    //glFlush();\n    //glFinish();\n}\n\nvoid fbg_gles2Flip(struct _fbg *fbg) {\n    struct _fbg_gles2_context *gles2_context = fbg->user_context;\n\n    eglSwapBuffers(gles2_context->egl_display, gles2_context->egl_surface);\n}\n\nvoid fbg_gles2Free(struct _fbg *fbg) {\n    struct _fbg_gles2_context *gles2_context = fbg->user_context;\n\n    glDeleteTextures(1, &gles2_context->fbg_texture);\n\n    glDeleteBuffers(1, &gles2_context->fbg_vbo);\n\n    glDeleteProgram(gles2_context->simple_program);\n\n    eglDestroyContext(gles2_context->egl_display, gles2_context->egl_context);\n    eglDestroySurface(gles2_context->egl_display, gles2_context->egl_surface);\n    eglTerminate(gles2_context->egl_display);\n\n#ifndef FBG_RPI\n    close(gles2_context->fd);\n#endif\n\n    free(gles2_context);\n}\n\nGLuint fbg_gles2CreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img) {\n    GLuint texture = fbg_gles2CreateTexture(img->width, img->height, fbg->components == 4 ? GL_RGBA : GL_RGB);\n\n    if (fbg->components == 4) {\n        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img->width, img->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img->data);\n    } else if (fbg->components == 3) {\n        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->data);\n    }\n\n    return texture;\n}\n\nGLuint fbg_gles2CreateTexture(GLuint width, GLuint height, GLint internal_format) {\n    GLuint texture;\n    glGenTextures(1, &texture);\n\n    glBindTexture(GL_TEXTURE_2D, texture);\n    \n    glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, internal_format, GL_UNSIGNED_BYTE, 0);\n\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);\n    //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);\n\n    return texture;\n}\n\n/*\n// should be ported ?\nGLuint fbg_gles2CreateFBO(GLuint texture) {\n    GLuint fbo = 0;\n    glGenFramebuffers(1, &fbo);\n    \n    glBindFramebuffer(GL_FRAMEBUFFER, fbo);\n    \n    glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0);\n    \n    GLenum drawBuffers[2] = { GL_COLOR_ATTACHMENT0 };\n    glDrawBuffers(1, drawBuffers);\n\n    if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {\n        fprintf(stderr, \"fbg_gles2reateFBO : glCheckFramebufferStatus failed!\\n\");\n    }\n\n    glBindFramebuffer(GL_FRAMEBUFFER, 0);\n\n    return fbo;\n}\n*/\nGLuint fbg_gles2CreateVBOvu(GLsizeiptr data_count, const GLvoid *data) {\n    GLuint vbo = 0;\n\n    glGenBuffers(1, &vbo);\n\n    glBindBuffer(GL_ARRAY_BUFFER, vbo);\n\n    // Vertices + UV\n    glBufferData(GL_ARRAY_BUFFER, (data_count + (data_count / 3) * 2) * sizeof(GLfloat), data, GL_STATIC_DRAW);\n\n    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);\n    glEnableVertexAttribArray(0);\n\n    glEnableVertexAttribArray(1);\n    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*) (data_count * sizeof(GLfloat)));\n\n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n\n    return vbo;\n}\n\nstruct _fbg_vbo_data * fbg_gles2CreateVBO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type,\n                         GLsizeiptr vertices_count, const GLvoid *vertices_data,\n                         GLsizeiptr texcoords_count, const GLvoid *texcoords_data,\n                         GLsizeiptr normals_count, const GLvoid *normals_data,\n                         GLsizeiptr colors_count, const GLvoid *colors_data) {\n    GLuint vbo = 0;\n    GLuint tbo = 0;\n    GLuint ibo = 0;\n    GLuint nbo = 0;\n    GLuint cbo = 0;\n\n    glGenBuffers(1, &ibo);\n\n    // Vertices\n    glGenBuffers(1, &vbo);\n    glBindBuffer(GL_ARRAY_BUFFER, vbo);\n    glBufferData(GL_ARRAY_BUFFER, vertices_count * 3 * sizeof(GLfloat), vertices_data, GL_STATIC_DRAW);\n\n    int attrib_id = 1;\n\n    // UVs\n    if (texcoords_data) {\n        glGenBuffers(1, &tbo);\n        glBindBuffer(GL_ARRAY_BUFFER, tbo);\n        glBufferData(GL_ARRAY_BUFFER, texcoords_count * 2 * sizeof(GLfloat), texcoords_data, GL_STATIC_DRAW);\n\n        attrib_id += 1;\n    }\n\n    // normals\n    if (normals_data) {\n        glGenBuffers(1, &nbo);\n        glBindBuffer(GL_ARRAY_BUFFER, nbo);\n        glBufferData(GL_ARRAY_BUFFER, normals_count * 3 * sizeof(GLfloat), normals_data, GL_STATIC_DRAW);\n\n        attrib_id += 1;\n    }\n\n    // colors\n    if (colors_data) {\n        glGenBuffers(1, &cbo);\n        glBindBuffer(GL_ARRAY_BUFFER, cbo);\n        glBufferData(GL_ARRAY_BUFFER, colors_count * 3 * sizeof(GL_UNSIGNED_BYTE), colors_data, GL_STATIC_DRAW);\n    }\n\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);\n    glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_count * sizeof_indice_type, indices_data, GL_STATIC_DRAW);\n    \n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);\n\n    struct _fbg_vbo_data *vbo_data = (struct _fbg_vbo_data *)calloc(1, sizeof(struct _fbg_vbo_data));\n\n    vbo_data->vbo = vbo;\n    vbo_data->tbo = tbo;\n    vbo_data->ibo = ibo;\n    vbo_data->nbo = nbo;\n    vbo_data->cbo = cbo;\n\n    return vbo_data;\n}\n\nvoid fbg_gles2FreeVBOData(struct _fbg_vbo_data *vbo_data) {\n    glDeleteBuffers(1, &vbo_data->vbo);\n    glDeleteBuffers(1, &vbo_data->tbo);\n    glDeleteBuffers(1, &vbo_data->ibo);\n    glDeleteBuffers(1, &vbo_data->nbo);\n    glDeleteBuffers(1, &vbo_data->cbo);\n\n    free(vbo_data);\n}\n\nvoid fbg_gles2PrintShaderLog(GLuint obj, int type) {\n    static char log[16384];\n\n    if (type == 0) {\n        glGetProgramInfoLog(obj, 16384, 0, log);\n    } else if (type == 1) {\n        glGetShaderInfoLog(obj, 16384, 0, log);\n    }\n    log[16383] = 0;\n\n    fprintf(stderr, \"fbg_gles2PrintShaderLog : BEGIN:\\n%s\\nEND.\\n\", log);\n}\n\nGLuint fbg_gles2CreateShader(GLenum type, const GLchar *source) {\n    GLuint shader;\n    GLint status;\n\n    shader = glCreateShader(type);\n\n    glShaderSource(shader, 1, (const GLchar**)&source, NULL);\n    glCompileShader(shader);\n\n    glGetShaderiv(shader, GL_COMPILE_STATUS, &status);\n\n    if (status != GL_TRUE) {\n        fprintf(stderr, \"fbg_gles2CreateShader : Failed to compile shader '%s'!\\n\", source);\n\n        fbg_gles2PrintShaderLog(shader, 1);\n\n        glDeleteShader(shader);\n        \n        return 0;\n    }\n\n    return shader;\n}\n\nGLuint fbg_gles2CreateShaderFromFile(GLenum type, const char *filename) {\n    FILE *file = fopen(filename, \"rt\");\n    if (!file) {\n        fprintf(stderr, \"fbg_gles2CreateShaderFromFile : Failed to open shader file '%s'!\\n\", filename);\n        return 0;\n    }\n\n    fseek(file, 0, SEEK_END);\n    long size = ftell(file);\n\n    GLchar *source = (GLchar*)malloc(size + 1);\n\n    if (!source) {\n        fprintf(stderr, \"fbg_gles2CreateShaderFromFile : Malloc failed for '%s'!\\n\", filename);\n\n        fclose(file);\n\n        return 0;\n    }\n\n    fseek(file, 0, SEEK_SET);\n    source[fread(source, 1, size, file)] = 0;\n    fclose(file);\n\n    GLuint shader = fbg_gles2CreateShader(type, source);\n    free(source);\n\n    return shader;\n}\n\nGLuint fbg_gles2CreateProgram(GLuint vertex_shader, GLuint fragment_shader) {\n    GLuint program = 0;\n    GLint status;\n\n    program = glCreateProgram();\n\n    if (vertex_shader) {\n        glAttachShader(program, vertex_shader);\n    }\n\n    if (fragment_shader) {\n        glAttachShader(program, fragment_shader);\n    }\n\n    glLinkProgram(program);\n\n    glGetProgramiv(program, GL_LINK_STATUS, &status);\n    if (status != GL_TRUE) {\n        fprintf(stderr, \"fbg_gles2CreateProgram : Failed to link program!\\n\");\n\n        fbg_gles2PrintShaderLog(program, 0);\n\n        glDeleteProgram(program);\n\n        return 0;\n    }\n\n    if (vertex_shader) {\n        glDetachShader(program, vertex_shader);\n    }\n\n    if (fragment_shader) {\n        glDetachShader(program, fragment_shader);\n    }\n\n    return program;\n}\n\nGLenum fbg_gles2CreateProgramFromFiles(const char *vs, const char *fs) {\n    GLuint id_vs = 0;\n    GLuint id_fs = 0;\n\n    if (vs) {\n        id_vs = fbg_gles2CreateShaderFromFile(GL_VERTEX_SHADER, vs);\n    }\n\n    if (fs) {\n        id_fs = fbg_gles2CreateShaderFromFile(GL_FRAGMENT_SHADER, fs);\n    }\n\n    GLuint program = fbg_gles2CreateProgram(id_vs, id_fs);\n\n    if (vs) {\n        glDeleteShader(id_vs);\n    }\n\n    if (fs) {\n        glDeleteShader(id_fs);\n    }\n\n    return program;\n}\n\nGLenum fbg_gles2CreateProgramFromString(const char *vs, const char *fs) {\n    GLuint id_vs = 0;\n    GLuint id_fs = 0;\n\n    if (vs) {\n        id_vs = fbg_gles2CreateShader(GL_VERTEX_SHADER, vs);\n    }\n\n    if (fs) {\n        id_fs = fbg_gles2CreateShader(GL_FRAGMENT_SHADER, fs);\n    }\n\n    GLuint program = fbg_gles2CreateProgram(id_vs, id_fs);\n\n    if (vs) {\n        glDeleteShader(id_vs);\n    }\n\n    if (fs) {\n        glDeleteShader(id_fs);\n    }\n\n    return program;\n}"
  },
  {
    "path": "custom_backend/opengl_es2/fbg_opengl_es2.h",
    "content": "/*\n    Copyright (c) 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_OPENGL_ES2_H\n#define FB_GRAPHICS_OPENGL_ES2_H\n\n    #include <sys/ioctl.h>\n    #include <linux/fb.h>\n    #include <unistd.h>\n    #include <fcntl.h>\n\n    #include <GLES2/gl2.h>\n    #include <EGL/egl.h>\n    #include <EGL/eglext.h>\n\n#ifdef FBG_RPI\n    #include \"bcm_host.h\"\n#endif\n\n    #include \"fbgraphics.h\"\n\n    //! OpenGL ES 2.0 wrapper data structure\n    struct _fbg_gles2_context {\n#ifndef FBG_RPI\n        //! Framebuffer file descriptor\n        int fd;\n        //! Framebuffer device var. informations\n        struct fb_var_screeninfo vinfo;\n#endif\n        //! EGL display\n        EGLDisplay egl_display;\n        //! EGL context\n        EGLContext egl_context;\n        //! EGL surface\n        EGLContext egl_surface;\n        //! EGL image\n        void *egl_image;\n        //! Simple GLSL program (screen-aligned textured quad)\n        GLenum simple_program;\n        //! FBG VBO\n        GLuint fbg_vbo;\n        //! FBG texture (updated at each frames)\n        GLuint fbg_texture;\n        //! tell wether fbg_gles2 should update fbg disp_buffer after rendering\n        int update_buffer;\n    };\n\n    //! struct which hold usual VBO data for 3D objects\n    struct _fbg_vbo_data {\n      // VBO (vertices)\n      GLuint vbo;\n      // VBO (texcoords)\n      GLuint tbo;\n      // VBO (indices)\n      GLuint ibo;\n      // VBO (normals)\n      GLuint nbo;\n      // VBO (colors)\n      GLuint cbo;\n    };\n\n    //! Simple quad geometry (vertices + UV)\n    extern const GLfloat fbg_gles2Quad[];\n\n    //! Simple vertex shader (screen quad, vertices + UV)\n    extern const char *fbg_gles2SimpleVs;\n\n    //! Simple textured fragment shader\n    extern const char *fbg_gles2SimpleFs;\n\n    //! initialize a FB Graphics OpenGL ES 2 (fbdev or RPI direct) context\n    /*!\n      \\param fb_device framebuffer device; example : /dev/fb0\n      \\param components fbg context color components (4 for RGBA or 3 for RGB)\n      \\return FBG data structure pointer\n    */\n#ifdef FBG_RPI\n    extern struct _fbg *fbg_gles2Setup(int components);\n#else\n    extern struct _fbg *fbg_gles2Setup(const char *fb_device, int components);\n#endif\n\n    //! OpenGL clear\n    extern void fbg_gles2Clear();\n\n    //! this update FBG disp_buffer with the actual rendered OpenGL content\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n    */\n    extern void fbg_gles2UpdateBuffer(struct _fbg *fbg);\n\n    //! Query the user requested (window close etc) close status\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\return Boolean indicating close status\n    */\n    extern int fbg_gles2ShouldClose(struct _fbg *fbg);\n\n    //! create a non-interpolated (NEAREST) GL texture from a FBG image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\return GL texture id\n    */\n    GLuint fbg_gles2CreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img);\n\n    //-- A SET OF RAW OPENGL UTILITY FUNCTIONS --\n    //! create an empty non-interpolated (NEAREST) GL texture\n    /*!\n      \\param width width of the requested texture\n      \\param height height of the requested texture\n      \\param internal_format OpenGL format (GL_RGBA etc.)\n      \\return GL texture id\n    */\n    extern GLuint fbg_gles2CreateTexture(GLuint width, GLuint height, GLint internal_format);\n\n    //! create a VBO from indexed data, support for vertices, UVs, normals and colors\n    /*!\n      \\param indices_count indices count\n      \\param indices_data data containing indices\n      \\param sizeof_indice_type sizeof indice type\n      \\param vertices_count vertices count\n      \\param vertices_data data containing vertices\n      \\param texcoords_count uv count\n      \\param texcoords_data data containing uv\n      \\param normals_count normals count\n      \\param normals_data data containing normals\n      \\param colors_count colors count\n      \\param colors_data data containing colors\n      \\return _fbg_vbo_data data structure containing the VBOs\n    */\n    extern struct _fbg_vbo_data * fbg_gles2CreateVBO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type,\n                                    GLsizeiptr vertices_count, const GLvoid *vertices_data,\n                                    GLsizeiptr texcoords_count, const GLvoid *texcoords_data,\n                                    GLsizeiptr normals_count, const GLvoid *normals_data,\n                                    GLsizeiptr colors_count, const GLvoid *colors_data);\n\n    //! free VBO data (created with fbg_gles2CreateVBO)\n    /*!\n      \\param vbo_data data structure containing the VBOs\n    */\n    extern void fbg_gles2FreeVBOData(struct _fbg_vbo_data *vbo_data);\n\n    //! create a VBO from vertices + UV data packed into a single array\n    /*!\n      \\param data_count vertices data count\n      \\param data data containing all vertices (set of 3 x float) then all associated UVs (set of 2 x float)\n      \\return GL VBO id\n    */\n    extern GLuint fbg_gles2CreateVBOvu(GLsizeiptr data_count, const GLvoid *data);\n\n    //! create a FBO\n    /*!\n      \\param texture GL texture id\n      \\return GL FBO id\n    */\n    //extern GLuint fbg_gles2CreateFBO(GLuint texture);\n\n    //! create a single shader\n    /*!\n      \\param type GL shader type\n      \\param source shader code\n      \\return GL shader id\n    */\n    extern GLuint fbg_gles2CreateShader(GLenum type, const GLchar *source);\n\n    //! create a shader from the content of a file\n    /*!\n      \\param type GL shader type\n      \\param filename file to load\n      \\return GL shader id\n    */\n    extern GLuint fbg_gles2CreateShaderFromFile(GLenum type, const char *filename);\n\n    //! create a vertex and/or fragment program\n    /*!\n      \\param vertex_shader vertex shader id, can be 0\n      \\param fragment_shader fragment shader id, can be 0\n      \\return GL shader id\n    */\n    extern GLuint fbg_gles2CreateProgram(GLuint vertex_shader, GLuint fragment_shader);\n\n    //! create a vertex and/or fragment/geometry program from a file\n    /*!\n      \\param vs vertex shader file\n      \\param fs fragment shader file\n      \\return GL shader id\n    */\n    extern GLenum fbg_gles2CreateProgramFromFiles(const char *vs, const char *fs);\n\n    //! create a vertex and/or fragment/geometry program from a string\n    /*!\n      \\param vs vertex shader string\n      \\param fs fragment shader string\n      \\return GL shader id\n    */\n    extern GLenum fbg_gles2CreateProgramFromString(const char *vs, const char *fs);\n\n#endif\n"
  },
  {
    "path": "custom_backend/opengl_es2_example.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"opengl_es2/fbg_opengl_es2.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    // fbdev version\n#ifdef FBG_FBDEV\n    struct _fbg *fbg = fbg_gles2Setup(\"/dev/fb0\", 3);\n#else\n    // rpi version\n    struct _fbg *fbg = fbg_gles2Setup(3);\n#endif\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    float x = 0, y = 0, velx = 3.4, vely = 3.425;\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_gles2Clear();\n        \n        fbg_clear(fbg, 128);\n        \n\n        fbg_rect(fbg, x, y, 40, 40, 255, 0, 0);\n\n        fbg_write(fbg, fbg->fps_char, 2, 2);\n\n        fbg_draw(fbg);\n        \n        fbg_flip(fbg);\n\n        x += velx;\n        y += vely;\n\n        if (x <= 0 || x > fbg->width - 40) {\n            velx = -velx;\n        }\n\n        if (y <= 0 || y > fbg->height - 40) {\n            vely = -vely;\n        }\n    } while (keep_running);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/opengl_es2_parallel.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"opengl_es2/fbg_opengl_es2.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// user data example\nstruct _fragment_user_data {\n    float offset_x;\n    float offset_y;\n    float velx;\n    float vely;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->offset_x = fbg->task_id * 32.0f;\n    user_data->offset_y = fbg->task_id * 32.0f;\n\n    float signx = 1;\n    float signy = 1;\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signx = -1;\n    }\n\n    if (fbg_randf(0, 1) > 0.5) {\n        signy = -1;\n    }\n\n    user_data->velx = fbg_randf(4, 8) * signx;\n    user_data->vely = fbg_randf(4, 8) * signy;\n\n    return user_data;\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    float c = (float)fbg->task_id / fbg->parallel_tasks * 255;\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n        \n    fbg_recta(fbg,\n        fbg->width - ud->offset_x,\n        ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    fbg_recta(fbg,\n        ud->offset_x,\n        fbg->height - ud->offset_y, 32, 32,\n        c,\n        255 - c,\n        abs(128 - c),\n        fbg_randf(0, 255));\n\n    ud->offset_x += ud->velx;\n    ud->offset_y += ud->vely;\n\n    if (ud->offset_x <= 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = 32;\n    } else if (ud->offset_x > fbg->width - 32) {\n        ud->velx = -ud->velx;\n        ud->offset_x = fbg->width - 32;\n    }\n\n    if (ud->offset_y <= 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = 32;\n    } else if (ud->offset_y > fbg->height - 32) {\n        ud->vely = -ud->vely;\n        ud->offset_y = fbg->height - 32;\n    }\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fbg_XORMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    for (int j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = fbg->back_buffer[j] ^ buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    // fbdev version\n#ifdef FBG_FBDEV\n    struct _fbg *fbg = fbg_gles2Setup(\"/dev/fb0\"3, );\n#else\n    // rpi version\n    struct _fbg *fbg = fbg_gles2Setup(3);\n#endif\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"../examples/bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    srand(time(NULL));\n\n    signal(SIGINT, int_handler);\n\n    do {\n        fbg_gles2Clear();\n        \n        fbg_clear(fbg, 0);\n        fbg_draw(fbg, fbg_XORMixing);\n\n        for (int j = 0; j < fbg->parallel_tasks; j += 1) {\n            fbg_write(fbg, fbg->fps_char, 2, 2 + j * 10);\n        }\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n}"
  },
  {
    "path": "custom_backend/sketch.lua",
    "content": "-- a simple multithreaded example which use 8 cores, each displaying their own rectangle on screen (see glfw_lua.c)\n\nlocal x = 0\nlocal velx = 8\n\nfunction draw ()\n    background(0, 0, 0)\n\n    fill(255, 0, 0)\n    -- 'C_frag_id' is a C variable related to the current fragment (a fragment is a thread related to graphical tasks) \n    rect(x, 64 + C_frag_id * 17, 16, 16)\n\n    x = x + velx\n    if x < 1 or x >= C_width - 16\n    then\n        velx = -velx\n    end\nend\n\nfunction compositing ()\n \nend"
  },
  {
    "path": "docs/README_8md.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: README.md File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">README.md File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"README_8md_source.html\">Go to the source code of this file.</a></p>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/README_8md_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: README.md Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">README.md</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"README_8md.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support</div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;=====</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;FBGraphics (FBG) is a simple C 24, 32 bpp (internal format) graphics library with parallelism and custom rendering backend support (graphics API agnostic).</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;The library is only two .c files on most use cases, the renderer agnostic library `fbgraphics.c` and one of the rendering backend found in `custom_backend` directory.</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;The library come with five backend (see `custom_backend` folder) : </div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160; * a Linux framebuffer rendering backend (with 16 bpp support through 24/32 bpp conversion)</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160; * OpenGL backend which use the [GLFW](http://www.glfw.org/) library</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160; * OpenGL ES 2.0 backend for fbdev or Raspberry PI</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160; * fast dispmanx backend (Video Core IV; Raspberry PI)</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160; * GBA backend (slow due to 24/32 bpp -&gt; 16 bpp support, mostly done as a proof of concept for portability on low memory hardware)</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;Features :</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160; * Easy to write / use custom rendering backend support flexible enough to target low memory hardware!</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160; * Cross-platform with the GLFW backend (some examples may need to be adapted to the target OS)</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160; * Linux framebuffer (fbdev) rendering backend support</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    * Double buffering (with optional page flipping mechanism)</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    * 16, 24 (BGR/RGB), 32 bpp support</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160; * GBA rendering backend</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160; * OpenGL rendering backend through GLFW</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160; * OpenGL ES 2.0 rendering backend for Raspberry PI or through fbdev (tested on Nano PI Fire 3 board)</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160; * dispmanx rendering backend (Video Core IV; Raspberry PI)</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160; * Optional : Full parallelism, execute graphics code on multiple CPU cores **with a single function**</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160; * PNG/JPEG images loading (provided by [LodePNG](https://lodev.org/lodepng/) and [NanoJPEG](http://keyj.emphy.de/nanojpeg/))</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160; * Bitmap fonts for drawing texts</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160; * Bare-metal graphics primitive (pixels, rectangles, lines, polygon)</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160; * Easy to do fading, clipping and screen-clearing related effects (motion blur etc.)</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160; * Drawing calls can be used to render into a specified target buffer such as fbg_image etc.</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160; * Framerate tracking &amp; display for all cores</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160; * Lightweight enough to be hackable; adapt to all kinds of needs (and still support parallelism easily)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;The library is generic, most functions (including parallel ones) only manipulate buffers and you can build a custom rendering backend pretty easily with few functions call, see the `custom_backend` folder.</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;Table of Contents</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;=================</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;* FBGraphics</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;   * [About](#about)</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      * [Quickstart](#quickstart)</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;      * [Parallelism](#parallelism)</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      * [Technical implementation](#technical-implementation)</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;   * [Benchmark](#benchmark)</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;   * [Documentation](#documentation)</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;   * [Building](#building)</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;   * [Rendering backend](#Rendering-backend)</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;   * [GLFW backend](#GLFW-backend)</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;   * [OpenGL ES 2.0 backend](#OpenGL-ES-2-backend)</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;   * [Screenshots](#screenshots)</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;   * [License](#license)</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;## About</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;FBGraphics was built to produce fullscreen pixels effects easily (think of Processing-like creative coding etc.) with non-accelerated framebuffer by leveraging multi-core processors, it is a bit like a software GPU but much less complex and featured, the initial target platform was a Raspberry PI 3B / NanoPI.</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;FBGraphics was extended to support any numbers of custom rendering backend; all graphics calls manipulate internal buffers and a simple interface allow to draw the result the way you want to.</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;FBGraphics can support low memory hardware such as GBA. It should be noted that all internal buffers are manipulated in 24/32 bpp so it has to convert to 16bpp on GBA.</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;An OpenGL rendering backend which use the [GLFW library](http://www.glfw.org/) was created to demonstrate the custom backend feature, it allow to draw the non-accelerated FB Graphics buffer into an OpenGL context through a texture and thus allow to interwine 3D or 2D graphics produced with standard OpenGL calls with CPU-only graphics produced by FBGraphics draw calls.</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;An OpenGL ES 2.0 backend is also available with similar features, it target platforms with support for OpenGL ES 2.0 through fbdev (tested on Nano PI Fire 3 SBC) or Raspberry PI dispmanx and similar platforms, it wouldn&#39;t be hard to extend this for more OpenGL ES 2.0 platforms...</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;There is also a dispmanx backend targeting Raspberry PI, it have better performances than the OpenGL ES 2 backend on this platform and is recommended if you don&#39;t need 3D stuff.</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;FBGraphics was built so that it is possible to create any number of rendering context using different backend running at the same time while exploiting multi-core processors... the content of any rendering context can be transfered into other context through images when calling `fbg_drawInto`</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;FBGraphics framebuffer settings support 16, 24 (BGR/RGB), 32 bpp, 16 bpp mode is handled by converting from 24 bpp to 16 bpp upon drawing, page flipping mechanism is disabled in 16 bpp mode, **24 bpp is the fastest mode**.</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;FBGraphics is lightweight and does not intend to be a fully featured graphics library, it provide a limited set of graphics primitive and a small set of useful functions to start doing computer graphics anywhere right away with or without multi-core support.</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;If you want to use the parallelism features with advanced graphics primitives, take a look at great libraries such as [libgd](http://libgd.github.io/), [Adafruit GFX library](https://github.com/adafruit/Adafruit-GFX-Library) or even [ImageMagick](https://imagemagick.org) which should be easy to integrate.</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;FBGraphics is fast but should be used with caution, display bounds checking is not implemented on most primitives, this allow raw performances at the cost of crashs if not careful.</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;Multi-core support is optional and is only enabled when `FBG_PARALLEL` C definition is present.</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;FBGraphics framebuffer backend support a mechanism known as page flipping, it allow fast double buffering by doubling the framebuffer virtual area, it is disabled by default because it is actually slower on some devices. You can enable it with a `fbg_fbdevSetup` call.</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;VSync is automatically enabled if supported.</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;**Note** : FBGraphics framebuffer backend does not let you setup the framebuffer, it expect the framebuffer to be configured prior launch with a command such as :</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;```</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;fbset -fb /dev/fb0 -g 512 240 512 240 24 -vsync high</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;setterm -cursor off &gt; /dev/tty0</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;```</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;`fbset` should be available in your package manager.</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;### Framebuffer Quickstart</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;The simplest example (no parallelism, without texts and images) :</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;```c</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;#include &lt;sys/stat.h&gt;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;#include &lt;signal.h&gt;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;#include &quot;fbg_fbdev.h&quot;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;#include &quot;fbgraphics.h&quot;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;int keep_running = 1;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;void int_handler(int dummy) {</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    keep_running = 0;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;}</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;int main(int argc, char* argv[]) {</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    signal(SIGINT, int_handler);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    struct _fbg *fbg = fbg_fbdevSetup(&quot;/dev/fb0&quot;, 0); // you can also directly use fbg_fbdevInit(); for &quot;/dev/fb0&quot;, last argument mean that will not use page flipping mechanism  for double buffering (it is actually slower on some devices!)</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    do {</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;        fbg_clear(fbg, 0); // can also be replaced by fbg_fill(fbg, 0, 0, 0);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;        fbg_draw(fbg);</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;        fbg_rect(fbg, fbg-&gt;width / 2 - 32, fbg-&gt;height / 2 - 32, 16, 16, 0, 255, 0);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;        fbg_pixel(fbg, fbg-&gt;width / 2, fbg-&gt;height / 2, 255, 0, 0);</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;        fbg_flip(fbg);</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    } while (keep_running);</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    fbg_close(fbg);</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;    return 0;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;}</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;```</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;A simple quickstart example with most features (but no parallelism, see below) :</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;```c</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;#include &lt;sys/stat.h&gt;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;#include &lt;signal.h&gt;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;#include &quot;fbg_fbdev.h&quot;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;#include &quot;fbgraphics.h&quot;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;int keep_running = 1;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;void int_handler(int dummy) {</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    keep_running = 0;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;}</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;int main(int argc, char* argv[]) {</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    signal(SIGINT, int_handler);</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    struct _fbg *fbg = fbg_fbdevInit();</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    struct _fbg_img *texture = fbg_loadImage(fbg, &quot;texture.png&quot;);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    struct _fbg_img *bb_font_img = fbg_loadImage(fbg, &quot;bbmode1_8x8.png&quot;);</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;    do {</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;        fbg_clear(fbg, 0);</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;        fbg_draw(fbg);</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;        // you can also use fbg_image(fbg, texture, 0, 0)</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;        // but you must be sure that your image size fit on the display</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;        fbg_imageClip(fbg, texture, 0, 0, 0, 0, fbg-&gt;width, fbg-&gt;height);</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;        fbg_write(fbg, &quot;Quickstart example\\nFPS:&quot;, 4, 2);</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;        fbg_write(fbg, fbg-&gt;fps_char, 32 + 8, 2 + 8);</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;        fbg_rect(fbg, fbg-&gt;width / 2 - 32, fbg-&gt;height / 2 - 32, 16, 16, 0, 255, 0);</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;        fbg_pixel(fbg, fbg-&gt;width / 2, fbg-&gt;height / 2, 255, 0, 0);</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;        fbg_flip(fbg);</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;    } while (keep_running);</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;    fbg_freeImage(texture);</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    fbg_freeImage(bb_font_img);</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;    fbg_freeFont(bbfont);</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    fbg_close(fbg);</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    return 0;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;}</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;```</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;**Note** : Functions like `fbg_clear` or `fbg_fpixel` are fast functions, there is slower equivalent (but more parametrable) such as `fbg_background` or `fbg_pixel`, some functions variant also support transparency such as ``fbg_pixela` or `fbg_recta`.</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;**Note** : You can generate monospace bitmap fonts to be used with `fbg_createFont` function by using my [monoBitmapFontCreator](https://github.com/grz0zrg/monoBitmapFontCreator) tool available [here](https://fbg-bitmap-font-creator.netlify.com/)</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;### Parallelism</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;Exploiting multiple cores with FBGraphics is really easy, first you have to prepare 3 functions (of which two are optional if you don&#39;t have any allocations to do) of the following definition :</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;```c</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;// optional function</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;void *fragmentStart(struct _fbg *fbg) {</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;    // typically used to allocate your per-thread data</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;    // see full_example.c for more informations</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;    return NULL; // return your user data here</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;}</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;```</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;```c</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;void fragment(struct _fbg *fbg, struct _fragment_user_data *user_data) {</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;    // this function will be executed by each threads</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;    // you are free to call any FBG graphics primitive here</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;    </div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;    fbg_clear(fbg, 0);</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;    </div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;    // you are also free to fill each threads back buffer the way you want to</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;    // fbg-&gt;task_id : thread identifier (starting at 1, 0 is reserved for the main thread)</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;    // each threads will draw an horizontal line, the shade of the blue color will change based on the thread it is drawn from</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;    int x = 0, y = 0;</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;    for (y = fbg-&gt;task_id; y &lt; fbg-&gt;height; y += 4) {</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;        for (x = 0; x &lt; fbg-&gt;width; x += 1) {</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;            int i = (x + y * fbg-&gt;width) * 3;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;            fbg-&gt;back_buffer[i] = fbg-&gt;task_id * 85; // note : BGR format</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;            fbg-&gt;back_buffer[i + 1] = 0;</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;            fbg-&gt;back_buffer[i + 2] = 0;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;        }</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;    }</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;    </div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;    // simple graphics primitive (4 blue rectangle which will be handled by different threads in parallel)</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;    fbg_rect(fbg, fbg-&gt;task_id * 32, 0, 32, 32, 0, 0, 255);</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;}</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;```</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;```c</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;// optional function</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;void fragmentStop(struct _fbg *fbg, struct _fragment_user_data *data) {</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;    // typically used to free your per-thread data</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;    // see full_example.c for more informations</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;}</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;```</div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\">  240</span>&#160;</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;Then you have to create a &#39;Fragment&#39; which is a FBG multi-core task :</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;```c</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;```</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;Where :</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;* `fbg` is the main library data structure returned by `fbg_customSetup` and any backend `fbg_backendnameSetup` calls (see available backends in `custom_backend` directory)</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;* `fragmentStart`is a C function which will be executed when the thread start (can be NULL)</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;* `fragment`is a C function which will be executed indefinitly for each threads and where all the draw code will happen</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;* `fragmentStop` is a C function which will be executed when the thread end  (can be NULL)</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;* `3`is the number of parallel tasks (this will launch 3 threads)</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;And finally you just have to make a call to your fragment function in your drawing loop and call  `fbg_draw`!</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;```c</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;fragment(fbg, NULL);</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;fbg_draw(fbg, NULL);</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;```</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;`fbg_draw` will wait until all the data are received from all the threads then draw to screen</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;**Note** : This example will use 4 threads (including your app one) for drawing things on the screen but calling the fragment function in your drawing loop is totally optional, you could for example make use of threads for intensive drawing tasks and just use the main thread to draw the GUI or the inverse etc. it is up to you!</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;</div><div class=\"line\"><a name=\"l00266\"></a><span class=\"lineno\">  266</span>&#160;And that is all you have to do!</div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\">  267</span>&#160;</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;See `simple_parallel_example.c` and `full_example.c` for more informations.</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;**Note** : By default, the resulting buffer of each tasks are additively mixed into the main back buffer, you can override this behavior by specifying a mixing function as the last argument of `fbg_draw` such as :</div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\">  271</span>&#160;</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;```c</div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;// function called for each tasks in the fbg_draw function</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;void selectiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {</div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;    // fbg is the main fbg structure returned by fbg_customSetup calls and any backend setup calls</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;    // buffer is the current task buffer</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;    // task_id is the current task id</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;    int j = 0;</div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;    for (j = 0; j &lt; fbg-&gt;size; j += 1) {</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;        fbg-&gt;back_buffer[j] = (fbg-&gt;back_buffer[j] &gt; buffer[j]) ? fbg-&gt;back_buffer[j] : buffer[j];</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;    }</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;}</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;```</div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;</div><div class=\"line\"><a name=\"l00285\"></a><span class=\"lineno\">  285</span>&#160;Then you just have to specify it to the `fbg_draw` function :</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;```c</div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;fbg_draw(fbg, additiveMixing);</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;```</div><div class=\"line\"><a name=\"l00290\"></a><span class=\"lineno\">  290</span>&#160;</div><div class=\"line\"><a name=\"l00291\"></a><span class=\"lineno\">  291</span>&#160;By using the mixing function, you can have different layers handled by different cores with different compositing rule, see `compositing.c` for an example of alpha blending compositing 2 layers running on their own cores.</div><div class=\"line\"><a name=\"l00292\"></a><span class=\"lineno\">  292</span>&#160;</div><div class=\"line\"><a name=\"l00293\"></a><span class=\"lineno\">  293</span>&#160;**Note** : You can only create one Fragment per fbg instance, another call to `fbg_createFragment` will stop all tasks for the passed fbg context and will create a new set of tasks.</div><div class=\"line\"><a name=\"l00294\"></a><span class=\"lineno\">  294</span>&#160;</div><div class=\"line\"><a name=\"l00295\"></a><span class=\"lineno\">  295</span>&#160;**Note** : On low performances platforms you may encounter performance issues at high resolution and with a high number of fragments, this is because all the threads buffer need to be mixed back onto the main thread before being displayed and at high resolution / threads count that is alot of pixels to process! You can see an alternative implementation using pure pthread in the `custom_backend` folder and `dispmanx_pure_parallel.c` but it doesn&#39;t have compositing. If your platform support some sort of SIMD instructions you could also do all the compositing using SIMD which should result in a 5x or more speed increase!</div><div class=\"line\"><a name=\"l00296\"></a><span class=\"lineno\">  296</span>&#160;</div><div class=\"line\"><a name=\"l00297\"></a><span class=\"lineno\">  297</span>&#160;### Technical implementation</div><div class=\"line\"><a name=\"l00298\"></a><span class=\"lineno\">  298</span>&#160;</div><div class=\"line\"><a name=\"l00299\"></a><span class=\"lineno\">  299</span>&#160;FBGraphics threads come with their own fbg context data which is essentialy a copy of the actual fbg context, they make use of C atomic types.</div><div class=\"line\"><a name=\"l00300\"></a><span class=\"lineno\">  300</span>&#160;</div><div class=\"line\"><a name=\"l00301\"></a><span class=\"lineno\">  301</span>&#160;Initially parallelism was implemented using [liblfds](http://liblfds.org/) library for its Ringbuffer and Freelist data structure.</div><div class=\"line\"><a name=\"l00302\"></a><span class=\"lineno\">  302</span>&#160;</div><div class=\"line\"><a name=\"l00303\"></a><span class=\"lineno\">  303</span>&#160;Now parallelism has two implementation, liblfds and a custom synchronization mechanism which has the advantage to not require additional libraries and thus execute on more platforms.</div><div class=\"line\"><a name=\"l00304\"></a><span class=\"lineno\">  304</span>&#160;</div><div class=\"line\"><a name=\"l00305\"></a><span class=\"lineno\">  305</span>&#160;You can still use the liblfds implementation using the `FBG_LFDS` define, it may be faster.</div><div class=\"line\"><a name=\"l00306\"></a><span class=\"lineno\">  306</span>&#160;</div><div class=\"line\"><a name=\"l00307\"></a><span class=\"lineno\">  307</span>&#160;#### With liblfds</div><div class=\"line\"><a name=\"l00308\"></a><span class=\"lineno\">  308</span>&#160;</div><div class=\"line\"><a name=\"l00309\"></a><span class=\"lineno\">  309</span>&#160;Each threads begin by fetching a pre-allocated buffer from a freelist, then the fragment function is called to fill that buffer, the thread then place the buffer into a ringbuffer data structure which will be fetched upon calling `fbg_draw`, the buffers are then mixed into the main back buffer and put back into the freelist.</div><div class=\"line\"><a name=\"l00310\"></a><span class=\"lineno\">  310</span>&#160;</div><div class=\"line\"><a name=\"l00311\"></a><span class=\"lineno\">  311</span>&#160;#### Without liblfds</div><div class=\"line\"><a name=\"l00312\"></a><span class=\"lineno\">  312</span>&#160;</div><div class=\"line\"><a name=\"l00313\"></a><span class=\"lineno\">  313</span>&#160;Each threads fragment function is called to fill the local buffer, each threads then wait till that buffer is consumed by the main thread upon calling `fbg_draw`, the buffers are then mixed into the main back buffer and `fbg_draw` wake up all threads.</div><div class=\"line\"><a name=\"l00314\"></a><span class=\"lineno\">  314</span>&#160;</div><div class=\"line\"><a name=\"l00315\"></a><span class=\"lineno\">  315</span>&#160;## Benchmark (framebuffer)</div><div class=\"line\"><a name=\"l00316\"></a><span class=\"lineno\">  316</span>&#160;</div><div class=\"line\"><a name=\"l00317\"></a><span class=\"lineno\">  317</span>&#160;A simple unoptimized per pixels screen clearing with 4 cores on a Raspberry PI 3B :  30 FPS @ 1280x768 and 370 FPS @ 320x240</div><div class=\"line\"><a name=\"l00318\"></a><span class=\"lineno\">  318</span>&#160;</div><div class=\"line\"><a name=\"l00319\"></a><span class=\"lineno\">  319</span>&#160;Note : Using the dispmanx backend a screen clearing + rectangle moving on a Raspberry PI 3B : 60 FPS @ 1920x1080</div><div class=\"line\"><a name=\"l00320\"></a><span class=\"lineno\">  320</span>&#160;</div><div class=\"line\"><a name=\"l00321\"></a><span class=\"lineno\">  321</span>&#160;### Full example</div><div class=\"line\"><a name=\"l00322\"></a><span class=\"lineno\">  322</span>&#160;</div><div class=\"line\"><a name=\"l00323\"></a><span class=\"lineno\">  323</span>&#160;Fullscreen per pixels perlin noise with texture mapping and scrolling (unoptimized)</div><div class=\"line\"><a name=\"l00324\"></a><span class=\"lineno\">  324</span>&#160;</div><div class=\"line\"><a name=\"l00325\"></a><span class=\"lineno\">  325</span>&#160;**Device** : Raspberry PI 3B ( Quad Core 1.2GHz )</div><div class=\"line\"><a name=\"l00326\"></a><span class=\"lineno\">  326</span>&#160;</div><div class=\"line\"><a name=\"l00327\"></a><span class=\"lineno\">  327</span>&#160;**Settings** : 320x240</div><div class=\"line\"><a name=\"l00328\"></a><span class=\"lineno\">  328</span>&#160;</div><div class=\"line\"><a name=\"l00329\"></a><span class=\"lineno\">  329</span>&#160;| Cores used to draw graphics | FPS     |</div><div class=\"line\"><a name=\"l00330\"></a><span class=\"lineno\">  330</span>&#160;| :-------------------------- | :------ |</div><div class=\"line\"><a name=\"l00331\"></a><span class=\"lineno\">  331</span>&#160;| 1                           | 42 FPS  |</div><div class=\"line\"><a name=\"l00332\"></a><span class=\"lineno\">  332</span>&#160;| 2                           | 81 FPS  |</div><div class=\"line\"><a name=\"l00333\"></a><span class=\"lineno\">  333</span>&#160;| 3                           | 120 FPS |</div><div class=\"line\"><a name=\"l00334\"></a><span class=\"lineno\">  334</span>&#160;</div><div class=\"line\"><a name=\"l00335\"></a><span class=\"lineno\">  335</span>&#160;See screenshots below.</div><div class=\"line\"><a name=\"l00336\"></a><span class=\"lineno\">  336</span>&#160;</div><div class=\"line\"><a name=\"l00337\"></a><span class=\"lineno\">  337</span>&#160;### Tunnel example</div><div class=\"line\"><a name=\"l00338\"></a><span class=\"lineno\">  338</span>&#160;</div><div class=\"line\"><a name=\"l00339\"></a><span class=\"lineno\">  339</span>&#160;Fullscreen texture-mapped and animated tunnel made of 40800 2px rectangles with motion blur (unoptimized)</div><div class=\"line\"><a name=\"l00340\"></a><span class=\"lineno\">  340</span>&#160;</div><div class=\"line\"><a name=\"l00341\"></a><span class=\"lineno\">  341</span>&#160;**Device** : Raspberry PI 3B ( Quad Core 1.2GHz )</div><div class=\"line\"><a name=\"l00342\"></a><span class=\"lineno\">  342</span>&#160;</div><div class=\"line\"><a name=\"l00343\"></a><span class=\"lineno\">  343</span>&#160;**Settings** : 320x240</div><div class=\"line\"><a name=\"l00344\"></a><span class=\"lineno\">  344</span>&#160;</div><div class=\"line\"><a name=\"l00345\"></a><span class=\"lineno\">  345</span>&#160;| Cores used to draw graphics | FPS     |</div><div class=\"line\"><a name=\"l00346\"></a><span class=\"lineno\">  346</span>&#160;| :-------------------------- | :------ |</div><div class=\"line\"><a name=\"l00347\"></a><span class=\"lineno\">  347</span>&#160;| 1                           | 36 FPS  |</div><div class=\"line\"><a name=\"l00348\"></a><span class=\"lineno\">  348</span>&#160;| 2                           | 69 FPS  |</div><div class=\"line\"><a name=\"l00349\"></a><span class=\"lineno\">  349</span>&#160;| 3                           | 99 FPS |</div><div class=\"line\"><a name=\"l00350\"></a><span class=\"lineno\">  350</span>&#160;| 4                           | 66 FPS |</div><div class=\"line\"><a name=\"l00351\"></a><span class=\"lineno\">  351</span>&#160;</div><div class=\"line\"><a name=\"l00352\"></a><span class=\"lineno\">  352</span>&#160;Note : The framerate drop with 4 cores is due to the main thread being too busy which make all the other threads follow due to the synchronization.</div><div class=\"line\"><a name=\"l00353\"></a><span class=\"lineno\">  353</span>&#160;</div><div class=\"line\"><a name=\"l00354\"></a><span class=\"lineno\">  354</span>&#160;See screenshots below.</div><div class=\"line\"><a name=\"l00355\"></a><span class=\"lineno\">  355</span>&#160;</div><div class=\"line\"><a name=\"l00356\"></a><span class=\"lineno\">  356</span>&#160;## Documentation</div><div class=\"line\"><a name=\"l00357\"></a><span class=\"lineno\">  357</span>&#160;</div><div class=\"line\"><a name=\"l00358\"></a><span class=\"lineno\">  358</span>&#160;All usable functions and structures are documented in the `fbgraphics.h` file with [Doxygen](http://www.stack.nl/~dimitri/doxygen/)</div><div class=\"line\"><a name=\"l00359\"></a><span class=\"lineno\">  359</span>&#160;</div><div class=\"line\"><a name=\"l00360\"></a><span class=\"lineno\">  360</span>&#160;The HTML documentation can be found in the `docs` directory.</div><div class=\"line\"><a name=\"l00361\"></a><span class=\"lineno\">  361</span>&#160;</div><div class=\"line\"><a name=\"l00362\"></a><span class=\"lineno\">  362</span>&#160;Examples demonstrating all features are available in the `examples` directory.</div><div class=\"line\"><a name=\"l00363\"></a><span class=\"lineno\">  363</span>&#160;</div><div class=\"line\"><a name=\"l00364\"></a><span class=\"lineno\">  364</span>&#160;Some effects come from [my Open Processing sketches](https://www.openprocessing.org/user/130883#sketches)</div><div class=\"line\"><a name=\"l00365\"></a><span class=\"lineno\">  365</span>&#160;</div><div class=\"line\"><a name=\"l00366\"></a><span class=\"lineno\">  366</span>&#160;## Building</div><div class=\"line\"><a name=\"l00367\"></a><span class=\"lineno\">  367</span>&#160;</div><div class=\"line\"><a name=\"l00368\"></a><span class=\"lineno\">  368</span>&#160;C11 standard should be supported by the C compiler.</div><div class=\"line\"><a name=\"l00369\"></a><span class=\"lineno\">  369</span>&#160;</div><div class=\"line\"><a name=\"l00370\"></a><span class=\"lineno\">  370</span>&#160;All examples found in `examples` directory make use of the framebuffer device `/dev/fb0` and can be built by typing `make` into the examples directory then run them by typing `./run_quickstart` for example (this handle the framebuffer setup prior launch), you will need to compile liblfds for the parallelism features. (see below)</div><div class=\"line\"><a name=\"l00371\"></a><span class=\"lineno\">  371</span>&#160;</div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\">  372</span>&#160;All examples were tested on a Raspberry PI 3B with framebuffer settings : 320x240 24 bpp</div><div class=\"line\"><a name=\"l00373\"></a><span class=\"lineno\">  373</span>&#160;</div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\">  374</span>&#160;For the default build (no parallelism), FBGraphics come with a header file `fbgraphics.h` and a C file `fbgraphics.c` to be included / compiled / linked with your program plus one of the rendering backend found in `custom_backend` directory, you will also need to compile the `lodepng.c` library and `nanojpeg.c` library, see the examples directory for examples of Makefile.</div><div class=\"line\"><a name=\"l00375\"></a><span class=\"lineno\">  375</span>&#160;</div><div class=\"line\"><a name=\"l00376\"></a><span class=\"lineno\">  376</span>&#160;For parallelism support, `FBG_PARALLEL` need to be defined.</div><div class=\"line\"><a name=\"l00377\"></a><span class=\"lineno\">  377</span>&#160;</div><div class=\"line\"><a name=\"l00378\"></a><span class=\"lineno\">  378</span>&#160;If you need to use the slightly different parallelism implementation (see technical implementation section) you will need the [liblfds](http://liblfds.org/) library :</div><div class=\"line\"><a name=\"l00379\"></a><span class=\"lineno\">  379</span>&#160;</div><div class=\"line\"><a name=\"l00380\"></a><span class=\"lineno\">  380</span>&#160; * Get latest liblfds 7.1.1 package on the official website</div><div class=\"line\"><a name=\"l00381\"></a><span class=\"lineno\">  381</span>&#160; * uncompress, go into the directory `liblfds711`</div><div class=\"line\"><a name=\"l00382\"></a><span class=\"lineno\">  382</span>&#160; * go into the directory `build/gcc_gnumake`</div><div class=\"line\"><a name=\"l00383\"></a><span class=\"lineno\">  383</span>&#160; * type `make` in a terminal</div><div class=\"line\"><a name=\"l00384\"></a><span class=\"lineno\">  384</span>&#160; * `liblfds711.a` can now be found in the `bin` directory, you need to link against it when compiling (see examples)</div><div class=\"line\"><a name=\"l00385\"></a><span class=\"lineno\">  385</span>&#160;</div><div class=\"line\"><a name=\"l00386\"></a><span class=\"lineno\">  386</span>&#160;To compile liblfds parallel examples, just copy `liblfds711.a` / `liblfds711.h` file and `liblfds711` directory into the `examples` directory then type `make lfds711`.</div><div class=\"line\"><a name=\"l00387\"></a><span class=\"lineno\">  387</span>&#160;</div><div class=\"line\"><a name=\"l00388\"></a><span class=\"lineno\">  388</span>&#160;**Note** : FBGraphics with liblfds work on ARM64 platforms but you will need liblfds720 which is not yet released.</div><div class=\"line\"><a name=\"l00389\"></a><span class=\"lineno\">  389</span>&#160;</div><div class=\"line\"><a name=\"l00390\"></a><span class=\"lineno\">  390</span>&#160;### Executable size optimization</div><div class=\"line\"><a name=\"l00391\"></a><span class=\"lineno\">  391</span>&#160;</div><div class=\"line\"><a name=\"l00392\"></a><span class=\"lineno\">  392</span>&#160;This library may be used for size optimized executable for things like [demos](https://en.wikipedia.org/wiki/Demoscene)</div><div class=\"line\"><a name=\"l00393\"></a><span class=\"lineno\">  393</span>&#160;</div><div class=\"line\"><a name=\"l00394\"></a><span class=\"lineno\">  394</span>&#160;PNG and JPEG support can be disabled with the `WITHOUT_JPEG` and `WITHOUT_PNG` define.</div><div class=\"line\"><a name=\"l00395\"></a><span class=\"lineno\">  395</span>&#160;</div><div class=\"line\"><a name=\"l00396\"></a><span class=\"lineno\">  396</span>&#160;See `tiny` makefile rule inside the `custom_backend` or `examples` folder for some compiler optimizations related to executable size.</div><div class=\"line\"><a name=\"l00397\"></a><span class=\"lineno\">  397</span>&#160;</div><div class=\"line\"><a name=\"l00398\"></a><span class=\"lineno\">  398</span>&#160;Under Linux [sstrip](https://github.com/BR903/ELFkickers/tree/master/sstrip) and [UPX](https://upx.github.io/) can be used to bring the size down even futher.</div><div class=\"line\"><a name=\"l00399\"></a><span class=\"lineno\">  399</span>&#160;</div><div class=\"line\"><a name=\"l00400\"></a><span class=\"lineno\">  400</span>&#160;## Rendering backend</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;</div><div class=\"line\"><a name=\"l00402\"></a><span class=\"lineno\">  402</span>&#160;See `README` into `custom_backend` folder</div><div class=\"line\"><a name=\"l00403\"></a><span class=\"lineno\">  403</span>&#160;</div><div class=\"line\"><a name=\"l00404\"></a><span class=\"lineno\">  404</span>&#160;## GLFW backend</div><div class=\"line\"><a name=\"l00405\"></a><span class=\"lineno\">  405</span>&#160;</div><div class=\"line\"><a name=\"l00406\"></a><span class=\"lineno\">  406</span>&#160;See `README` into `custom_backend` folder</div><div class=\"line\"><a name=\"l00407\"></a><span class=\"lineno\">  407</span>&#160;</div><div class=\"line\"><a name=\"l00408\"></a><span class=\"lineno\">  408</span>&#160;The GLFW backend was made to demonstrate how to write a backend but it is complete enough to be used by default.</div><div class=\"line\"><a name=\"l00409\"></a><span class=\"lineno\">  409</span>&#160;</div><div class=\"line\"><a name=\"l00410\"></a><span class=\"lineno\">  410</span>&#160;The GLFW backend has a cool lightweight Lua example which setup a Processing-like environment making use of the parallelism feature of the library, allowing the user to prototype multithreaded graphical stuff without C code compilation through the Lua language.</div><div class=\"line\"><a name=\"l00411\"></a><span class=\"lineno\">  411</span>&#160;</div><div class=\"line\"><a name=\"l00412\"></a><span class=\"lineno\">  412</span>&#160;## OpenGL ES 2 backend</div><div class=\"line\"><a name=\"l00413\"></a><span class=\"lineno\">  413</span>&#160;</div><div class=\"line\"><a name=\"l00414\"></a><span class=\"lineno\">  414</span>&#160;See `README` into `custom_backend` folder</div><div class=\"line\"><a name=\"l00415\"></a><span class=\"lineno\">  415</span>&#160;</div><div class=\"line\"><a name=\"l00416\"></a><span class=\"lineno\">  416</span>&#160;## GBA backend</div><div class=\"line\"><a name=\"l00417\"></a><span class=\"lineno\">  417</span>&#160;</div><div class=\"line\"><a name=\"l00418\"></a><span class=\"lineno\">  418</span>&#160;See `README` into `custom_backend` folder</div><div class=\"line\"><a name=\"l00419\"></a><span class=\"lineno\">  419</span>&#160;</div><div class=\"line\"><a name=\"l00420\"></a><span class=\"lineno\">  420</span>&#160;## Screenshots</div><div class=\"line\"><a name=\"l00421\"></a><span class=\"lineno\">  421</span>&#160;</div><div class=\"line\"><a name=\"l00422\"></a><span class=\"lineno\">  422</span>&#160;![Full example screenshot with three threads](/screenshot1.png?raw=true &quot;Full example screenshot with three threads&quot;)</div><div class=\"line\"><a name=\"l00423\"></a><span class=\"lineno\">  423</span>&#160;</div><div class=\"line\"><a name=\"l00424\"></a><span class=\"lineno\">  424</span>&#160;![Tunnel with four threads](/screenshot2.png?raw=true &quot;Tunnel with four threads&quot;)</div><div class=\"line\"><a name=\"l00425\"></a><span class=\"lineno\">  425</span>&#160;</div><div class=\"line\"><a name=\"l00426\"></a><span class=\"lineno\">  426</span>&#160;![Earth with four threads](/screenshot3.png?raw=true &quot;Earth with four threads&quot;)</div><div class=\"line\"><a name=\"l00427\"></a><span class=\"lineno\">  427</span>&#160;</div><div class=\"line\"><a name=\"l00428\"></a><span class=\"lineno\">  428</span>&#160;![Flags of the world with four threads](/screenshot4.png?raw=true &quot;Flags of the world with four threads&quot;)</div><div class=\"line\"><a name=\"l00429\"></a><span class=\"lineno\">  429</span>&#160;</div><div class=\"line\"><a name=\"l00430\"></a><span class=\"lineno\">  430</span>&#160;![Compositing with three threads](/screenshot5.png?raw=true &quot;Compositing with three threads&quot;)</div><div class=\"line\"><a name=\"l00431\"></a><span class=\"lineno\">  431</span>&#160;</div><div class=\"line\"><a name=\"l00432\"></a><span class=\"lineno\">  432</span>&#160;## License</div><div class=\"line\"><a name=\"l00433\"></a><span class=\"lineno\">  433</span>&#160;</div><div class=\"line\"><a name=\"l00434\"></a><span class=\"lineno\">  434</span>&#160;BSD, see LICENSE file</div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/annotated.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Data Structures</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Data Structures</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here are the data structures with brief descriptions:</div><div class=\"directory\">\n<table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"struct__fbg.html\" target=\"_self\">_fbg</a></td><td class=\"desc\">FB Graphics context data structure </td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"struct__fbg__dispmanx__context.html\" target=\"_self\">_fbg_dispmanx_context</a></td><td class=\"desc\">Dispmanx wrapper data structure </td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\" target=\"_self\">_fbg_fbdev_context</a></td><td class=\"desc\">Fbdev wrapper data structure </td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" target=\"_self\">_fbg_font</a></td><td class=\"desc\">Bitmap font data structure </td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbg__gba_8h.html#struct__fbg__gba__context\" target=\"_self\">_fbg_gba_context</a></td><td class=\"desc\">Fbdev wrapper data structure </td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\" target=\"_self\">_fbg_gles2_context</a></td><td class=\"desc\">OpenGL ES 2.0 wrapper data structure </td></tr>\n<tr id=\"row_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\" target=\"_self\">_fbg_glfw_context</a></td><td class=\"desc\">GLFW wrapper data structure </td></tr>\n<tr id=\"row_7_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\" target=\"_self\">_fbg_hsl</a></td><td class=\"desc\">HSL color data structure </td></tr>\n<tr id=\"row_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\" target=\"_self\">_fbg_img</a></td><td class=\"desc\">Image data structure </td></tr>\n<tr id=\"row_9_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\" target=\"_self\">_fbg_rgb</a></td><td class=\"desc\">RGBA color data structure </td></tr>\n<tr id=\"row_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\" target=\"_self\">_fbg_vbo_data</a></td><td class=\"desc\">Struct which hold usual VBO data for 3D objects </td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/annotated_dup.js",
    "content": "var annotated_dup =\n[\n    [ \"_fbg\", \"struct__fbg.html\", \"struct__fbg\" ],\n    [ \"_fbg_dispmanx_context\", \"struct__fbg__dispmanx__context.html\", \"struct__fbg__dispmanx__context\" ],\n    [ \"_fbg_fbdev_context\", \"fbg__fbdev_8h.html#struct__fbg__fbdev__context\", \"fbg__fbdev_8h_struct__fbg__fbdev__context\" ],\n    [ \"_fbg_font\", \"fbgraphics_8h.html#struct__fbg__font\", \"fbgraphics_8h_struct__fbg__font\" ],\n    [ \"_fbg_gba_context\", \"fbg__gba_8h.html#struct__fbg__gba__context\", \"fbg__gba_8h_struct__fbg__gba__context\" ],\n    [ \"_fbg_gles2_context\", \"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\", \"fbg__opengl__es2_8h_struct__fbg__gles2__context\" ],\n    [ \"_fbg_glfw_context\", \"fbg__glfw_8h.html#struct__fbg__glfw__context\", \"fbg__glfw_8h_struct__fbg__glfw__context\" ],\n    [ \"_fbg_hsl\", \"fbgraphics_8h.html#struct__fbg__hsl\", \"fbgraphics_8h_struct__fbg__hsl\" ],\n    [ \"_fbg_img\", \"fbgraphics_8h.html#struct__fbg__img\", \"fbgraphics_8h_struct__fbg__img\" ],\n    [ \"_fbg_rgb\", \"fbgraphics_8h.html#struct__fbg__rgb\", \"fbgraphics_8h_struct__fbg__rgb\" ],\n    [ \"_fbg_vbo_data\", \"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\", \"fbg__opengl__es2_8h_struct__fbg__vbo__data\" ]\n];"
  },
  {
    "path": "docs/classes.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Data Structure Index</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Data Structure Index</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"qindex\"><a class=\"qindex\" href=\"#letter__\">_</a></div>\n<table class=\"classindex\">\n<tr><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter__\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;_&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html\">_fbg_dispmanx_context</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbg__gba_8h.html#struct__fbg__gba__context\">_fbg_gba_context</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a>&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\">_fbg_fbdev_context</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\">_fbg_gles2_context</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a>&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"struct__fbg.html\">_fbg</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\">_fbg_glfw_context</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a>&#160;&#160;&#160;</td><td></td></tr>\n<tr><td></td><td></td><td></td><td></td><td></td></tr>\n</table>\n<div class=\"qindex\"><a class=\"qindex\" href=\"#letter__\">_</a></div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_2665f63191f4afb0d340db1cd0753229.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: glfw Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2665f63191f4afb0d340db1cd0753229.html\">glfw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">glfw Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbg__glfw_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html\">fbg_glfw.h</a> <a href=\"fbg__glfw_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_306cfb62d1d3531b68bf1f0f292c4744.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: dispmanx Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_306cfb62d1d3531b68bf1f0f292c4744.html\">dispmanx</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dispmanx Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbg__dispmanx_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__dispmanx_8h.html\">fbg_dispmanx.h</a> <a href=\"fbg__dispmanx_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_30a16d91d70e9988af00af0764afdb22.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: custom_backend Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">custom_backend Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_306cfb62d1d3531b68bf1f0f292c4744\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_306cfb62d1d3531b68bf1f0f292c4744.html\">dispmanx</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_cd6eaa540ed8d7f18047d0dfe0a4f94a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.html\">fbdev</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_f87af8b164f0cd63cd64846525e0544b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_f87af8b164f0cd63cd64846525e0544b.html\">gba</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_2665f63191f4afb0d340db1cd0753229\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_2665f63191f4afb0d340db1cd0753229.html\">glfw</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_ef37642b6b64fd185f53d45d9625a884\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_ef37642b6b64fd185f53d45d9625a884.html\">opengl_es2</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_68267d1309a1af8e8297ef4c3efbcdba.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbgraphics_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html\">fbgraphics.h</a> <a href=\"fbgraphics_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbdev Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.html\">fbdev</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbdev Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbg__fbdev_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__fbdev_8h.html\">fbg_fbdev.h</a> <a href=\"fbg__fbdev_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ef37642b6b64fd185f53d45d9625a884.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: opengl_es2 Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ef37642b6b64fd185f53d45d9625a884.html\">opengl_es2</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">opengl_es2 Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbg__opengl__es2_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html\">fbg_opengl_es2.h</a> <a href=\"fbg__opengl__es2_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_f87af8b164f0cd63cd64846525e0544b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: gba Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f87af8b164f0cd63cd64846525e0544b.html\">gba</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">gba Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:fbg__gba_8h\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__gba_8h.html\">fbg_gba.h</a> <a href=\"fbg__gba_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/doxygen.css",
    "content": "/* The standard CSS for doxygen 1.8.13 */\n\nbody, table, div, p, dl {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\np.reference, p.definition {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\n/* @group Heading Levels */\n\nh1.groupheader {\n\tfont-size: 150%;\n}\n\n.title {\n\tfont: 400 14px/28px Roboto,sans-serif;\n\tfont-size: 150%;\n\tfont-weight: bold;\n\tmargin: 10px 2px;\n}\n\nh2.groupheader {\n\tborder-bottom: 1px solid #879ECB;\n\tcolor: #354C7B;\n\tfont-size: 150%;\n\tfont-weight: normal;\n\tmargin-top: 1.75em;\n\tpadding-top: 8px;\n\tpadding-bottom: 4px;\n\twidth: 100%;\n}\n\nh3.groupheader {\n\tfont-size: 100%;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\t-webkit-transition: text-shadow 0.5s linear;\n\t-moz-transition: text-shadow 0.5s linear;\n\t-ms-transition: text-shadow 0.5s linear;\n\t-o-transition: text-shadow 0.5s linear;\n\ttransition: text-shadow 0.5s linear;\n\tmargin-right: 15px;\n}\n\nh1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n\ttext-shadow: 0 0 15px cyan;\n}\n\ndt {\n\tfont-weight: bold;\n}\n\ndiv.multicol {\n\t-moz-column-gap: 1em;\n\t-webkit-column-gap: 1em;\n\t-moz-column-count: 3;\n\t-webkit-column-count: 3;\n}\n\np.startli, p.startdd {\n\tmargin-top: 2px;\n}\n\np.starttd {\n\tmargin-top: 0px;\n}\n\np.endli {\n\tmargin-bottom: 0px;\n}\n\np.enddd {\n\tmargin-bottom: 4px;\n}\n\np.endtd {\n\tmargin-bottom: 2px;\n}\n\n/* @end */\n\ncaption {\n\tfont-weight: bold;\n}\n\nspan.legend {\n        font-size: 70%;\n        text-align: center;\n}\n\nh3.version {\n        font-size: 90%;\n        text-align: center;\n}\n\ndiv.qindex, div.navtab{\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n}\n\ndiv.qindex, div.navpath {\n\twidth: 100%;\n\tline-height: 140%;\n}\n\ndiv.navtab {\n\tmargin-right: 15px;\n}\n\n/* @group Link Styling */\n\na {\n\tcolor: #3D578C;\n\tfont-weight: normal;\n\ttext-decoration: none;\n}\n\n.contents a:visited {\n\tcolor: #4665A2;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\na.qindex {\n\tfont-weight: bold;\n}\n\na.qindexHL {\n\tfont-weight: bold;\n\tbackground-color: #9CAFD4;\n\tcolor: #ffffff;\n\tborder: 1px double #869DCA;\n}\n\n.contents a.qindexHL:visited {\n        color: #ffffff;\n}\n\na.el {\n\tfont-weight: bold;\n}\n\na.elRef {\n}\n\na.code, a.code:visited, a.line, a.line:visited {\n\tcolor: #4665A2; \n}\n\na.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {\n\tcolor: #4665A2; \n}\n\n/* @end */\n\ndl.el {\n\tmargin-left: -1cm;\n}\n\npre.fragment {\n        border: 1px solid #C4CFE5;\n        background-color: #FBFCFD;\n        padding: 4px 6px;\n        margin: 4px 8px 4px 2px;\n        overflow: auto;\n        word-wrap: break-word;\n        font-size:  9pt;\n        line-height: 125%;\n        font-family: monospace, fixed;\n        font-size: 105%;\n}\n\ndiv.fragment {\n        padding: 0px;\n        margin: 4px 8px 4px 2px;\n\tbackground-color: #FBFCFD;\n\tborder: 1px solid #C4CFE5;\n}\n\ndiv.line {\n\tfont-family: monospace, fixed;\n        font-size: 13px;\n\tmin-height: 13px;\n\tline-height: 1.0;\n\ttext-wrap: unrestricted;\n\twhite-space: -moz-pre-wrap; /* Moz */\n\twhite-space: -pre-wrap;     /* Opera 4-6 */\n\twhite-space: -o-pre-wrap;   /* Opera 7 */\n\twhite-space: pre-wrap;      /* CSS3  */\n\tword-wrap: break-word;      /* IE 5.5+ */\n\ttext-indent: -53px;\n\tpadding-left: 53px;\n\tpadding-bottom: 0px;\n\tmargin: 0px;\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\ndiv.line:after {\n    content:\"\\000A\";\n    white-space: pre;\n}\n\ndiv.line.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 10px cyan;\n}\n\n\nspan.lineno {\n\tpadding-right: 4px;\n\ttext-align: right;\n\tborder-right: 2px solid #0F0;\n\tbackground-color: #E8E8E8;\n        white-space: pre;\n}\nspan.lineno a {\n\tbackground-color: #D8D8D8;\n}\n\nspan.lineno a:hover {\n\tbackground-color: #C8C8C8;\n}\n\n.lineno {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\ndiv.ah, span.ah {\n\tbackground-color: black;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\tpadding: 0.2em;\n\tborder: solid thin #333;\n\tborder-radius: 0.5em;\n\t-webkit-border-radius: .5em;\n\t-moz-border-radius: .5em;\n\tbox-shadow: 2px 2px 3px #999;\n\t-webkit-box-shadow: 2px 2px 3px #999;\n\t-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n\tbackground-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n\tbackground-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);\n}\n\ndiv.classindex ul {\n        list-style: none;\n        padding-left: 0;\n}\n\ndiv.classindex span.ai {\n        display: inline-block;\n}\n\ndiv.groupHeader {\n\tmargin-left: 16px;\n\tmargin-top: 12px;\n\tfont-weight: bold;\n}\n\ndiv.groupText {\n\tmargin-left: 16px;\n\tfont-style: italic;\n}\n\nbody {\n\tbackground-color: white;\n\tcolor: black;\n        margin: 0;\n}\n\ndiv.contents {\n\tmargin-top: 10px;\n\tmargin-left: 12px;\n\tmargin-right: 8px;\n}\n\ntd.indexkey {\n\tbackground-color: #EBEFF6;\n\tfont-weight: bold;\n\tborder: 1px solid #C4CFE5;\n\tmargin: 2px 0px 2px 0;\n\tpadding: 2px 10px;\n        white-space: nowrap;\n        vertical-align: top;\n}\n\ntd.indexvalue {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #C4CFE5;\n\tpadding: 2px 10px;\n\tmargin: 2px 0px;\n}\n\ntr.memlist {\n\tbackground-color: #EEF1F7;\n}\n\np.formulaDsp {\n\ttext-align: center;\n}\n\nimg.formulaDsp {\n\t\n}\n\nimg.formulaInl {\n\tvertical-align: middle;\n}\n\ndiv.center {\n\ttext-align: center;\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding: 0px;\n}\n\ndiv.center img {\n\tborder: 0px;\n}\n\naddress.footer {\n\ttext-align: right;\n\tpadding-right: 12px;\n}\n\nimg.footer {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n\n/* @group Code Colorization */\n\nspan.keyword {\n\tcolor: #008000\n}\n\nspan.keywordtype {\n\tcolor: #604020\n}\n\nspan.keywordflow {\n\tcolor: #e08000\n}\n\nspan.comment {\n\tcolor: #800000\n}\n\nspan.preprocessor {\n\tcolor: #806020\n}\n\nspan.stringliteral {\n\tcolor: #002080\n}\n\nspan.charliteral {\n\tcolor: #008080\n}\n\nspan.vhdldigit { \n\tcolor: #ff00ff \n}\n\nspan.vhdlchar { \n\tcolor: #000000 \n}\n\nspan.vhdlkeyword { \n\tcolor: #700070 \n}\n\nspan.vhdllogic { \n\tcolor: #ff0000 \n}\n\nblockquote {\n        background-color: #F7F8FB;\n        border-left: 2px solid #9CAFD4;\n        margin: 0 24px 0 4px;\n        padding: 0 12px 0 16px;\n}\n\n/* @end */\n\n/*\n.search {\n\tcolor: #003399;\n\tfont-weight: bold;\n}\n\nform.search {\n\tmargin-bottom: 0px;\n\tmargin-top: 0px;\n}\n\ninput.search {\n\tfont-size: 75%;\n\tcolor: #000080;\n\tfont-weight: normal;\n\tbackground-color: #e8eef2;\n}\n*/\n\ntd.tiny {\n\tfont-size: 75%;\n}\n\n.dirtab {\n\tpadding: 4px;\n\tborder-collapse: collapse;\n\tborder: 1px solid #A3B4D7;\n}\n\nth.dirtab {\n\tbackground: #EBEFF6;\n\tfont-weight: bold;\n}\n\nhr {\n\theight: 0px;\n\tborder: none;\n\tborder-top: 1px solid #4A6AAA;\n}\n\nhr.footer {\n\theight: 1px;\n}\n\n/* @group Member Descriptions */\n\ntable.memberdecls {\n\tborder-spacing: 0px;\n\tpadding: 0px;\n}\n\n.memberdecls td, .fieldtable tr {\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\n.memberdecls td.glow, .fieldtable tr.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 15px cyan;\n}\n\n.mdescLeft, .mdescRight,\n.memItemLeft, .memItemRight,\n.memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n\tbackground-color: #F9FAFC;\n\tborder: none;\n\tmargin: 4px;\n\tpadding: 1px 0 0 8px;\n}\n\n.mdescLeft, .mdescRight {\n\tpadding: 0px 8px 4px 8px;\n\tcolor: #555;\n}\n\n.memSeparator {\n        border-bottom: 1px solid #DEE4F0;\n        line-height: 1px;\n        margin: 0px;\n        padding: 0px;\n}\n\n.memItemLeft, .memTemplItemLeft {\n        white-space: nowrap;\n}\n\n.memItemRight {\n\twidth: 100%;\n}\n\n.memTemplParams {\n\tcolor: #4665A2;\n        white-space: nowrap;\n\tfont-size: 80%;\n}\n\n/* @end */\n\n/* @group Member Details */\n\n/* Styles for detailed member documentation */\n\n.memtitle {\n\tpadding: 8px;\n\tborder-top: 1px solid #A8B8D9;\n\tborder-left: 1px solid #A8B8D9;\n\tborder-right: 1px solid #A8B8D9;\n\tborder-top-right-radius: 4px;\n\tborder-top-left-radius: 4px;\n\tmargin-bottom: -1px;\n\tbackground-image: url('nav_f.png');\n\tbackground-repeat: repeat-x;\n\tbackground-color: #E2E8F2;\n\tline-height: 1.25;\n\tfont-weight: 300;\n\tfloat:left;\n}\n\n.permalink\n{\n        font-size: 65%;\n        display: inline-block;\n        vertical-align: middle;\n}\n\n.memtemplate {\n\tfont-size: 80%;\n\tcolor: #4665A2;\n\tfont-weight: normal;\n\tmargin-left: 9px;\n}\n\n.memnav {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n\tmargin: 2px;\n\tmargin-right: 15px;\n\tpadding: 2px;\n}\n\n.mempage {\n\twidth: 100%;\n}\n\n.memitem {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tmargin-right: 5px;\n        -webkit-transition: box-shadow 0.5s linear;\n        -moz-transition: box-shadow 0.5s linear;\n        -ms-transition: box-shadow 0.5s linear;\n        -o-transition: box-shadow 0.5s linear;\n        transition: box-shadow 0.5s linear;\n        display: table !important;\n        width: 100%;\n}\n\n.memitem.glow {\n         box-shadow: 0 0 15px cyan;\n}\n\n.memname {\n        font-weight: 400;\n        margin-left: 6px;\n}\n\n.memname td {\n\tvertical-align: bottom;\n}\n\n.memproto, dl.reflist dt {\n        border-top: 1px solid #A8B8D9;\n        border-left: 1px solid #A8B8D9;\n        border-right: 1px solid #A8B8D9;\n        padding: 6px 0px 6px 0px;\n        color: #253555;\n        font-weight: bold;\n        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n        background-color: #DFE5F1;\n        /* opera specific markup */\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        border-top-right-radius: 4px;\n        /* firefox specific markup */\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        -moz-border-radius-topright: 4px;\n        /* webkit specific markup */\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        -webkit-border-top-right-radius: 4px;\n\n}\n\n.overload {\n        font-family: \"courier new\",courier,monospace;\n\tfont-size: 65%;\n}\n\n.memdoc, dl.reflist dd {\n        border-bottom: 1px solid #A8B8D9;      \n        border-left: 1px solid #A8B8D9;      \n        border-right: 1px solid #A8B8D9; \n        padding: 6px 10px 2px 10px;\n        background-color: #FBFCFD;\n        border-top-width: 0;\n        background-image:url('nav_g.png');\n        background-repeat:repeat-x;\n        background-color: #FFFFFF;\n        /* opera specific markup */\n        border-bottom-left-radius: 4px;\n        border-bottom-right-radius: 4px;\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        /* firefox specific markup */\n        -moz-border-radius-bottomleft: 4px;\n        -moz-border-radius-bottomright: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        /* webkit specific markup */\n        -webkit-border-bottom-left-radius: 4px;\n        -webkit-border-bottom-right-radius: 4px;\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\ndl.reflist dt {\n        padding: 5px;\n}\n\ndl.reflist dd {\n        margin: 0px 0px 10px 0px;\n        padding: 5px;\n}\n\n.paramkey {\n\ttext-align: right;\n}\n\n.paramtype {\n\twhite-space: nowrap;\n}\n\n.paramname {\n\tcolor: #602020;\n\twhite-space: nowrap;\n}\n.paramname em {\n\tfont-style: normal;\n}\n.paramname code {\n        line-height: 14px;\n}\n\n.params, .retval, .exception, .tparams {\n        margin-left: 0px;\n        padding-left: 0px;\n}       \n\n.params .paramname, .retval .paramname {\n        font-weight: bold;\n        vertical-align: top;\n}\n        \n.params .paramtype {\n        font-style: italic;\n        vertical-align: top;\n}       \n        \n.params .paramdir {\n        font-family: \"courier new\",courier,monospace;\n        vertical-align: top;\n}\n\ntable.mlabels {\n\tborder-spacing: 0px;\n}\n\ntd.mlabels-left {\n\twidth: 100%;\n\tpadding: 0px;\n}\n\ntd.mlabels-right {\n\tvertical-align: bottom;\n\tpadding: 0px;\n\twhite-space: nowrap;\n}\n\nspan.mlabels {\n        margin-left: 8px;\n}\n\nspan.mlabel {\n        background-color: #728DC1;\n        border-top:1px solid #5373B4;\n        border-left:1px solid #5373B4;\n        border-right:1px solid #C4CFE5;\n        border-bottom:1px solid #C4CFE5;\n\ttext-shadow: none;\n\tcolor: white;\n\tmargin-right: 4px;\n\tpadding: 2px 3px;\n\tborder-radius: 3px;\n\tfont-size: 7pt;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n}\n\n\n\n/* @end */\n\n/* these are for tree view inside a (index) page */\n\ndiv.directory {\n        margin: 10px 0px;\n        border-top: 1px solid #9CAFD4;\n        border-bottom: 1px solid #9CAFD4;\n        width: 100%;\n}\n\n.directory table {\n        border-collapse:collapse;\n}\n\n.directory td {\n        margin: 0px;\n        padding: 0px;\n\tvertical-align: top;\n}\n\n.directory td.entry {\n        white-space: nowrap;\n        padding-right: 6px;\n\tpadding-top: 3px;\n}\n\n.directory td.entry a {\n        outline:none;\n}\n\n.directory td.entry a img {\n        border: none;\n}\n\n.directory td.desc {\n        width: 100%;\n        padding-left: 6px;\n\tpadding-right: 6px;\n\tpadding-top: 3px;\n\tborder-left: 1px solid rgba(0,0,0,0.05);\n}\n\n.directory tr.even {\n\tpadding-left: 6px;\n\tbackground-color: #F7F8FB;\n}\n\n.directory img {\n\tvertical-align: -30%;\n}\n\n.directory .levels {\n        white-space: nowrap;\n        width: 100%;\n        text-align: right;\n        font-size: 9pt;\n}\n\n.directory .levels span {\n        cursor: pointer;\n        padding-left: 2px;\n        padding-right: 2px;\n\tcolor: #3D578C;\n}\n\n.arrow {\n    color: #9CAFD4;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    cursor: pointer;\n    font-size: 80%;\n    display: inline-block;\n    width: 16px;\n    height: 22px;\n}\n\n.icon {\n    font-family: Arial, Helvetica;\n    font-weight: bold;\n    font-size: 12px;\n    height: 14px;\n    width: 16px;\n    display: inline-block;\n    background-color: #728DC1;\n    color: white;\n    text-align: center;\n    border-radius: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\n.icona {\n    width: 24px;\n    height: 22px;\n    display: inline-block;\n}\n\n.iconfopen {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderopen.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.iconfclosed {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderclosed.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.icondoc {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('doc.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\ntable.directory {\n    font: 400 14px Roboto,sans-serif;\n}\n\n/* @end */\n\ndiv.dynheader {\n        margin-top: 8px;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\naddress {\n\tfont-style: normal;\n\tcolor: #2A3D61;\n}\n\ntable.doxtable caption {\n\tcaption-side: top;\n}\n\ntable.doxtable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.doxtable td, table.doxtable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.doxtable th {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\ntable.fieldtable {\n        /*width: 100%;*/\n        margin-bottom: 10px;\n        border: 1px solid #A8B8D9;\n        border-spacing: 0px;\n        -moz-border-radius: 4px;\n        -webkit-border-radius: 4px;\n        border-radius: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n}\n\n.fieldtable td, .fieldtable th {\n        padding: 3px 7px 2px;\n}\n\n.fieldtable td.fieldtype, .fieldtable td.fieldname {\n        white-space: nowrap;\n        border-right: 1px solid #A8B8D9;\n        border-bottom: 1px solid #A8B8D9;\n        vertical-align: top;\n}\n\n.fieldtable td.fieldname {\n        padding-top: 3px;\n}\n\n.fieldtable td.fielddoc {\n        border-bottom: 1px solid #A8B8D9;\n        /*width: 100%;*/\n}\n\n.fieldtable td.fielddoc p:first-child {\n        margin-top: 0px;\n}       \n        \n.fieldtable td.fielddoc p:last-child {\n        margin-bottom: 2px;\n}\n\n.fieldtable tr:last-child td {\n        border-bottom: none;\n}\n\n.fieldtable th {\n        background-image:url('nav_f.png');\n        background-repeat:repeat-x;\n        background-color: #E2E8F2;\n        font-size: 90%;\n        color: #253555;\n        padding-bottom: 4px;\n        padding-top: 5px;\n        text-align:left;\n        font-weight: 400;\n        -moz-border-radius-topleft: 4px;\n        -moz-border-radius-topright: 4px;\n        -webkit-border-top-left-radius: 4px;\n        -webkit-border-top-right-radius: 4px;\n        border-top-left-radius: 4px;\n        border-top-right-radius: 4px;\n        border-bottom: 1px solid #A8B8D9;\n}\n\n\n.tabsearch {\n\ttop: 0px;\n\tleft: 10px;\n\theight: 36px;\n\tbackground-image: url('tab_b.png');\n\tz-index: 101;\n\toverflow: hidden;\n\tfont-size: 13px;\n}\n\n.navpath ul\n{\n\tfont-size: 11px;\n\tbackground-image:url('tab_b.png');\n\tbackground-repeat:repeat-x;\n\tbackground-position: 0 -5px;\n\theight:30px;\n\tline-height:30px;\n\tcolor:#8AA0CC;\n\tborder:solid 1px #C2CDE4;\n\toverflow:hidden;\n\tmargin:0px;\n\tpadding:0px;\n}\n\n.navpath li\n{\n\tlist-style-type:none;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:15px;\n\tbackground-image:url('bc_s.png');\n\tbackground-repeat:no-repeat;\n\tbackground-position:right;\n\tcolor:#364D7C;\n}\n\n.navpath li.navelem a\n{\n\theight:32px;\n\tdisplay:block;\n\ttext-decoration: none;\n\toutline: none;\n\tcolor: #283A5D;\n\tfont-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n\ttext-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n\ttext-decoration: none;        \n}\n\n.navpath li.navelem a:hover\n{\n\tcolor:#6884BD;\n}\n\n.navpath li.footer\n{\n        list-style-type:none;\n        float:right;\n        padding-left:10px;\n        padding-right:15px;\n        background-image:none;\n        background-repeat:no-repeat;\n        background-position:right;\n        color:#364D7C;\n        font-size: 8pt;\n}\n\n\ndiv.summary\n{\n\tfloat: right;\n\tfont-size: 8pt;\n\tpadding-right: 5px;\n\twidth: 50%;\n\ttext-align: right;\n}       \n\ndiv.summary a\n{\n\twhite-space: nowrap;\n}\n\ntable.classindex\n{\n        margin: 10px;\n        white-space: nowrap;\n        margin-left: 3%;\n        margin-right: 3%;\n        width: 94%;\n        border: 0;\n        border-spacing: 0; \n        padding: 0;\n}\n\ndiv.ingroups\n{\n\tfont-size: 8pt;\n\twidth: 50%;\n\ttext-align: left;\n}\n\ndiv.ingroups a\n{\n\twhite-space: nowrap;\n}\n\ndiv.header\n{\n        background-image:url('nav_h.png');\n        background-repeat:repeat-x;\n\tbackground-color: #F9FAFC;\n\tmargin:  0px;\n\tborder-bottom: 1px solid #C4CFE5;\n}\n\ndiv.headertitle\n{\n\tpadding: 5px 5px 5px 10px;\n}\n\ndl\n{\n        padding: 0 0 0 10px;\n}\n\n/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */\ndl.section\n{\n\tmargin-left: 0px;\n\tpadding-left: 0px;\n}\n\ndl.note\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #D0C000;\n}\n\ndl.warning, dl.attention\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #FF0000;\n}\n\ndl.pre, dl.post, dl.invariant\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00D000;\n}\n\ndl.deprecated\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #505050;\n}\n\ndl.todo\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00C0E0;\n}\n\ndl.test\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #3030E0;\n}\n\ndl.bug\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #C08050;\n}\n\ndl.section dd {\n\tmargin-bottom: 6px;\n}\n\n\n#projectlogo\n{\n\ttext-align: center;\n\tvertical-align: bottom;\n\tborder-collapse: separate;\n}\n \n#projectlogo img\n{ \n\tborder: 0px none;\n}\n \n#projectalign\n{\n        vertical-align: middle;\n}\n\n#projectname\n{\n\tfont: 300% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 2px 0px;\n}\n    \n#projectbrief\n{\n\tfont: 120% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#projectnumber\n{\n\tfont: 50% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#titlearea\n{\n\tpadding: 0px;\n\tmargin: 0px;\n\twidth: 100%;\n\tborder-bottom: 1px solid #5373B4;\n}\n\n.image\n{\n        text-align: center;\n}\n\n.dotgraph\n{\n        text-align: center;\n}\n\n.mscgraph\n{\n        text-align: center;\n}\n\n.plantumlgraph\n{\n        text-align: center;\n}\n\n.diagraph\n{\n        text-align: center;\n}\n\n.caption\n{\n\tfont-weight: bold;\n}\n\ndiv.zoom\n{\n\tborder: 1px solid #90A5CE;\n}\n\ndl.citelist {\n        margin-bottom:50px;\n}\n\ndl.citelist dt {\n        color:#334975;\n        float:left;\n        font-weight:bold;\n        margin-right:10px;\n        padding:5px;\n}\n\ndl.citelist dd {\n        margin:2px 0;\n        padding:5px 0;\n}\n\ndiv.toc {\n        padding: 14px 25px;\n        background-color: #F4F6FA;\n        border: 1px solid #D8DFEE;\n        border-radius: 7px 7px 7px 7px;\n        float: right;\n        height: auto;\n        margin: 0 8px 10px 10px;\n        width: 200px;\n}\n\ndiv.toc li {\n        background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n        margin-top: 5px;\n        padding-left: 10px;\n        padding-top: 2px;\n}\n\ndiv.toc h3 {\n        font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n\tcolor: #4665A2;\n        border-bottom: 0 none;\n        margin: 0;\n}\n\ndiv.toc ul {\n        list-style: none outside none;\n        border: medium none;\n        padding: 0px;\n}       \n\ndiv.toc li.level1 {\n        margin-left: 0px;\n}\n\ndiv.toc li.level2 {\n        margin-left: 15px;\n}\n\ndiv.toc li.level3 {\n        margin-left: 30px;\n}\n\ndiv.toc li.level4 {\n        margin-left: 45px;\n}\n\n.inherit_header {\n        font-weight: bold;\n        color: gray;\n        cursor: pointer;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.inherit_header td {\n        padding: 6px 0px 2px 5px;\n}\n\n.inherit {\n        display: none;\n}\n\ntr.heading h2 {\n        margin-top: 12px;\n        margin-bottom: 4px;\n}\n\n/* tooltip related style info */\n\n.ttc {\n        position: absolute;\n        display: none;\n}\n\n#powerTip {\n\tcursor: default;\n\twhite-space: nowrap;\n\tbackground-color: white;\n\tborder: 1px solid gray;\n\tborder-radius: 4px 4px 4px 4px;\n\tbox-shadow: 1px 1px 7px gray;\n\tdisplay: none;\n\tfont-size: smaller;\n\tmax-width: 80%;\n\topacity: 0.9;\n\tpadding: 1ex 1em 1em;\n\tposition: absolute;\n\tz-index: 2147483647;\n}\n\n#powerTip div.ttdoc {\n        color: grey;\n\tfont-style: italic;\n}\n\n#powerTip div.ttname a {\n        font-weight: bold;\n}\n\n#powerTip div.ttname {\n        font-weight: bold;\n}\n\n#powerTip div.ttdeci {\n        color: #006318;\n}\n\n#powerTip div {\n        margin: 0px;\n        padding: 0px;\n        font: 12px/16px Roboto,sans-serif;\n}\n\n#powerTip:before, #powerTip:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tmargin: 0px;\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.w:after,  #powerTip.w:before,\n#powerTip.e:after,  #powerTip.e:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.nw:after, #powerTip.nw:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n}\n\n#powerTip.n:after,  #powerTip.s:after,\n#powerTip.w:after,  #powerTip.e:after,\n#powerTip.nw:after, #powerTip.ne:after,\n#powerTip.sw:after, #powerTip.se:after {\n\tborder-color: rgba(255, 255, 255, 0);\n}\n\n#powerTip.n:before,  #powerTip.s:before,\n#powerTip.w:before,  #powerTip.e:before,\n#powerTip.nw:before, #powerTip.ne:before,\n#powerTip.sw:before, #powerTip.se:before {\n\tborder-color: rgba(128, 128, 128, 0);\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.nw:after, #powerTip.nw:before {\n\ttop: 100%;\n}\n\n#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {\n\tborder-top-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n#powerTip.n:before {\n\tborder-top-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n#powerTip.n:after, #powerTip.n:before {\n\tleft: 50%;\n}\n\n#powerTip.nw:after, #powerTip.nw:before {\n\tright: 14px;\n}\n\n#powerTip.ne:after, #powerTip.ne:before {\n\tleft: 14px;\n}\n\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tbottom: 100%;\n}\n\n#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {\n\tborder-bottom-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n\n#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {\n\tborder-bottom-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n\n#powerTip.s:after, #powerTip.s:before {\n\tleft: 50%;\n}\n\n#powerTip.sw:after, #powerTip.sw:before {\n\tright: 14px;\n}\n\n#powerTip.se:after, #powerTip.se:before {\n\tleft: 14px;\n}\n\n#powerTip.e:after, #powerTip.e:before {\n\tleft: 100%;\n}\n#powerTip.e:after {\n\tborder-left-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.e:before {\n\tborder-left-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n#powerTip.w:after, #powerTip.w:before {\n\tright: 100%;\n}\n#powerTip.w:after {\n\tborder-right-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.w:before {\n\tborder-right-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n@media print\n{\n  #top { display: none; }\n  #side-nav { display: none; }\n  #nav-path { display: none; }\n  body { overflow:visible; }\n  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }\n  .summary { display: none; }\n  .memitem { page-break-inside: avoid; }\n  #doc-content\n  {\n    margin-left:0 !important;\n    height:auto !important;\n    width:auto !important;\n    overflow:inherit;\n    display:inline;\n  }\n}\n\n/* @group Markdown */\n\n/*\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTableHead tr {\n}\n\ntable.markdownTableBodyLeft td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\nth.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter {\n\ttext-align: center\n}\n*/\n\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTable tr {\n}\n\nth.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft, td.markdownTableBodyLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight, td.markdownTableBodyRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter, td.markdownTableBodyCenter {\n\ttext-align: center\n}\n\n\n/* @end */\n"
  },
  {
    "path": "docs/dynsections.js",
    "content": "function toggleVisibility(linkObj)\n{\n var base = $(linkObj).attr('id');\n var summary = $('#'+base+'-summary');\n var content = $('#'+base+'-content');\n var trigger = $('#'+base+'-trigger');\n var src=$(trigger).attr('src');\n if (content.is(':visible')===true) {\n   content.hide();\n   summary.show();\n   $(linkObj).addClass('closed').removeClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');\n } else {\n   content.show();\n   summary.hide();\n   $(linkObj).removeClass('closed').addClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');\n } \n return false;\n}\n\nfunction updateStripes()\n{\n  $('table.directory tr').\n       removeClass('even').filter(':visible:even').addClass('even');\n}\n\nfunction toggleLevel(level)\n{\n  $('table.directory tr').each(function() {\n    var l = this.id.split('_').length-1;\n    var i = $('#img'+this.id.substring(3));\n    var a = $('#arr'+this.id.substring(3));\n    if (l<level+1) {\n      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');\n      a.html('&#9660;');\n      $(this).show();\n    } else if (l==level+1) {\n      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');\n      a.html('&#9658;');\n      $(this).show();\n    } else {\n      $(this).hide();\n    }\n  });\n  updateStripes();\n}\n\nfunction toggleFolder(id)\n{\n  // the clicked row\n  var currentRow = $('#row_'+id);\n\n  // all rows after the clicked row\n  var rows = currentRow.nextAll(\"tr\");\n\n  var re = new RegExp('^row_'+id+'\\\\d+_$', \"i\"); //only one sub\n\n  // only match elements AFTER this one (can't hide elements before)\n  var childRows = rows.filter(function() { return this.id.match(re); });\n\n  // first row is visible we are HIDING\n  if (childRows.filter(':first').is(':visible')===true) {\n    // replace down arrow by right arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    currentRowSpans.filter(\".arrow\").html('&#9658;');\n    rows.filter(\"[id^=row_\"+id+\"]\").hide(); // hide all children\n  } else { // we are SHOWING\n    // replace right arrow by down arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfclosed\").removeClass(\"iconfclosed\").addClass(\"iconfopen\");\n    currentRowSpans.filter(\".arrow\").html('&#9660;');\n    // replace down arrows by right arrows for child rows\n    var childRowsSpans = childRows.find(\"span\");\n    childRowsSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    childRowsSpans.filter(\".arrow\").html('&#9658;');\n    childRows.show(); //show all children\n  }\n  updateStripes();\n}\n\n\nfunction toggleInherit(id)\n{\n  var rows = $('tr.inherit.'+id);\n  var img = $('tr.inherit_header.'+id+' img');\n  var src = $(img).attr('src');\n  if (rows.filter(':first').is(':visible')===true) {\n    rows.css('display','none');\n    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');\n  } else {\n    rows.css('display','table-row'); // using show() causes jump in firefox\n    $(img).attr('src',src.substring(0,src.length-10)+'open.png');\n  }\n}\n\n\n$(document).ready(function() {\n  $('.code,.codeRef').each(function() {\n    $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());\n    $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });\n  });\n});\n"
  },
  {
    "path": "docs/fbg__dispmanx_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_dispmanx.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_306cfb62d1d3531b68bf1f0f292c4744.html\">dispmanx</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_dispmanx.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;sys/ioctl.h&gt;</code><br />\n<code>#include &lt;linux/fb.h&gt;</code><br />\n<code>#include &lt;unistd.h&gt;</code><br />\n<code>#include &lt;fcntl.h&gt;</code><br />\n<code>#include &lt;GLES2/gl2.h&gt;</code><br />\n<code>#include &lt;EGL/egl.h&gt;</code><br />\n<code>#include &lt;EGL/eglext.h&gt;</code><br />\n<code>#include &quot;bcm_host.h&quot;</code><br />\n<code>#include &quot;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&quot;</code><br />\n</div>\n<p><a href=\"fbg__dispmanx_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html\">_fbg_dispmanx_context</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx wrapper data structure  <a href=\"struct__fbg__dispmanx__context.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a84447aff22c0387208aa478eafd983f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\">fbg_dispmanxSetup</a> (uint32_t displayNumber)</td></tr>\n<tr class=\"memdesc:a84447aff22c0387208aa478eafd983f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics dispmanx context  <a href=\"#a84447aff22c0387208aa478eafd983f7\">More...</a><br /></td></tr>\n<tr class=\"separator:a84447aff22c0387208aa478eafd983f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0a4c6e0821a33671fae87e7c5fb7fe2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\">fbg_dispmanxOnFlip</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, void(*opt_flip)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg))</td></tr>\n<tr class=\"memdesc:ac0a4c6e0821a33671fae87e7c5fb7fe2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">add additional flip content (will be executed between dispmanx start / sync)  <a href=\"#ac0a4c6e0821a33671fae87e7c5fb7fe2\">More...</a><br /></td></tr>\n<tr class=\"separator:ac0a4c6e0821a33671fae87e7c5fb7fe2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ac0a4c6e0821a33671fae87e7c5fb7fe2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0a4c6e0821a33671fae87e7c5fb7fe2\">&#9670;&nbsp;</a></span>fbg_dispmanxOnFlip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_dispmanxOnFlip </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)&#160;</td>\n          <td class=\"paramname\"><em>opt_flip</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>add additional flip content (will be executed between dispmanx start / sync) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>FBG data structure pointer </td></tr>\n    <tr><td class=\"paramname\">opt_flip</td><td>flip function executed between dispmanx start / sync upong <a class=\"el\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\" title=\"flip the buffers \">fbg_flip()</a> call </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a84447aff22c0387208aa478eafd983f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84447aff22c0387208aa478eafd983f7\">&#9670;&nbsp;</a></span>fbg_dispmanxSetup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_dispmanxSetup </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>displayNumber</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics dispmanx context </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">displayNumber</td><td>dispmanx display number </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>FBG data structure pointer </dd></dl>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__dispmanx_8h.js",
    "content": "var fbg__dispmanx_8h =\n[\n    [ \"_fbg_dispmanx_context\", \"struct__fbg__dispmanx__context.html\", \"struct__fbg__dispmanx__context\" ],\n    [ \"fbg_dispmanxOnFlip\", \"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\", null ],\n    [ \"fbg_dispmanxSetup\", \"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\", null ]\n];"
  },
  {
    "path": "docs/fbg__dispmanx_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_dispmanx.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_306cfb62d1d3531b68bf1f0f292c4744.html\">dispmanx</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_dispmanx.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbg__dispmanx_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2019, 2020 Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_DISPMANX_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_DISPMANX_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &lt;sys/ioctl.h&gt;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">    #include &lt;linux/fb.h&gt;</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"preprocessor\">    #include &lt;unistd.h&gt;</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"preprocessor\">    #include &lt;fcntl.h&gt;</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"preprocessor\">    #include &lt;GLES2/gl2.h&gt;</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">    #include &lt;EGL/egl.h&gt;</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"preprocessor\">    #include &lt;EGL/eglext.h&gt;</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"preprocessor\">    #include &quot;bcm_host.h&quot;</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"preprocessor\">    #include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"preprocessor\">#ifdef FBG_MMAL</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"preprocessor\">    #include &lt;interface/mmal/mmal.h&gt;</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">    #include &lt;interface/mmal/util/mmal_util.h&gt;</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">    #include &lt;interface/mmal/util/mmal_connection.h&gt;</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">    #include &lt;interface/mmal/util/mmal_util_params.h&gt;</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html\">   52</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg__dispmanx__context.html\">_fbg_dispmanx_context</a> {</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"preprocessor\">#ifdef FBG_MMAL</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      MMAL_COMPONENT_T *render;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;      MMAL_PORT_T *input;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;      MMAL_POOL_T *pool;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;      DISPMANX_DISPLAY_HANDLE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\">display</a>;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">   64</a></span>&#160;      DISPMANX_RESOURCE_HANDLE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">back_resource</a>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">   66</a></span>&#160;      DISPMANX_RESOURCE_HANDLE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">front_resource</a>;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">   68</a></span>&#160;      DISPMANX_ELEMENT_HANDLE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">elem</a>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">   70</a></span>&#160;      VC_IMAGE_TYPE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">resource_type</a>;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">   72</a></span>&#160;      DISPMANX_UPDATE_HANDLE_T <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">update</a>;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">   74</a></span>&#160;      VC_RECT_T *<a class=\"code\" href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">src_rect</a>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">   76</a></span>&#160;      VC_RECT_T *<a class=\"code\" href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">dst_rect</a>;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">   79</a></span>&#160;      void (*<a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">opt_flip</a>)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">   82</a></span>&#160;      <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">pitch</a>;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    };</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\">fbg_dispmanxSetup</a>(uint32_t displayNumber);</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\">fbg_dispmanxOnFlip</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">opt_flip</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg));</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a88cb809e4e2653c6925824ebd5a66149\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">_fbg_dispmanx_context::resource_type</a></div><div class=\"ttdeci\">VC_IMAGE_TYPE_T resource_type</div><div class=\"ttdoc\">dispmanx image type (RGB888) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00070\">fbg_dispmanx.h:70</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html\">fbgraphics.h</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a4e5395ea92a73ef0db5048824c7df710\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">_fbg_dispmanx_context::back_resource</a></div><div class=\"ttdeci\">DISPMANX_RESOURCE_HANDLE_T back_resource</div><div class=\"ttdoc\">dispmanx back resource </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00064\">fbg_dispmanx.h:64</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_ae1857220a611fd3e288cd76c6b8a5985\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">_fbg_dispmanx_context::dst_rect</a></div><div class=\"ttdeci\">VC_RECT_T * dst_rect</div><div class=\"ttdoc\">dispmanx src rect </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00076\">fbg_dispmanx.h:76</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a583202df9f959780bc21e9e5ce824f34\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">_fbg_dispmanx_context::update</a></div><div class=\"ttdeci\">DISPMANX_UPDATE_HANDLE_T update</div><div class=\"ttdoc\">dispmanx update </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00072\">fbg_dispmanx.h:72</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html\">_fbg_dispmanx_context</a></div><div class=\"ttdoc\">dispmanx wrapper data structure </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00052\">fbg_dispmanx.h:52</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a9263fa3b9088feba4becb5488f3a27ee\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\">_fbg_dispmanx_context::display</a></div><div class=\"ttdeci\">DISPMANX_DISPLAY_HANDLE_T display</div><div class=\"ttdoc\">dispmanx display </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00062\">fbg_dispmanx.h:62</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_aef1016d77620bbfd67bf090fd2f08e19\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">_fbg_dispmanx_context::src_rect</a></div><div class=\"ttdeci\">VC_RECT_T * src_rect</div><div class=\"ttdoc\">dispmanx src rect </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00074\">fbg_dispmanx.h:74</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_ab18b7173ed0ff6e670068041cf0779e9\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">_fbg_dispmanx_context::elem</a></div><div class=\"ttdeci\">DISPMANX_ELEMENT_HANDLE_T elem</div><div class=\"ttdoc\">dispmanx elem </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00068\">fbg_dispmanx.h:68</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a39f7c0bacaedd656908c5e2378610477\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">_fbg_dispmanx_context::opt_flip</a></div><div class=\"ttdeci\">void(* opt_flip)(struct _fbg *fbg)</div><div class=\"ttdoc\">optional flip content (will be executed between dispmanx start / sync) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00079\">fbg_dispmanx.h:79</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_acfd61d15e712eb715bb99ff4c6ec1dc7\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">_fbg_dispmanx_context::front_resource</a></div><div class=\"ttdeci\">DISPMANX_RESOURCE_HANDLE_T front_resource</div><div class=\"ttdoc\">dispmanx front resource </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00066\">fbg_dispmanx.h:66</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg__dispmanx__context_html_a7847ad38fd083df3b2a513a43f7d82b2\"><div class=\"ttname\"><a href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">_fbg_dispmanx_context::pitch</a></div><div class=\"ttdeci\">int pitch</div><div class=\"ttdoc\">fbg-&gt;width * 3 </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__dispmanx_8h_source.html#l00082\">fbg_dispmanx.h:82</a></div></div>\n<div class=\"ttc\" id=\"fbg__dispmanx_8h_html_a84447aff22c0387208aa478eafd983f7\"><div class=\"ttname\"><a href=\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\">fbg_dispmanxSetup</a></div><div class=\"ttdeci\">struct _fbg * fbg_dispmanxSetup(uint32_t displayNumber)</div><div class=\"ttdoc\">initialize a FB Graphics dispmanx context </div></div>\n<div class=\"ttc\" id=\"fbg__dispmanx_8h_html_ac0a4c6e0821a33671fae87e7c5fb7fe2\"><div class=\"ttname\"><a href=\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\">fbg_dispmanxOnFlip</a></div><div class=\"ttdeci\">void fbg_dispmanxOnFlip(struct _fbg *fbg, void(*opt_flip)(struct _fbg *fbg))</div><div class=\"ttdoc\">add additional flip content (will be executed between dispmanx start / sync) </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__fbdev_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_fbdev.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.html\">fbdev</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#define-members\">Macros</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_fbdev.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;linux/fb.h&gt;</code><br />\n<code>#include &quot;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&quot;</code><br />\n</div>\n<p><a href=\"fbg__fbdev_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:struct__fbg__fbdev__context\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\">_fbg_fbdev_context</a></td></tr>\n<tr class=\"memdesc:struct__fbg__fbdev__context\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fbdev wrapper data structure  <a href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__fbdev__context\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a8ebf35a2c6451e36bd33e3e985f418dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\">fbg_fbdevInit</a>()&#160;&#160;&#160;<a class=\"el\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a>(NULL, 0)</td></tr>\n<tr class=\"memdesc:a8ebf35a2c6451e36bd33e3e985f418dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics context with '/dev/fb0' as framebuffer device and no page flipping  <a href=\"#a8ebf35a2c6451e36bd33e3e985f418dc\">More...</a><br /></td></tr>\n<tr class=\"separator:a8ebf35a2c6451e36bd33e3e985f418dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a038c291213ab0fa68de9fadd0fb2d31e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a> (char *fb_device, int page_flipping)</td></tr>\n<tr class=\"memdesc:a038c291213ab0fa68de9fadd0fb2d31e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics context (framebuffer)  <a href=\"#a038c291213ab0fa68de9fadd0fb2d31e\">More...</a><br /></td></tr>\n<tr class=\"separator:a038c291213ab0fa68de9fadd0fb2d31e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/><h2 class=\"groupheader\">Data Structure Documentation</h2>\n<a name=\"struct__fbg__fbdev__context\" id=\"struct__fbg__fbdev__context\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__fbdev__context\">&#9670;&nbsp;</a></span>_fbg_fbdev_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_fbdev_context</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>fbdev wrapper data structure </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__fbdev_8h_source.html#l00035\">35</a> of file <a class=\"el\" href=\"fbg__fbdev_8h_source.html\">fbg_fbdev.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ab55635eae34af7a431d2bc1e811ce708\"></a>unsigned char *</td>\n<td class=\"fieldname\">\nbuffer</td>\n<td class=\"fielddoc\">\nMemory-mapped framebuffer. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a1bc9cdf0319e87ed2e4f4b7a32397da1\"></a>int</td>\n<td class=\"fieldname\">\nfd</td>\n<td class=\"fielddoc\">\nFramebuffer device file descriptor. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"adff746dbaa8d0ff15492a3003a6ccd4c\"></a>struct fb_fix_screeninfo</td>\n<td class=\"fieldname\">\nfinfo</td>\n<td class=\"fielddoc\">\nFramebuffer device fix. informations. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a895ef3bfc6f4797eb2812371f8b69b43\"></a>int</td>\n<td class=\"fieldname\">\npage_flipping</td>\n<td class=\"fielddoc\">\nFlag indicating that page flipping is enabled. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ae522c89dc6af43b8500741f0f7e8f34f\"></a>struct fb_var_screeninfo</td>\n<td class=\"fieldname\">\nvinfo</td>\n<td class=\"fielddoc\">\nFramebuffer device var. informations. </td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"a8ebf35a2c6451e36bd33e3e985f418dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ebf35a2c6451e36bd33e3e985f418dc\">&#9670;&nbsp;</a></span>fbg_fbdevInit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define fbg_fbdevInit</td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td>&#160;&#160;&#160;<a class=\"el\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a>(NULL, 0)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics context with '/dev/fb0' as framebuffer device and no page flipping </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__fbdev_8h_source.html#l00060\">60</a> of file <a class=\"el\" href=\"fbg__fbdev_8h_source.html\">fbg_fbdev.h</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a038c291213ab0fa68de9fadd0fb2d31e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a038c291213ab0fa68de9fadd0fb2d31e\">&#9670;&nbsp;</a></span>fbg_fbdevSetup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_fbdevSetup </td>\n          <td>(</td>\n          <td class=\"paramtype\">char *&#160;</td>\n          <td class=\"paramname\"><em>fb_device</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>page_flipping</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics context (framebuffer) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fb_device</td><td>framebuffer device (example : /dev/fb0) </td></tr>\n    <tr><td class=\"paramname\">page_flipping</td><td>wether to use page flipping mechanism for double buffering (slow on some devices) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"struct__fbg.html\" title=\"FB Graphics context data structure. \">_fbg</a> structure pointer to pass to any FBG library functions </dd></dl>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__fbdev_8h.js",
    "content": "var fbg__fbdev_8h =\n[\n    [ \"_fbg_fbdev_context\", \"fbg__fbdev_8h.html#struct__fbg__fbdev__context\", [\n      [ \"buffer\", \"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\", null ],\n      [ \"fd\", \"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\", null ],\n      [ \"finfo\", \"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\", null ],\n      [ \"page_flipping\", \"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\", null ],\n      [ \"vinfo\", \"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\", null ]\n    ] ],\n    [ \"fbg_fbdevInit\", \"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\", null ],\n    [ \"fbg_fbdevSetup\", \"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\", null ]\n];"
  },
  {
    "path": "docs/fbg__fbdev_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_fbdev.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.html\">fbdev</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_fbdev.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbg__fbdev_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2019, 2020 Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_FBDEV_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_FBDEV_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &lt;linux/fb.h&gt;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">    #include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html\">   35</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\">_fbg_fbdev_context</a> {</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\">   37</a></span>&#160;      <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\">fd</a>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\">   40</a></span>&#160;      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\">buffer</a>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    </div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\">   43</a></span>&#160;      <span class=\"keyword\">struct </span>fb_var_screeninfo <a class=\"code\" href=\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\">vinfo</a>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\">   45</a></span>&#160;      <span class=\"keyword\">struct </span>fb_fix_screeninfo <a class=\"code\" href=\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\">finfo</a>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">   48</a></span>&#160;      <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">page_flipping</a>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    };</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a>(<span class=\"keywordtype\">char</span> *fb_device, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">page_flipping</a>);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\">   60</a></span>&#160;<span class=\"preprocessor\">    #define fbg_fbdevInit() fbg_fbdevSetup(NULL, 0)</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"fbg__fbdev_8h_html_a038c291213ab0fa68de9fadd0fb2d31e\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a></div><div class=\"ttdeci\">struct _fbg * fbg_fbdevSetup(char *fb_device, int page_flipping)</div><div class=\"ttdoc\">initialize a FB Graphics context (framebuffer) </div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_a895ef3bfc6f4797eb2812371f8b69b43\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">_fbg_fbdev_context::page_flipping</a></div><div class=\"ttdeci\">int page_flipping</div><div class=\"ttdoc\">Flag indicating that page flipping is enabled. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00048\">fbg_fbdev.h:48</a></div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_struct__fbg__fbdev__context\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\">_fbg_fbdev_context</a></div><div class=\"ttdoc\">fbdev wrapper data structure </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00035\">fbg_fbdev.h:35</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html\">fbgraphics.h</a></div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_ab55635eae34af7a431d2bc1e811ce708\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\">_fbg_fbdev_context::buffer</a></div><div class=\"ttdeci\">unsigned char * buffer</div><div class=\"ttdoc\">Memory-mapped framebuffer. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00040\">fbg_fbdev.h:40</a></div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_a1bc9cdf0319e87ed2e4f4b7a32397da1\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\">_fbg_fbdev_context::fd</a></div><div class=\"ttdeci\">int fd</div><div class=\"ttdoc\">Framebuffer device file descriptor. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00037\">fbg_fbdev.h:37</a></div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_ae522c89dc6af43b8500741f0f7e8f34f\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\">_fbg_fbdev_context::vinfo</a></div><div class=\"ttdeci\">struct fb_var_screeninfo vinfo</div><div class=\"ttdoc\">Framebuffer device var. informations. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00043\">fbg_fbdev.h:43</a></div></div>\n<div class=\"ttc\" id=\"fbg__fbdev_8h_html_adff746dbaa8d0ff15492a3003a6ccd4c\"><div class=\"ttname\"><a href=\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\">_fbg_fbdev_context::finfo</a></div><div class=\"ttdeci\">struct fb_fix_screeninfo finfo</div><div class=\"ttdoc\">Framebuffer device fix. informations. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__fbdev_8h_source.html#l00045\">fbg_fbdev.h:45</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__fbdev_8h_struct__fbg__fbdev__context.js",
    "content": "var fbg__fbdev_8h_struct__fbg__fbdev__context =\n[\n    [ \"buffer\", \"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\", null ],\n    [ \"fd\", \"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\", null ],\n    [ \"finfo\", \"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\", null ],\n    [ \"page_flipping\", \"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\", null ],\n    [ \"vinfo\", \"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\", null ]\n];"
  },
  {
    "path": "docs/fbg__gba_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_gba.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f87af8b164f0cd63cd64846525e0544b.html\">gba</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_gba.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &quot;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&quot;</code><br />\n</div>\n<p><a href=\"fbg__gba_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:struct__fbg__gba__context\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__gba_8h.html#struct__fbg__gba__context\">_fbg_gba_context</a></td></tr>\n<tr class=\"memdesc:struct__fbg__gba__context\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fbdev wrapper data structure  <a href=\"fbg__gba_8h.html#struct__fbg__gba__context\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__gba__context\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6679b30ad162111859a3276397324a83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\">fbg_gbaSetup</a> (int mode)</td></tr>\n<tr class=\"memdesc:a6679b30ad162111859a3276397324a83\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics context  <a href=\"#a6679b30ad162111859a3276397324a83\">More...</a><br /></td></tr>\n<tr class=\"separator:a6679b30ad162111859a3276397324a83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/><h2 class=\"groupheader\">Data Structure Documentation</h2>\n<a name=\"struct__fbg__gba__context\" id=\"struct__fbg__gba__context\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__gba__context\">&#9670;&nbsp;</a></span>_fbg_gba_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_gba_context</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>fbdev wrapper data structure </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__gba_8h_source.html#l00034\">34</a> of file <a class=\"el\" href=\"fbg__gba_8h_source.html\">fbg_gba.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"aed8228182579172a6666619ee05e4dfe\"></a>unsigned short *</td>\n<td class=\"fieldname\">\nbuffer</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"abfb08c9ec453d0a38e1b4f78f0894faf\"></a>int</td>\n<td class=\"fieldname\">\nmode</td>\n<td class=\"fielddoc\">\n</td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a6679b30ad162111859a3276397324a83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6679b30ad162111859a3276397324a83\">&#9670;&nbsp;</a></span>fbg_gbaSetup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_gbaSetup </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>mode</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics context </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">mode</td><td>GBA bitmap modes (3 = 240x160x16, 4 = 240x160x8 page flip, 5 = 160x128x16 page flip) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"struct__fbg.html\" title=\"FB Graphics context data structure. \">_fbg</a> structure pointer to pass to any FBG library functions </dd></dl>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__gba_8h.js",
    "content": "var fbg__gba_8h =\n[\n    [ \"_fbg_gba_context\", \"fbg__gba_8h.html#struct__fbg__gba__context\", [\n      [ \"buffer\", \"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\", null ],\n      [ \"mode\", \"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\", null ]\n    ] ],\n    [ \"fbg_gbaSetup\", \"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\", null ]\n];"
  },
  {
    "path": "docs/fbg__gba_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_gba.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f87af8b164f0cd63cd64846525e0544b.html\">gba</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_gba.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbg__gba_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2019, 2020 Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_GBA_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_GBA_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__gba_8h.html\">   34</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__gba_8h.html#struct__fbg__gba__context\">_fbg_gba_context</a> {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">   35</a></span>&#160;      <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">mode</a>;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\">   37</a></span>&#160;      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> *<a class=\"code\" href=\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\">buffer</a>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    };</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\">fbg_gbaSetup</a>(<span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">mode</a>);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"fbgraphics_8h_html\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html\">fbgraphics.h</a></div></div>\n<div class=\"ttc\" id=\"fbg__gba_8h_html_a6679b30ad162111859a3276397324a83\"><div class=\"ttname\"><a href=\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\">fbg_gbaSetup</a></div><div class=\"ttdeci\">struct _fbg * fbg_gbaSetup(int mode)</div><div class=\"ttdoc\">initialize a FB Graphics context </div></div>\n<div class=\"ttc\" id=\"fbg__gba_8h_html_aed8228182579172a6666619ee05e4dfe\"><div class=\"ttname\"><a href=\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\">_fbg_gba_context::buffer</a></div><div class=\"ttdeci\">unsigned short * buffer</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__gba_8h_source.html#l00037\">fbg_gba.h:37</a></div></div>\n<div class=\"ttc\" id=\"fbg__gba_8h_html_abfb08c9ec453d0a38e1b4f78f0894faf\"><div class=\"ttname\"><a href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">_fbg_gba_context::mode</a></div><div class=\"ttdeci\">int mode</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__gba_8h_source.html#l00035\">fbg_gba.h:35</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n<div class=\"ttc\" id=\"fbg__gba_8h_html_struct__fbg__gba__context\"><div class=\"ttname\"><a href=\"fbg__gba_8h.html#struct__fbg__gba__context\">_fbg_gba_context</a></div><div class=\"ttdoc\">fbdev wrapper data structure </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__gba_8h_source.html#l00034\">fbg_gba.h:34</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__gba_8h_struct__fbg__gba__context.js",
    "content": "var fbg__gba_8h_struct__fbg__gba__context =\n[\n    [ \"buffer\", \"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\", null ],\n    [ \"mode\", \"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\", null ]\n];"
  },
  {
    "path": "docs/fbg__glfw_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_glfw.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2665f63191f4afb0d340db1cd0753229.html\">glfw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_glfw.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;GL/glew.h&gt;</code><br />\n<code>#include &lt;GLFW/glfw3.h&gt;</code><br />\n<code>#include &quot;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&quot;</code><br />\n</div>\n<p><a href=\"fbg__glfw_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:struct__fbg__glfw__context\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\">_fbg_glfw_context</a></td></tr>\n<tr class=\"memdesc:struct__fbg__glfw__context\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GLFW wrapper data structure.  <a href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__glfw__context\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a41d8a89a2bf7c6d2310d07eae206faa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\">fbg_glfwSetup</a> (int width, int height, int components, const char *title, int monitor, int fullscreen)</td></tr>\n<tr class=\"memdesc:a41d8a89a2bf7c6d2310d07eae206faa9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics OpenGL context (GLFW library)  <a href=\"#a41d8a89a2bf7c6d2310d07eae206faa9\">More...</a><br /></td></tr>\n<tr class=\"separator:a41d8a89a2bf7c6d2310d07eae206faa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17dd8947f781a20136c59eb9579edf2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\">fbg_glfwClear</a> ()</td></tr>\n<tr class=\"memdesc:a17dd8947f781a20136c59eb9579edf2f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">OpenGL clear.  <a href=\"#a17dd8947f781a20136c59eb9579edf2f\">More...</a><br /></td></tr>\n<tr class=\"separator:a17dd8947f781a20136c59eb9579edf2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88a6523e8ce117e334bad1220bfbc55b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\">fbg_glfwUpdateBuffer</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a88a6523e8ce117e334bad1220bfbc55b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">this update FBG disp_buffer with the actual rendered OpenGL content  <a href=\"#a88a6523e8ce117e334bad1220bfbc55b\">More...</a><br /></td></tr>\n<tr class=\"separator:a88a6523e8ce117e334bad1220bfbc55b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a723385d297914375f9c5269492b05b50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\">fbg_glfwShouldClose</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a723385d297914375f9c5269492b05b50\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Query the user requested (window close etc) close status.  <a href=\"#a723385d297914375f9c5269492b05b50\">More...</a><br /></td></tr>\n<tr class=\"separator:a723385d297914375f9c5269492b05b50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1e510fded4ac300b4a21efd577604f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\">fbg_glfwFullscreen</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int enable)</td></tr>\n<tr class=\"memdesc:ab1e510fded4ac300b4a21efd577604f3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Switch to fullscreen or windowed mode.  <a href=\"#ab1e510fded4ac300b4a21efd577604f3\">More...</a><br /></td></tr>\n<tr class=\"separator:ab1e510fded4ac300b4a21efd577604f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af724a4a5f9f195765ef6b11255851848\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\">fbg_glfwResize</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int new_width, unsigned new_height)</td></tr>\n<tr class=\"memdesc:af724a4a5f9f195765ef6b11255851848\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Display resize.  <a href=\"#af724a4a5f9f195765ef6b11255851848\">More...</a><br /></td></tr>\n<tr class=\"separator:af724a4a5f9f195765ef6b11255851848\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca78bdcc45f25aeb9ae74a3d6ef136d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\">fbg_glfwCreateTextureFromImage</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img)</td></tr>\n<tr class=\"memdesc:aca78bdcc45f25aeb9ae74a3d6ef136d1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a non-interpolated (NEAREST) GL texture from a FBG image  <a href=\"#aca78bdcc45f25aeb9ae74a3d6ef136d1\">More...</a><br /></td></tr>\n<tr class=\"separator:aca78bdcc45f25aeb9ae74a3d6ef136d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac328fff77bfd3e7ddafb2dfdf5d6b4b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">fbg_glfwCreateTexture</a> (GLuint width, GLuint height, GLint internal_format)</td></tr>\n<tr class=\"memdesc:ac328fff77bfd3e7ddafb2dfdf5d6b4b0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create an empty non-interpolated (NEAREST) GL texture  <a href=\"#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">More...</a><br /></td></tr>\n<tr class=\"separator:ac328fff77bfd3e7ddafb2dfdf5d6b4b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49073f43825b79bdf11b7a20cabac56b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\">fbg_glfwCreateVAO</a> (GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type, GLsizeiptr vertices_count, const GLvoid *vertices_data, GLsizeiptr texcoords_count, const GLvoid *texcoords_data, GLsizeiptr normals_count, const GLvoid *normals_data, GLsizeiptr colors_count, const GLvoid *colors_data)</td></tr>\n<tr class=\"memdesc:a49073f43825b79bdf11b7a20cabac56b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a VAO from indexed data, support for vertices, UVs, normals and colors  <a href=\"#a49073f43825b79bdf11b7a20cabac56b\">More...</a><br /></td></tr>\n<tr class=\"separator:a49073f43825b79bdf11b7a20cabac56b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9d4876755370dc34cb76b9209ff8b6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\">fbg_glfwCreateVAOvu</a> (GLsizeiptr data_count, const GLvoid *data)</td></tr>\n<tr class=\"memdesc:af9d4876755370dc34cb76b9209ff8b6c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a VAO from vertices + UV data packed into a single array  <a href=\"#af9d4876755370dc34cb76b9209ff8b6c\">More...</a><br /></td></tr>\n<tr class=\"separator:af9d4876755370dc34cb76b9209ff8b6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae16afafa7eec0ed48b8a8fb38bb83ac4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\">fbg_glfwCreateFBO</a> (GLuint texture)</td></tr>\n<tr class=\"memdesc:ae16afafa7eec0ed48b8a8fb38bb83ac4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a FBO  <a href=\"#ae16afafa7eec0ed48b8a8fb38bb83ac4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae16afafa7eec0ed48b8a8fb38bb83ac4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ed78e4ad11ac7e2a021e1747eb59aa8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\">fbg_glfwCreateShader</a> (GLenum type, const GLchar *source)</td></tr>\n<tr class=\"memdesc:a3ed78e4ad11ac7e2a021e1747eb59aa8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a single shader  <a href=\"#a3ed78e4ad11ac7e2a021e1747eb59aa8\">More...</a><br /></td></tr>\n<tr class=\"separator:a3ed78e4ad11ac7e2a021e1747eb59aa8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab156d8b8da0ef3135888942c054bbbeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\">fbg_glfwCreateShaderFromFile</a> (GLenum type, const char *filename)</td></tr>\n<tr class=\"memdesc:ab156d8b8da0ef3135888942c054bbbeb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a shader from the content of a file  <a href=\"#ab156d8b8da0ef3135888942c054bbbeb\">More...</a><br /></td></tr>\n<tr class=\"separator:ab156d8b8da0ef3135888942c054bbbeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45cf81b5b25c6ef69025693650c9bcb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\">fbg_glfwCreateProgram</a> (GLuint vertex_shader, GLuint fragment_shader, GLuint geometry_shader)</td></tr>\n<tr class=\"memdesc:a45cf81b5b25c6ef69025693650c9bcb8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment program  <a href=\"#a45cf81b5b25c6ef69025693650c9bcb8\">More...</a><br /></td></tr>\n<tr class=\"separator:a45cf81b5b25c6ef69025693650c9bcb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb42580d7148df3ffbbb590bbf0028a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLenum&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\">fbg_glfwCreateProgramFromFiles</a> (const char *vs, const char *fs, const char *gs)</td></tr>\n<tr class=\"memdesc:aeb42580d7148df3ffbbb590bbf0028a8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment/geometry program from a file  <a href=\"#aeb42580d7148df3ffbbb590bbf0028a8\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb42580d7148df3ffbbb590bbf0028a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9454484e4d9b5d484a1b46f35a2ed64b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLenum&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\">fbg_glfwCreateProgramFromString</a> (const char *vs, const char *fs, const char *gs)</td></tr>\n<tr class=\"memdesc:a9454484e4d9b5d484a1b46f35a2ed64b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment/geometry program from a string  <a href=\"#a9454484e4d9b5d484a1b46f35a2ed64b\">More...</a><br /></td></tr>\n<tr class=\"separator:a9454484e4d9b5d484a1b46f35a2ed64b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a06771c76a305bf753611309286e73c07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const GLfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\">fbg_glfwQuad</a> []</td></tr>\n<tr class=\"memdesc:a06771c76a305bf753611309286e73c07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple quad geometry (vertices + UV)  <a href=\"#a06771c76a305bf753611309286e73c07\">More...</a><br /></td></tr>\n<tr class=\"separator:a06771c76a305bf753611309286e73c07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a998669be4cb45dda77c48cb23891fc4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\">fbg_glfwSimpleVs</a></td></tr>\n<tr class=\"memdesc:a998669be4cb45dda77c48cb23891fc4e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple vertex shader (screen quad, vertices + UV)  <a href=\"#a998669be4cb45dda77c48cb23891fc4e\">More...</a><br /></td></tr>\n<tr class=\"separator:a998669be4cb45dda77c48cb23891fc4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fd4455e8dddd7c55fb5fb3e5d973f36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\">fbg_glfwSimpleFs</a></td></tr>\n<tr class=\"memdesc:a9fd4455e8dddd7c55fb5fb3e5d973f36\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple textured fragment shader.  <a href=\"#a9fd4455e8dddd7c55fb5fb3e5d973f36\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fd4455e8dddd7c55fb5fb3e5d973f36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/><h2 class=\"groupheader\">Data Structure Documentation</h2>\n<a name=\"struct__fbg__glfw__context\" id=\"struct__fbg__glfw__context\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__glfw__context\">&#9670;&nbsp;</a></span>_fbg_glfw_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_glfw_context</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>GLFW wrapper data structure. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__glfw_8h_source.html#l00037\">37</a> of file <a class=\"el\" href=\"fbg__glfw_8h_source.html\">fbg_glfw.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ab9766ea45a75dae87a27b93097849e29\"></a>GLuint</td>\n<td class=\"fieldname\">\nfbg_texture</td>\n<td class=\"fielddoc\">\nFBG texture (updated at each frames) </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ae65b56bcf995bc599bc98d6a6d81072a\"></a>GLuint</td>\n<td class=\"fieldname\">\nfbg_vao</td>\n<td class=\"fielddoc\">\nFBG VAO. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a0377751d89c499aaa9d3a8b75c6724bb\"></a>GLFWmonitor *</td>\n<td class=\"fieldname\">\nmonitor</td>\n<td class=\"fielddoc\">\nGLFW monitor. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ab95a2f530b32939e45f3ee7f453acf36\"></a>GLenum</td>\n<td class=\"fieldname\">\nsimple_program</td>\n<td class=\"fielddoc\">\nSimple GLSL program (screen-aligned textured quad) </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a368de6aed34d9828a84ad7d629a8f96c\"></a>int</td>\n<td class=\"fieldname\">\nupdate_buffer</td>\n<td class=\"fielddoc\">\ntell wether fbg_glfw should update fbg disp_buffer after rendering </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ae249286407780f32b8c65bce835475f4\"></a>GLFWwindow *</td>\n<td class=\"fieldname\">\nwindow</td>\n<td class=\"fielddoc\">\nGLFW window. </td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a17dd8947f781a20136c59eb9579edf2f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17dd8947f781a20136c59eb9579edf2f\">&#9670;&nbsp;</a></span>fbg_glfwClear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_glfwClear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>OpenGL clear. </p>\n\n</div>\n</div>\n<a id=\"ae16afafa7eec0ed48b8a8fb38bb83ac4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae16afafa7eec0ed48b8a8fb38bb83ac4\">&#9670;&nbsp;</a></span>fbg_glfwCreateFBO()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateFBO </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>texture</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a FBO </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">texture</td><td>GL texture id </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL FBO id </dd></dl>\n\n</div>\n</div>\n<a id=\"a45cf81b5b25c6ef69025693650c9bcb8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45cf81b5b25c6ef69025693650c9bcb8\">&#9670;&nbsp;</a></span>fbg_glfwCreateProgram()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateProgram </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>geometry_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment program </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vertex_shader</td><td>vertex shader id, can be 0 </td></tr>\n    <tr><td class=\"paramname\">fragment_shader</td><td>fragment shader id, can be 0 </td></tr>\n    <tr><td class=\"paramname\">geometry_shader</td><td>geometry shader id, can be 0 </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"aeb42580d7148df3ffbbb590bbf0028a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb42580d7148df3ffbbb590bbf0028a8\">&#9670;&nbsp;</a></span>fbg_glfwCreateProgramFromFiles()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLenum fbg_glfwCreateProgramFromFiles </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>gs</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment/geometry program from a file </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vs</td><td>vertex shader file </td></tr>\n    <tr><td class=\"paramname\">fs</td><td>fragment shader file </td></tr>\n    <tr><td class=\"paramname\">gs</td><td>geometry shader file </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a9454484e4d9b5d484a1b46f35a2ed64b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9454484e4d9b5d484a1b46f35a2ed64b\">&#9670;&nbsp;</a></span>fbg_glfwCreateProgramFromString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLenum fbg_glfwCreateProgramFromString </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>gs</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment/geometry program from a string </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vs</td><td>vertex shader string </td></tr>\n    <tr><td class=\"paramname\">fs</td><td>fragment shader string </td></tr>\n    <tr><td class=\"paramname\">gs</td><td>geometry shader string </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a3ed78e4ad11ac7e2a021e1747eb59aa8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ed78e4ad11ac7e2a021e1747eb59aa8\">&#9670;&nbsp;</a></span>fbg_glfwCreateShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLenum&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLchar *&#160;</td>\n          <td class=\"paramname\"><em>source</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a single shader </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">type</td><td>GL shader type </td></tr>\n    <tr><td class=\"paramname\">source</td><td>shader code </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"ab156d8b8da0ef3135888942c054bbbeb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab156d8b8da0ef3135888942c054bbbeb\">&#9670;&nbsp;</a></span>fbg_glfwCreateShaderFromFile()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateShaderFromFile </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLenum&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a shader from the content of a file </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">type</td><td>GL shader type </td></tr>\n    <tr><td class=\"paramname\">filename</td><td>file to load </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"ac328fff77bfd3e7ddafb2dfdf5d6b4b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">&#9670;&nbsp;</a></span>fbg_glfwCreateTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLint&#160;</td>\n          <td class=\"paramname\"><em>internal_format</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create an empty non-interpolated (NEAREST) GL texture </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">width</td><td>width of the requested texture </td></tr>\n    <tr><td class=\"paramname\">height</td><td>height of the requested texture </td></tr>\n    <tr><td class=\"paramname\">internal_format</td><td>OpenGL format (GL_RGBA etc.) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL texture id </dd></dl>\n\n</div>\n</div>\n<a id=\"aca78bdcc45f25aeb9ae74a3d6ef136d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca78bdcc45f25aeb9ae74a3d6ef136d1\">&#9670;&nbsp;</a></span>fbg_glfwCreateTextureFromImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateTextureFromImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a non-interpolated (NEAREST) GL texture from a FBG image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL texture id </dd></dl>\n\n</div>\n</div>\n<a id=\"a49073f43825b79bdf11b7a20cabac56b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49073f43825b79bdf11b7a20cabac56b\">&#9670;&nbsp;</a></span>fbg_glfwCreateVAO()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateVAO </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>indices_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>indices_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>sizeof_indice_type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>vertices_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>vertices_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>texcoords_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>texcoords_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>normals_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>normals_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>colors_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>colors_data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a VAO from indexed data, support for vertices, UVs, normals and colors </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">indices_count</td><td>indices count </td></tr>\n    <tr><td class=\"paramname\">indices_data</td><td>data containing indices </td></tr>\n    <tr><td class=\"paramname\">sizeof_indice_type</td><td>sizeof indice type </td></tr>\n    <tr><td class=\"paramname\">vertices_count</td><td>vertices count </td></tr>\n    <tr><td class=\"paramname\">vertices_data</td><td>data containing vertices </td></tr>\n    <tr><td class=\"paramname\">texcoords_count</td><td>uv count </td></tr>\n    <tr><td class=\"paramname\">texcoords_data</td><td>data containing uv </td></tr>\n    <tr><td class=\"paramname\">normals_count</td><td>normals count </td></tr>\n    <tr><td class=\"paramname\">normals_data</td><td>data containing normals </td></tr>\n    <tr><td class=\"paramname\">colors_count</td><td>colors count </td></tr>\n    <tr><td class=\"paramname\">colors_data</td><td>data containing colors </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL VAO id </dd></dl>\n\n</div>\n</div>\n<a id=\"af9d4876755370dc34cb76b9209ff8b6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9d4876755370dc34cb76b9209ff8b6c\">&#9670;&nbsp;</a></span>fbg_glfwCreateVAOvu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_glfwCreateVAOvu </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>data_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a VAO from vertices + UV data packed into a single array </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">data_count</td><td>vertices data count </td></tr>\n    <tr><td class=\"paramname\">data</td><td>data containing all vertices (set of 3 x float) then all associated UVs (set of 2 x float) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL VAO id </dd></dl>\n\n</div>\n</div>\n<a id=\"ab1e510fded4ac300b4a21efd577604f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1e510fded4ac300b4a21efd577604f3\">&#9670;&nbsp;</a></span>fbg_glfwFullscreen()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_glfwFullscreen </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>enable</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Switch to fullscreen or windowed mode. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">enable</td><td>Boolean indicating windowed or fullscreen </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"af724a4a5f9f195765ef6b11255851848\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af724a4a5f9f195765ef6b11255851848\">&#9670;&nbsp;</a></span>fbg_glfwResize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_glfwResize </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned int&#160;</td>\n          <td class=\"paramname\"><em>new_width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned&#160;</td>\n          <td class=\"paramname\"><em>new_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Display resize. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">new_width</td><td>new display width </td></tr>\n    <tr><td class=\"paramname\">new_height</td><td>new display height </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a41d8a89a2bf7c6d2310d07eae206faa9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41d8a89a2bf7c6d2310d07eae206faa9\">&#9670;&nbsp;</a></span>fbg_glfwSetup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_glfwSetup </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>components</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>title</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>monitor</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>fullscreen</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics OpenGL context (GLFW library) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">width</td><td>window width </td></tr>\n    <tr><td class=\"paramname\">height</td><td>window height </td></tr>\n    <tr><td class=\"paramname\">components</td><td>fbg context color components (4 for RGBA or 3 for RGB) </td></tr>\n    <tr><td class=\"paramname\">title</td><td>window title </td></tr>\n    <tr><td class=\"paramname\">monitor</td><td>monitor id (0 = primary display) </td></tr>\n    <tr><td class=\"paramname\">fullscreen</td><td>0 = windowed, 1 = fullscreen, 2 = windowed full screen </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>FBG data structure pointer </dd></dl>\n\n</div>\n</div>\n<a id=\"a723385d297914375f9c5269492b05b50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a723385d297914375f9c5269492b05b50\">&#9670;&nbsp;</a></span>fbg_glfwShouldClose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int fbg_glfwShouldClose </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Query the user requested (window close etc) close status. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Boolean indicating close status </dd></dl>\n\n</div>\n</div>\n<a id=\"a88a6523e8ce117e334bad1220bfbc55b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88a6523e8ce117e334bad1220bfbc55b\">&#9670;&nbsp;</a></span>fbg_glfwUpdateBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_glfwUpdateBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>this update FBG disp_buffer with the actual rendered OpenGL content </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a06771c76a305bf753611309286e73c07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06771c76a305bf753611309286e73c07\">&#9670;&nbsp;</a></span>fbg_glfwQuad</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const GLfloat fbg_glfwQuad[]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple quad geometry (vertices + UV) </p>\n\n</div>\n</div>\n<a id=\"a9fd4455e8dddd7c55fb5fb3e5d973f36\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fd4455e8dddd7c55fb5fb3e5d973f36\">&#9670;&nbsp;</a></span>fbg_glfwSimpleFs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* fbg_glfwSimpleFs</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple textured fragment shader. </p>\n\n</div>\n</div>\n<a id=\"a998669be4cb45dda77c48cb23891fc4e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a998669be4cb45dda77c48cb23891fc4e\">&#9670;&nbsp;</a></span>fbg_glfwSimpleVs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* fbg_glfwSimpleVs</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple vertex shader (screen quad, vertices + UV) </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__glfw_8h.js",
    "content": "var fbg__glfw_8h =\n[\n    [ \"_fbg_glfw_context\", \"fbg__glfw_8h.html#struct__fbg__glfw__context\", [\n      [ \"fbg_texture\", \"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\", null ],\n      [ \"fbg_vao\", \"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\", null ],\n      [ \"monitor\", \"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\", null ],\n      [ \"simple_program\", \"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\", null ],\n      [ \"update_buffer\", \"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\", null ],\n      [ \"window\", \"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\", null ]\n    ] ],\n    [ \"fbg_glfwClear\", \"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\", null ],\n    [ \"fbg_glfwCreateFBO\", \"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\", null ],\n    [ \"fbg_glfwCreateProgram\", \"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\", null ],\n    [ \"fbg_glfwCreateProgramFromFiles\", \"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\", null ],\n    [ \"fbg_glfwCreateProgramFromString\", \"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\", null ],\n    [ \"fbg_glfwCreateShader\", \"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\", null ],\n    [ \"fbg_glfwCreateShaderFromFile\", \"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\", null ],\n    [ \"fbg_glfwCreateTexture\", \"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\", null ],\n    [ \"fbg_glfwCreateTextureFromImage\", \"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\", null ],\n    [ \"fbg_glfwCreateVAO\", \"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\", null ],\n    [ \"fbg_glfwCreateVAOvu\", \"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\", null ],\n    [ \"fbg_glfwFullscreen\", \"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\", null ],\n    [ \"fbg_glfwResize\", \"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\", null ],\n    [ \"fbg_glfwSetup\", \"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\", null ],\n    [ \"fbg_glfwShouldClose\", \"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\", null ],\n    [ \"fbg_glfwUpdateBuffer\", \"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\", null ],\n    [ \"fbg_glfwQuad\", \"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\", null ],\n    [ \"fbg_glfwSimpleFs\", \"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\", null ],\n    [ \"fbg_glfwSimpleVs\", \"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\", null ]\n];"
  },
  {
    "path": "docs/fbg__glfw_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_glfw.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2665f63191f4afb0d340db1cd0753229.html\">glfw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_glfw.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbg__glfw_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2018, Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_GLFW_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_GLFW_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &lt;GL/glew.h&gt;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">    #include &lt;GLFW/glfw3.h&gt;</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"preprocessor\">    #include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html\">   37</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\">_fbg_glfw_context</a> {</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\">   39</a></span>&#160;        GLFWwindow *<a class=\"code\" href=\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\">window</a>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">   41</a></span>&#160;        GLFWmonitor *<a class=\"code\" href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">monitor</a>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\">   43</a></span>&#160;        GLenum <a class=\"code\" href=\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\">simple_program</a>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\">   45</a></span>&#160;        GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\">fbg_vao</a>;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\">   47</a></span>&#160;        GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\">fbg_texture</a>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\">   49</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\">update_buffer</a>;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    };</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> GLfloat <a class=\"code\" href=\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\">fbg_glfwQuad</a>[];</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\">fbg_glfwSimpleVs</a>;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\">fbg_glfwSimpleFs</a>;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\">fbg_glfwSetup</a>(<span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a>, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *title, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">monitor</a>, <span class=\"keywordtype\">int</span> fullscreen);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\">fbg_glfwClear</a>();</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\">fbg_glfwUpdateBuffer</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\">fbg_glfwShouldClose</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\">fbg_glfwFullscreen</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> enable);</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\">fbg_glfwResize</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">unsigned</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>);</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\">fbg_glfwCreateTextureFromImage</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img);</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"comment\">//-- A SET OF RAW OPENGL UTILITY FUNCTIONS --</span></div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">fbg_glfwCreateTexture</a>(GLuint <a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>, GLuint <a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>, GLint internal_format);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\">fbg_glfwCreateVAO</a>(GLsizeiptr indices_count, <span class=\"keyword\">const</span> GLvoid *indices_data, <span class=\"keywordtype\">size_t</span> sizeof_indice_type,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;                                    GLsizeiptr vertices_count, <span class=\"keyword\">const</span> GLvoid *vertices_data,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;                                    GLsizeiptr texcoords_count, <span class=\"keyword\">const</span> GLvoid *texcoords_data,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;                                    GLsizeiptr normals_count, <span class=\"keyword\">const</span> GLvoid *normals_data,</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;                                    GLsizeiptr colors_count, <span class=\"keyword\">const</span> GLvoid *colors_data);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\">fbg_glfwCreateVAOvu</a>(GLsizeiptr data_count, <span class=\"keyword\">const</span> GLvoid *data);</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\">fbg_glfwCreateFBO</a>(GLuint texture);</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\">fbg_glfwCreateShader</a>(GLenum type, <span class=\"keyword\">const</span> GLchar *source);</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\">fbg_glfwCreateShaderFromFile</a>(GLenum type, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *filename);</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\">fbg_glfwCreateProgram</a>(GLuint vertex_shader, GLuint fragment_shader, GLuint geometry_shader);</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    <span class=\"keyword\">extern</span> GLenum <a class=\"code\" href=\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\">fbg_glfwCreateProgramFromFiles</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *vs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *fs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *gs);</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;    <span class=\"keyword\">extern</span> GLenum <a class=\"code\" href=\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\">fbg_glfwCreateProgramFromString</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *vs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *fs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *gs);</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"fbg__glfw_8h_html_aca78bdcc45f25aeb9ae74a3d6ef136d1\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\">fbg_glfwCreateTextureFromImage</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img)</div><div class=\"ttdoc\">create a non-interpolated (NEAREST) GL texture from a FBG image </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a0377751d89c499aaa9d3a8b75c6724bb\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">_fbg_glfw_context::monitor</a></div><div class=\"ttdeci\">GLFWmonitor * monitor</div><div class=\"ttdoc\">GLFW monitor. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00041\">fbg_glfw.h:41</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_af724a4a5f9f195765ef6b11255851848\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\">fbg_glfwResize</a></div><div class=\"ttdeci\">void fbg_glfwResize(struct _fbg *fbg, unsigned int new_width, unsigned new_height)</div><div class=\"ttdoc\">Display resize. </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1db77a2ef506723a575644dbc1cfb747\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">_fbg::components</a></div><div class=\"ttdeci\">int components</div><div class=\"ttdoc\">Display components amount (3 = 24 BPP / 4 = 32 BPP) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00176\">fbgraphics.h:176</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ab9766ea45a75dae87a27b93097849e29\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\">_fbg_glfw_context::fbg_texture</a></div><div class=\"ttdeci\">GLuint fbg_texture</div><div class=\"ttdoc\">FBG texture (updated at each frames) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00047\">fbg_glfw.h:47</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a368de6aed34d9828a84ad7d629a8f96c\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\">_fbg_glfw_context::update_buffer</a></div><div class=\"ttdeci\">int update_buffer</div><div class=\"ttdoc\">tell wether fbg_glfw should update fbg disp_buffer after rendering </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00049\">fbg_glfw.h:49</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html\">fbgraphics.h</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a88a6523e8ce117e334bad1220bfbc55b\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\">fbg_glfwUpdateBuffer</a></div><div class=\"ttdeci\">void fbg_glfwUpdateBuffer(struct _fbg *fbg)</div><div class=\"ttdoc\">this update FBG disp_buffer with the actual rendered OpenGL content </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a49073f43825b79bdf11b7a20cabac56b\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\">fbg_glfwCreateVAO</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateVAO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type, GLsizeiptr vertices_count, const GLvoid *vertices_data, GLsizeiptr texcoords_count, const GLvoid *texcoords_data, GLsizeiptr normals_count, const GLvoid *normals_data, GLsizeiptr colors_count, const GLvoid *colors_data)</div><div class=\"ttdoc\">create a VAO from indexed data, support for vertices, UVs, normals and colors </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a41d8a89a2bf7c6d2310d07eae206faa9\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\">fbg_glfwSetup</a></div><div class=\"ttdeci\">struct _fbg * fbg_glfwSetup(int width, int height, int components, const char *title, int monitor, int fullscreen)</div><div class=\"ttdoc\">initialize a FB Graphics OpenGL context (GLFW library) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1d3c76643e4ee424f4d17e27991d5e2e\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">_fbg::width</a></div><div class=\"ttdeci\">int width</div><div class=\"ttdoc\">Display width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00170\">fbgraphics.h:170</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a95859bd418a5cfff155cdb1421d295ef\"><div class=\"ttname\"><a href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">_fbg::new_width</a></div><div class=\"ttdeci\">int new_width</div><div class=\"ttdoc\">Requested new display width (resize event) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00183\">fbgraphics.h:183</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a509aa5f8f0a94d8313bb4da777aa64bc\"><div class=\"ttname\"><a href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">_fbg::new_height</a></div><div class=\"ttdeci\">int new_height</div><div class=\"ttdoc\">Requested new display height (resize event) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00185\">fbgraphics.h:185</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_struct__fbg__glfw__context\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#struct__fbg__glfw__context\">_fbg_glfw_context</a></div><div class=\"ttdoc\">GLFW wrapper data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00037\">fbg_glfw.h:37</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a9454484e4d9b5d484a1b46f35a2ed64b\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\">fbg_glfwCreateProgramFromString</a></div><div class=\"ttdeci\">GLenum fbg_glfwCreateProgramFromString(const char *vs, const char *fs, const char *gs)</div><div class=\"ttdoc\">create a vertex and/or fragment/geometry program from a string </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a9fd4455e8dddd7c55fb5fb3e5d973f36\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\">fbg_glfwSimpleFs</a></div><div class=\"ttdeci\">const char * fbg_glfwSimpleFs</div><div class=\"ttdoc\">Simple textured fragment shader. </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a06771c76a305bf753611309286e73c07\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\">fbg_glfwQuad</a></div><div class=\"ttdeci\">const GLfloat fbg_glfwQuad[]</div><div class=\"ttdoc\">Simple quad geometry (vertices + UV) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a3a3bd409e71d020fa77f69a541d832f8\"><div class=\"ttname\"><a href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">_fbg::height</a></div><div class=\"ttdeci\">int height</div><div class=\"ttdoc\">Display height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00172\">fbgraphics.h:172</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a723385d297914375f9c5269492b05b50\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\">fbg_glfwShouldClose</a></div><div class=\"ttdeci\">int fbg_glfwShouldClose(struct _fbg *fbg)</div><div class=\"ttdoc\">Query the user requested (window close etc) close status. </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_aeb42580d7148df3ffbbb590bbf0028a8\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\">fbg_glfwCreateProgramFromFiles</a></div><div class=\"ttdeci\">GLenum fbg_glfwCreateProgramFromFiles(const char *vs, const char *fs, const char *gs)</div><div class=\"ttdoc\">create a vertex and/or fragment/geometry program from a file </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a998669be4cb45dda77c48cb23891fc4e\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\">fbg_glfwSimpleVs</a></div><div class=\"ttdeci\">const char * fbg_glfwSimpleVs</div><div class=\"ttdoc\">Simple vertex shader (screen quad, vertices + UV) </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ae249286407780f32b8c65bce835475f4\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\">_fbg_glfw_context::window</a></div><div class=\"ttdeci\">GLFWwindow * window</div><div class=\"ttdoc\">GLFW window. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00039\">fbg_glfw.h:39</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ac328fff77bfd3e7ddafb2dfdf5d6b4b0\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">fbg_glfwCreateTexture</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateTexture(GLuint width, GLuint height, GLint internal_format)</div><div class=\"ttdoc\">create an empty non-interpolated (NEAREST) GL texture </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ab95a2f530b32939e45f3ee7f453acf36\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\">_fbg_glfw_context::simple_program</a></div><div class=\"ttdeci\">GLenum simple_program</div><div class=\"ttdoc\">Simple GLSL program (screen-aligned textured quad) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00043\">fbg_glfw.h:43</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_af9d4876755370dc34cb76b9209ff8b6c\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\">fbg_glfwCreateVAOvu</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateVAOvu(GLsizeiptr data_count, const GLvoid *data)</div><div class=\"ttdoc\">create a VAO from vertices + UV data packed into a single array </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ae65b56bcf995bc599bc98d6a6d81072a\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\">_fbg_glfw_context::fbg_vao</a></div><div class=\"ttdeci\">GLuint fbg_vao</div><div class=\"ttdoc\">FBG VAO. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__glfw_8h_source.html#l00045\">fbg_glfw.h:45</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ab156d8b8da0ef3135888942c054bbbeb\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\">fbg_glfwCreateShaderFromFile</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateShaderFromFile(GLenum type, const char *filename)</div><div class=\"ttdoc\">create a shader from the content of a file </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a17dd8947f781a20136c59eb9579edf2f\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\">fbg_glfwClear</a></div><div class=\"ttdeci\">void fbg_glfwClear()</div><div class=\"ttdoc\">OpenGL clear. </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ae16afafa7eec0ed48b8a8fb38bb83ac4\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\">fbg_glfwCreateFBO</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateFBO(GLuint texture)</div><div class=\"ttdoc\">create a FBO </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a45cf81b5b25c6ef69025693650c9bcb8\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\">fbg_glfwCreateProgram</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateProgram(GLuint vertex_shader, GLuint fragment_shader, GLuint geometry_shader)</div><div class=\"ttdoc\">create a vertex and/or fragment program </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__img\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a></div><div class=\"ttdoc\">Image data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00091\">fbgraphics.h:91</a></div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_ab1e510fded4ac300b4a21efd577604f3\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\">fbg_glfwFullscreen</a></div><div class=\"ttdeci\">void fbg_glfwFullscreen(struct _fbg *fbg, int enable)</div><div class=\"ttdoc\">Switch to fullscreen or windowed mode. </div></div>\n<div class=\"ttc\" id=\"fbg__glfw_8h_html_a3ed78e4ad11ac7e2a021e1747eb59aa8\"><div class=\"ttname\"><a href=\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\">fbg_glfwCreateShader</a></div><div class=\"ttdeci\">GLuint fbg_glfwCreateShader(GLenum type, const GLchar *source)</div><div class=\"ttdoc\">create a single shader </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__glfw_8h_struct__fbg__glfw__context.js",
    "content": "var fbg__glfw_8h_struct__fbg__glfw__context =\n[\n    [ \"fbg_texture\", \"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\", null ],\n    [ \"fbg_vao\", \"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\", null ],\n    [ \"monitor\", \"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\", null ],\n    [ \"simple_program\", \"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\", null ],\n    [ \"update_buffer\", \"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\", null ],\n    [ \"window\", \"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\", null ]\n];"
  },
  {
    "path": "docs/fbg__opengl__es2_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_opengl_es2.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ef37642b6b64fd185f53d45d9625a884.html\">opengl_es2</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_opengl_es2.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;sys/ioctl.h&gt;</code><br />\n<code>#include &lt;linux/fb.h&gt;</code><br />\n<code>#include &lt;unistd.h&gt;</code><br />\n<code>#include &lt;fcntl.h&gt;</code><br />\n<code>#include &lt;GLES2/gl2.h&gt;</code><br />\n<code>#include &lt;EGL/egl.h&gt;</code><br />\n<code>#include &lt;EGL/eglext.h&gt;</code><br />\n<code>#include &quot;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&quot;</code><br />\n</div>\n<p><a href=\"fbg__opengl__es2_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:struct__fbg__gles2__context\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\">_fbg_gles2_context</a></td></tr>\n<tr class=\"memdesc:struct__fbg__gles2__context\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">OpenGL ES 2.0 wrapper data structure.  <a href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__gles2__context\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:struct__fbg__vbo__data\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a></td></tr>\n<tr class=\"memdesc:struct__fbg__vbo__data\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">struct which hold usual VBO data for 3D objects  <a href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__vbo__data\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aa6d3bab630c17f240843c2872b05d18a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_gles2Setup</a> (const char *fb_device, int components)</td></tr>\n<tr class=\"memdesc:aa6d3bab630c17f240843c2872b05d18a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics OpenGL ES 2 (fbdev or RPI direct) context  <a href=\"#aa6d3bab630c17f240843c2872b05d18a\">More...</a><br /></td></tr>\n<tr class=\"separator:aa6d3bab630c17f240843c2872b05d18a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56535b156300a90cf5aa817fc4fdfe95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\">fbg_gles2Clear</a> ()</td></tr>\n<tr class=\"memdesc:a56535b156300a90cf5aa817fc4fdfe95\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">OpenGL clear.  <a href=\"#a56535b156300a90cf5aa817fc4fdfe95\">More...</a><br /></td></tr>\n<tr class=\"separator:a56535b156300a90cf5aa817fc4fdfe95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74b92a4aab0207a1c15d7e8fc1b723dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\">fbg_gles2UpdateBuffer</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a74b92a4aab0207a1c15d7e8fc1b723dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">this update FBG disp_buffer with the actual rendered OpenGL content  <a href=\"#a74b92a4aab0207a1c15d7e8fc1b723dc\">More...</a><br /></td></tr>\n<tr class=\"separator:a74b92a4aab0207a1c15d7e8fc1b723dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a182413439943678ce07ca310ccfded33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\">fbg_gles2ShouldClose</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a182413439943678ce07ca310ccfded33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Query the user requested (window close etc) close status.  <a href=\"#a182413439943678ce07ca310ccfded33\">More...</a><br /></td></tr>\n<tr class=\"separator:a182413439943678ce07ca310ccfded33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40a597d6ce20e0bbcd1009ae9fe7328e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\">fbg_gles2CreateTextureFromImage</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img)</td></tr>\n<tr class=\"memdesc:a40a597d6ce20e0bbcd1009ae9fe7328e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a non-interpolated (NEAREST) GL texture from a FBG image  <a href=\"#a40a597d6ce20e0bbcd1009ae9fe7328e\">More...</a><br /></td></tr>\n<tr class=\"separator:a40a597d6ce20e0bbcd1009ae9fe7328e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78b04688484a4ff7ec9651f872d6d7c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\">fbg_gles2CreateTexture</a> (GLuint width, GLuint height, GLint internal_format)</td></tr>\n<tr class=\"memdesc:a78b04688484a4ff7ec9651f872d6d7c4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create an empty non-interpolated (NEAREST) GL texture  <a href=\"#a78b04688484a4ff7ec9651f872d6d7c4\">More...</a><br /></td></tr>\n<tr class=\"separator:a78b04688484a4ff7ec9651f872d6d7c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7c677445f8e1853931f0d58bd53a9c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\">fbg_gles2CreateVBO</a> (GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type, GLsizeiptr vertices_count, const GLvoid *vertices_data, GLsizeiptr texcoords_count, const GLvoid *texcoords_data, GLsizeiptr normals_count, const GLvoid *normals_data, GLsizeiptr colors_count, const GLvoid *colors_data)</td></tr>\n<tr class=\"memdesc:ab7c677445f8e1853931f0d58bd53a9c0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a VBO from indexed data, support for vertices, UVs, normals and colors  <a href=\"#ab7c677445f8e1853931f0d58bd53a9c0\">More...</a><br /></td></tr>\n<tr class=\"separator:ab7c677445f8e1853931f0d58bd53a9c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ac6ebf34ab696d79368321eb231336e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\">fbg_gles2FreeVBOData</a> (struct <a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> *vbo_data)</td></tr>\n<tr class=\"memdesc:a3ac6ebf34ab696d79368321eb231336e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">free VBO data (created with fbg_gles2CreateVBO)  <a href=\"#a3ac6ebf34ab696d79368321eb231336e\">More...</a><br /></td></tr>\n<tr class=\"separator:a3ac6ebf34ab696d79368321eb231336e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5ee72a7f71de24bdee26e09816c51a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\">fbg_gles2CreateVBOvu</a> (GLsizeiptr data_count, const GLvoid *data)</td></tr>\n<tr class=\"memdesc:ad5ee72a7f71de24bdee26e09816c51a9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a VBO from vertices + UV data packed into a single array  <a href=\"#ad5ee72a7f71de24bdee26e09816c51a9\">More...</a><br /></td></tr>\n<tr class=\"separator:ad5ee72a7f71de24bdee26e09816c51a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fecc8d59fce8fde2aa583d14d40e6c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\">fbg_gles2CreateShader</a> (GLenum type, const GLchar *source)</td></tr>\n<tr class=\"memdesc:a6fecc8d59fce8fde2aa583d14d40e6c7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a FBO  <a href=\"#a6fecc8d59fce8fde2aa583d14d40e6c7\">More...</a><br /></td></tr>\n<tr class=\"separator:a6fecc8d59fce8fde2aa583d14d40e6c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e9bdd02d2bd4d842a037d89f160c97d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\">fbg_gles2CreateShaderFromFile</a> (GLenum type, const char *filename)</td></tr>\n<tr class=\"memdesc:a1e9bdd02d2bd4d842a037d89f160c97d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a shader from the content of a file  <a href=\"#a1e9bdd02d2bd4d842a037d89f160c97d\">More...</a><br /></td></tr>\n<tr class=\"separator:a1e9bdd02d2bd4d842a037d89f160c97d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99da9de6f427c8dfa282479526cab0d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLuint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\">fbg_gles2CreateProgram</a> (GLuint vertex_shader, GLuint fragment_shader)</td></tr>\n<tr class=\"memdesc:a99da9de6f427c8dfa282479526cab0d8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment program  <a href=\"#a99da9de6f427c8dfa282479526cab0d8\">More...</a><br /></td></tr>\n<tr class=\"separator:a99da9de6f427c8dfa282479526cab0d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa40dcfe49b117e0cc56f0e37136d2e14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLenum&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\">fbg_gles2CreateProgramFromFiles</a> (const char *vs, const char *fs)</td></tr>\n<tr class=\"memdesc:aa40dcfe49b117e0cc56f0e37136d2e14\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment/geometry program from a file  <a href=\"#aa40dcfe49b117e0cc56f0e37136d2e14\">More...</a><br /></td></tr>\n<tr class=\"separator:aa40dcfe49b117e0cc56f0e37136d2e14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31d962efec67e4646f4e4d783f771f5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">GLenum&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\">fbg_gles2CreateProgramFromString</a> (const char *vs, const char *fs)</td></tr>\n<tr class=\"memdesc:a31d962efec67e4646f4e4d783f771f5b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a vertex and/or fragment/geometry program from a string  <a href=\"#a31d962efec67e4646f4e4d783f771f5b\">More...</a><br /></td></tr>\n<tr class=\"separator:a31d962efec67e4646f4e4d783f771f5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9629d95895432370d9f324880289ad4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const GLfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\">fbg_gles2Quad</a> []</td></tr>\n<tr class=\"memdesc:a9629d95895432370d9f324880289ad4d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple quad geometry (vertices + UV)  <a href=\"#a9629d95895432370d9f324880289ad4d\">More...</a><br /></td></tr>\n<tr class=\"separator:a9629d95895432370d9f324880289ad4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03be1f1cb0a92af8c8c6dc6fcd990b68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\">fbg_gles2SimpleVs</a></td></tr>\n<tr class=\"memdesc:a03be1f1cb0a92af8c8c6dc6fcd990b68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple vertex shader (screen quad, vertices + UV)  <a href=\"#a03be1f1cb0a92af8c8c6dc6fcd990b68\">More...</a><br /></td></tr>\n<tr class=\"separator:a03be1f1cb0a92af8c8c6dc6fcd990b68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6986e3484c0e218fd9d527643b74fe54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\">fbg_gles2SimpleFs</a></td></tr>\n<tr class=\"memdesc:a6986e3484c0e218fd9d527643b74fe54\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple textured fragment shader.  <a href=\"#a6986e3484c0e218fd9d527643b74fe54\">More...</a><br /></td></tr>\n<tr class=\"separator:a6986e3484c0e218fd9d527643b74fe54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/><h2 class=\"groupheader\">Data Structure Documentation</h2>\n<a name=\"struct__fbg__gles2__context\" id=\"struct__fbg__gles2__context\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__gles2__context\">&#9670;&nbsp;</a></span>_fbg_gles2_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_gles2_context</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>OpenGL ES 2.0 wrapper data structure. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__opengl__es2_8h_source.html#l00047\">47</a> of file <a class=\"el\" href=\"fbg__opengl__es2_8h_source.html\">fbg_opengl_es2.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a2ca2f4f23e8b651ec11708d211ed765b\"></a>EGLContext</td>\n<td class=\"fieldname\">\negl_context</td>\n<td class=\"fielddoc\">\nEGL context. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"affc02efb9ec2cda13d822b275e596f74\"></a>EGLDisplay</td>\n<td class=\"fieldname\">\negl_display</td>\n<td class=\"fielddoc\">\nEGL display. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a0937c99d8efac543926d5cee7708b147\"></a>void *</td>\n<td class=\"fieldname\">\negl_image</td>\n<td class=\"fielddoc\">\nEGL image. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a82a71c25f8b378ca6d50bcfe9bde2228\"></a>EGLContext</td>\n<td class=\"fieldname\">\negl_surface</td>\n<td class=\"fielddoc\">\nEGL surface. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"af1ab819f45eb1407455cba90991c11e0\"></a>GLuint</td>\n<td class=\"fieldname\">\nfbg_texture</td>\n<td class=\"fielddoc\">\nFBG texture (updated at each frames) </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ad91d53fa2f501b5ca598e7dfaef6c7a2\"></a>GLuint</td>\n<td class=\"fieldname\">\nfbg_vbo</td>\n<td class=\"fielddoc\">\nFBG VBO. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"af4aca9e8f28ec07109a8c850d9e941f4\"></a>int</td>\n<td class=\"fieldname\">\nfd</td>\n<td class=\"fielddoc\">\nFramebuffer file descriptor. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a6dbba5982fbf4db17d85f5587ee2afd4\"></a>GLenum</td>\n<td class=\"fieldname\">\nsimple_program</td>\n<td class=\"fielddoc\">\nSimple GLSL program (screen-aligned textured quad) </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a2af2636ae98239c2cd1072e3cf9a5e26\"></a>int</td>\n<td class=\"fieldname\">\nupdate_buffer</td>\n<td class=\"fielddoc\">\ntell wether fbg_gles2 should update fbg disp_buffer after rendering </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"adb624ccb30f3d6a3a4aea5c1cdb03592\"></a>struct fb_var_screeninfo</td>\n<td class=\"fieldname\">\nvinfo</td>\n<td class=\"fielddoc\">\nFramebuffer device var. informations. </td></tr>\n</table>\n\n</div>\n</div>\n<a name=\"struct__fbg__vbo__data\" id=\"struct__fbg__vbo__data\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__vbo__data\">&#9670;&nbsp;</a></span>_fbg_vbo_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_vbo_data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>struct which hold usual VBO data for 3D objects </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__opengl__es2_8h_source.html#l00073\">73</a> of file <a class=\"el\" href=\"fbg__opengl__es2_8h_source.html\">fbg_opengl_es2.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a14d3420112271942e23d0de0d3b53b20\"></a>GLuint</td>\n<td class=\"fieldname\">\ncbo</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ad3d86948330c3e3887733228f8369a1d\"></a>GLuint</td>\n<td class=\"fieldname\">\nibo</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a795cc9acb2bec510a4681aa824fe2560\"></a>GLuint</td>\n<td class=\"fieldname\">\nnbo</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ab4bd72ffd8ed50a3153ce8458eec0498\"></a>GLuint</td>\n<td class=\"fieldname\">\ntbo</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a8b13e18bbdd0085855c8bbfae453bdeb\"></a>GLuint</td>\n<td class=\"fieldname\">\nvbo</td>\n<td class=\"fielddoc\">\n</td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a56535b156300a90cf5aa817fc4fdfe95\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56535b156300a90cf5aa817fc4fdfe95\">&#9670;&nbsp;</a></span>fbg_gles2Clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_gles2Clear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>OpenGL clear. </p>\n\n</div>\n</div>\n<a id=\"a99da9de6f427c8dfa282479526cab0d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99da9de6f427c8dfa282479526cab0d8\">&#9670;&nbsp;</a></span>fbg_gles2CreateProgram()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateProgram </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment program </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vertex_shader</td><td>vertex shader id, can be 0 </td></tr>\n    <tr><td class=\"paramname\">fragment_shader</td><td>fragment shader id, can be 0 </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"aa40dcfe49b117e0cc56f0e37136d2e14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa40dcfe49b117e0cc56f0e37136d2e14\">&#9670;&nbsp;</a></span>fbg_gles2CreateProgramFromFiles()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLenum fbg_gles2CreateProgramFromFiles </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fs</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment/geometry program from a file </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vs</td><td>vertex shader file </td></tr>\n    <tr><td class=\"paramname\">fs</td><td>fragment shader file </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a31d962efec67e4646f4e4d783f771f5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31d962efec67e4646f4e4d783f771f5b\">&#9670;&nbsp;</a></span>fbg_gles2CreateProgramFromString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLenum fbg_gles2CreateProgramFromString </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fs</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a vertex and/or fragment/geometry program from a string </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vs</td><td>vertex shader string </td></tr>\n    <tr><td class=\"paramname\">fs</td><td>fragment shader string </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a6fecc8d59fce8fde2aa583d14d40e6c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fecc8d59fce8fde2aa583d14d40e6c7\">&#9670;&nbsp;</a></span>fbg_gles2CreateShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLenum&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLchar *&#160;</td>\n          <td class=\"paramname\"><em>source</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a FBO </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">texture</td><td>GL texture id </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL FBO idcreate a single shader</dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">type</td><td>GL shader type </td></tr>\n    <tr><td class=\"paramname\">source</td><td>shader code </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a1e9bdd02d2bd4d842a037d89f160c97d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e9bdd02d2bd4d842a037d89f160c97d\">&#9670;&nbsp;</a></span>fbg_gles2CreateShaderFromFile()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateShaderFromFile </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLenum&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a shader from the content of a file </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">type</td><td>GL shader type </td></tr>\n    <tr><td class=\"paramname\">filename</td><td>file to load </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL shader id </dd></dl>\n\n</div>\n</div>\n<a id=\"a78b04688484a4ff7ec9651f872d6d7c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78b04688484a4ff7ec9651f872d6d7c4\">&#9670;&nbsp;</a></span>fbg_gles2CreateTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLuint&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLint&#160;</td>\n          <td class=\"paramname\"><em>internal_format</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create an empty non-interpolated (NEAREST) GL texture </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">width</td><td>width of the requested texture </td></tr>\n    <tr><td class=\"paramname\">height</td><td>height of the requested texture </td></tr>\n    <tr><td class=\"paramname\">internal_format</td><td>OpenGL format (GL_RGBA etc.) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL texture id </dd></dl>\n\n</div>\n</div>\n<a id=\"a40a597d6ce20e0bbcd1009ae9fe7328e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40a597d6ce20e0bbcd1009ae9fe7328e\">&#9670;&nbsp;</a></span>fbg_gles2CreateTextureFromImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateTextureFromImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a non-interpolated (NEAREST) GL texture from a FBG image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL texture id </dd></dl>\n\n</div>\n</div>\n<a id=\"ab7c677445f8e1853931f0d58bd53a9c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7c677445f8e1853931f0d58bd53a9c0\">&#9670;&nbsp;</a></span>fbg_gles2CreateVBO()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a>* fbg_gles2CreateVBO </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>indices_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>indices_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>sizeof_indice_type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>vertices_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>vertices_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>texcoords_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>texcoords_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>normals_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>normals_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>colors_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>colors_data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a VBO from indexed data, support for vertices, UVs, normals and colors </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">indices_count</td><td>indices count </td></tr>\n    <tr><td class=\"paramname\">indices_data</td><td>data containing indices </td></tr>\n    <tr><td class=\"paramname\">sizeof_indice_type</td><td>sizeof indice type </td></tr>\n    <tr><td class=\"paramname\">vertices_count</td><td>vertices count </td></tr>\n    <tr><td class=\"paramname\">vertices_data</td><td>data containing vertices </td></tr>\n    <tr><td class=\"paramname\">texcoords_count</td><td>uv count </td></tr>\n    <tr><td class=\"paramname\">texcoords_data</td><td>data containing uv </td></tr>\n    <tr><td class=\"paramname\">normals_count</td><td>normals count </td></tr>\n    <tr><td class=\"paramname\">normals_data</td><td>data containing normals </td></tr>\n    <tr><td class=\"paramname\">colors_count</td><td>colors count </td></tr>\n    <tr><td class=\"paramname\">colors_data</td><td>data containing colors </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\" title=\"struct which hold usual VBO data for 3D objects \">_fbg_vbo_data</a> data structure containing the VBOs </dd></dl>\n\n</div>\n</div>\n<a id=\"ad5ee72a7f71de24bdee26e09816c51a9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5ee72a7f71de24bdee26e09816c51a9\">&#9670;&nbsp;</a></span>fbg_gles2CreateVBOvu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">GLuint fbg_gles2CreateVBOvu </td>\n          <td>(</td>\n          <td class=\"paramtype\">GLsizeiptr&#160;</td>\n          <td class=\"paramname\"><em>data_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const GLvoid *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a VBO from vertices + UV data packed into a single array </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">data_count</td><td>vertices data count </td></tr>\n    <tr><td class=\"paramname\">data</td><td>data containing all vertices (set of 3 x float) then all associated UVs (set of 2 x float) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>GL VBO id </dd></dl>\n\n</div>\n</div>\n<a id=\"a3ac6ebf34ab696d79368321eb231336e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ac6ebf34ab696d79368321eb231336e\">&#9670;&nbsp;</a></span>fbg_gles2FreeVBOData()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_gles2FreeVBOData </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> *&#160;</td>\n          <td class=\"paramname\"><em>vbo_data</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>free VBO data (created with fbg_gles2CreateVBO) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">vbo_data</td><td>data structure containing the VBOs </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aa6d3bab630c17f240843c2872b05d18a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6d3bab630c17f240843c2872b05d18a\">&#9670;&nbsp;</a></span>fbg_gles2Setup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_gles2Setup </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fb_device</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>components</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics OpenGL ES 2 (fbdev or RPI direct) context </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fb_device</td><td>framebuffer device; example : /dev/fb0 </td></tr>\n    <tr><td class=\"paramname\">components</td><td>fbg context color components (4 for RGBA or 3 for RGB) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>FBG data structure pointer </dd></dl>\n\n</div>\n</div>\n<a id=\"a182413439943678ce07ca310ccfded33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a182413439943678ce07ca310ccfded33\">&#9670;&nbsp;</a></span>fbg_gles2ShouldClose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int fbg_gles2ShouldClose </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Query the user requested (window close etc) close status. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Boolean indicating close status </dd></dl>\n\n</div>\n</div>\n<a id=\"a74b92a4aab0207a1c15d7e8fc1b723dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74b92a4aab0207a1c15d7e8fc1b723dc\">&#9670;&nbsp;</a></span>fbg_gles2UpdateBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_gles2UpdateBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>this update FBG disp_buffer with the actual rendered OpenGL content </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a9629d95895432370d9f324880289ad4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9629d95895432370d9f324880289ad4d\">&#9670;&nbsp;</a></span>fbg_gles2Quad</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const GLfloat fbg_gles2Quad[]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple quad geometry (vertices + UV) </p>\n\n</div>\n</div>\n<a id=\"a6986e3484c0e218fd9d527643b74fe54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6986e3484c0e218fd9d527643b74fe54\">&#9670;&nbsp;</a></span>fbg_gles2SimpleFs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* fbg_gles2SimpleFs</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple textured fragment shader. </p>\n\n</div>\n</div>\n<a id=\"a03be1f1cb0a92af8c8c6dc6fcd990b68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03be1f1cb0a92af8c8c6dc6fcd990b68\">&#9670;&nbsp;</a></span>fbg_gles2SimpleVs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* fbg_gles2SimpleVs</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Simple vertex shader (screen quad, vertices + UV) </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__opengl__es2_8h.js",
    "content": "var fbg__opengl__es2_8h =\n[\n    [ \"_fbg_gles2_context\", \"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\", [\n      [ \"egl_context\", \"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\", null ],\n      [ \"egl_display\", \"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\", null ],\n      [ \"egl_image\", \"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\", null ],\n      [ \"egl_surface\", \"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\", null ],\n      [ \"fbg_texture\", \"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\", null ],\n      [ \"fbg_vbo\", \"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\", null ],\n      [ \"fd\", \"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\", null ],\n      [ \"simple_program\", \"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\", null ],\n      [ \"update_buffer\", \"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\", null ],\n      [ \"vinfo\", \"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\", null ]\n    ] ],\n    [ \"_fbg_vbo_data\", \"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\", [\n      [ \"cbo\", \"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\", null ],\n      [ \"ibo\", \"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\", null ],\n      [ \"nbo\", \"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\", null ],\n      [ \"tbo\", \"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\", null ],\n      [ \"vbo\", \"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\", null ]\n    ] ],\n    [ \"fbg_gles2Clear\", \"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\", null ],\n    [ \"fbg_gles2CreateProgram\", \"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\", null ],\n    [ \"fbg_gles2CreateProgramFromFiles\", \"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\", null ],\n    [ \"fbg_gles2CreateProgramFromString\", \"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\", null ],\n    [ \"fbg_gles2CreateShader\", \"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\", null ],\n    [ \"fbg_gles2CreateShaderFromFile\", \"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\", null ],\n    [ \"fbg_gles2CreateTexture\", \"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\", null ],\n    [ \"fbg_gles2CreateTextureFromImage\", \"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\", null ],\n    [ \"fbg_gles2CreateVBO\", \"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\", null ],\n    [ \"fbg_gles2CreateVBOvu\", \"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\", null ],\n    [ \"fbg_gles2FreeVBOData\", \"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\", null ],\n    [ \"fbg_gles2Setup\", \"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\", null ],\n    [ \"fbg_gles2ShouldClose\", \"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\", null ],\n    [ \"fbg_gles2UpdateBuffer\", \"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\", null ],\n    [ \"fbg_gles2Quad\", \"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\", null ],\n    [ \"fbg_gles2SimpleFs\", \"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\", null ],\n    [ \"fbg_gles2SimpleVs\", \"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\", null ]\n];"
  },
  {
    "path": "docs/fbg__opengl__es2_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbg_opengl_es2.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_30a16d91d70e9988af00af0764afdb22.html\">custom_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ef37642b6b64fd185f53d45d9625a884.html\">opengl_es2</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbg_opengl_es2.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbg__opengl__es2_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2019, 2020 Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_OPENGL_ES2_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_OPENGL_ES2_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &lt;sys/ioctl.h&gt;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">    #include &lt;linux/fb.h&gt;</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"preprocessor\">    #include &lt;unistd.h&gt;</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"preprocessor\">    #include &lt;fcntl.h&gt;</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"preprocessor\">    #include &lt;GLES2/gl2.h&gt;</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">    #include &lt;EGL/egl.h&gt;</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"preprocessor\">    #include &lt;EGL/eglext.h&gt;</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"preprocessor\">#ifdef FBG_RPI</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"preprocessor\">    #include &quot;bcm_host.h&quot;</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"preprocessor\">    #include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html\">   47</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\">_fbg_gles2_context</a> {</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">#ifndef FBG_RPI</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\">fd</a>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\">   52</a></span>&#160;        <span class=\"keyword\">struct </span>fb_var_screeninfo <a class=\"code\" href=\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\">vinfo</a>;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;        EGLDisplay <a class=\"code\" href=\"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\">egl_display</a>;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\">   57</a></span>&#160;        EGLContext <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\">egl_context</a>;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\">   59</a></span>&#160;        EGLContext <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\">egl_surface</a>;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\">   61</a></span>&#160;        <span class=\"keywordtype\">void</span> *<a class=\"code\" href=\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\">egl_image</a>;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\">   63</a></span>&#160;        GLenum <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\">simple_program</a>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\">   65</a></span>&#160;        GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\">fbg_vbo</a>;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\">   67</a></span>&#160;        GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\">fbg_texture</a>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\">   69</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\">update_buffer</a>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    };</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html\">   73</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> {</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;      <span class=\"comment\">// VBO (vertices)</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\">   75</a></span>&#160;      GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\">vbo</a>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;      <span class=\"comment\">// VBO (texcoords)</span></div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\">   77</a></span>&#160;      GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\">tbo</a>;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      <span class=\"comment\">// VBO (indices)</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\">   79</a></span>&#160;      GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\">ibo</a>;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;      <span class=\"comment\">// VBO (normals)</span></div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\">   81</a></span>&#160;      GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\">nbo</a>;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      <span class=\"comment\">// VBO (colors)</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\">   83</a></span>&#160;      GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\">cbo</a>;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    };</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> GLfloat <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\">fbg_gles2Quad</a>[];</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\">fbg_gles2SimpleVs</a>;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\">fbg_gles2SimpleFs</a>;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"preprocessor\">#ifdef FBG_RPI</span></div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_gles2Setup</a>(<span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a>);</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_gles2Setup</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *fb_device, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a>);</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\">fbg_gles2Clear</a>();</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\">fbg_gles2UpdateBuffer</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\">fbg_gles2ShouldClose</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\">fbg_gles2CreateTextureFromImage</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img);</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    <span class=\"comment\">//-- A SET OF RAW OPENGL UTILITY FUNCTIONS --</span></div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\">fbg_gles2CreateTexture</a>(GLuint <a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>, GLuint <a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>, GLint internal_format);</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> * <a class=\"code\" href=\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\">fbg_gles2CreateVBO</a>(GLsizeiptr indices_count, <span class=\"keyword\">const</span> GLvoid *indices_data, <span class=\"keywordtype\">size_t</span> sizeof_indice_type,</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;                                    GLsizeiptr vertices_count, <span class=\"keyword\">const</span> GLvoid *vertices_data,</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;                                    GLsizeiptr texcoords_count, <span class=\"keyword\">const</span> GLvoid *texcoords_data,</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;                                    GLsizeiptr normals_count, <span class=\"keyword\">const</span> GLvoid *normals_data,</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;                                    GLsizeiptr colors_count, <span class=\"keyword\">const</span> GLvoid *colors_data);</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\">fbg_gles2FreeVBOData</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a> *vbo_data);</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\">fbg_gles2CreateVBOvu</a>(GLsizeiptr data_count, <span class=\"keyword\">const</span> GLvoid *data);</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    <span class=\"comment\">//extern GLuint fbg_gles2CreateFBO(GLuint texture);</span></div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\">fbg_gles2CreateShader</a>(GLenum type, <span class=\"keyword\">const</span> GLchar *source);</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\">fbg_gles2CreateShaderFromFile</a>(GLenum type, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *filename);</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;    <span class=\"keyword\">extern</span> GLuint <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\">fbg_gles2CreateProgram</a>(GLuint vertex_shader, GLuint fragment_shader);</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;    <span class=\"keyword\">extern</span> GLenum <a class=\"code\" href=\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\">fbg_gles2CreateProgramFromFiles</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *vs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *fs);</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;    <span class=\"keyword\">extern</span> GLenum <a class=\"code\" href=\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\">fbg_gles2CreateProgramFromString</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *vs, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *fs);</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_struct__fbg__vbo__data\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\">_fbg_vbo_data</a></div><div class=\"ttdoc\">struct which hold usual VBO data for 3D objects </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00073\">fbg_opengl_es2.h:73</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1db77a2ef506723a575644dbc1cfb747\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">_fbg::components</a></div><div class=\"ttdeci\">int components</div><div class=\"ttdoc\">Display components amount (3 = 24 BPP / 4 = 32 BPP) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00176\">fbgraphics.h:176</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a14d3420112271942e23d0de0d3b53b20\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\">_fbg_vbo_data::cbo</a></div><div class=\"ttdeci\">GLuint cbo</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00083\">fbg_opengl_es2.h:83</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a82a71c25f8b378ca6d50bcfe9bde2228\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\">_fbg_gles2_context::egl_surface</a></div><div class=\"ttdeci\">EGLContext egl_surface</div><div class=\"ttdoc\">EGL surface. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00059\">fbg_opengl_es2.h:59</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html\">fbgraphics.h</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_affc02efb9ec2cda13d822b275e596f74\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\">_fbg_gles2_context::egl_display</a></div><div class=\"ttdeci\">EGLDisplay egl_display</div><div class=\"ttdoc\">EGL display. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00055\">fbg_opengl_es2.h:55</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a0937c99d8efac543926d5cee7708b147\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\">_fbg_gles2_context::egl_image</a></div><div class=\"ttdeci\">void * egl_image</div><div class=\"ttdoc\">EGL image. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00061\">fbg_opengl_es2.h:61</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_af1ab819f45eb1407455cba90991c11e0\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\">_fbg_gles2_context::fbg_texture</a></div><div class=\"ttdeci\">GLuint fbg_texture</div><div class=\"ttdoc\">FBG texture (updated at each frames) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00067\">fbg_opengl_es2.h:67</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_af4aca9e8f28ec07109a8c850d9e941f4\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\">_fbg_gles2_context::fd</a></div><div class=\"ttdeci\">int fd</div><div class=\"ttdoc\">Framebuffer file descriptor. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00050\">fbg_opengl_es2.h:50</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_aa6d3bab630c17f240843c2872b05d18a\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_gles2Setup</a></div><div class=\"ttdeci\">struct _fbg * fbg_gles2Setup(const char *fb_device, int components)</div><div class=\"ttdoc\">initialize a FB Graphics OpenGL ES 2 (fbdev or RPI direct) context </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a78b04688484a4ff7ec9651f872d6d7c4\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\">fbg_gles2CreateTexture</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateTexture(GLuint width, GLuint height, GLint internal_format)</div><div class=\"ttdoc\">create an empty non-interpolated (NEAREST) GL texture </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a40a597d6ce20e0bbcd1009ae9fe7328e\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\">fbg_gles2CreateTextureFromImage</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateTextureFromImage(struct _fbg *fbg, struct _fbg_img *img)</div><div class=\"ttdoc\">create a non-interpolated (NEAREST) GL texture from a FBG image </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a2af2636ae98239c2cd1072e3cf9a5e26\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\">_fbg_gles2_context::update_buffer</a></div><div class=\"ttdeci\">int update_buffer</div><div class=\"ttdoc\">tell wether fbg_gles2 should update fbg disp_buffer after rendering </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00069\">fbg_opengl_es2.h:69</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a8b13e18bbdd0085855c8bbfae453bdeb\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\">_fbg_vbo_data::vbo</a></div><div class=\"ttdeci\">GLuint vbo</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00075\">fbg_opengl_es2.h:75</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a03be1f1cb0a92af8c8c6dc6fcd990b68\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\">fbg_gles2SimpleVs</a></div><div class=\"ttdeci\">const char * fbg_gles2SimpleVs</div><div class=\"ttdoc\">Simple vertex shader (screen quad, vertices + UV) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1d3c76643e4ee424f4d17e27991d5e2e\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">_fbg::width</a></div><div class=\"ttdeci\">int width</div><div class=\"ttdoc\">Display width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00170\">fbgraphics.h:170</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_ad5ee72a7f71de24bdee26e09816c51a9\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\">fbg_gles2CreateVBOvu</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateVBOvu(GLsizeiptr data_count, const GLvoid *data)</div><div class=\"ttdoc\">create a VBO from vertices + UV data packed into a single array </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a182413439943678ce07ca310ccfded33\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\">fbg_gles2ShouldClose</a></div><div class=\"ttdeci\">int fbg_gles2ShouldClose(struct _fbg *fbg)</div><div class=\"ttdoc\">Query the user requested (window close etc) close status. </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a795cc9acb2bec510a4681aa824fe2560\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\">_fbg_vbo_data::nbo</a></div><div class=\"ttdeci\">GLuint nbo</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00081\">fbg_opengl_es2.h:81</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a3a3bd409e71d020fa77f69a541d832f8\"><div class=\"ttname\"><a href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">_fbg::height</a></div><div class=\"ttdeci\">int height</div><div class=\"ttdoc\">Display height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00172\">fbgraphics.h:172</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a9629d95895432370d9f324880289ad4d\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\">fbg_gles2Quad</a></div><div class=\"ttdeci\">const GLfloat fbg_gles2Quad[]</div><div class=\"ttdoc\">Simple quad geometry (vertices + UV) </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a74b92a4aab0207a1c15d7e8fc1b723dc\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\">fbg_gles2UpdateBuffer</a></div><div class=\"ttdeci\">void fbg_gles2UpdateBuffer(struct _fbg *fbg)</div><div class=\"ttdoc\">this update FBG disp_buffer with the actual rendered OpenGL content </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a6fecc8d59fce8fde2aa583d14d40e6c7\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\">fbg_gles2CreateShader</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateShader(GLenum type, const GLchar *source)</div><div class=\"ttdoc\">create a FBO </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_ad91d53fa2f501b5ca598e7dfaef6c7a2\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\">_fbg_gles2_context::fbg_vbo</a></div><div class=\"ttdeci\">GLuint fbg_vbo</div><div class=\"ttdoc\">FBG VBO. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00065\">fbg_opengl_es2.h:65</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_ad3d86948330c3e3887733228f8369a1d\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\">_fbg_vbo_data::ibo</a></div><div class=\"ttdeci\">GLuint ibo</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00079\">fbg_opengl_es2.h:79</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_ab7c677445f8e1853931f0d58bd53a9c0\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\">fbg_gles2CreateVBO</a></div><div class=\"ttdeci\">struct _fbg_vbo_data * fbg_gles2CreateVBO(GLsizeiptr indices_count, const GLvoid *indices_data, size_t sizeof_indice_type, GLsizeiptr vertices_count, const GLvoid *vertices_data, GLsizeiptr texcoords_count, const GLvoid *texcoords_data, GLsizeiptr normals_count, const GLvoid *normals_data, GLsizeiptr colors_count, const GLvoid *colors_data)</div><div class=\"ttdoc\">create a VBO from indexed data, support for vertices, UVs, normals and colors </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_ab4bd72ffd8ed50a3153ce8458eec0498\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\">_fbg_vbo_data::tbo</a></div><div class=\"ttdeci\">GLuint tbo</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00077\">fbg_opengl_es2.h:77</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a6dbba5982fbf4db17d85f5587ee2afd4\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\">_fbg_gles2_context::simple_program</a></div><div class=\"ttdeci\">GLenum simple_program</div><div class=\"ttdoc\">Simple GLSL program (screen-aligned textured quad) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00063\">fbg_opengl_es2.h:63</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a6986e3484c0e218fd9d527643b74fe54\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\">fbg_gles2SimpleFs</a></div><div class=\"ttdeci\">const char * fbg_gles2SimpleFs</div><div class=\"ttdoc\">Simple textured fragment shader. </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a3ac6ebf34ab696d79368321eb231336e\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\">fbg_gles2FreeVBOData</a></div><div class=\"ttdeci\">void fbg_gles2FreeVBOData(struct _fbg_vbo_data *vbo_data)</div><div class=\"ttdoc\">free VBO data (created with fbg_gles2CreateVBO) </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a1e9bdd02d2bd4d842a037d89f160c97d\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\">fbg_gles2CreateShaderFromFile</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateShaderFromFile(GLenum type, const char *filename)</div><div class=\"ttdoc\">create a shader from the content of a file </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a56535b156300a90cf5aa817fc4fdfe95\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\">fbg_gles2Clear</a></div><div class=\"ttdeci\">void fbg_gles2Clear()</div><div class=\"ttdoc\">OpenGL clear. </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_struct__fbg__gles2__context\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\">_fbg_gles2_context</a></div><div class=\"ttdoc\">OpenGL ES 2.0 wrapper data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00047\">fbg_opengl_es2.h:47</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_adb624ccb30f3d6a3a4aea5c1cdb03592\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\">_fbg_gles2_context::vinfo</a></div><div class=\"ttdeci\">struct fb_var_screeninfo vinfo</div><div class=\"ttdoc\">Framebuffer device var. informations. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00052\">fbg_opengl_es2.h:52</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a99da9de6f427c8dfa282479526cab0d8\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\">fbg_gles2CreateProgram</a></div><div class=\"ttdeci\">GLuint fbg_gles2CreateProgram(GLuint vertex_shader, GLuint fragment_shader)</div><div class=\"ttdoc\">create a vertex and/or fragment program </div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_aa40dcfe49b117e0cc56f0e37136d2e14\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\">fbg_gles2CreateProgramFromFiles</a></div><div class=\"ttdeci\">GLenum fbg_gles2CreateProgramFromFiles(const char *vs, const char *fs)</div><div class=\"ttdoc\">create a vertex and/or fragment/geometry program from a file </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__img\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a></div><div class=\"ttdoc\">Image data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00091\">fbgraphics.h:91</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a2ca2f4f23e8b651ec11708d211ed765b\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\">_fbg_gles2_context::egl_context</a></div><div class=\"ttdeci\">EGLContext egl_context</div><div class=\"ttdoc\">EGL context. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbg__opengl__es2_8h_source.html#l00057\">fbg_opengl_es2.h:57</a></div></div>\n<div class=\"ttc\" id=\"fbg__opengl__es2_8h_html_a31d962efec67e4646f4e4d783f771f5b\"><div class=\"ttname\"><a href=\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\">fbg_gles2CreateProgramFromString</a></div><div class=\"ttdeci\">GLenum fbg_gles2CreateProgramFromString(const char *vs, const char *fs)</div><div class=\"ttdoc\">create a vertex and/or fragment/geometry program from a string </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbg__opengl__es2_8h_struct__fbg__gles2__context.js",
    "content": "var fbg__opengl__es2_8h_struct__fbg__gles2__context =\n[\n    [ \"egl_context\", \"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\", null ],\n    [ \"egl_display\", \"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\", null ],\n    [ \"egl_image\", \"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\", null ],\n    [ \"egl_surface\", \"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\", null ],\n    [ \"fbg_texture\", \"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\", null ],\n    [ \"fbg_vbo\", \"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\", null ],\n    [ \"fd\", \"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\", null ],\n    [ \"simple_program\", \"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\", null ],\n    [ \"update_buffer\", \"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\", null ],\n    [ \"vinfo\", \"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\", null ]\n];"
  },
  {
    "path": "docs/fbg__opengl__es2_8h_struct__fbg__vbo__data.js",
    "content": "var fbg__opengl__es2_8h_struct__fbg__vbo__data =\n[\n    [ \"cbo\", \"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\", null ],\n    [ \"ibo\", \"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\", null ],\n    [ \"nbo\", \"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\", null ],\n    [ \"tbo\", \"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\", null ],\n    [ \"vbo\", \"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\", null ]\n];"
  },
  {
    "path": "docs/fbgraphics_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbgraphics.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_68267d1309a1af8e8297ef4c3efbcdba.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Data Structures</a> &#124;\n<a href=\"#define-members\">Macros</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">fbgraphics.h File Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;time.h&gt;</code><br />\n<code>#include &lt;sys/time.h&gt;</code><br />\n<code>#include &lt;stdint.h&gt;</code><br />\n<code>#include &lt;math.h&gt;</code><br />\n</div>\n<p><a href=\"fbgraphics_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nData Structures</h2></td></tr>\n<tr class=\"memitem:struct__fbg__rgb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a></td></tr>\n<tr class=\"memdesc:struct__fbg__rgb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">RGBA color data structure.  <a href=\"fbgraphics_8h.html#struct__fbg__rgb\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__rgb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:struct__fbg__hsl\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a></td></tr>\n<tr class=\"memdesc:struct__fbg__hsl\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">HSL color data structure.  <a href=\"fbgraphics_8h.html#struct__fbg__hsl\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__hsl\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:struct__fbg__img\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a></td></tr>\n<tr class=\"memdesc:struct__fbg__img\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image data structure.  <a href=\"fbgraphics_8h.html#struct__fbg__img\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__img\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:struct__fbg__font\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a></td></tr>\n<tr class=\"memdesc:struct__fbg__font\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bitmap font data structure.  <a href=\"fbgraphics_8h.html#struct__fbg__font\">More...</a><br /></td></tr>\n<tr class=\"separator:struct__fbg__font\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html\">_fbg</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">FB Graphics context data structure.  <a href=\"struct__fbg.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a4f15c1c2215c201e644c4c3de812f16f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\">fbg_fade</a>(fbg,  fade_amount)&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbg_fadeDown</a>(fbg, fade_amount)</td></tr>\n<tr class=\"memdesc:a4f15c1c2215c201e644c4c3de812f16f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">background fade to black with controllable factor  <a href=\"#a4f15c1c2215c201e644c4c3de812f16f\">More...</a><br /></td></tr>\n<tr class=\"separator:a4f15c1c2215c201e644c4c3de812f16f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45d1d295d53d80013ca6d55487c02fa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">fbg_write</a>(fbg,  text,  x,  y)&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbg_text</a>(fbg, &amp;fbg-&gt;current_font, text, x, y, fbg-&gt;text_color.r, fbg-&gt;text_color.g, fbg-&gt;text_color.b)</td></tr>\n<tr class=\"memdesc:a45d1d295d53d80013ca6d55487c02fa0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a text by using the current font and the current color  <a href=\"#a45d1d295d53d80013ca6d55487c02fa0\">More...</a><br /></td></tr>\n<tr class=\"separator:a45d1d295d53d80013ca6d55487c02fa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a110e7e4228a6350bebc68b6bdfd6d24a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\">fbg_imageScale</a>(fbg,  img,  x,  y,  sx,  sy)&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbg_imageEx</a>(fbg, img, x, y, sx, sy, 0, 0, img-&gt;width, img-&gt;height)</td></tr>\n<tr class=\"memdesc:a110e7e4228a6350bebc68b6bdfd6d24a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a scaled image (Nearest-neighbor algorithm)  <a href=\"#a110e7e4228a6350bebc68b6bdfd6d24a\">More...</a><br /></td></tr>\n<tr class=\"separator:a110e7e4228a6350bebc68b6bdfd6d24a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af424bd0f275b38651aabf1a7e3e34de3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\">_FBG_MAX</a>(a,  b)&#160;&#160;&#160;((a) &gt; (b) ? a : b)</td></tr>\n<tr class=\"memdesc:af424bd0f275b38651aabf1a7e3e34de3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">integer MAX Math function  <a href=\"#af424bd0f275b38651aabf1a7e3e34de3\">More...</a><br /></td></tr>\n<tr class=\"separator:af424bd0f275b38651aabf1a7e3e34de3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add101b7a583f64094141ce1de49f92a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7\">_FBG_MIN</a>(a,  b)&#160;&#160;&#160;((a) &lt; (b) ? a : b)</td></tr>\n<tr class=\"memdesc:add101b7a583f64094141ce1de49f92a7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">integer MIN Math function  <a href=\"#add101b7a583f64094141ce1de49f92a7\">More...</a><br /></td></tr>\n<tr class=\"separator:add101b7a583f64094141ce1de49f92a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e3a69cf9aa6b9d50ac0dad1abb42390\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390\">_FBG_SGN</a>(x)&#160;&#160;&#160;((x&lt;0)?-1:((x&gt;0)?1:0))</td></tr>\n<tr class=\"memdesc:a1e3a69cf9aa6b9d50ac0dad1abb42390\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">integer SIGN function  <a href=\"#a1e3a69cf9aa6b9d50ac0dad1abb42390\">More...</a><br /></td></tr>\n<tr class=\"separator:a1e3a69cf9aa6b9d50ac0dad1abb42390\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee61fffe4a48a3b1e5697eff6f5bbaf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\">_FBG_DEGTORAD</a>(angle_degree)&#160;&#160;&#160;((angle_degree) * M_PI / 180.0)</td></tr>\n<tr class=\"memdesc:aee61fffe4a48a3b1e5697eff6f5bbaf1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">convert a degree angle to radians  <a href=\"#aee61fffe4a48a3b1e5697eff6f5bbaf1\">More...</a><br /></td></tr>\n<tr class=\"separator:aee61fffe4a48a3b1e5697eff6f5bbaf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab377dd49e23e56f2325559991ac85347\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347\">_FBG_RADTODEG</a>(angle_radians)&#160;&#160;&#160;((angle_radians) * 180.0 / M_PI)</td></tr>\n<tr class=\"memdesc:ab377dd49e23e56f2325559991ac85347\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">convert a radian angle to degree  <a href=\"#ab377dd49e23e56f2325559991ac85347\">More...</a><br /></td></tr>\n<tr class=\"separator:ab377dd49e23e56f2325559991ac85347\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17b79968958984d51750cae2ac7bea8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\">_FBG_SOURCE_OVER</a>(a,  b,  c)&#160;&#160;&#160;(c * a + b * (1.f - a))</td></tr>\n<tr class=\"separator:a17b79968958984d51750cae2ac7bea8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8c36c8bfbfa3e589ea445d3197923823\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\">fbg_customSetup</a> (int width, int height, int components, int initialize_buffers, int allow_resizing, void *user_context, void(*user_draw)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg), void(*user_flip)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg), void(*backend_resize)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int new_width, unsigned int new_height), void(*user_free)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg))</td></tr>\n<tr class=\"memdesc:a8c36c8bfbfa3e589ea445d3197923823\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initialize a FB Graphics context (typically used by a custom rendering backend)  <a href=\"#a8c36c8bfbfa3e589ea445d3197923823\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c36c8bfbfa3e589ea445d3197923823\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a390cd3fb535cbad76856700a035ed401\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbg_close</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a390cd3fb535cbad76856700a035ed401\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">free up the memory associated with a FB Graphics context and close the framebuffer device  <a href=\"#a390cd3fb535cbad76856700a035ed401\">More...</a><br /></td></tr>\n<tr class=\"separator:a390cd3fb535cbad76856700a035ed401\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70e747dee4eda4a434b746e2bbd14386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\">fbg_setResizeCallback</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, void(*user_resize)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int new_width, unsigned int new_height))</td></tr>\n<tr class=\"memdesc:a70e747dee4eda4a434b746e2bbd14386\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">register a user resize callback  <a href=\"#a70e747dee4eda4a434b746e2bbd14386\">More...</a><br /></td></tr>\n<tr class=\"separator:a70e747dee4eda4a434b746e2bbd14386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00509b4956e358ae3f9135151c1e524a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int new_width, int new_height)</td></tr>\n<tr class=\"separator:a00509b4956e358ae3f9135151c1e524a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3604f59f02b47730a47a2fc15644d61e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbg_pushResize</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int new_width, int new_height)</td></tr>\n<tr class=\"separator:a3604f59f02b47730a47a2fc15644d61e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab18823ca0e95ca51c5d6c69a48af8d0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbg_fadeDown</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char rgb_fade_amount)</td></tr>\n<tr class=\"memdesc:ab18823ca0e95ca51c5d6c69a48af8d0e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">background fade to black with controllable factor  <a href=\"#ab18823ca0e95ca51c5d6c69a48af8d0e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab18823ca0e95ca51c5d6c69a48af8d0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19d56a111248b7f7d52f4bc6392d3743\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\">fbg_fadeUp</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char rgb_fade_amount)</td></tr>\n<tr class=\"memdesc:a19d56a111248b7f7d52f4bc6392d3743\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">background fade to white with controllable factor  <a href=\"#a19d56a111248b7f7d52f4bc6392d3743\">More...</a><br /></td></tr>\n<tr class=\"separator:a19d56a111248b7f7d52f4bc6392d3743\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab50cccf3eceac81bda220a0c09e38e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char brightness)</td></tr>\n<tr class=\"memdesc:aab50cccf3eceac81bda220a0c09e38e0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fast grayscale background clearing  <a href=\"#aab50cccf3eceac81bda220a0c09e38e0\">More...</a><br /></td></tr>\n<tr class=\"separator:aab50cccf3eceac81bda220a0c09e38e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a224b9ae07cc8fcd8c497b1d5f7007b66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\">fbg_fill</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a224b9ae07cc8fcd8c497b1d5f7007b66\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set the filling color for fast drawing operations  <a href=\"#a224b9ae07cc8fcd8c497b1d5f7007b66\">More...</a><br /></td></tr>\n<tr class=\"separator:a224b9ae07cc8fcd8c497b1d5f7007b66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a416971e772c114423b6c037f81d6f5ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\">fbg_getPixel</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *color)</td></tr>\n<tr class=\"memdesc:a416971e772c114423b6c037f81d6f5ea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">get the RGB value of a pixel  <a href=\"#a416971e772c114423b6c037f81d6f5ea\">More...</a><br /></td></tr>\n<tr class=\"separator:a416971e772c114423b6c037f81d6f5ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d81b1ddf54b0d4da0f30e36d7e2f3bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbg_pixel</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a7d81b1ddf54b0d4da0f30e36d7e2f3bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a pixel  <a href=\"#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">More...</a><br /></td></tr>\n<tr class=\"separator:a7d81b1ddf54b0d4da0f30e36d7e2f3bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08c6a08afcb5bd07793801554b8f0bfe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\">fbg_pixela</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b, unsigned char a)</td></tr>\n<tr class=\"memdesc:a08c6a08afcb5bd07793801554b8f0bfe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a pixel with alpha component (alpha blending)  <a href=\"#a08c6a08afcb5bd07793801554b8f0bfe\">More...</a><br /></td></tr>\n<tr class=\"separator:a08c6a08afcb5bd07793801554b8f0bfe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f656e76477d51b8faf039dd5baea65c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\">fbg_fpixel</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y)</td></tr>\n<tr class=\"memdesc:a5f656e76477d51b8faf039dd5baea65c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fast pixel drawing which use the fill color set by <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a>  <a href=\"#a5f656e76477d51b8faf039dd5baea65c\">More...</a><br /></td></tr>\n<tr class=\"separator:a5f656e76477d51b8faf039dd5baea65c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a990acac7dcc899656dc87c98404af777\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\">fbg_plot</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int index, unsigned char value)</td></tr>\n<tr class=\"memdesc:a990acac7dcc899656dc87c98404af777\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">direct pixel access from index value  <a href=\"#a990acac7dcc899656dc87c98404af777\">More...</a><br /></td></tr>\n<tr class=\"separator:a990acac7dcc899656dc87c98404af777\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad208d61ec4f50a5fd13f2cc8dd2ee0e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:ad208d61ec4f50a5fd13f2cc8dd2ee0e5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a rectangle  <a href=\"#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">More...</a><br /></td></tr>\n<tr class=\"separator:ad208d61ec4f50a5fd13f2cc8dd2ee0e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83a99e5c8d44e2acf52cad38519ececf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\">fbg_recta</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a)</td></tr>\n<tr class=\"memdesc:a83a99e5c8d44e2acf52cad38519ececf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a rectangle with alpha transparency  <a href=\"#a83a99e5c8d44e2acf52cad38519ececf\">More...</a><br /></td></tr>\n<tr class=\"separator:a83a99e5c8d44e2acf52cad38519ececf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a543755814e43b77b0beebea7a08457db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\">fbg_frect</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, int w, int h)</td></tr>\n<tr class=\"memdesc:a543755814e43b77b0beebea7a08457db\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fast rectangle drawing which use the fill color set by <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a>  <a href=\"#a543755814e43b77b0beebea7a08457db\">More...</a><br /></td></tr>\n<tr class=\"separator:a543755814e43b77b0beebea7a08457db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0558e4513da1d844526d54afea4d1531\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\">fbg_hline</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, int w, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a0558e4513da1d844526d54afea4d1531\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a horizontal line  <a href=\"#a0558e4513da1d844526d54afea4d1531\">More...</a><br /></td></tr>\n<tr class=\"separator:a0558e4513da1d844526d54afea4d1531\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c4fb5fa694646ec66b50a32eaf38557\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\">fbg_vline</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x, int y, int h, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a3c4fb5fa694646ec66b50a32eaf38557\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a vertical line  <a href=\"#a3c4fb5fa694646ec66b50a32eaf38557\">More...</a><br /></td></tr>\n<tr class=\"separator:a3c4fb5fa694646ec66b50a32eaf38557\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46f7354a04a7bfb7467d25394ce38303\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\">fbg_line</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int x1, int y1, int x2, int y2, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a46f7354a04a7bfb7467d25394ce38303\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a line from two points (Bresenham algorithm)  <a href=\"#a46f7354a04a7bfb7467d25394ce38303\">More...</a><br /></td></tr>\n<tr class=\"separator:a46f7354a04a7bfb7467d25394ce38303\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a5a2ef48f5b26794473c51082fb75ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\">fbg_polygon</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int num_vertices, int *vertices, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a2a5a2ef48f5b26794473c51082fb75ab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a polygon  <a href=\"#a2a5a2ef48f5b26794473c51082fb75ab\">More...</a><br /></td></tr>\n<tr class=\"separator:a2a5a2ef48f5b26794473c51082fb75ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1622b4cd13f223d161cd234ea1fe6125\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\">fbg_background</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:a1622b4cd13f223d161cd234ea1fe6125\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">clear the background with a color  <a href=\"#a1622b4cd13f223d161cd234ea1fe6125\">More...</a><br /></td></tr>\n<tr class=\"separator:a1622b4cd13f223d161cd234ea1fe6125\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac037925696a8bfab4163e011731a76a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\">fbg_hslToRGB</a> (struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *color, float h, float s, float l)</td></tr>\n<tr class=\"memdesc:ac037925696a8bfab4163e011731a76a4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">convert HSL values to RGB color  <a href=\"#ac037925696a8bfab4163e011731a76a4\">More...</a><br /></td></tr>\n<tr class=\"separator:ac037925696a8bfab4163e011731a76a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf344cf56286931ee7a4a0e5fce920fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\">fbg_rgbToHsl</a> (struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a> *color, float r, float g, float b)</td></tr>\n<tr class=\"memdesc:aaf344cf56286931ee7a4a0e5fce920fc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">convert RGB values to HSL color  <a href=\"#aaf344cf56286931ee7a4a0e5fce920fc\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf344cf56286931ee7a4a0e5fce920fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2dfb2f17bc31e161868e6baf1c391816\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a2dfb2f17bc31e161868e6baf1c391816\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw to the screen  <a href=\"#a2dfb2f17bc31e161868e6baf1c391816\">More...</a><br /></td></tr>\n<tr class=\"separator:a2dfb2f17bc31e161868e6baf1c391816\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aedfec23bc4c51ff5ffb843bb289d448b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbg_flip</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:aedfec23bc4c51ff5ffb843bb289d448b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">flip the buffers  <a href=\"#aedfec23bc4c51ff5ffb843bb289d448b\">More...</a><br /></td></tr>\n<tr class=\"separator:aedfec23bc4c51ff5ffb843bb289d448b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e3ebfcc75e055a24f1a0f5765936d16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\">fbg_createImage</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int width, unsigned int height)</td></tr>\n<tr class=\"memdesc:a1e3ebfcc75e055a24f1a0f5765936d16\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create an empty image  <a href=\"#a1e3ebfcc75e055a24f1a0f5765936d16\">More...</a><br /></td></tr>\n<tr class=\"separator:a1e3ebfcc75e055a24f1a0f5765936d16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4be92c5b1376fb7f06de1529b0a43f7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\">fbg_loadPNG</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, const char *filename)</td></tr>\n<tr class=\"memdesc:a4be92c5b1376fb7f06de1529b0a43f7f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load a PNG image from a file (lodePNG library)  <a href=\"#a4be92c5b1376fb7f06de1529b0a43f7f\">More...</a><br /></td></tr>\n<tr class=\"separator:a4be92c5b1376fb7f06de1529b0a43f7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad05affc24eed0b9f906d6926b8f02fec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\">fbg_loadJPEG</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, const char *filename)</td></tr>\n<tr class=\"memdesc:ad05affc24eed0b9f906d6926b8f02fec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load a JPEG image from a file (NanoJPEG library)  <a href=\"#ad05affc24eed0b9f906d6926b8f02fec\">More...</a><br /></td></tr>\n<tr class=\"separator:ad05affc24eed0b9f906d6926b8f02fec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731ce4c5439d16555aa6ec48751ecea6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbg_loadImage</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, const char *filename)</td></tr>\n<tr class=\"memdesc:a731ce4c5439d16555aa6ec48751ecea6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load an image (PNG or JPEG)  <a href=\"#a731ce4c5439d16555aa6ec48751ecea6\">More...</a><br /></td></tr>\n<tr class=\"separator:a731ce4c5439d16555aa6ec48751ecea6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a600d896c04feec33d001662ca23e50ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\">fbg_image</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, int x, int y)</td></tr>\n<tr class=\"memdesc:a600d896c04feec33d001662ca23e50ad\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw an image  <a href=\"#a600d896c04feec33d001662ca23e50ad\">More...</a><br /></td></tr>\n<tr class=\"separator:a600d896c04feec33d001662ca23e50ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ba2088b60304afa9ee7ce1b39bff114\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\">fbg_imageColorkey</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, int x, int y, int cr, int cg, int cb)</td></tr>\n<tr class=\"memdesc:a8ba2088b60304afa9ee7ce1b39bff114\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw an image with colorkeying support (image colorkey value will be ignored)  <a href=\"#a8ba2088b60304afa9ee7ce1b39bff114\">More...</a><br /></td></tr>\n<tr class=\"separator:a8ba2088b60304afa9ee7ce1b39bff114\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3610bf730319af99045283ea66955741\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbg_imageClip</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, int x, int y, int cx, int cy, int cw, int ch)</td></tr>\n<tr class=\"memdesc:a3610bf730319af99045283ea66955741\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a clipped image  <a href=\"#a3610bf730319af99045283ea66955741\">More...</a><br /></td></tr>\n<tr class=\"separator:a3610bf730319af99045283ea66955741\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a728d5bc6d1ee11e127db8722fe3cbc18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\">fbg_imageFlip</a> (struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img)</td></tr>\n<tr class=\"memdesc:a728d5bc6d1ee11e127db8722fe3cbc18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">flip an image vertically  <a href=\"#a728d5bc6d1ee11e127db8722fe3cbc18\">More...</a><br /></td></tr>\n<tr class=\"separator:a728d5bc6d1ee11e127db8722fe3cbc18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0c3a773dcab62f514726b03e54ad692\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbg_imageEx</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, int x, int y, float sx, float sy, int cx, int cy, int cw, int ch)</td></tr>\n<tr class=\"memdesc:ad0c3a773dcab62f514726b03e54ad692\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw an image with support for clipping and scaling (Nearest-neighbor algorithm)  <a href=\"#ad0c3a773dcab62f514726b03e54ad692\">More...</a><br /></td></tr>\n<tr class=\"separator:ad0c3a773dcab62f514726b03e54ad692\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a737482b6170ea3273d6679fdca63a27c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbg_freeImage</a> (struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img)</td></tr>\n<tr class=\"memdesc:a737482b6170ea3273d6679fdca63a27c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">free the memory associated with an image  <a href=\"#a737482b6170ea3273d6679fdca63a27c\">More...</a><br /></td></tr>\n<tr class=\"separator:a737482b6170ea3273d6679fdca63a27c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdcb72ae08437471569c4880fb43f20c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbg_createFont</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, int glyph_width, int glyph_height, unsigned char first_char)</td></tr>\n<tr class=\"memdesc:afdcb72ae08437471569c4880fb43f20c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">create a bitmap font from an image  <a href=\"#afdcb72ae08437471569c4880fb43f20c\">More...</a><br /></td></tr>\n<tr class=\"separator:afdcb72ae08437471569c4880fb43f20c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1ccfb0069d4567313391dc819ada76b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\">fbg_textFont</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *font)</td></tr>\n<tr class=\"memdesc:ac1ccfb0069d4567313391dc819ada76b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set the current font  <a href=\"#ac1ccfb0069d4567313391dc819ada76b\">More...</a><br /></td></tr>\n<tr class=\"separator:ac1ccfb0069d4567313391dc819ada76b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acae7a4ff39407371a52ebf9ae4c260c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\">fbg_textColor</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char r, unsigned char g, unsigned char b)</td></tr>\n<tr class=\"memdesc:acae7a4ff39407371a52ebf9ae4c260c1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set the current text color  <a href=\"#acae7a4ff39407371a52ebf9ae4c260c1\">More...</a><br /></td></tr>\n<tr class=\"separator:acae7a4ff39407371a52ebf9ae4c260c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e82acd949a5c12a1fa494fb4c028ff1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\">fbg_textBackground</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int r, int g, int b, int a)</td></tr>\n<tr class=\"memdesc:a2e82acd949a5c12a1fa494fb4c028ff1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set the current text background color (based on colorkey value!)  <a href=\"#a2e82acd949a5c12a1fa494fb4c028ff1\">More...</a><br /></td></tr>\n<tr class=\"separator:a2e82acd949a5c12a1fa494fb4c028ff1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7165bceebbbe11332256d1bd4e179489\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\">fbg_textColorKey</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char v)</td></tr>\n<tr class=\"memdesc:a7165bceebbbe11332256d1bd4e179489\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set the current text color key  <a href=\"#a7165bceebbbe11332256d1bd4e179489\">More...</a><br /></td></tr>\n<tr class=\"separator:a7165bceebbbe11332256d1bd4e179489\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3233e3de8fc3ad06391641241c77a1ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbg_text</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *fnt, char *text, int x, int y, int r, int g, int b)</td></tr>\n<tr class=\"memdesc:a3233e3de8fc3ad06391641241c77a1ea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw a text  <a href=\"#a3233e3de8fc3ad06391641241c77a1ea\">More...</a><br /></td></tr>\n<tr class=\"separator:a3233e3de8fc3ad06391641241c77a1ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae823fe76a206cbc1fdd405c13d26830\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbg_freeFont</a> (struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *font)</td></tr>\n<tr class=\"memdesc:aae823fe76a206cbc1fdd405c13d26830\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">free the memory associated with a font  <a href=\"#aae823fe76a206cbc1fdd405c13d26830\">More...</a><br /></td></tr>\n<tr class=\"separator:aae823fe76a206cbc1fdd405c13d26830\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a112e427410882007fbcea78b0657c5f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\">fbg_drawFramerate</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *fnt, int task, int x, int y, int r, int g, int b)</td></tr>\n<tr class=\"memdesc:a112e427410882007fbcea78b0657c5f1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">draw the framerate of a particular parallel task  <a href=\"#a112e427410882007fbcea78b0657c5f1\">More...</a><br /></td></tr>\n<tr class=\"separator:a112e427410882007fbcea78b0657c5f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8125b5b37979f803c4640d9864fadbab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\">fbg_getFramerate</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, int task)</td></tr>\n<tr class=\"memdesc:a8125b5b37979f803c4640d9864fadbab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">get the framerate of a particular task  <a href=\"#a8125b5b37979f803c4640d9864fadbab\">More...</a><br /></td></tr>\n<tr class=\"separator:a8125b5b37979f803c4640d9864fadbab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adda2a3ebc3a63cc275c78c61e62ce437\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\">fbg_drawInto</a> (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned char *buffer)</td></tr>\n<tr class=\"memdesc:adda2a3ebc3a63cc275c78c61e62ce437\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">set an offscreen target for all subsequent fbg context draw calls, it is important to reset back to display target once done by calling fbg_drawInto(NULL) otherwise you may have segfaults / memory leaks upon resizing and other actions  <a href=\"#adda2a3ebc3a63cc275c78c61e62ce437\">More...</a><br /></td></tr>\n<tr class=\"separator:adda2a3ebc3a63cc275c78c61e62ce437\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aedca9d7bf294d143f860d2f0ddcd528c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\">fbg_randf</a> (float min, float max)</td></tr>\n<tr class=\"memdesc:aedca9d7bf294d143f860d2f0ddcd528c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">pseudo random number between min / max  <a href=\"#aedca9d7bf294d143f860d2f0ddcd528c\">More...</a><br /></td></tr>\n<tr class=\"separator:aedca9d7bf294d143f860d2f0ddcd528c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/><h2 class=\"groupheader\">Data Structure Documentation</h2>\n<a name=\"struct__fbg__rgb\" id=\"struct__fbg__rgb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__rgb\">&#9670;&nbsp;</a></span>_fbg_rgb</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_rgb</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>RGBA color data structure. </p>\n<p>Hold RGBA components [0,255] </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00074\">74</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a683be8ec38b9931754fe8501c4df3019\"></a>unsigned char</td>\n<td class=\"fieldname\">\na</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a5eb0caaedd56ed29a1ef1f7941f414d7\"></a>unsigned char</td>\n<td class=\"fieldname\">\nb</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a73d04c86a962adfeac115c18c231eae1\"></a>unsigned char</td>\n<td class=\"fieldname\">\ng</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a3974f2dce77af4058a1ae585f55c5bb8\"></a>unsigned char</td>\n<td class=\"fieldname\">\nr</td>\n<td class=\"fielddoc\">\n</td></tr>\n</table>\n\n</div>\n</div>\n<a name=\"struct__fbg__hsl\" id=\"struct__fbg__hsl\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__hsl\">&#9670;&nbsp;</a></span>_fbg_hsl</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_hsl</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>HSL color data structure. </p>\n<p>Hold HSL components S/L [0,1], HUE [0, 360] </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00083\">83</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a7246517249c3b27ed57f82a11da3c7d3\"></a>int</td>\n<td class=\"fieldname\">\nh</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a405724441abc0190dea559bf11b8b174\"></a>float</td>\n<td class=\"fieldname\">\nl</td>\n<td class=\"fielddoc\">\n</td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a22a62f07da21ac2ef92365718104348f\"></a>float</td>\n<td class=\"fieldname\">\ns</td>\n<td class=\"fielddoc\">\n</td></tr>\n</table>\n\n</div>\n</div>\n<a name=\"struct__fbg__img\" id=\"struct__fbg__img\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__img\">&#9670;&nbsp;</a></span>_fbg_img</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_img</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>Image data structure. </p>\n<p>Hold images informations and data </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00091\">91</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ab996d65bce285a78c8a8f3ac99b40658\"></a>unsigned char *</td>\n<td class=\"fieldname\">\ndata</td>\n<td class=\"fielddoc\">\nRGB image data (bpp depend on framebuffer settings) </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"ac6293cb3d118f0ccdde38c13cbefa9db\"></a>unsigned int</td>\n<td class=\"fieldname\">\nheight</td>\n<td class=\"fielddoc\">\nImage height in pixels. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a6e666c23aea3d07ee2c8c9f83f25eed2\"></a>unsigned int</td>\n<td class=\"fieldname\">\nwidth</td>\n<td class=\"fielddoc\">\nImage width in pixels. </td></tr>\n</table>\n\n</div>\n</div>\n<a name=\"struct__fbg__font\" id=\"struct__fbg__font\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#struct__fbg__font\">&#9670;&nbsp;</a></span>_fbg_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct _fbg_font</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<div class=\"textblock\"><p>Bitmap font data structure. </p>\n<p>Hold bitmap font informations and associated image </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00103\">103</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n</div><table class=\"fieldtable\">\n<tr><th colspan=\"3\">Data Fields</th></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a0e7995b285b04f41d883165b0e7e387f\"></a>struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *</td>\n<td class=\"fieldname\">\nbitmap</td>\n<td class=\"fielddoc\">\nAssociated font image data structure. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a05730637b297339a1fe39db736335cff\"></a>unsigned char</td>\n<td class=\"fieldname\">\nfirst_char</td>\n<td class=\"fielddoc\">\nFirst ASCII character of the bitmap font file. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a1a9dc1b888e744c8e8d69f1a39d7a0b3\"></a>int *</td>\n<td class=\"fieldname\">\nglyph_coord_x</td>\n<td class=\"fielddoc\">\nPre-computed X glyphs coordinates. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a929f320fae39630e84bd1c949b9d845d\"></a>int *</td>\n<td class=\"fieldname\">\nglyph_coord_y</td>\n<td class=\"fielddoc\">\nPre-computed Y glyphs coordinates. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a3b11d9dc4724e8b789509882d4cff87e\"></a>int</td>\n<td class=\"fieldname\">\nglyph_height</td>\n<td class=\"fielddoc\">\nHeight of a glyph. </td></tr>\n<tr><td class=\"fieldtype\">\n<a id=\"a279be685895357ebda19f155ed405efc\"></a>int</td>\n<td class=\"fieldname\">\nglyph_width</td>\n<td class=\"fielddoc\">\nWidth of a glyph. </td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"aee61fffe4a48a3b1e5697eff6f5bbaf1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee61fffe4a48a3b1e5697eff6f5bbaf1\">&#9670;&nbsp;</a></span>_FBG_DEGTORAD</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_DEGTORAD</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">angle_degree</td><td>)</td>\n          <td>&#160;&#160;&#160;((angle_degree) * M_PI / 180.0)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>convert a degree angle to radians </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00851\">851</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"af424bd0f275b38651aabf1a7e3e34de3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af424bd0f275b38651aabf1a7e3e34de3\">&#9670;&nbsp;</a></span>_FBG_MAX</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_MAX</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">a, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">b&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;((a) &gt; (b) ? a : b)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>integer MAX Math function </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00844\">844</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"add101b7a583f64094141ce1de49f92a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add101b7a583f64094141ce1de49f92a7\">&#9670;&nbsp;</a></span>_FBG_MIN</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_MIN</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">a, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">b&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;((a) &lt; (b) ? a : b)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>integer MIN Math function </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00846\">846</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ab377dd49e23e56f2325559991ac85347\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab377dd49e23e56f2325559991ac85347\">&#9670;&nbsp;</a></span>_FBG_RADTODEG</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_RADTODEG</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">angle_radians</td><td>)</td>\n          <td>&#160;&#160;&#160;((angle_radians) * 180.0 / M_PI)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>convert a radian angle to degree </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00853\">853</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a1e3a69cf9aa6b9d50ac0dad1abb42390\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e3a69cf9aa6b9d50ac0dad1abb42390\">&#9670;&nbsp;</a></span>_FBG_SGN</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_SGN</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">x</td><td>)</td>\n          <td>&#160;&#160;&#160;((x&lt;0)?-1:((x&gt;0)?1:0))</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>integer SIGN function </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00848\">848</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a17b79968958984d51750cae2ac7bea8f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17b79968958984d51750cae2ac7bea8f\">&#9670;&nbsp;</a></span>_FBG_SOURCE_OVER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define _FBG_SOURCE_OVER</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">a, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">b, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">c&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;(c * a + b * (1.f - a))</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00855\">855</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a4f15c1c2215c201e644c4c3de812f16f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f15c1c2215c201e644c4c3de812f16f\">&#9670;&nbsp;</a></span>fbg_fade</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define fbg_fade</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">fbg, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">fade_amount&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbg_fadeDown</a>(fbg, fade_amount)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>background fade to black with controllable factor </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">fade_amount</td><td>fade amount </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\" title=\"background fade to white with controllable factor \">fbg_fadeUp()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\" title=\"background fade to black with controllable factor \">fbg_fadeDown()</a> </dd></dl>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00819\">819</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a110e7e4228a6350bebc68b6bdfd6d24a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a110e7e4228a6350bebc68b6bdfd6d24a\">&#9670;&nbsp;</a></span>fbg_imageScale</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define fbg_imageScale</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">fbg, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">img, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">x, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">y, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">sx, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">sy&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbg_imageEx</a>(fbg, img, x, y, sx, sy, 0, 0, img-&gt;width, img-&gt;height)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a scaled image (Nearest-neighbor algorithm) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">x</td><td>image X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>image Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">sx</td><td>The X scale factor </td></tr>\n    <tr><td class=\"paramname\">sy</td><td>The Y scale factor </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a> </dd></dl>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00841\">841</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a45d1d295d53d80013ca6d55487c02fa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45d1d295d53d80013ca6d55487c02fa0\">&#9670;&nbsp;</a></span>fbg_write</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define fbg_write</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">fbg, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">text, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">x, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">y&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;<a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbg_text</a>(fbg, &amp;fbg-&gt;current_font, text, x, y, fbg-&gt;text_color.r, fbg-&gt;text_color.g, fbg-&gt;text_color.b)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a text by using the current font and the current color </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">text</td><td>the text to draw ('<br />\n' and ' ' are treated automatically) </td></tr>\n    <tr><td class=\"paramname\">x</td><td></td></tr>\n    <tr><td class=\"paramname\">y</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\" title=\"set the current font \">fbg_textFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\" title=\"set the current text color \">fbg_textColor()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\" title=\"draw a text \">fbg_text()</a>, fbg_textColorkey(), <a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\" title=\"set the current text background color (based on colorkey value!) \">fbg_textBackground()</a> </dd></dl>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00829\">829</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a1622b4cd13f223d161cd234ea1fe6125\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1622b4cd13f223d161cd234ea1fe6125\">&#9670;&nbsp;</a></span>fbg_background()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_background </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>clear the background with a color </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\" title=\"fast grayscale background clearing \">fbg_clear()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aab50cccf3eceac81bda220a0c09e38e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab50cccf3eceac81bda220a0c09e38e0\">&#9670;&nbsp;</a></span>fbg_clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_clear </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>brightness</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>fast grayscale background clearing </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">brightness</td><td>pixel brightness (grayscale) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\" title=\"clear the background with a color \">fbg_background()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a390cd3fb535cbad76856700a035ed401\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a390cd3fb535cbad76856700a035ed401\">&#9670;&nbsp;</a></span>fbg_close()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_close </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>free up the memory associated with a FB Graphics context and close the framebuffer device </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\" title=\"initialize a FB Graphics context (typically used by a custom rendering backend) \">fbg_customSetup()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"afdcb72ae08437471569c4880fb43f20c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdcb72ae08437471569c4880fb43f20c\">&#9670;&nbsp;</a></span>fbg_createFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a>* fbg_createFont </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>glyph_width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>glyph_height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>first_char</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create a bitmap font from an image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">glyph_width</td><td>glyph / character width </td></tr>\n    <tr><td class=\"paramname\">glyph_height</td><td>glyph / character height </td></tr>\n    <tr><td class=\"paramname\">first_char</td><td>the first character of the bitmap font </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" title=\"Bitmap font data structure. \">_fbg_font</a> structure pointer </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\" title=\"free the memory associated with a font \">fbg_freeFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\" title=\"set the current font \">fbg_textFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\" title=\"draw a text \">fbg_text()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\" title=\"draw the framerate of a particular parallel task \">fbg_drawFramerate()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a1e3ebfcc75e055a24f1a0f5765936d16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e3ebfcc75e055a24f1a0f5765936d16\">&#9670;&nbsp;</a></span>fbg_createImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a>* fbg_createImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned int&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned int&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>create an empty image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">width</td><td>image width </td></tr>\n    <tr><td class=\"paramname\">height</td><td>image height </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\" title=\"Image data structure. \">_fbg_img</a> data structure pointer </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a8c36c8bfbfa3e589ea445d3197923823\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c36c8bfbfa3e589ea445d3197923823\">&#9670;&nbsp;</a></span>fbg_customSetup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a>* fbg_customSetup </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>components</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>initialize_buffers</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>allow_resizing</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>user_context</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)&#160;</td>\n          <td class=\"paramname\"><em>user_draw</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)&#160;</td>\n          <td class=\"paramname\"><em>user_flip</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int new_width, unsigned int new_height)&#160;</td>\n          <td class=\"paramname\"><em>backend_resize</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)&#160;</td>\n          <td class=\"paramname\"><em>user_free</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>initialize a FB Graphics context (typically used by a custom rendering backend) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">width</td><td>render width </td></tr>\n    <tr><td class=\"paramname\">height</td><td>render height </td></tr>\n    <tr><td class=\"paramname\">components</td><td>image components (3 = RGB, 4 = RGBA etc.) </td></tr>\n    <tr><td class=\"paramname\">initialize_buffers</td><td>wether internal buffers should be allocated / freed </td></tr>\n    <tr><td class=\"paramname\">allow_resizing</td><td>wether to allow internal context resize (any registered callbacks will still be called) </td></tr>\n    <tr><td class=\"paramname\">user_context</td><td>user rendering data storage (things like window context etc.) </td></tr>\n    <tr><td class=\"paramname\">user_draw</td><td>function to call upon <a class=\"el\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\" title=\"draw to the screen \">fbg_draw()</a> </td></tr>\n    <tr><td class=\"paramname\">user_flip</td><td>function to call upon <a class=\"el\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\" title=\"flip the buffers \">fbg_flip()</a> </td></tr>\n    <tr><td class=\"paramname\">backend_resize</td><td>function to call upon <a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize()</a> </td></tr>\n    <tr><td class=\"paramname\">user_free</td><td>function to call upon <a class=\"el\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\" title=\"free up the memory associated with a FB Graphics context and close the framebuffer device ...\">fbg_close()</a> </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"struct__fbg.html\" title=\"FB Graphics context data structure. \">_fbg</a> structure pointer to pass to any FBG library functions </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\" title=\"free up the memory associated with a FB Graphics context and close the framebuffer device ...\">fbg_close()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a2dfb2f17bc31e161868e6baf1c391816\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2dfb2f17bc31e161868e6baf1c391816\">&#9670;&nbsp;</a></span>fbg_draw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_draw </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw to the screen </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a112e427410882007fbcea78b0657c5f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a112e427410882007fbcea78b0657c5f1\">&#9670;&nbsp;</a></span>fbg_drawFramerate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_drawFramerate </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *&#160;</td>\n          <td class=\"paramname\"><em>fnt</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>task</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw the framerate of a particular parallel task </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">fnt</td><td><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" title=\"Bitmap font data structure. \">_fbg_font</a> structure pointer </td></tr>\n    <tr><td class=\"paramname\">task</td><td>the task id </td></tr>\n    <tr><td class=\"paramname\">x</td><td></td></tr>\n    <tr><td class=\"paramname\">y</td><td></td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"adda2a3ebc3a63cc275c78c61e62ce437\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adda2a3ebc3a63cc275c78c61e62ce437\">&#9670;&nbsp;</a></span>fbg_drawInto()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_drawInto </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char *&#160;</td>\n          <td class=\"paramname\"><em>buffer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set an offscreen target for all subsequent fbg context draw calls, it is important to reset back to display target once done by calling fbg_drawInto(NULL) otherwise you may have segfaults / memory leaks upon resizing and other actions </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">buffer</td><td>a buffer to render to, it should be the format of the display, target is the display if NULL </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ab18823ca0e95ca51c5d6c69a48af8d0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab18823ca0e95ca51c5d6c69a48af8d0e\">&#9670;&nbsp;</a></span>fbg_fadeDown()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_fadeDown </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>rgb_fade_amount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>background fade to black with controllable factor </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">rgb_fade_amount</td><td>fade amount </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\" title=\"background fade to black with controllable factor \">fbg_fade()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\" title=\"background fade to white with controllable factor \">fbg_fadeUp()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a19d56a111248b7f7d52f4bc6392d3743\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19d56a111248b7f7d52f4bc6392d3743\">&#9670;&nbsp;</a></span>fbg_fadeUp()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_fadeUp </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>rgb_fade_amount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>background fade to white with controllable factor </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">rgb_fade_amount</td><td>fade amount </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\" title=\"background fade to black with controllable factor \">fbg_fadeDown()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a224b9ae07cc8fcd8c497b1d5f7007b66\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a224b9ae07cc8fcd8c497b1d5f7007b66\">&#9670;&nbsp;</a></span>fbg_fill()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_fill </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set the filling color for fast drawing operations </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\" title=\"fast pixel drawing which use the fill color set by fbg_fill() \">fbg_fpixel()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\" title=\"fast rectangle drawing which use the fill color set by fbg_fill() \">fbg_frect()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aedfec23bc4c51ff5ffb843bb289d448b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aedfec23bc4c51ff5ffb843bb289d448b\">&#9670;&nbsp;</a></span>fbg_flip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_flip </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>flip the buffers </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a5f656e76477d51b8faf039dd5baea65c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f656e76477d51b8faf039dd5baea65c\">&#9670;&nbsp;</a></span>fbg_fpixel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_fpixel </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>fast pixel drawing which use the fill color set by <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a> </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>pixel X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>pixel Y position (upper left coordinate) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\" title=\"draw a pixel \">fbg_pixel()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\" title=\"draw a pixel with alpha component (alpha blending) \">fbg_pixela()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a543755814e43b77b0beebea7a08457db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a543755814e43b77b0beebea7a08457db\">&#9670;&nbsp;</a></span>fbg_frect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_frect </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>fast rectangle drawing which use the fill color set by <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a> </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>rectangle X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>rectangle Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">w</td><td>rectangle width </td></tr>\n    <tr><td class=\"paramname\">h</td><td>rectangle height </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\" title=\"draw a rectangle \">fbg_rect()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\" title=\"draw a rectangle with alpha transparency \">fbg_recta()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aae823fe76a206cbc1fdd405c13d26830\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae823fe76a206cbc1fdd405c13d26830\">&#9670;&nbsp;</a></span>fbg_freeFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_freeFont </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *&#160;</td>\n          <td class=\"paramname\"><em>font</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>free the memory associated with a font </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">font</td><td><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" title=\"Bitmap font data structure. \">_fbg_font</a> structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a737482b6170ea3273d6679fdca63a27c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a737482b6170ea3273d6679fdca63a27c\">&#9670;&nbsp;</a></span>fbg_freeImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_freeImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>free the memory associated with an image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a8125b5b37979f803c4640d9864fadbab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8125b5b37979f803c4640d9864fadbab\">&#9670;&nbsp;</a></span>fbg_getFramerate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int fbg_getFramerate </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>task</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>get the framerate of a particular task </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">task</td><td>the task id </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>task framerate </dd></dl>\n\n</div>\n</div>\n<a id=\"a416971e772c114423b6c037f81d6f5ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a416971e772c114423b6c037f81d6f5ea\">&#9670;&nbsp;</a></span>fbg_getPixel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_getPixel </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>get the RGB value of a pixel </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td></td></tr>\n    <tr><td class=\"paramname\">y</td><td></td></tr>\n    <tr><td class=\"paramname\">color</td><td>a pointer to a <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\" title=\"RGBA color data structure. \">_fbg_rgb</a> data structure </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a0558e4513da1d844526d54afea4d1531\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0558e4513da1d844526d54afea4d1531\">&#9670;&nbsp;</a></span>fbg_hline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_hline </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a horizontal line </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>line X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>line Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">w</td><td>line width </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\" title=\"draw a vertical line \">fbg_vline</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\" title=\"draw a line from two points (Bresenham algorithm) \">fbg_line()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ac037925696a8bfab4163e011731a76a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac037925696a8bfab4163e011731a76a4\">&#9670;&nbsp;</a></span>fbg_hslToRGB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_hslToRGB </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>s</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>l</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>convert HSL values to RGB color </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">color</td><td>pointer to a <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\" title=\"RGBA color data structure. \">_fbg_rgb</a> data structure </td></tr>\n    <tr><td class=\"paramname\">h</td><td>the hue </td></tr>\n    <tr><td class=\"paramname\">s</td><td>the saturation </td></tr>\n    <tr><td class=\"paramname\">l</td><td>the lightness </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd>rgbToHsl() </dd></dl>\n\n</div>\n</div>\n<a id=\"a600d896c04feec33d001662ca23e50ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a600d896c04feec33d001662ca23e50ad\">&#9670;&nbsp;</a></span>fbg_image()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_image </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw an image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">x</td><td>image X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>image Y position (upper left coordinate) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a3610bf730319af99045283ea66955741\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3610bf730319af99045283ea66955741\">&#9670;&nbsp;</a></span>fbg_imageClip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_imageClip </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cy</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cw</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>ch</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a clipped image </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">x</td><td>image X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>image Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">cx</td><td>The X coordinate where to start clipping </td></tr>\n    <tr><td class=\"paramname\">cy</td><td>The Y coordinate where to start clipping </td></tr>\n    <tr><td class=\"paramname\">cw</td><td>The width of the clipped image (from cx) </td></tr>\n    <tr><td class=\"paramname\">ch</td><td>The height of the clipped image (from cy) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a8ba2088b60304afa9ee7ce1b39bff114\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ba2088b60304afa9ee7ce1b39bff114\">&#9670;&nbsp;</a></span>fbg_imageColorkey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_imageColorkey </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cr</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cb</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw an image with colorkeying support (image colorkey value will be ignored) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">x</td><td>image X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>image Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">cr</td><td>colorkey red component </td></tr>\n    <tr><td class=\"paramname\">cg</td><td>colorkey green component </td></tr>\n    <tr><td class=\"paramname\">cb</td><td>colorkey blue component </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ad0c3a773dcab62f514726b03e54ad692\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0c3a773dcab62f514726b03e54ad692\">&#9670;&nbsp;</a></span>fbg_imageEx()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_imageEx </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>sx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>sy</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cy</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>cw</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>ch</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw an image with support for clipping and scaling (Nearest-neighbor algorithm) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n    <tr><td class=\"paramname\">x</td><td>image X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>image Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">sx</td><td>The X scale factor </td></tr>\n    <tr><td class=\"paramname\">sy</td><td>The Y scale factor </td></tr>\n    <tr><td class=\"paramname\">cx</td><td>The X coordinate where to start clipping </td></tr>\n    <tr><td class=\"paramname\">cy</td><td>The Y coordinate where to start clipping </td></tr>\n    <tr><td class=\"paramname\">cw</td><td>The width of the clipped image (from cx) </td></tr>\n    <tr><td class=\"paramname\">ch</td><td>The height of the clipped image (from cy) </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a728d5bc6d1ee11e127db8722fe3cbc18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a728d5bc6d1ee11e127db8722fe3cbc18\">&#9670;&nbsp;</a></span>fbg_imageFlip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_imageFlip </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *&#160;</td>\n          <td class=\"paramname\"><em>img</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>flip an image vertically </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">img</td><td>image structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\" title=\"create an empty image \">fbg_createImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a46f7354a04a7bfb7467d25394ce38303\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46f7354a04a7bfb7467d25394ce38303\">&#9670;&nbsp;</a></span>fbg_line()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_line </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a line from two points (Bresenham algorithm) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x1</td><td>point 1 X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y1</td><td>point 1 Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">x2</td><td>point 2 X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y2</td><td>point 2 Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\" title=\"draw a horizontal line \">fbg_hline()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\" title=\"draw a vertical line \">fbg_vline()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\" title=\"draw a polygon \">fbg_polygon()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a731ce4c5439d16555aa6ec48751ecea6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a731ce4c5439d16555aa6ec48751ecea6\">&#9670;&nbsp;</a></span>fbg_loadImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a>* fbg_loadImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>load an image (PNG or JPEG) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">filename</td><td>JPEG/PNG image filename </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\" title=\"Image data structure. \">_fbg_img</a> data structure pointer </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ad05affc24eed0b9f906d6926b8f02fec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad05affc24eed0b9f906d6926b8f02fec\">&#9670;&nbsp;</a></span>fbg_loadJPEG()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a>* fbg_loadJPEG </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>load a JPEG image from a file (NanoJPEG library) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">filename</td><td>JPEG image filename </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\" title=\"Image data structure. \">_fbg_img</a> data structure pointer </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\" title=\"load a PNG image from a file (lodePNG library) \">fbg_loadPNG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a4be92c5b1376fb7f06de1529b0a43f7f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4be92c5b1376fb7f06de1529b0a43f7f\">&#9670;&nbsp;</a></span>fbg_loadPNG()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a>* fbg_loadPNG </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>load a PNG image from a file (lodePNG library) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">filename</td><td>PNG image filename </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__img\" title=\"Image data structure. \">_fbg_img</a> data structure pointer </dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\" title=\"free the memory associated with an image \">fbg_freeImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\" title=\"draw an image \">fbg_image()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\" title=\"flip an image vertically \">fbg_imageFlip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\" title=\"draw a clipped image \">fbg_imageClip()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\" title=\"load a JPEG image from a file (NanoJPEG library) \">fbg_loadJPEG()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\" title=\"load an image (PNG or JPEG) \">fbg_loadImage()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\" title=\"draw an image with support for clipping and scaling (Nearest-neighbor algorithm) \">fbg_imageEx()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\" title=\"draw a scaled image (Nearest-neighbor algorithm) \">fbg_imageScale()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\" title=\"draw an image with colorkeying support (image colorkey value will be ignored) \">fbg_imageColorkey()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a7d81b1ddf54b0d4da0f30e36d7e2f3bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">&#9670;&nbsp;</a></span>fbg_pixel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_pixel </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a pixel </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>pixel X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>pixel Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\" title=\"fast pixel drawing which use the fill color set by fbg_fill() \">fbg_fpixel()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\" title=\"draw a pixel with alpha component (alpha blending) \">fbg_pixela()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a08c6a08afcb5bd07793801554b8f0bfe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08c6a08afcb5bd07793801554b8f0bfe\">&#9670;&nbsp;</a></span>fbg_pixela()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_pixela </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>a</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a pixel with alpha component (alpha blending) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>pixel X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>pixel Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n    <tr><td class=\"paramname\">a</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\" title=\"fast pixel drawing which use the fill color set by fbg_fill() \">fbg_fpixel()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\" title=\"draw a pixel \">fbg_pixel()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a990acac7dcc899656dc87c98404af777\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a990acac7dcc899656dc87c98404af777\">&#9670;&nbsp;</a></span>fbg_plot()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_plot </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>index</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>direct pixel access from index value </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">index</td><td>pixel index in the buffer </td></tr>\n    <tr><td class=\"paramname\">value</td><td>color value </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\" title=\"draw a pixel \">fbg_pixel()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\" title=\"set the filling color for fast drawing operations \">fbg_fill()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\" title=\"draw a pixel with alpha component (alpha blending) \">fbg_pixela()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a2a5a2ef48f5b26794473c51082fb75ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a5a2ef48f5b26794473c51082fb75ab\">&#9670;&nbsp;</a></span>fbg_polygon()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_polygon </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>num_vertices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int *&#160;</td>\n          <td class=\"paramname\"><em>vertices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a polygon </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">num_vertices</td><td>the number of vertices </td></tr>\n    <tr><td class=\"paramname\">vertices</td><td>pointer to a list of vertices (a list of X/Y points) </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a3604f59f02b47730a47a2fc15644d61e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3604f59f02b47730a47a2fc15644d61e\">&#9670;&nbsp;</a></span>fbg_pushResize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_pushResize </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>new_width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>new_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>push a resize event for the FB Graphics context note : the resize event is processed into the fbg_draw function note : resizing is not yet allowed in framebuffer mode note : if you want to immediately resize the context, see fbg_resize</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">new_width</td><td>new render width </td></tr>\n    <tr><td class=\"paramname\">new_height</td><td>new render height </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\" title=\"register a user resize callback \">fbg_setResizeCallback()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aedca9d7bf294d143f860d2f0ddcd528c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aedca9d7bf294d143f860d2f0ddcd528c\">&#9670;&nbsp;</a></span>fbg_randf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float fbg_randf </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>pseudo random number between min / max </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">min</td><td></td></tr>\n    <tr><td class=\"paramname\">max</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>pseudo random number between min / max </dd></dl>\n\n</div>\n</div>\n<a id=\"ad208d61ec4f50a5fd13f2cc8dd2ee0e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">&#9670;&nbsp;</a></span>fbg_rect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_rect </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a rectangle </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>rectangle X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>rectangle Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">w</td><td>rectangle width </td></tr>\n    <tr><td class=\"paramname\">h</td><td>rectangle height </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\" title=\"fast rectangle drawing which use the fill color set by fbg_fill() \">fbg_frect()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\" title=\"draw a rectangle with alpha transparency \">fbg_recta()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a83a99e5c8d44e2acf52cad38519ececf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83a99e5c8d44e2acf52cad38519ececf\">&#9670;&nbsp;</a></span>fbg_recta()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_recta </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>a</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a rectangle with alpha transparency </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>rectangle X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>rectangle Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">w</td><td>rectangle width </td></tr>\n    <tr><td class=\"paramname\">h</td><td>rectangle height </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n    <tr><td class=\"paramname\">a</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\" title=\"fast rectangle drawing which use the fill color set by fbg_fill() \">fbg_frect()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\" title=\"draw a rectangle \">fbg_rect()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a00509b4956e358ae3f9135151c1e524a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00509b4956e358ae3f9135151c1e524a\">&#9670;&nbsp;</a></span>fbg_resize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_resize </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>new_width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>new_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>resize the FB Graphics context immediately note : prefer the usage of fbg_pushResize when integrating the resize event of a custom backend (fbg_pushResize is thread safe all the time) note : resizing is not yet allowed in framebuffer mode</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">new_width</td><td>new render width </td></tr>\n    <tr><td class=\"paramname\">new_height</td><td>new render height </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbg_pushResize()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\" title=\"register a user resize callback \">fbg_setResizeCallback()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aaf344cf56286931ee7a4a0e5fce920fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf344cf56286931ee7a4a0e5fce920fc\">&#9670;&nbsp;</a></span>fbg_rgbToHsl()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_rgbToHsl </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a> *&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>convert RGB values to HSL color </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">color</td><td>pointer to a <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__hsl\" title=\"HSL color data structure. \">_fbg_hsl</a> data structure </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\" title=\"convert HSL values to RGB color \">fbg_hslToRGB()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a70e747dee4eda4a434b746e2bbd14386\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70e747dee4eda4a434b746e2bbd14386\">&#9670;&nbsp;</a></span>fbg_setResizeCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_setResizeCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int new_width, unsigned int new_height)&#160;</td>\n          <td class=\"paramname\"><em>user_resize</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>register a user resize callback </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">user_resize</td><td>resize function </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbg_pushResize()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a3233e3de8fc3ad06391641241c77a1ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3233e3de8fc3ad06391641241c77a1ea\">&#9670;&nbsp;</a></span>fbg_text()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_text </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *&#160;</td>\n          <td class=\"paramname\"><em>fnt</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a text </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">fnt</td><td><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" title=\"Bitmap font data structure. \">_fbg_font</a> structure pointer </td></tr>\n    <tr><td class=\"paramname\">text</td><td>the text to draw ('<br />\n' and ' ' are treated automatically) </td></tr>\n    <tr><td class=\"paramname\">x</td><td></td></tr>\n    <tr><td class=\"paramname\">y</td><td></td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, fbg_textColorkey(), <a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\" title=\"set the current text background color (based on colorkey value!) \">fbg_textBackground()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a2e82acd949a5c12a1fa494fb4c028ff1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e82acd949a5c12a1fa494fb4c028ff1\">&#9670;&nbsp;</a></span>fbg_textBackground()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_textBackground </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>b</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>a</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set the current text background color (based on colorkey value!) </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n    <tr><td class=\"paramname\">a</td><td>0 = transparent background (based on colorkey), 255 = full text background </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\" title=\"set the current text color key \">fbg_textColorKey()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\" title=\"set the current text color \">fbg_textColor()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"acae7a4ff39407371a52ebf9ae4c260c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acae7a4ff39407371a52ebf9ae4c260c1\">&#9670;&nbsp;</a></span>fbg_textColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_textColor </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set the current text color </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\" title=\"set the current text color key \">fbg_textColorKey()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\" title=\"set the current text background color (based on colorkey value!) \">fbg_textBackground()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a7165bceebbbe11332256d1bd4e179489\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7165bceebbbe11332256d1bd4e179489\">&#9670;&nbsp;</a></span>fbg_textColorKey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_textColorKey </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>v</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set the current text color key </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">v</td><td>grayscale value </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\" title=\"set the current text color \">fbg_textColor()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ac1ccfb0069d4567313391dc819ada76b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1ccfb0069d4567313391dc819ada76b\">&#9670;&nbsp;</a></span>fbg_textFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_textFont </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *&#160;</td>\n          <td class=\"paramname\"><em>font</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>set the current font </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">font</td><td><a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\" title=\"Bitmap font data structure. \">_fbg_font</a> structure pointer </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\" title=\"create a bitmap font from an image \">fbg_createFont()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\" title=\"draw a text \">fbg_text()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\" title=\"draw a text by using the current font and the current color \">fbg_write()</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\" title=\"draw the framerate of a particular parallel task \">fbg_drawFramerate()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a3c4fb5fa694646ec66b50a32eaf38557\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c4fb5fa694646ec66b50a32eaf38557\">&#9670;&nbsp;</a></span>fbg_vline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void fbg_vline </td>\n          <td>(</td>\n          <td class=\"paramtype\">struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *&#160;</td>\n          <td class=\"paramname\"><em>fbg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>r</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>g</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">unsigned char&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>draw a vertical line </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">fbg</td><td>pointer to a FBG context / data structure </td></tr>\n    <tr><td class=\"paramname\">x</td><td>line X position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">y</td><td>line Y position (upper left coordinate) </td></tr>\n    <tr><td class=\"paramname\">h</td><td>line height </td></tr>\n    <tr><td class=\"paramname\">r</td><td></td></tr>\n    <tr><td class=\"paramname\">g</td><td></td></tr>\n    <tr><td class=\"paramname\">b</td><td></td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\" title=\"draw a horizontal line \">fbg_hline</a>, <a class=\"el\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\" title=\"draw a line from two points (Bresenham algorithm) \">fbg_line()</a> </dd></dl>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbgraphics_8h.js",
    "content": "var fbgraphics_8h =\n[\n    [ \"_fbg_rgb\", \"fbgraphics_8h.html#struct__fbg__rgb\", [\n      [ \"a\", \"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\", null ],\n      [ \"b\", \"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\", null ],\n      [ \"g\", \"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\", null ],\n      [ \"r\", \"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\", null ]\n    ] ],\n    [ \"_fbg_hsl\", \"fbgraphics_8h.html#struct__fbg__hsl\", [\n      [ \"h\", \"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\", null ],\n      [ \"l\", \"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\", null ],\n      [ \"s\", \"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\", null ]\n    ] ],\n    [ \"_fbg_img\", \"fbgraphics_8h.html#struct__fbg__img\", [\n      [ \"data\", \"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\", null ],\n      [ \"height\", \"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\", null ],\n      [ \"width\", \"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\", null ]\n    ] ],\n    [ \"_fbg_font\", \"fbgraphics_8h.html#struct__fbg__font\", [\n      [ \"bitmap\", \"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\", null ],\n      [ \"first_char\", \"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\", null ],\n      [ \"glyph_coord_x\", \"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\", null ],\n      [ \"glyph_coord_y\", \"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\", null ],\n      [ \"glyph_height\", \"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\", null ],\n      [ \"glyph_width\", \"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\", null ]\n    ] ],\n    [ \"_fbg\", \"struct__fbg.html\", \"struct__fbg\" ],\n    [ \"_FBG_DEGTORAD\", \"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\", null ],\n    [ \"_FBG_MAX\", \"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\", null ],\n    [ \"_FBG_MIN\", \"fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7\", null ],\n    [ \"_FBG_RADTODEG\", \"fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347\", null ],\n    [ \"_FBG_SGN\", \"fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390\", null ],\n    [ \"_FBG_SOURCE_OVER\", \"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\", null ],\n    [ \"fbg_fade\", \"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\", null ],\n    [ \"fbg_imageScale\", \"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\", null ],\n    [ \"fbg_write\", \"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\", null ],\n    [ \"fbg_background\", \"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\", null ],\n    [ \"fbg_clear\", \"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\", null ],\n    [ \"fbg_close\", \"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\", null ],\n    [ \"fbg_createFont\", \"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\", null ],\n    [ \"fbg_createImage\", \"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\", null ],\n    [ \"fbg_customSetup\", \"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\", null ],\n    [ \"fbg_draw\", \"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\", null ],\n    [ \"fbg_drawFramerate\", \"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\", null ],\n    [ \"fbg_drawInto\", \"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\", null ],\n    [ \"fbg_fadeDown\", \"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\", null ],\n    [ \"fbg_fadeUp\", \"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\", null ],\n    [ \"fbg_fill\", \"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\", null ],\n    [ \"fbg_flip\", \"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\", null ],\n    [ \"fbg_fpixel\", \"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\", null ],\n    [ \"fbg_frect\", \"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\", null ],\n    [ \"fbg_freeFont\", \"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\", null ],\n    [ \"fbg_freeImage\", \"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\", null ],\n    [ \"fbg_getFramerate\", \"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\", null ],\n    [ \"fbg_getPixel\", \"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\", null ],\n    [ \"fbg_hline\", \"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\", null ],\n    [ \"fbg_hslToRGB\", \"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\", null ],\n    [ \"fbg_image\", \"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\", null ],\n    [ \"fbg_imageClip\", \"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\", null ],\n    [ \"fbg_imageColorkey\", \"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\", null ],\n    [ \"fbg_imageEx\", \"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\", null ],\n    [ \"fbg_imageFlip\", \"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\", null ],\n    [ \"fbg_line\", \"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\", null ],\n    [ \"fbg_loadImage\", \"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\", null ],\n    [ \"fbg_loadJPEG\", \"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\", null ],\n    [ \"fbg_loadPNG\", \"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\", null ],\n    [ \"fbg_pixel\", \"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\", null ],\n    [ \"fbg_pixela\", \"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\", null ],\n    [ \"fbg_plot\", \"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\", null ],\n    [ \"fbg_polygon\", \"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\", null ],\n    [ \"fbg_pushResize\", \"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\", null ],\n    [ \"fbg_randf\", \"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\", null ],\n    [ \"fbg_rect\", \"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\", null ],\n    [ \"fbg_recta\", \"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\", null ],\n    [ \"fbg_resize\", \"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\", null ],\n    [ \"fbg_rgbToHsl\", \"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\", null ],\n    [ \"fbg_setResizeCallback\", \"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\", null ],\n    [ \"fbg_text\", \"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\", null ],\n    [ \"fbg_textBackground\", \"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\", null ],\n    [ \"fbg_textColor\", \"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\", null ],\n    [ \"fbg_textColorKey\", \"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\", null ],\n    [ \"fbg_textFont\", \"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\", null ],\n    [ \"fbg_vline\", \"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\", null ]\n];"
  },
  {
    "path": "docs/fbgraphics_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: fbgraphics.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_68267d1309a1af8e8297ef4c3efbcdba.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">fbgraphics.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fbgraphics_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">    Copyright (c) 2018, 2019, 2020 Julien Verneuil</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">    All rights reserved.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">    Redistribution and use in source and binary forms, with or without</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">    modification, are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">        * Redistributions of source code must retain the above copyright</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">        * Redistributions in binary form must reproduce the above copyright</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">        notice, this list of conditions and the following disclaimer in the</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">        documentation and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">        * Neither the name of the organization nor the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">        names of its contributors may be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">        derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\">    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#ifndef FB_GRAPHICS_H</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#define FB_GRAPHICS_H</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    #include &lt;time.h&gt;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">    #include &lt;sys/time.h&gt;</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"preprocessor\">    #include &lt;stdint.h&gt;</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"preprocessor\">    #include &lt;math.h&gt;</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">    #include &lt;stdatomic.h&gt;</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"preprocessor\">    #include &lt;pthread.h&gt;</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"comment\">// compatibility layer for liblfds 711 version (because 720 was unreleased at the time of writing this)</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"preprocessor\">#ifdef FBG_LFDS</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"preprocessor\">#ifdef LFDS711</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"preprocessor\">    #include &quot;liblfds711.h&quot;</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_element lfds711_freelist_element</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_element lfds711_ringbuffer_element</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_state lfds711_ringbuffer_state</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_state lfds711_freelist_state</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">    #define LFDS720_PAL_ATOMIC_ISOLATION_LENGTH_IN_BYTES LFDS711_PAL_ATOMIC_ISOLATION_IN_BYTES</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_init_valid_on_current_logical_core lfds711_ringbuffer_init_valid_on_current_logical_core</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_init_valid_on_current_logical_core lfds711_freelist_init_valid_on_current_logical_core</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"preprocessor\">    #define LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT LFDS711_FREELIST_SET_VALUE_IN_ELEMENT</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"preprocessor\">    #define LFDS720_FREELIST_N_GET_VALUE_FROM_ELEMENT LFDS711_FREELIST_GET_VALUE_FROM_ELEMENT</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_threadsafe_push lfds711_freelist_push</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_threadsafe_pop lfds711_freelist_pop</span></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_cleanup lfds711_ringbuffer_cleanup</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"preprocessor\">    #define lfds720_freelist_n_cleanup lfds711_freelist_cleanup</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_read lfds711_ringbuffer_read</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"preprocessor\">    #define lfds720_ringbuffer_n_write lfds711_ringbuffer_write</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"preprocessor\">    #define lfds720_misc_flag lfds711_misc_flag</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"preprocessor\">    #define LFDS720_MISC_FLAG_RAISED LFDS711_MISC_FLAG_RAISED</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"preprocessor\">    #define LFDS720_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_PHYSICAL_CORE LFDS711_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;<span class=\"preprocessor\">    #define lfds720_pal_uint_t lfds711_pal_uint_t</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;<span class=\"preprocessor\">    #include &quot;liblfds720.h&quot;</span></div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;<span class=\"comment\">// ### Library structures</span></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html\">   74</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> {</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">   75</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">   76</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">   77</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">   78</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">a</a>;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    };</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html\">   83</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a> {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\">   84</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\">h</a>;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\">   85</a></span>&#160;        <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\">s</a>;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\">   86</a></span>&#160;        <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\">l</a>;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    };</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html\">   91</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> {</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\">   93</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\">data</a>;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">   96</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">width</a>;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">   98</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">height</a>;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    };</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html\">  103</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\">  105</a></span>&#160;        <span class=\"keywordtype\">int</span> *<a class=\"code\" href=\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\">glyph_coord_x</a>;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\">  107</a></span>&#160;        <span class=\"keywordtype\">int</span> *<a class=\"code\" href=\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\">glyph_coord_y</a>;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">  110</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">glyph_width</a>;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">  112</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">glyph_height</a>;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">  115</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">first_char</a>;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\">  118</a></span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *<a class=\"code\" href=\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\">bitmap</a>;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    };</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html\">  123</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> {</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">  125</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">size</a>;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">  128</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">disp_buffer</a>;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">  131</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">  133</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *<a class=\"code\" href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">temp_buffer</a>;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">  136</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">allow_resizing</a>;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">  139</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">initialize_buffers</a>;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\">  143</a></span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> fill_color;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\">  147</a></span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> text_color;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\">  151</a></span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> text_background;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">  155</a></span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">text_colorkey</a>;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">  159</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">text_alpha</a>;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\">  163</a></span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> current_font;</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">  167</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">compositing</a>;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">  170</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">  172</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">  174</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">width_n_height</a>;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">  176</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a>;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">  178</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">comp_offset</a>;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">  180</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">line_length</a>;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">  183</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">  185</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;        atomic_uint_fast16_t fps;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">  191</a></span>&#160;        int16_t <a class=\"code\" href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">fps</a>;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\">  195</a></span>&#160;        <span class=\"keywordtype\">char</span> fps_char[10];</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\">  198</a></span>&#160;        <span class=\"keyword\">struct </span>timeval fps_start;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\">  200</a></span>&#160;        <span class=\"keyword\">struct </span>timeval fps_stop;</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">  203</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">frame</a>;</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">  206</a></span>&#160;        <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">bgr</a>;</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">  209</a></span>&#160;        void (*backend_resize)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>);</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">  211</a></span>&#160;        void (*<a class=\"code\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">user_resize</a>)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>);</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">  213</a></span>&#160;        void (*<a class=\"code\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">user_flip</a>)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">  215</a></span>&#160;        void (*<a class=\"code\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">user_draw</a>)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">  217</a></span>&#160;        void (*<a class=\"code\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">user_free</a>)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">  219</a></span>&#160;        <span class=\"keywordtype\">void</span> *<a class=\"code\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">user_context</a>;</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;        <span class=\"comment\">//unsigned char *curr_task_buffer;</span></div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> parallel_tasks;</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;        pthread_t *tasks;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;        <span class=\"keyword\">struct </span>_fbg_fragment **fragments;</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;        pthread_barrier_t *sync_barrier;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;        <span class=\"keywordtype\">int</span> task_id;</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;        atomic_int state;</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> fragment_queue_size;</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;    };</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;<span class=\"preprocessor\">#ifdef FBG_LFDS</span></div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;    <span class=\"keyword\">struct </span>_fbg_freelist_data {</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;        <span class=\"keyword\">struct </span>lfds720_freelist_n_element freelist_element;</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *buffer;</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;    };</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;<span class=\"preprocessor\">  #endif</span></div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;    <span class=\"keyword\">struct </span>_fbg_fragment {</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;        atomic_int state;</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;</div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\">  267</span>&#160;        <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg;</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;<span class=\"preprocessor\">#ifdef FBG_LFDS</span></div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;        <span class=\"keyword\">struct </span>lfds720_ringbuffer_n_element *ringbuffer_element;</div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;        <span class=\"keyword\">struct </span>lfds720_ringbuffer_n_state *ringbuffer_state;</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;        <span class=\"keyword\">struct </span>lfds720_freelist_n_state *freelist_state;</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;</div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;        <span class=\"keyword\">struct </span>_fbg_freelist_data *fbg_freelist_data;</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;        <span class=\"keyword\">struct </span>_fbg_freelist_data *tmp_fbg_freelist_data; </div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;        atomic_int sync_wait;</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;        <span class=\"keywordtype\">void</span> *(*user_fragment_start)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00291\"></a><span class=\"lineno\">  291</span>&#160;        void (*user_fragment)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> *user_data);</div><div class=\"line\"><a name=\"l00293\"></a><span class=\"lineno\">  293</span>&#160;        void (*user_fragment_stop)(<span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> *user_data);</div><div class=\"line\"><a name=\"l00294\"></a><span class=\"lineno\">  294</span>&#160;</div><div class=\"line\"><a name=\"l00296\"></a><span class=\"lineno\">  296</span>&#160;        <span class=\"keywordtype\">void</span> *user_data;</div><div class=\"line\"><a name=\"l00297\"></a><span class=\"lineno\">  297</span>&#160;    };</div><div class=\"line\"><a name=\"l00298\"></a><span class=\"lineno\">  298</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00299\"></a><span class=\"lineno\">  299</span>&#160;</div><div class=\"line\"><a name=\"l00300\"></a><span class=\"lineno\">  300</span>&#160;<span class=\"comment\">// ### Library functions</span></div><div class=\"line\"><a name=\"l00301\"></a><span class=\"lineno\">  301</span>&#160;</div><div class=\"line\"><a name=\"l00303\"></a><span class=\"lineno\">  303</span>&#160;</div><div class=\"line\"><a name=\"l00317\"></a><span class=\"lineno\">  317</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *<a class=\"code\" href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\">fbg_customSetup</a>(<span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">initialize_buffers</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">allow_resizing</a>, <span class=\"keywordtype\">void</span> *<a class=\"code\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">user_context</a>, <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">user_draw</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg), <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">user_flip</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg), <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">backend_resize</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>), <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">user_free</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg));</div><div class=\"line\"><a name=\"l00318\"></a><span class=\"lineno\">  318</span>&#160;</div><div class=\"line\"><a name=\"l00320\"></a><span class=\"lineno\">  320</span>&#160;</div><div class=\"line\"><a name=\"l00324\"></a><span class=\"lineno\">  324</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbg_close</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00325\"></a><span class=\"lineno\">  325</span>&#160;</div><div class=\"line\"><a name=\"l00327\"></a><span class=\"lineno\">  327</span>&#160;</div><div class=\"line\"><a name=\"l00332\"></a><span class=\"lineno\">  332</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\">fbg_setResizeCallback</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> (*<a class=\"code\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">user_resize</a>)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>));</div><div class=\"line\"><a name=\"l00333\"></a><span class=\"lineno\">  333</span>&#160;</div><div class=\"line\"><a name=\"l00337\"></a><span class=\"lineno\">  337</span>&#160;</div><div class=\"line\"><a name=\"l00343\"></a><span class=\"lineno\">  343</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>);</div><div class=\"line\"><a name=\"l00344\"></a><span class=\"lineno\">  344</span>&#160;</div><div class=\"line\"><a name=\"l00349\"></a><span class=\"lineno\">  349</span>&#160;</div><div class=\"line\"><a name=\"l00355\"></a><span class=\"lineno\">  355</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbg_pushResize</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>);</div><div class=\"line\"><a name=\"l00356\"></a><span class=\"lineno\">  356</span>&#160;</div><div class=\"line\"><a name=\"l00358\"></a><span class=\"lineno\">  358</span>&#160;</div><div class=\"line\"><a name=\"l00363\"></a><span class=\"lineno\">  363</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbg_fadeDown</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> rgb_fade_amount);</div><div class=\"line\"><a name=\"l00364\"></a><span class=\"lineno\">  364</span>&#160;</div><div class=\"line\"><a name=\"l00366\"></a><span class=\"lineno\">  366</span>&#160;</div><div class=\"line\"><a name=\"l00371\"></a><span class=\"lineno\">  371</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\">fbg_fadeUp</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> rgb_fade_amount);</div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\">  372</span>&#160;</div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\">  374</span>&#160;</div><div class=\"line\"><a name=\"l00379\"></a><span class=\"lineno\">  379</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> brightness);</div><div class=\"line\"><a name=\"l00380\"></a><span class=\"lineno\">  380</span>&#160;</div><div class=\"line\"><a name=\"l00382\"></a><span class=\"lineno\">  382</span>&#160;</div><div class=\"line\"><a name=\"l00389\"></a><span class=\"lineno\">  389</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\">fbg_fill</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00390\"></a><span class=\"lineno\">  390</span>&#160;</div><div class=\"line\"><a name=\"l00392\"></a><span class=\"lineno\">  392</span>&#160;</div><div class=\"line\"><a name=\"l00398\"></a><span class=\"lineno\">  398</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\">fbg_getPixel</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *color);</div><div class=\"line\"><a name=\"l00399\"></a><span class=\"lineno\">  399</span>&#160;</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;</div><div class=\"line\"><a name=\"l00410\"></a><span class=\"lineno\">  410</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbg_pixel</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00411\"></a><span class=\"lineno\">  411</span>&#160;</div><div class=\"line\"><a name=\"l00413\"></a><span class=\"lineno\">  413</span>&#160;</div><div class=\"line\"><a name=\"l00423\"></a><span class=\"lineno\">  423</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\">fbg_pixela</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">a</a>);</div><div class=\"line\"><a name=\"l00424\"></a><span class=\"lineno\">  424</span>&#160;</div><div class=\"line\"><a name=\"l00426\"></a><span class=\"lineno\">  426</span>&#160;</div><div class=\"line\"><a name=\"l00432\"></a><span class=\"lineno\">  432</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\">fbg_fpixel</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y);</div><div class=\"line\"><a name=\"l00433\"></a><span class=\"lineno\">  433</span>&#160;</div><div class=\"line\"><a name=\"l00435\"></a><span class=\"lineno\">  435</span>&#160;</div><div class=\"line\"><a name=\"l00441\"></a><span class=\"lineno\">  441</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\">fbg_plot</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> index, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> value);</div><div class=\"line\"><a name=\"l00442\"></a><span class=\"lineno\">  442</span>&#160;</div><div class=\"line\"><a name=\"l00444\"></a><span class=\"lineno\">  444</span>&#160;</div><div class=\"line\"><a name=\"l00455\"></a><span class=\"lineno\">  455</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00456\"></a><span class=\"lineno\">  456</span>&#160;</div><div class=\"line\"><a name=\"l00458\"></a><span class=\"lineno\">  458</span>&#160;</div><div class=\"line\"><a name=\"l00470\"></a><span class=\"lineno\">  470</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\">fbg_recta</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">a</a>);</div><div class=\"line\"><a name=\"l00471\"></a><span class=\"lineno\">  471</span>&#160;</div><div class=\"line\"><a name=\"l00473\"></a><span class=\"lineno\">  473</span>&#160;</div><div class=\"line\"><a name=\"l00481\"></a><span class=\"lineno\">  481</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\">fbg_frect</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h);</div><div class=\"line\"><a name=\"l00482\"></a><span class=\"lineno\">  482</span>&#160;</div><div class=\"line\"><a name=\"l00484\"></a><span class=\"lineno\">  484</span>&#160;</div><div class=\"line\"><a name=\"l00494\"></a><span class=\"lineno\">  494</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\">fbg_hline</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00495\"></a><span class=\"lineno\">  495</span>&#160;</div><div class=\"line\"><a name=\"l00497\"></a><span class=\"lineno\">  497</span>&#160;</div><div class=\"line\"><a name=\"l00507\"></a><span class=\"lineno\">  507</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\">fbg_vline</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> h, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00508\"></a><span class=\"lineno\">  508</span>&#160;</div><div class=\"line\"><a name=\"l00510\"></a><span class=\"lineno\">  510</span>&#160;</div><div class=\"line\"><a name=\"l00521\"></a><span class=\"lineno\">  521</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\">fbg_line</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> x1, <span class=\"keywordtype\">int</span> y1, <span class=\"keywordtype\">int</span> x2, <span class=\"keywordtype\">int</span> y2, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00522\"></a><span class=\"lineno\">  522</span>&#160;</div><div class=\"line\"><a name=\"l00524\"></a><span class=\"lineno\">  524</span>&#160;</div><div class=\"line\"><a name=\"l00532\"></a><span class=\"lineno\">  532</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\">fbg_polygon</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> num_vertices, <span class=\"keywordtype\">int</span> *vertices, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00533\"></a><span class=\"lineno\">  533</span>&#160;</div><div class=\"line\"><a name=\"l00535\"></a><span class=\"lineno\">  535</span>&#160;</div><div class=\"line\"><a name=\"l00542\"></a><span class=\"lineno\">  542</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\">fbg_background</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00543\"></a><span class=\"lineno\">  543</span>&#160;</div><div class=\"line\"><a name=\"l00545\"></a><span class=\"lineno\">  545</span>&#160;</div><div class=\"line\"><a name=\"l00552\"></a><span class=\"lineno\">  552</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\">fbg_hslToRGB</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> *color, <span class=\"keywordtype\">float</span> h, <span class=\"keywordtype\">float</span> s, <span class=\"keywordtype\">float</span> l);</div><div class=\"line\"><a name=\"l00553\"></a><span class=\"lineno\">  553</span>&#160;</div><div class=\"line\"><a name=\"l00555\"></a><span class=\"lineno\">  555</span>&#160;</div><div class=\"line\"><a name=\"l00562\"></a><span class=\"lineno\">  562</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\">fbg_rgbToHsl</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a> *color, <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00563\"></a><span class=\"lineno\">  563</span>&#160;</div><div class=\"line\"><a name=\"l00564\"></a><span class=\"lineno\">  564</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00565\"></a><span class=\"lineno\">  565</span>&#160;</div><div class=\"line\"><a name=\"l00571\"></a><span class=\"lineno\">  571</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> (*user_mixing)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *buffer, <span class=\"keywordtype\">int</span> task_id));</div><div class=\"line\"><a name=\"l00572\"></a><span class=\"lineno\">  572</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00573\"></a><span class=\"lineno\">  573</span>&#160;</div><div class=\"line\"><a name=\"l00577\"></a><span class=\"lineno\">  577</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00578\"></a><span class=\"lineno\">  578</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00579\"></a><span class=\"lineno\">  579</span>&#160;</div><div class=\"line\"><a name=\"l00581\"></a><span class=\"lineno\">  581</span>&#160;</div><div class=\"line\"><a name=\"l00584\"></a><span class=\"lineno\">  584</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbg_flip</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg);</div><div class=\"line\"><a name=\"l00585\"></a><span class=\"lineno\">  585</span>&#160;</div><div class=\"line\"><a name=\"l00587\"></a><span class=\"lineno\">  587</span>&#160;</div><div class=\"line\"><a name=\"l00594\"></a><span class=\"lineno\">  594</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *<a class=\"code\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\">fbg_createImage</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">width</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">height</a>);</div><div class=\"line\"><a name=\"l00595\"></a><span class=\"lineno\">  595</span>&#160;</div><div class=\"line\"><a name=\"l00597\"></a><span class=\"lineno\">  597</span>&#160;</div><div class=\"line\"><a name=\"l00603\"></a><span class=\"lineno\">  603</span>&#160;<span class=\"preprocessor\">#ifndef WITHOUT_PNG</span></div><div class=\"line\"><a name=\"l00604\"></a><span class=\"lineno\">  604</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *<a class=\"code\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\">fbg_loadPNG</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *filename);</div><div class=\"line\"><a name=\"l00605\"></a><span class=\"lineno\">  605</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00606\"></a><span class=\"lineno\">  606</span>&#160;</div><div class=\"line\"><a name=\"l00608\"></a><span class=\"lineno\">  608</span>&#160;</div><div class=\"line\"><a name=\"l00614\"></a><span class=\"lineno\">  614</span>&#160;<span class=\"preprocessor\">#ifndef WITHOUT_JPEG</span></div><div class=\"line\"><a name=\"l00615\"></a><span class=\"lineno\">  615</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *<a class=\"code\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\">fbg_loadJPEG</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *filename);</div><div class=\"line\"><a name=\"l00616\"></a><span class=\"lineno\">  616</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00617\"></a><span class=\"lineno\">  617</span>&#160;</div><div class=\"line\"><a name=\"l00619\"></a><span class=\"lineno\">  619</span>&#160;</div><div class=\"line\"><a name=\"l00625\"></a><span class=\"lineno\">  625</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *<a class=\"code\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbg_loadImage</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *filename);</div><div class=\"line\"><a name=\"l00626\"></a><span class=\"lineno\">  626</span>&#160;</div><div class=\"line\"><a name=\"l00628\"></a><span class=\"lineno\">  628</span>&#160;</div><div class=\"line\"><a name=\"l00635\"></a><span class=\"lineno\">  635</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\">fbg_image</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y);</div><div class=\"line\"><a name=\"l00636\"></a><span class=\"lineno\">  636</span>&#160;</div><div class=\"line\"><a name=\"l00638\"></a><span class=\"lineno\">  638</span>&#160;</div><div class=\"line\"><a name=\"l00648\"></a><span class=\"lineno\">  648</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\">fbg_imageColorkey</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> cr, <span class=\"keywordtype\">int</span> cg, <span class=\"keywordtype\">int</span> cb);</div><div class=\"line\"><a name=\"l00649\"></a><span class=\"lineno\">  649</span>&#160;</div><div class=\"line\"><a name=\"l00651\"></a><span class=\"lineno\">  651</span>&#160;</div><div class=\"line\"><a name=\"l00662\"></a><span class=\"lineno\">  662</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbg_imageClip</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> cx, <span class=\"keywordtype\">int</span> cy, <span class=\"keywordtype\">int</span> cw, <span class=\"keywordtype\">int</span> ch);</div><div class=\"line\"><a name=\"l00663\"></a><span class=\"lineno\">  663</span>&#160;</div><div class=\"line\"><a name=\"l00665\"></a><span class=\"lineno\">  665</span>&#160;</div><div class=\"line\"><a name=\"l00669\"></a><span class=\"lineno\">  669</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\">fbg_imageFlip</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img);</div><div class=\"line\"><a name=\"l00670\"></a><span class=\"lineno\">  670</span>&#160;</div><div class=\"line\"><a name=\"l00672\"></a><span class=\"lineno\">  672</span>&#160;</div><div class=\"line\"><a name=\"l00685\"></a><span class=\"lineno\">  685</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbg_imageEx</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">float</span> sx, <span class=\"keywordtype\">float</span> sy, <span class=\"keywordtype\">int</span> cx, <span class=\"keywordtype\">int</span> cy, <span class=\"keywordtype\">int</span> cw, <span class=\"keywordtype\">int</span> ch);</div><div class=\"line\"><a name=\"l00686\"></a><span class=\"lineno\">  686</span>&#160;</div><div class=\"line\"><a name=\"l00688\"></a><span class=\"lineno\">  688</span>&#160;</div><div class=\"line\"><a name=\"l00692\"></a><span class=\"lineno\">  692</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbg_freeImage</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img);</div><div class=\"line\"><a name=\"l00693\"></a><span class=\"lineno\">  693</span>&#160;</div><div class=\"line\"><a name=\"l00695\"></a><span class=\"lineno\">  695</span>&#160;</div><div class=\"line\"><a name=\"l00704\"></a><span class=\"lineno\">  704</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *<a class=\"code\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbg_createFont</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *img, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">glyph_width</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">glyph_height</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">first_char</a>);</div><div class=\"line\"><a name=\"l00705\"></a><span class=\"lineno\">  705</span>&#160;</div><div class=\"line\"><a name=\"l00707\"></a><span class=\"lineno\">  707</span>&#160;</div><div class=\"line\"><a name=\"l00712\"></a><span class=\"lineno\">  712</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\">fbg_textFont</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *font);</div><div class=\"line\"><a name=\"l00713\"></a><span class=\"lineno\">  713</span>&#160;</div><div class=\"line\"><a name=\"l00715\"></a><span class=\"lineno\">  715</span>&#160;</div><div class=\"line\"><a name=\"l00722\"></a><span class=\"lineno\">  722</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\">fbg_textColor</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00723\"></a><span class=\"lineno\">  723</span>&#160;</div><div class=\"line\"><a name=\"l00725\"></a><span class=\"lineno\">  725</span>&#160;</div><div class=\"line\"><a name=\"l00733\"></a><span class=\"lineno\">  733</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\">fbg_textBackground</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">a</a>);</div><div class=\"line\"><a name=\"l00734\"></a><span class=\"lineno\">  734</span>&#160;</div><div class=\"line\"><a name=\"l00736\"></a><span class=\"lineno\">  736</span>&#160;</div><div class=\"line\"><a name=\"l00741\"></a><span class=\"lineno\">  741</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\">fbg_textColorKey</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> v);</div><div class=\"line\"><a name=\"l00742\"></a><span class=\"lineno\">  742</span>&#160;</div><div class=\"line\"><a name=\"l00744\"></a><span class=\"lineno\">  744</span>&#160;</div><div class=\"line\"><a name=\"l00755\"></a><span class=\"lineno\">  755</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbg_text</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *fnt, <span class=\"keywordtype\">char</span> *text, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00756\"></a><span class=\"lineno\">  756</span>&#160;</div><div class=\"line\"><a name=\"l00758\"></a><span class=\"lineno\">  758</span>&#160;</div><div class=\"line\"><a name=\"l00762\"></a><span class=\"lineno\">  762</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbg_freeFont</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *font);</div><div class=\"line\"><a name=\"l00763\"></a><span class=\"lineno\">  763</span>&#160;</div><div class=\"line\"><a name=\"l00765\"></a><span class=\"lineno\">  765</span>&#160;</div><div class=\"line\"><a name=\"l00775\"></a><span class=\"lineno\">  775</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\">fbg_drawFramerate</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> <a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *fnt, <span class=\"keywordtype\">int</span> task, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">r</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">g</a>, <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">b</a>);</div><div class=\"line\"><a name=\"l00776\"></a><span class=\"lineno\">  776</span>&#160;</div><div class=\"line\"><a name=\"l00778\"></a><span class=\"lineno\">  778</span>&#160;</div><div class=\"line\"><a name=\"l00783\"></a><span class=\"lineno\">  783</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\">fbg_getFramerate</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">int</span> task);</div><div class=\"line\"><a name=\"l00784\"></a><span class=\"lineno\">  784</span>&#160;</div><div class=\"line\"><a name=\"l00786\"></a><span class=\"lineno\">  786</span>&#160;</div><div class=\"line\"><a name=\"l00790\"></a><span class=\"lineno\">  790</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\">fbg_drawInto</a>(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *buffer);</div><div class=\"line\"><a name=\"l00791\"></a><span class=\"lineno\">  791</span>&#160;</div><div class=\"line\"><a name=\"l00793\"></a><span class=\"lineno\">  793</span>&#160;</div><div class=\"line\"><a name=\"l00798\"></a><span class=\"lineno\">  798</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\">fbg_randf</a>(<span class=\"keywordtype\">float</span> min, <span class=\"keywordtype\">float</span> max);</div><div class=\"line\"><a name=\"l00799\"></a><span class=\"lineno\">  799</span>&#160;</div><div class=\"line\"><a name=\"l00800\"></a><span class=\"lineno\">  800</span>&#160;<span class=\"preprocessor\">#ifdef FBG_PARALLEL</span></div><div class=\"line\"><a name=\"l00801\"></a><span class=\"lineno\">  801</span>&#160;</div><div class=\"line\"><a name=\"l00809\"></a><span class=\"lineno\">  809</span>&#160;    <span class=\"keyword\">extern</span> <span class=\"keywordtype\">void</span> fbg_createFragment(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> *(*fragment_start)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg), <span class=\"keywordtype\">void</span> (*fragment)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> *user_data), <span class=\"keywordtype\">void</span> (*fragment_stop)(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">void</span> *user_data), <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> parallel_tasks);</div><div class=\"line\"><a name=\"l00810\"></a><span class=\"lineno\">  810</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00811\"></a><span class=\"lineno\">  811</span>&#160;</div><div class=\"line\"><a name=\"l00812\"></a><span class=\"lineno\">  812</span>&#160;<span class=\"comment\">// ### Helper functions</span></div><div class=\"line\"><a name=\"l00814\"></a><span class=\"lineno\">  814</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00819\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\">  819</a></span>&#160;<span class=\"preprocessor\">    #define fbg_fade(fbg, fade_amount) fbg_fadeDown(fbg, fade_amount)</span></div><div class=\"line\"><a name=\"l00820\"></a><span class=\"lineno\">  820</span>&#160;</div><div class=\"line\"><a name=\"l00822\"></a><span class=\"lineno\">  822</span>&#160;</div><div class=\"line\"><a name=\"l00829\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">  829</a></span>&#160;<span class=\"preprocessor\">    #define fbg_write(fbg, text, x, y) fbg_text(fbg, &amp;fbg-&gt;current_font, text, x, y, fbg-&gt;text_color.r, fbg-&gt;text_color.g, fbg-&gt;text_color.b)</span></div><div class=\"line\"><a name=\"l00830\"></a><span class=\"lineno\">  830</span>&#160;</div><div class=\"line\"><a name=\"l00832\"></a><span class=\"lineno\">  832</span>&#160;</div><div class=\"line\"><a name=\"l00841\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\">  841</a></span>&#160;<span class=\"preprocessor\">    #define fbg_imageScale(fbg, img, x, y, sx, sy) fbg_imageEx(fbg, img, x, y, sx, sy, 0, 0, img-&gt;width, img-&gt;height)</span></div><div class=\"line\"><a name=\"l00842\"></a><span class=\"lineno\">  842</span>&#160;</div><div class=\"line\"><a name=\"l00844\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\">  844</a></span>&#160;<span class=\"preprocessor\">    #define _FBG_MAX(a,b) ((a) &gt; (b) ? a : b)</span></div><div class=\"line\"><a name=\"l00845\"></a><span class=\"lineno\">  845</span>&#160;<span class=\"preprocessor\">    #define _FBG_MIN(a,b) ((a) &lt; (b) ? a : b)</span></div><div class=\"line\"><a name=\"l00847\"></a><span class=\"lineno\">  847</span>&#160;<span class=\"preprocessor\">    #define _FBG_SGN(x) ((x&lt;0)?-1:((x&gt;0)?1:0))</span></div><div class=\"line\"><a name=\"l00849\"></a><span class=\"lineno\">  849</span>&#160;</div><div class=\"line\"><a name=\"l00851\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\">  851</a></span>&#160;<span class=\"preprocessor\">    #define _FBG_DEGTORAD(angle_degree) ((angle_degree) * M_PI / 180.0)</span></div><div class=\"line\"><a name=\"l00852\"></a><span class=\"lineno\">  852</span>&#160;<span class=\"preprocessor\">    #define _FBG_RADTODEG(angle_radians) ((angle_radians) * 180.0 / M_PI)</span></div><div class=\"line\"><a name=\"l00854\"></a><span class=\"lineno\">  854</span>&#160;</div><div class=\"line\"><a name=\"l00855\"></a><span class=\"lineno\"><a class=\"line\" href=\"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\">  855</a></span>&#160;<span class=\"preprocessor\">    #define _FBG_SOURCE_OVER(a,b,c) (c * a + b * (1.f - a))</span></div><div class=\"line\"><a name=\"l00856\"></a><span class=\"lineno\">  856</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"fbgraphics_8h_html_a5eb0caaedd56ed29a1ef1f7941f414d7\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">_fbg_rgb::b</a></div><div class=\"ttdeci\">unsigned char b</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00077\">fbgraphics.h:77</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3233e3de8fc3ad06391641241c77a1ea\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbg_text</a></div><div class=\"ttdeci\">void fbg_text(struct _fbg *fbg, struct _fbg_font *fnt, char *text, int x, int y, int r, int g, int b)</div><div class=\"ttdoc\">draw a text </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3610bf730319af99045283ea66955741\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbg_imageClip</a></div><div class=\"ttdeci\">void fbg_imageClip(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cx, int cy, int cw, int ch)</div><div class=\"ttdoc\">draw a clipped image </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_afdcb72ae08437471569c4880fb43f20c\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbg_createFont</a></div><div class=\"ttdeci\">struct _fbg_font * fbg_createFont(struct _fbg *fbg, struct _fbg_img *img, int glyph_width, int glyph_height, unsigned char first_char)</div><div class=\"ttdoc\">create a bitmap font from an image </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a05730637b297339a1fe39db736335cff\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">_fbg_font::first_char</a></div><div class=\"ttdeci\">unsigned char first_char</div><div class=\"ttdoc\">First ASCII character of the bitmap font file. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00115\">fbgraphics.h:115</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a870987786121c51135f20b630d731abd\"><div class=\"ttname\"><a href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">_fbg::text_alpha</a></div><div class=\"ttdeci\">int text_alpha</div><div class=\"ttdoc\">Text background alpha value. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00159\">fbgraphics.h:159</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a70e747dee4eda4a434b746e2bbd14386\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\">fbg_setResizeCallback</a></div><div class=\"ttdeci\">void fbg_setResizeCallback(struct _fbg *fbg, void(*user_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height))</div><div class=\"ttdoc\">register a user resize callback </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_ac66a762877982c6f381a7cfd54a8f17e\"><div class=\"ttname\"><a href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">_fbg::user_draw</a></div><div class=\"ttdeci\">void(* user_draw)(struct _fbg *fbg)</div><div class=\"ttdoc\">User-defined draw function. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00215\">fbgraphics.h:215</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_ac9a25b7b2700bee151d8f9dc3e586487\"><div class=\"ttname\"><a href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">_fbg::initialize_buffers</a></div><div class=\"ttdeci\">int initialize_buffers</div><div class=\"ttdoc\">Wether to allow FBG to allocate its internal buffers. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00139\">fbgraphics.h:139</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1db77a2ef506723a575644dbc1cfb747\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">_fbg::components</a></div><div class=\"ttdeci\">int components</div><div class=\"ttdoc\">Display components amount (3 = 24 BPP / 4 = 32 BPP) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00176\">fbgraphics.h:176</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a907e7fc97965b972c17114c885e53735\"><div class=\"ttname\"><a href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">_fbg::back_buffer</a></div><div class=\"ttdeci\">unsigned char * back_buffer</div><div class=\"ttdoc\">Back buffer. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00131\">fbgraphics.h:131</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a112e427410882007fbcea78b0657c5f1\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\">fbg_drawFramerate</a></div><div class=\"ttdeci\">void fbg_drawFramerate(struct _fbg *fbg, struct _fbg_font *fnt, int task, int x, int y, int r, int g, int b)</div><div class=\"ttdoc\">draw the framerate of a particular parallel task </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a279be685895357ebda19f155ed405efc\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">_fbg_font::glyph_width</a></div><div class=\"ttdeci\">int glyph_width</div><div class=\"ttdoc\">Width of a glyph. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00110\">fbgraphics.h:110</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a728d5bc6d1ee11e127db8722fe3cbc18\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\">fbg_imageFlip</a></div><div class=\"ttdeci\">void fbg_imageFlip(struct _fbg_img *img)</div><div class=\"ttdoc\">flip an image vertically </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a731ce4c5439d16555aa6ec48751ecea6\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbg_loadImage</a></div><div class=\"ttdeci\">struct _fbg_img * fbg_loadImage(struct _fbg *fbg, const char *filename)</div><div class=\"ttdoc\">load an image (PNG or JPEG) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__rgb\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a></div><div class=\"ttdoc\">RGBA color data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00074\">fbgraphics.h:74</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a683be8ec38b9931754fe8501c4df3019\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">_fbg_rgb::a</a></div><div class=\"ttdeci\">unsigned char a</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00078\">fbgraphics.h:78</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_aab50cccf3eceac81bda220a0c09e38e0\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a></div><div class=\"ttdeci\">void fbg_clear(struct _fbg *fbg, unsigned char brightness)</div><div class=\"ttdoc\">fast grayscale background clearing </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a7165bceebbbe11332256d1bd4e179489\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\">fbg_textColorKey</a></div><div class=\"ttdeci\">void fbg_textColorKey(struct _fbg *fbg, unsigned char v)</div><div class=\"ttdoc\">set the current text color key </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a4be92c5b1376fb7f06de1529b0a43f7f\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\">fbg_loadPNG</a></div><div class=\"ttdeci\">struct _fbg_img * fbg_loadPNG(struct _fbg *fbg, const char *filename)</div><div class=\"ttdoc\">load a PNG image from a file (lodePNG library) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a8c36c8bfbfa3e589ea445d3197923823\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\">fbg_customSetup</a></div><div class=\"ttdeci\">struct _fbg * fbg_customSetup(int width, int height, int components, int initialize_buffers, int allow_resizing, void *user_context, void(*user_draw)(struct _fbg *fbg), void(*user_flip)(struct _fbg *fbg), void(*backend_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height), void(*user_free)(struct _fbg *fbg))</div><div class=\"ttdoc\">initialize a FB Graphics context (typically used by a custom rendering backend) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a84fb220d4804cba22176997898e75b73\"><div class=\"ttname\"><a href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">_fbg::size</a></div><div class=\"ttdeci\">int size</div><div class=\"ttdoc\">Framebuffer real data length (with BPP) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00125\">fbgraphics.h:125</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_acae7a4ff39407371a52ebf9ae4c260c1\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\">fbg_textColor</a></div><div class=\"ttdeci\">void fbg_textColor(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">set the current text color </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3974f2dce77af4058a1ae585f55c5bb8\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">_fbg_rgb::r</a></div><div class=\"ttdeci\">unsigned char r</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00075\">fbgraphics.h:75</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ad208d61ec4f50a5fd13f2cc8dd2ee0e5\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a></div><div class=\"ttdeci\">void fbg_rect(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a rectangle </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1d3c76643e4ee424f4d17e27991d5e2e\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">_fbg::width</a></div><div class=\"ttdeci\">int width</div><div class=\"ttdoc\">Display width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00170\">fbgraphics.h:170</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a5f656e76477d51b8faf039dd5baea65c\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\">fbg_fpixel</a></div><div class=\"ttdeci\">void fbg_fpixel(struct _fbg *fbg, int x, int y)</div><div class=\"ttdoc\">fast pixel drawing which use the fill color set by fbg_fill() </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a95859bd418a5cfff155cdb1421d295ef\"><div class=\"ttname\"><a href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">_fbg::new_width</a></div><div class=\"ttdeci\">int new_width</div><div class=\"ttdoc\">Requested new display width (resize event) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00183\">fbgraphics.h:183</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a509aa5f8f0a94d8313bb4da777aa64bc\"><div class=\"ttname\"><a href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">_fbg::new_height</a></div><div class=\"ttdeci\">int new_height</div><div class=\"ttdoc\">Requested new display height (resize event) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00185\">fbgraphics.h:185</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a3f2ad2eb06555cdbe2d18f541231cb37\"><div class=\"ttname\"><a href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">_fbg::user_flip</a></div><div class=\"ttdeci\">void(* user_flip)(struct _fbg *fbg)</div><div class=\"ttdoc\">User-defined flip function. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00213\">fbgraphics.h:213</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_ad7796d799a4ad67405101b8548d99ad8\"><div class=\"ttname\"><a href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">_fbg::allow_resizing</a></div><div class=\"ttdeci\">int allow_resizing</div><div class=\"ttdoc\">Wether to allow context resize. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00136\">fbgraphics.h:136</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a7246517249c3b27ed57f82a11da3c7d3\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\">_fbg_hsl::h</a></div><div class=\"ttdeci\">int h</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00084\">fbgraphics.h:84</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ab18823ca0e95ca51c5d6c69a48af8d0e\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbg_fadeDown</a></div><div class=\"ttdeci\">void fbg_fadeDown(struct _fbg *fbg, unsigned char rgb_fade_amount)</div><div class=\"ttdoc\">background fade to black with controllable factor </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_af8a1ee8d7004e6f2193f2a3ed98f8ce8\"><div class=\"ttname\"><a href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">_fbg::line_length</a></div><div class=\"ttdeci\">int line_length</div><div class=\"ttdoc\">Internal buffers line length. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00180\">fbgraphics.h:180</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a1ab3f10e8c3483d7286db9850511d46d\"><div class=\"ttname\"><a href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">_fbg::width_n_height</a></div><div class=\"ttdeci\">int width_n_height</div><div class=\"ttdoc\">Display lenght in pixels (width * height) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00174\">fbgraphics.h:174</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a1622b4cd13f223d161cd234ea1fe6125\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\">fbg_background</a></div><div class=\"ttdeci\">void fbg_background(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">clear the background with a color </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a3a3bd409e71d020fa77f69a541d832f8\"><div class=\"ttname\"><a href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">_fbg::height</a></div><div class=\"ttdeci\">int height</div><div class=\"ttdoc\">Display height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00172\">fbgraphics.h:172</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a83a99e5c8d44e2acf52cad38519ececf\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\">fbg_recta</a></div><div class=\"ttdeci\">void fbg_recta(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a)</div><div class=\"ttdoc\">draw a rectangle with alpha transparency </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ab996d65bce285a78c8a8f3ac99b40658\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\">_fbg_img::data</a></div><div class=\"ttdeci\">unsigned char * data</div><div class=\"ttdoc\">RGB image data (bpp depend on framebuffer settings) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00093\">fbgraphics.h:93</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a88d48b502672cfb8bd2c94ea3feac8d0\"><div class=\"ttname\"><a href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">_fbg::user_free</a></div><div class=\"ttdeci\">void(* user_free)(struct _fbg *fbg)</div><div class=\"ttdoc\">User-defined free function. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00217\">fbgraphics.h:217</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a0463af9bf583afe770b822c1fbb9a24d\"><div class=\"ttname\"><a href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">_fbg::temp_buffer</a></div><div class=\"ttdeci\">unsigned char * temp_buffer</div><div class=\"ttdoc\">Temporary buffer. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00133\">fbgraphics.h:133</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a8ba2088b60304afa9ee7ce1b39bff114\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\">fbg_imageColorkey</a></div><div class=\"ttdeci\">void fbg_imageColorkey(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cr, int cg, int cb)</div><div class=\"ttdoc\">draw an image with colorkeying support (image colorkey value will be ignored) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_aef07a92ae059ea2a43653f4d0c5d928e\"><div class=\"ttname\"><a href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">_fbg::backend_resize</a></div><div class=\"ttdeci\">void(* backend_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height)</div><div class=\"ttdoc\">Backend resize function. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00209\">fbgraphics.h:209</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_aaf344cf56286931ee7a4a0e5fce920fc\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\">fbg_rgbToHsl</a></div><div class=\"ttdeci\">void fbg_rgbToHsl(struct _fbg_hsl *color, float r, float g, float b)</div><div class=\"ttdoc\">convert RGB values to HSL color </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3604f59f02b47730a47a2fc15644d61e\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbg_pushResize</a></div><div class=\"ttdeci\">void fbg_pushResize(struct _fbg *fbg, int new_width, int new_height)</div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_aedfec23bc4c51ff5ffb843bb289d448b\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbg_flip</a></div><div class=\"ttdeci\">void fbg_flip(struct _fbg *fbg)</div><div class=\"ttdoc\">flip the buffers </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a390cd3fb535cbad76856700a035ed401\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbg_close</a></div><div class=\"ttdeci\">void fbg_close(struct _fbg *fbg)</div><div class=\"ttdoc\">free up the memory associated with a FB Graphics context and close the framebuffer device ...</div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a2a5a2ef48f5b26794473c51082fb75ab\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\">fbg_polygon</a></div><div class=\"ttdeci\">void fbg_polygon(struct _fbg *fbg, int num_vertices, int *vertices, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a polygon </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a600d896c04feec33d001662ca23e50ad\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\">fbg_image</a></div><div class=\"ttdeci\">void fbg_image(struct _fbg *fbg, struct _fbg_img *img, int x, int y)</div><div class=\"ttdoc\">draw an image </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a8125b5b37979f803c4640d9864fadbab\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\">fbg_getFramerate</a></div><div class=\"ttdeci\">int fbg_getFramerate(struct _fbg *fbg, int task)</div><div class=\"ttdoc\">get the framerate of a particular task </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ac1ccfb0069d4567313391dc819ada76b\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\">fbg_textFont</a></div><div class=\"ttdeci\">void fbg_textFont(struct _fbg *fbg, struct _fbg_font *font)</div><div class=\"ttdoc\">set the current font </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a929f320fae39630e84bd1c949b9d845d\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\">_fbg_font::glyph_coord_y</a></div><div class=\"ttdeci\">int * glyph_coord_y</div><div class=\"ttdoc\">Pre-computed Y glyphs coordinates. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00107\">fbgraphics.h:107</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a7d81b1ddf54b0d4da0f30e36d7e2f3bb\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbg_pixel</a></div><div class=\"ttdeci\">void fbg_pixel(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a pixel </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a0e7995b285b04f41d883165b0e7e387f\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\">_fbg_font::bitmap</a></div><div class=\"ttdeci\">struct _fbg_img * bitmap</div><div class=\"ttdoc\">Associated font image data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00118\">fbgraphics.h:118</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a2dfb2f17bc31e161868e6baf1c391816\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a></div><div class=\"ttdeci\">void fbg_draw(struct _fbg *fbg)</div><div class=\"ttdoc\">draw to the screen </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a22a62f07da21ac2ef92365718104348f\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\">_fbg_hsl::s</a></div><div class=\"ttdeci\">float s</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00085\">fbgraphics.h:85</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a19d56a111248b7f7d52f4bc6392d3743\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\">fbg_fadeUp</a></div><div class=\"ttdeci\">void fbg_fadeUp(struct _fbg *fbg, unsigned char rgb_fade_amount)</div><div class=\"ttdoc\">background fade to white with controllable factor </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_ae3ecac18abee9dedabacaca9bb063bde\"><div class=\"ttname\"><a href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">_fbg::user_context</a></div><div class=\"ttdeci\">void * user_context</div><div class=\"ttdoc\">User-defined context structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00219\">fbgraphics.h:219</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a737482b6170ea3273d6679fdca63a27c\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbg_freeImage</a></div><div class=\"ttdeci\">void fbg_freeImage(struct _fbg_img *img)</div><div class=\"ttdoc\">free the memory associated with an image </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a68add70dac4b055809c1bcab1e65b18d\"><div class=\"ttname\"><a href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">_fbg::user_resize</a></div><div class=\"ttdeci\">void(* user_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height)</div><div class=\"ttdoc\">User-defined resize function. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00211\">fbgraphics.h:211</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a405724441abc0190dea559bf11b8b174\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\">_fbg_hsl::l</a></div><div class=\"ttdeci\">float l</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00086\">fbgraphics.h:86</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a224b9ae07cc8fcd8c497b1d5f7007b66\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\">fbg_fill</a></div><div class=\"ttdeci\">void fbg_fill(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">set the filling color for fast drawing operations </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ac6293cb3d118f0ccdde38c13cbefa9db\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">_fbg_img::height</a></div><div class=\"ttdeci\">unsigned int height</div><div class=\"ttdoc\">Image height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00098\">fbgraphics.h:98</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3b11d9dc4724e8b789509882d4cff87e\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">_fbg_font::glyph_height</a></div><div class=\"ttdeci\">int glyph_height</div><div class=\"ttdoc\">Height of a glyph. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00112\">fbgraphics.h:112</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_aae823fe76a206cbc1fdd405c13d26830\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbg_freeFont</a></div><div class=\"ttdeci\">void fbg_freeFont(struct _fbg_font *font)</div><div class=\"ttdoc\">free the memory associated with a font </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a06e65293cf0b48e70d76d63f5de453e6\"><div class=\"ttname\"><a href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">_fbg::text_colorkey</a></div><div class=\"ttdeci\">unsigned char text_colorkey</div><div class=\"ttdoc\">Current text color key. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00155\">fbgraphics.h:155</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ad05affc24eed0b9f906d6926b8f02fec\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\">fbg_loadJPEG</a></div><div class=\"ttdeci\">struct _fbg_img * fbg_loadJPEG(struct _fbg *fbg, const char *filename)</div><div class=\"ttdoc\">load a JPEG image from a file (NanoJPEG library) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ac037925696a8bfab4163e011731a76a4\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\">fbg_hslToRGB</a></div><div class=\"ttdeci\">void fbg_hslToRGB(struct _fbg_rgb *color, float h, float s, float l)</div><div class=\"ttdoc\">convert HSL values to RGB color </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a7c2e64d2f40575c8a989c759c30acb0e\"><div class=\"ttname\"><a href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">_fbg::comp_offset</a></div><div class=\"ttdeci\">int comp_offset</div><div class=\"ttdoc\">Offset to add in case of 32 BPP. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00178\">fbgraphics.h:178</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html\"><div class=\"ttname\"><a href=\"struct__fbg.html\">_fbg</a></div><div class=\"ttdoc\">FB Graphics context data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00123\">fbgraphics.h:123</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a08c6a08afcb5bd07793801554b8f0bfe\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\">fbg_pixela</a></div><div class=\"ttdeci\">void fbg_pixela(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b, unsigned char a)</div><div class=\"ttdoc\">draw a pixel with alpha component (alpha blending) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_adda2a3ebc3a63cc275c78c61e62ce437\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\">fbg_drawInto</a></div><div class=\"ttdeci\">void fbg_drawInto(struct _fbg *fbg, unsigned char *buffer)</div><div class=\"ttdoc\">set an offscreen target for all subsequent fbg context draw calls, it is important to reset back to d...</div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_aedca9d7bf294d143f860d2f0ddcd528c\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\">fbg_randf</a></div><div class=\"ttdeci\">float fbg_randf(float min, float max)</div><div class=\"ttdoc\">pseudo random number between min / max </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a73d04c86a962adfeac115c18c231eae1\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">_fbg_rgb::g</a></div><div class=\"ttdeci\">unsigned char g</div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00076\">fbgraphics.h:76</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a64b16363bc48d1e19141df2e242930a9\"><div class=\"ttname\"><a href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">_fbg::fps</a></div><div class=\"ttdeci\">int16_t fps</div><div class=\"ttdoc\">Current FPS. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00191\">fbgraphics.h:191</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a6e666c23aea3d07ee2c8c9f83f25eed2\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">_fbg_img::width</a></div><div class=\"ttdeci\">unsigned int width</div><div class=\"ttdoc\">Image width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00096\">fbgraphics.h:96</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__font\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a></div><div class=\"ttdoc\">Bitmap font data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00103\">fbgraphics.h:103</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a3c4fb5fa694646ec66b50a32eaf38557\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\">fbg_vline</a></div><div class=\"ttdeci\">void fbg_vline(struct _fbg *fbg, int x, int y, int h, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a vertical line </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a2e82acd949a5c12a1fa494fb4c028ff1\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\">fbg_textBackground</a></div><div class=\"ttdeci\">void fbg_textBackground(struct _fbg *fbg, int r, int g, int b, int a)</div><div class=\"ttdoc\">set the current text background color (based on colorkey value!) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a1e3ebfcc75e055a24f1a0f5765936d16\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\">fbg_createImage</a></div><div class=\"ttdeci\">struct _fbg_img * fbg_createImage(struct _fbg *fbg, unsigned int width, unsigned int height)</div><div class=\"ttdoc\">create an empty image </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__hsl\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__hsl\">_fbg_hsl</a></div><div class=\"ttdoc\">HSL color data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00083\">fbgraphics.h:83</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a5844c5bf4789117cbc0c972ff160b338\"><div class=\"ttname\"><a href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">_fbg::bgr</a></div><div class=\"ttdeci\">int bgr</div><div class=\"ttdoc\">Flag indicating a BGR framebuffer. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00206\">fbgraphics.h:206</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_aa20614c94c7235bc5bc105b6e71e1be8\"><div class=\"ttname\"><a href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">_fbg::disp_buffer</a></div><div class=\"ttdeci\">unsigned char * disp_buffer</div><div class=\"ttdoc\">Front / display buffer. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00128\">fbgraphics.h:128</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a990acac7dcc899656dc87c98404af777\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\">fbg_plot</a></div><div class=\"ttdeci\">void fbg_plot(struct _fbg *fbg, int index, unsigned char value)</div><div class=\"ttdoc\">direct pixel access from index value </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_struct__fbg__img\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a></div><div class=\"ttdoc\">Image data structure. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00091\">fbgraphics.h:91</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_ad0c3a773dcab62f514726b03e54ad692\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbg_imageEx</a></div><div class=\"ttdeci\">void fbg_imageEx(struct _fbg *fbg, struct _fbg_img *img, int x, int y, float sx, float sy, int cx, int cy, int cw, int ch)</div><div class=\"ttdoc\">draw an image with support for clipping and scaling (Nearest-neighbor algorithm) </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a0558e4513da1d844526d54afea4d1531\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\">fbg_hline</a></div><div class=\"ttdeci\">void fbg_hline(struct _fbg *fbg, int x, int y, int w, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a horizontal line </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a00509b4956e358ae3f9135151c1e524a\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbg_resize</a></div><div class=\"ttdeci\">void fbg_resize(struct _fbg *fbg, int new_width, int new_height)</div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a416971e772c114423b6c037f81d6f5ea\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\">fbg_getPixel</a></div><div class=\"ttdeci\">void fbg_getPixel(struct _fbg *fbg, int x, int y, struct _fbg_rgb *color)</div><div class=\"ttdoc\">get the RGB value of a pixel </div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a46f7354a04a7bfb7467d25394ce38303\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\">fbg_line</a></div><div class=\"ttdeci\">void fbg_line(struct _fbg *fbg, int x1, int y1, int x2, int y2, unsigned char r, unsigned char g, unsigned char b)</div><div class=\"ttdoc\">draw a line from two points (Bresenham algorithm) </div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_a7090d672982fe465f2186dbfea384d32\"><div class=\"ttname\"><a href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">_fbg::compositing</a></div><div class=\"ttdeci\">int compositing</div><div class=\"ttdoc\">Compositing method (only used with fbg_drawImage for now) </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00167\">fbgraphics.h:167</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a1a9dc1b888e744c8e8d69f1a39d7a0b3\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\">_fbg_font::glyph_coord_x</a></div><div class=\"ttdeci\">int * glyph_coord_x</div><div class=\"ttdoc\">Pre-computed X glyphs coordinates. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00105\">fbgraphics.h:105</a></div></div>\n<div class=\"ttc\" id=\"struct__fbg_html_aa3ef83f919d12e680f8c64006b441454\"><div class=\"ttname\"><a href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">_fbg::frame</a></div><div class=\"ttdeci\">int frame</div><div class=\"ttdoc\">Frame counter for the current second. </div><div class=\"ttdef\"><b>Definition:</b> <a href=\"fbgraphics_8h_source.html#l00203\">fbgraphics.h:203</a></div></div>\n<div class=\"ttc\" id=\"fbgraphics_8h_html_a543755814e43b77b0beebea7a08457db\"><div class=\"ttname\"><a href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\">fbg_frect</a></div><div class=\"ttdeci\">void fbg_frect(struct _fbg *fbg, int x, int y, int w, int h)</div><div class=\"ttdoc\">fast rectangle drawing which use the fill color set by fbg_fill() </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/fbgraphics_8h_struct__fbg__font.js",
    "content": "var fbgraphics_8h_struct__fbg__font =\n[\n    [ \"bitmap\", \"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\", null ],\n    [ \"first_char\", \"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\", null ],\n    [ \"glyph_coord_x\", \"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\", null ],\n    [ \"glyph_coord_y\", \"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\", null ],\n    [ \"glyph_height\", \"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\", null ],\n    [ \"glyph_width\", \"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\", null ]\n];"
  },
  {
    "path": "docs/fbgraphics_8h_struct__fbg__hsl.js",
    "content": "var fbgraphics_8h_struct__fbg__hsl =\n[\n    [ \"h\", \"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\", null ],\n    [ \"l\", \"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\", null ],\n    [ \"s\", \"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\", null ]\n];"
  },
  {
    "path": "docs/fbgraphics_8h_struct__fbg__img.js",
    "content": "var fbgraphics_8h_struct__fbg__img =\n[\n    [ \"data\", \"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\", null ],\n    [ \"height\", \"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\", null ],\n    [ \"width\", \"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\", null ]\n];"
  },
  {
    "path": "docs/fbgraphics_8h_struct__fbg__rgb.js",
    "content": "var fbgraphics_8h_struct__fbg__rgb =\n[\n    [ \"a\", \"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\", null ],\n    [ \"b\", \"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\", null ],\n    [ \"g\", \"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\", null ],\n    [ \"r\", \"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\", null ]\n];"
  },
  {
    "path": "docs/files.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: File List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">File List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all files with brief descriptions:</div><div class=\"directory\">\n<table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbg__dispmanx_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbg__dispmanx_8h.html\" target=\"_self\">fbg_dispmanx.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbg__fbdev_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbg__fbdev_8h.html\" target=\"_self\">fbg_fbdev.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbg__gba_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbg__gba_8h.html\" target=\"_self\">fbg_gba.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbg__glfw_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbg__glfw_8h.html\" target=\"_self\">fbg_glfw.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbg__opengl__es2_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbg__opengl__es2_8h.html\" target=\"_self\">fbg_opengl_es2.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a href=\"fbgraphics_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fbgraphics_8h.html\" target=\"_self\">fbgraphics.h</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/files.js",
    "content": "var files =\n[\n    [ \"fbg_dispmanx.h\", \"fbg__dispmanx_8h.html\", \"fbg__dispmanx_8h\" ],\n    [ \"fbg_fbdev.h\", \"fbg__fbdev_8h.html\", \"fbg__fbdev_8h\" ],\n    [ \"fbg_gba.h\", \"fbg__gba_8h.html\", \"fbg__gba_8h\" ],\n    [ \"fbg_glfw.h\", \"fbg__glfw_8h.html\", \"fbg__glfw_8h\" ],\n    [ \"fbg_opengl_es2.h\", \"fbg__opengl__es2_8h.html\", \"fbg__opengl__es2_8h\" ],\n    [ \"fbgraphics.h\", \"fbgraphics_8h.html\", \"fbgraphics_8h\" ]\n];"
  },
  {
    "path": "docs/functions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Data Fields</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div>\n\n<h3><a id=\"index_a\"></a>- a -</h3><ul>\n<li>a\n: <a class=\"el\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">_fbg_rgb</a>\n</li>\n<li>allow_resizing\n: <a class=\"el\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_b\"></a>- b -</h3><ul>\n<li>b\n: <a class=\"el\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">_fbg_rgb</a>\n</li>\n<li>back_buffer\n: <a class=\"el\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">_fbg</a>\n</li>\n<li>back_resource\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">_fbg_dispmanx_context</a>\n</li>\n<li>backend_resize\n: <a class=\"el\" href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">_fbg</a>\n</li>\n<li>bgr\n: <a class=\"el\" href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">_fbg</a>\n</li>\n<li>bitmap\n: <a class=\"el\" href=\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\">_fbg_font</a>\n</li>\n<li>buffer\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\">_fbg_gba_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_c\"></a>- c -</h3><ul>\n<li>cbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\">_fbg_vbo_data</a>\n</li>\n<li>comp_offset\n: <a class=\"el\" href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">_fbg</a>\n</li>\n<li>components\n: <a class=\"el\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">_fbg</a>\n</li>\n<li>compositing\n: <a class=\"el\" href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">_fbg</a>\n</li>\n<li>current_font\n: <a class=\"el\" href=\"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_d\"></a>- d -</h3><ul>\n<li>data\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\">_fbg_img</a>\n</li>\n<li>disp_buffer\n: <a class=\"el\" href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">_fbg</a>\n</li>\n<li>display\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\">_fbg_dispmanx_context</a>\n</li>\n<li>dst_rect\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_e\"></a>- e -</h3><ul>\n<li>egl_context\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\">_fbg_gles2_context</a>\n</li>\n<li>egl_display\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\">_fbg_gles2_context</a>\n</li>\n<li>egl_image\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\">_fbg_gles2_context</a>\n</li>\n<li>egl_surface\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\">_fbg_gles2_context</a>\n</li>\n<li>elem\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>fbg_texture\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\">_fbg_glfw_context</a>\n</li>\n<li>fbg_vao\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\">_fbg_glfw_context</a>\n</li>\n<li>fbg_vbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\">_fbg_gles2_context</a>\n</li>\n<li>fd\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\">_fbg_gles2_context</a>\n</li>\n<li>fill_color\n: <a class=\"el\" href=\"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\">_fbg</a>\n</li>\n<li>finfo\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\">_fbg_fbdev_context</a>\n</li>\n<li>first_char\n: <a class=\"el\" href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">_fbg_font</a>\n</li>\n<li>fps\n: <a class=\"el\" href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">_fbg</a>\n</li>\n<li>fps_char\n: <a class=\"el\" href=\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\">_fbg</a>\n</li>\n<li>fps_start\n: <a class=\"el\" href=\"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\">_fbg</a>\n</li>\n<li>fps_stop\n: <a class=\"el\" href=\"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\">_fbg</a>\n</li>\n<li>frame\n: <a class=\"el\" href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">_fbg</a>\n</li>\n<li>front_resource\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_g\"></a>- g -</h3><ul>\n<li>g\n: <a class=\"el\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">_fbg_rgb</a>\n</li>\n<li>glyph_coord_x\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\">_fbg_font</a>\n</li>\n<li>glyph_coord_y\n: <a class=\"el\" href=\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\">_fbg_font</a>\n</li>\n<li>glyph_height\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">_fbg_font</a>\n</li>\n<li>glyph_width\n: <a class=\"el\" href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">_fbg_font</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_h\"></a>- h -</h3><ul>\n<li>h\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\">_fbg_hsl</a>\n</li>\n<li>height\n: <a class=\"el\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">_fbg</a>\n, <a class=\"el\" href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">_fbg_img</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_i\"></a>- i -</h3><ul>\n<li>ibo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\">_fbg_vbo_data</a>\n</li>\n<li>initialize_buffers\n: <a class=\"el\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_l\"></a>- l -</h3><ul>\n<li>l\n: <a class=\"el\" href=\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\">_fbg_hsl</a>\n</li>\n<li>line_length\n: <a class=\"el\" href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_m\"></a>- m -</h3><ul>\n<li>mode\n: <a class=\"el\" href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">_fbg_gba_context</a>\n</li>\n<li>monitor\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">_fbg_glfw_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_n\"></a>- n -</h3><ul>\n<li>nbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\">_fbg_vbo_data</a>\n</li>\n<li>new_height\n: <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">_fbg</a>\n</li>\n<li>new_width\n: <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_o\"></a>- o -</h3><ul>\n<li>opt_flip\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_p\"></a>- p -</h3><ul>\n<li>page_flipping\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">_fbg_fbdev_context</a>\n</li>\n<li>pitch\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_r\"></a>- r -</h3><ul>\n<li>r\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">_fbg_rgb</a>\n</li>\n<li>resource_type\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_s\"></a>- s -</h3><ul>\n<li>s\n: <a class=\"el\" href=\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\">_fbg_hsl</a>\n</li>\n<li>simple_program\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\">_fbg_glfw_context</a>\n</li>\n<li>size\n: <a class=\"el\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">_fbg</a>\n</li>\n<li>src_rect\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_t\"></a>- t -</h3><ul>\n<li>tbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\">_fbg_vbo_data</a>\n</li>\n<li>temp_buffer\n: <a class=\"el\" href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">_fbg</a>\n</li>\n<li>text_alpha\n: <a class=\"el\" href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">_fbg</a>\n</li>\n<li>text_background\n: <a class=\"el\" href=\"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\">_fbg</a>\n</li>\n<li>text_color\n: <a class=\"el\" href=\"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\">_fbg</a>\n</li>\n<li>text_colorkey\n: <a class=\"el\" href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_u\"></a>- u -</h3><ul>\n<li>update\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">_fbg_dispmanx_context</a>\n</li>\n<li>update_buffer\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\">_fbg_glfw_context</a>\n</li>\n<li>user_context\n: <a class=\"el\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">_fbg</a>\n</li>\n<li>user_draw\n: <a class=\"el\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">_fbg</a>\n</li>\n<li>user_flip\n: <a class=\"el\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">_fbg</a>\n</li>\n<li>user_free\n: <a class=\"el\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">_fbg</a>\n</li>\n<li>user_resize\n: <a class=\"el\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_v\"></a>- v -</h3><ul>\n<li>vbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\">_fbg_vbo_data</a>\n</li>\n<li>vinfo\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\">_fbg_gles2_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_w\"></a>- w -</h3><ul>\n<li>width\n: <a class=\"el\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">_fbg</a>\n, <a class=\"el\" href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">_fbg_img</a>\n</li>\n<li>width_n_height\n: <a class=\"el\" href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">_fbg</a>\n</li>\n<li>window\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\">_fbg_glfw_context</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Data Fields - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\"></a>- a -</h3><ul>\n<li>a\n: <a class=\"el\" href=\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\">_fbg_rgb</a>\n</li>\n<li>allow_resizing\n: <a class=\"el\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_b\"></a>- b -</h3><ul>\n<li>b\n: <a class=\"el\" href=\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\">_fbg_rgb</a>\n</li>\n<li>back_buffer\n: <a class=\"el\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">_fbg</a>\n</li>\n<li>back_resource\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">_fbg_dispmanx_context</a>\n</li>\n<li>backend_resize\n: <a class=\"el\" href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">_fbg</a>\n</li>\n<li>bgr\n: <a class=\"el\" href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">_fbg</a>\n</li>\n<li>bitmap\n: <a class=\"el\" href=\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\">_fbg_font</a>\n</li>\n<li>buffer\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\">_fbg_gba_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_c\"></a>- c -</h3><ul>\n<li>cbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\">_fbg_vbo_data</a>\n</li>\n<li>comp_offset\n: <a class=\"el\" href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">_fbg</a>\n</li>\n<li>components\n: <a class=\"el\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">_fbg</a>\n</li>\n<li>compositing\n: <a class=\"el\" href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">_fbg</a>\n</li>\n<li>current_font\n: <a class=\"el\" href=\"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_d\"></a>- d -</h3><ul>\n<li>data\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\">_fbg_img</a>\n</li>\n<li>disp_buffer\n: <a class=\"el\" href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">_fbg</a>\n</li>\n<li>display\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\">_fbg_dispmanx_context</a>\n</li>\n<li>dst_rect\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_e\"></a>- e -</h3><ul>\n<li>egl_context\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\">_fbg_gles2_context</a>\n</li>\n<li>egl_display\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\">_fbg_gles2_context</a>\n</li>\n<li>egl_image\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\">_fbg_gles2_context</a>\n</li>\n<li>egl_surface\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\">_fbg_gles2_context</a>\n</li>\n<li>elem\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>fbg_texture\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\">_fbg_glfw_context</a>\n</li>\n<li>fbg_vao\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\">_fbg_glfw_context</a>\n</li>\n<li>fbg_vbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\">_fbg_gles2_context</a>\n</li>\n<li>fd\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\">_fbg_gles2_context</a>\n</li>\n<li>fill_color\n: <a class=\"el\" href=\"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\">_fbg</a>\n</li>\n<li>finfo\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\">_fbg_fbdev_context</a>\n</li>\n<li>first_char\n: <a class=\"el\" href=\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\">_fbg_font</a>\n</li>\n<li>fps\n: <a class=\"el\" href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">_fbg</a>\n</li>\n<li>fps_char\n: <a class=\"el\" href=\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\">_fbg</a>\n</li>\n<li>fps_start\n: <a class=\"el\" href=\"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\">_fbg</a>\n</li>\n<li>fps_stop\n: <a class=\"el\" href=\"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\">_fbg</a>\n</li>\n<li>frame\n: <a class=\"el\" href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">_fbg</a>\n</li>\n<li>front_resource\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_g\"></a>- g -</h3><ul>\n<li>g\n: <a class=\"el\" href=\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\">_fbg_rgb</a>\n</li>\n<li>glyph_coord_x\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\">_fbg_font</a>\n</li>\n<li>glyph_coord_y\n: <a class=\"el\" href=\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\">_fbg_font</a>\n</li>\n<li>glyph_height\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\">_fbg_font</a>\n</li>\n<li>glyph_width\n: <a class=\"el\" href=\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\">_fbg_font</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_h\"></a>- h -</h3><ul>\n<li>h\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\">_fbg_hsl</a>\n</li>\n<li>height\n: <a class=\"el\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">_fbg</a>\n, <a class=\"el\" href=\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\">_fbg_img</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_i\"></a>- i -</h3><ul>\n<li>ibo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\">_fbg_vbo_data</a>\n</li>\n<li>initialize_buffers\n: <a class=\"el\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_l\"></a>- l -</h3><ul>\n<li>l\n: <a class=\"el\" href=\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\">_fbg_hsl</a>\n</li>\n<li>line_length\n: <a class=\"el\" href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_m\"></a>- m -</h3><ul>\n<li>mode\n: <a class=\"el\" href=\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\">_fbg_gba_context</a>\n</li>\n<li>monitor\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\">_fbg_glfw_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_n\"></a>- n -</h3><ul>\n<li>nbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\">_fbg_vbo_data</a>\n</li>\n<li>new_height\n: <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">_fbg</a>\n</li>\n<li>new_width\n: <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_o\"></a>- o -</h3><ul>\n<li>opt_flip\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_p\"></a>- p -</h3><ul>\n<li>page_flipping\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\">_fbg_fbdev_context</a>\n</li>\n<li>pitch\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_r\"></a>- r -</h3><ul>\n<li>r\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\">_fbg_rgb</a>\n</li>\n<li>resource_type\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_s\"></a>- s -</h3><ul>\n<li>s\n: <a class=\"el\" href=\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\">_fbg_hsl</a>\n</li>\n<li>simple_program\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\">_fbg_glfw_context</a>\n</li>\n<li>size\n: <a class=\"el\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">_fbg</a>\n</li>\n<li>src_rect\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">_fbg_dispmanx_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_t\"></a>- t -</h3><ul>\n<li>tbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\">_fbg_vbo_data</a>\n</li>\n<li>temp_buffer\n: <a class=\"el\" href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">_fbg</a>\n</li>\n<li>text_alpha\n: <a class=\"el\" href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">_fbg</a>\n</li>\n<li>text_background\n: <a class=\"el\" href=\"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\">_fbg</a>\n</li>\n<li>text_color\n: <a class=\"el\" href=\"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\">_fbg</a>\n</li>\n<li>text_colorkey\n: <a class=\"el\" href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_u\"></a>- u -</h3><ul>\n<li>update\n: <a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">_fbg_dispmanx_context</a>\n</li>\n<li>update_buffer\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\">_fbg_gles2_context</a>\n, <a class=\"el\" href=\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\">_fbg_glfw_context</a>\n</li>\n<li>user_context\n: <a class=\"el\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">_fbg</a>\n</li>\n<li>user_draw\n: <a class=\"el\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">_fbg</a>\n</li>\n<li>user_flip\n: <a class=\"el\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">_fbg</a>\n</li>\n<li>user_free\n: <a class=\"el\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">_fbg</a>\n</li>\n<li>user_resize\n: <a class=\"el\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">_fbg</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_v\"></a>- v -</h3><ul>\n<li>vbo\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\">_fbg_vbo_data</a>\n</li>\n<li>vinfo\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\">_fbg_fbdev_context</a>\n, <a class=\"el\" href=\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\">_fbg_gles2_context</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_w\"></a>- w -</h3><ul>\n<li>width\n: <a class=\"el\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">_fbg</a>\n, <a class=\"el\" href=\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\">_fbg_img</a>\n</li>\n<li>width_n_height\n: <a class=\"el\" href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">_fbg</a>\n</li>\n<li>window\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\">_fbg_glfw_context</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/globals.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Globals</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>\n\n<h3><a id=\"index__\"></a>- _ -</h3><ul>\n<li>_FBG_DEGTORAD\n: <a class=\"el\" href=\"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\">fbgraphics.h</a>\n</li>\n<li>_FBG_MAX\n: <a class=\"el\" href=\"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\">fbgraphics.h</a>\n</li>\n<li>_FBG_MIN\n: <a class=\"el\" href=\"fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7\">fbgraphics.h</a>\n</li>\n<li>_FBG_RADTODEG\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347\">fbgraphics.h</a>\n</li>\n<li>_FBG_SGN\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390\">fbgraphics.h</a>\n</li>\n<li>_FBG_SOURCE_OVER\n: <a class=\"el\" href=\"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\">fbgraphics.h</a>\n</li>\n</ul>\n\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>fbg_background()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\">fbgraphics.h</a>\n</li>\n<li>fbg_clear()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbgraphics.h</a>\n</li>\n<li>fbg_close()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbgraphics.h</a>\n</li>\n<li>fbg_createFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbgraphics.h</a>\n</li>\n<li>fbg_createImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\">fbgraphics.h</a>\n</li>\n<li>fbg_customSetup()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\">fbgraphics.h</a>\n</li>\n<li>fbg_dispmanxOnFlip()\n: <a class=\"el\" href=\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\">fbg_dispmanx.h</a>\n</li>\n<li>fbg_dispmanxSetup()\n: <a class=\"el\" href=\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\">fbg_dispmanx.h</a>\n</li>\n<li>fbg_draw()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbgraphics.h</a>\n</li>\n<li>fbg_drawFramerate()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\">fbgraphics.h</a>\n</li>\n<li>fbg_drawInto()\n: <a class=\"el\" href=\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\">fbgraphics.h</a>\n</li>\n<li>fbg_fade\n: <a class=\"el\" href=\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\">fbgraphics.h</a>\n</li>\n<li>fbg_fadeDown()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbgraphics.h</a>\n</li>\n<li>fbg_fadeUp()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\">fbgraphics.h</a>\n</li>\n<li>fbg_fbdevInit\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\">fbg_fbdev.h</a>\n</li>\n<li>fbg_fbdevSetup()\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdev.h</a>\n</li>\n<li>fbg_fill()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\">fbgraphics.h</a>\n</li>\n<li>fbg_flip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbgraphics.h</a>\n</li>\n<li>fbg_fpixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\">fbgraphics.h</a>\n</li>\n<li>fbg_frect()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\">fbgraphics.h</a>\n</li>\n<li>fbg_freeFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbgraphics.h</a>\n</li>\n<li>fbg_freeImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbgraphics.h</a>\n</li>\n<li>fbg_gbaSetup()\n: <a class=\"el\" href=\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\">fbg_gba.h</a>\n</li>\n<li>fbg_getFramerate()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\">fbgraphics.h</a>\n</li>\n<li>fbg_getPixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\">fbgraphics.h</a>\n</li>\n<li>fbg_gles2Clear()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgram()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgramFromFiles()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgramFromString()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateShader()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateShaderFromFile()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateTexture()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateTextureFromImage()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateVBO()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateVBOvu()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2FreeVBOData()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2Quad\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2Setup()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2ShouldClose()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2SimpleFs\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2SimpleVs\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2UpdateBuffer()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_glfwClear()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateFBO()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgram()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgramFromFiles()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgramFromString()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateShader()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateShaderFromFile()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateTexture()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateTextureFromImage()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateVAO()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateVAOvu()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwFullscreen()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwQuad\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwResize()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSetup()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwShouldClose()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSimpleFs\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSimpleVs\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwUpdateBuffer()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\">fbg_glfw.h</a>\n</li>\n<li>fbg_hline()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\">fbgraphics.h</a>\n</li>\n<li>fbg_hslToRGB()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\">fbgraphics.h</a>\n</li>\n<li>fbg_image()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\">fbgraphics.h</a>\n</li>\n<li>fbg_imageClip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbgraphics.h</a>\n</li>\n<li>fbg_imageColorkey()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\">fbgraphics.h</a>\n</li>\n<li>fbg_imageEx()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbgraphics.h</a>\n</li>\n<li>fbg_imageFlip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\">fbgraphics.h</a>\n</li>\n<li>fbg_imageScale\n: <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\">fbgraphics.h</a>\n</li>\n<li>fbg_line()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\">fbgraphics.h</a>\n</li>\n<li>fbg_loadImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbgraphics.h</a>\n</li>\n<li>fbg_loadJPEG()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\">fbgraphics.h</a>\n</li>\n<li>fbg_loadPNG()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\">fbgraphics.h</a>\n</li>\n<li>fbg_pixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbgraphics.h</a>\n</li>\n<li>fbg_pixela()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\">fbgraphics.h</a>\n</li>\n<li>fbg_plot()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\">fbgraphics.h</a>\n</li>\n<li>fbg_polygon()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\">fbgraphics.h</a>\n</li>\n<li>fbg_pushResize()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbgraphics.h</a>\n</li>\n<li>fbg_randf()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\">fbgraphics.h</a>\n</li>\n<li>fbg_rect()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbgraphics.h</a>\n</li>\n<li>fbg_recta()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\">fbgraphics.h</a>\n</li>\n<li>fbg_resize()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbgraphics.h</a>\n</li>\n<li>fbg_rgbToHsl()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\">fbgraphics.h</a>\n</li>\n<li>fbg_setResizeCallback()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\">fbgraphics.h</a>\n</li>\n<li>fbg_text()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbgraphics.h</a>\n</li>\n<li>fbg_textBackground()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\">fbgraphics.h</a>\n</li>\n<li>fbg_textColor()\n: <a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\">fbgraphics.h</a>\n</li>\n<li>fbg_textColorKey()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\">fbgraphics.h</a>\n</li>\n<li>fbg_textFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\">fbgraphics.h</a>\n</li>\n<li>fbg_vline()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\">fbgraphics.h</a>\n</li>\n<li>fbg_write\n: <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">fbgraphics.h</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/globals_defs.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Globals</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>_FBG_DEGTORAD\n: <a class=\"el\" href=\"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\">fbgraphics.h</a>\n</li>\n<li>_FBG_MAX\n: <a class=\"el\" href=\"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\">fbgraphics.h</a>\n</li>\n<li>_FBG_MIN\n: <a class=\"el\" href=\"fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7\">fbgraphics.h</a>\n</li>\n<li>_FBG_RADTODEG\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347\">fbgraphics.h</a>\n</li>\n<li>_FBG_SGN\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390\">fbgraphics.h</a>\n</li>\n<li>_FBG_SOURCE_OVER\n: <a class=\"el\" href=\"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\">fbgraphics.h</a>\n</li>\n<li>fbg_fade\n: <a class=\"el\" href=\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\">fbgraphics.h</a>\n</li>\n<li>fbg_fbdevInit\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\">fbg_fbdev.h</a>\n</li>\n<li>fbg_imageScale\n: <a class=\"el\" href=\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\">fbgraphics.h</a>\n</li>\n<li>fbg_write\n: <a class=\"el\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">fbgraphics.h</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/globals_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Globals</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>fbg_background()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\">fbgraphics.h</a>\n</li>\n<li>fbg_clear()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbgraphics.h</a>\n</li>\n<li>fbg_close()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbgraphics.h</a>\n</li>\n<li>fbg_createFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbgraphics.h</a>\n</li>\n<li>fbg_createImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\">fbgraphics.h</a>\n</li>\n<li>fbg_customSetup()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\">fbgraphics.h</a>\n</li>\n<li>fbg_dispmanxOnFlip()\n: <a class=\"el\" href=\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\">fbg_dispmanx.h</a>\n</li>\n<li>fbg_dispmanxSetup()\n: <a class=\"el\" href=\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\">fbg_dispmanx.h</a>\n</li>\n<li>fbg_draw()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbgraphics.h</a>\n</li>\n<li>fbg_drawFramerate()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\">fbgraphics.h</a>\n</li>\n<li>fbg_drawInto()\n: <a class=\"el\" href=\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\">fbgraphics.h</a>\n</li>\n<li>fbg_fadeDown()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\">fbgraphics.h</a>\n</li>\n<li>fbg_fadeUp()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\">fbgraphics.h</a>\n</li>\n<li>fbg_fbdevSetup()\n: <a class=\"el\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdev.h</a>\n</li>\n<li>fbg_fill()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\">fbgraphics.h</a>\n</li>\n<li>fbg_flip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbgraphics.h</a>\n</li>\n<li>fbg_fpixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\">fbgraphics.h</a>\n</li>\n<li>fbg_frect()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\">fbgraphics.h</a>\n</li>\n<li>fbg_freeFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbgraphics.h</a>\n</li>\n<li>fbg_freeImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbgraphics.h</a>\n</li>\n<li>fbg_gbaSetup()\n: <a class=\"el\" href=\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\">fbg_gba.h</a>\n</li>\n<li>fbg_getFramerate()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\">fbgraphics.h</a>\n</li>\n<li>fbg_getPixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\">fbgraphics.h</a>\n</li>\n<li>fbg_gles2Clear()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgram()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgramFromFiles()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateProgramFromString()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateShader()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateShaderFromFile()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateTexture()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateTextureFromImage()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateVBO()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2CreateVBOvu()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2FreeVBOData()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2Setup()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2ShouldClose()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2UpdateBuffer()\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_glfwClear()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateFBO()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgram()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgramFromFiles()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateProgramFromString()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateShader()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateShaderFromFile()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateTexture()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateTextureFromImage()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateVAO()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwCreateVAOvu()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwFullscreen()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwResize()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSetup()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwShouldClose()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwUpdateBuffer()\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\">fbg_glfw.h</a>\n</li>\n<li>fbg_hline()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\">fbgraphics.h</a>\n</li>\n<li>fbg_hslToRGB()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\">fbgraphics.h</a>\n</li>\n<li>fbg_image()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\">fbgraphics.h</a>\n</li>\n<li>fbg_imageClip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbgraphics.h</a>\n</li>\n<li>fbg_imageColorkey()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\">fbgraphics.h</a>\n</li>\n<li>fbg_imageEx()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\">fbgraphics.h</a>\n</li>\n<li>fbg_imageFlip()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\">fbgraphics.h</a>\n</li>\n<li>fbg_line()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\">fbgraphics.h</a>\n</li>\n<li>fbg_loadImage()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbgraphics.h</a>\n</li>\n<li>fbg_loadJPEG()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\">fbgraphics.h</a>\n</li>\n<li>fbg_loadPNG()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\">fbgraphics.h</a>\n</li>\n<li>fbg_pixel()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbgraphics.h</a>\n</li>\n<li>fbg_pixela()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\">fbgraphics.h</a>\n</li>\n<li>fbg_plot()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\">fbgraphics.h</a>\n</li>\n<li>fbg_polygon()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\">fbgraphics.h</a>\n</li>\n<li>fbg_pushResize()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\">fbgraphics.h</a>\n</li>\n<li>fbg_randf()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\">fbgraphics.h</a>\n</li>\n<li>fbg_rect()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbgraphics.h</a>\n</li>\n<li>fbg_recta()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\">fbgraphics.h</a>\n</li>\n<li>fbg_resize()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\">fbgraphics.h</a>\n</li>\n<li>fbg_rgbToHsl()\n: <a class=\"el\" href=\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\">fbgraphics.h</a>\n</li>\n<li>fbg_setResizeCallback()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\">fbgraphics.h</a>\n</li>\n<li>fbg_text()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\">fbgraphics.h</a>\n</li>\n<li>fbg_textBackground()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\">fbgraphics.h</a>\n</li>\n<li>fbg_textColor()\n: <a class=\"el\" href=\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\">fbgraphics.h</a>\n</li>\n<li>fbg_textColorKey()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\">fbgraphics.h</a>\n</li>\n<li>fbg_textFont()\n: <a class=\"el\" href=\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\">fbgraphics.h</a>\n</li>\n<li>fbg_vline()\n: <a class=\"el\" href=\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\">fbgraphics.h</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/globals_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: Globals</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>fbg_gles2Quad\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2SimpleFs\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_gles2SimpleVs\n: <a class=\"el\" href=\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\">fbg_opengl_es2.h</a>\n</li>\n<li>fbg_glfwQuad\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSimpleFs\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\">fbg_glfw.h</a>\n</li>\n<li>fbg_glfwSimpleVs\n: <a class=\"el\" href=\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\">fbg_glfw.h</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/graph_legend.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>My Project: Graph Legend</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">My Project\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Graph Legend</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<p>This page explains how to interpret the graphs that are generated by doxygen.</p>\n<p>Consider the following example: </p><div class=\"fragment\"><div class=\"line\">/*! Invisible class because of truncation */</div><div class=\"line\">class Invisible { };</div><div class=\"line\"></div><div class=\"line\">/*! Truncated class, inheritance relation is hidden */</div><div class=\"line\">class Truncated : public Invisible { };</div><div class=\"line\"></div><div class=\"line\">/* Class not documented with doxygen comments */</div><div class=\"line\">class Undocumented { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using public inheritance */</div><div class=\"line\">class PublicBase : public Truncated { };</div><div class=\"line\"></div><div class=\"line\">/*! A template class */</div><div class=\"line\">template&lt;class T&gt; class Templ { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using protected inheritance */</div><div class=\"line\">class ProtectedBase { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using private inheritance */</div><div class=\"line\">class PrivateBase { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is used by the Inherited class */</div><div class=\"line\">class Used { };</div><div class=\"line\"></div><div class=\"line\">/*! Super class that inherits a number of other classes */</div><div class=\"line\">class Inherited : public PublicBase,</div><div class=\"line\">                  protected ProtectedBase,</div><div class=\"line\">                  private PrivateBase,</div><div class=\"line\">                  public Undocumented,</div><div class=\"line\">                  public Templ&lt;int&gt;</div><div class=\"line\">{</div><div class=\"line\">  private:</div><div class=\"line\">    Used *m_usedClass;</div><div class=\"line\">};</div></div><!-- fragment --><p> This will result in the following graph:</p>\n<center><div class=\"image\">\n<img src=\"graph_legend.png\"/>\n</div>\n</center><p>The boxes in the above graph have the following meaning: </p>\n<ul>\n<li>\nA filled gray box represents the struct or class for which the graph is generated. </li>\n<li>\nA box with a black border denotes a documented struct or class. </li>\n<li>\nA box with a gray border denotes an undocumented struct or class. </li>\n<li>\nA box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>\n</ul>\n<p>The arrows have the following meaning: </p>\n<ul>\n<li>\nA dark blue arrow is used to visualize a public inheritance relation between two classes. </li>\n<li>\nA dark green arrow is used for protected inheritance. </li>\n<li>\nA dark red arrow is used for private inheritance. </li>\n<li>\nA purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>\n<li>\nA yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/graph_legend.md5",
    "content": "387ff8eb65306fa251338d3c9bd7bfff"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><p>FBGraphics (FBG) is a simple C 24, 32 bpp (internal format) graphics library with parallelism and custom rendering backend support (graphics API agnostic).</p>\n<p>The library is only two .c files on most use cases, the renderer agnostic library <code>fbgraphics.c</code> and one of the rendering backend found in <code>custom_backend</code> directory.</p>\n<p>The library come with five backend (see <code>custom_backend</code> folder) :</p><ul>\n<li>a Linux framebuffer rendering backend (with 16 bpp support through 24/32 bpp conversion)</li>\n<li>OpenGL backend which use the <a href=\"http://www.glfw.org/\">GLFW</a> library</li>\n<li>OpenGL ES 2.0 backend for fbdev or Raspberry PI</li>\n<li>fast dispmanx backend (Video Core IV; Raspberry PI)</li>\n<li>GBA backend (slow due to 24/32 bpp -&gt; 16 bpp support, mostly done as a proof of concept for portability on low memory hardware)</li>\n</ul>\n<p>Features :</p>\n<ul>\n<li>Easy to write / use custom rendering backend support flexible enough to target low memory hardware!</li>\n<li>Cross-platform with the GLFW backend (some examples may need to be adapted to the target OS)</li>\n<li>Linux framebuffer (fbdev) rendering backend support<ul>\n<li>Double buffering (with optional page flipping mechanism)</li>\n<li>16, 24 (BGR/RGB), 32 bpp support</li>\n</ul>\n</li>\n<li>GBA rendering backend</li>\n<li>OpenGL rendering backend through GLFW</li>\n<li>OpenGL ES 2.0 rendering backend for Raspberry PI or through fbdev (tested on Nano PI Fire 3 board)</li>\n<li>dispmanx rendering backend (Video Core IV; Raspberry PI)</li>\n<li>Optional : Full parallelism, execute graphics code on multiple CPU cores <b>with a single function</b></li>\n<li>PNG/JPEG images loading (provided by <a href=\"https://lodev.org/lodepng/\">LodePNG</a> and <a href=\"http://keyj.emphy.de/nanojpeg/\">NanoJPEG</a>)</li>\n<li>Bitmap fonts for drawing texts</li>\n<li>Bare-metal graphics primitive (pixels, rectangles, lines, polygon)</li>\n<li>Easy to do fading, clipping and screen-clearing related effects (motion blur etc.)</li>\n<li>Drawing calls can be used to render into a specified target buffer such as fbg_image etc.</li>\n<li>Framerate tracking &amp; display for all cores</li>\n<li>Lightweight enough to be hackable; adapt to all kinds of needs (and still support parallelism easily)</li>\n</ul>\n<p>The library is generic, most functions (including parallel ones) only manipulate buffers and you can build a custom rendering backend pretty easily with few functions call, see the <code>custom_backend</code> folder.</p>\n<h1>Table of Contents </h1>\n<ul>\n<li>FBGraphics<ul>\n<li><a href=\"#about\">About</a><ul>\n<li><a href=\"#quickstart\">Quickstart</a></li>\n<li><a href=\"#parallelism\">Parallelism</a></li>\n<li><a href=\"#technical-implementation\">Technical implementation</a></li>\n</ul>\n</li>\n<li><a href=\"#benchmark\">Benchmark</a></li>\n<li><a href=\"#documentation\">Documentation</a></li>\n<li><a href=\"#building\">Building</a></li>\n<li><a href=\"#Rendering-backend\">Rendering backend</a></li>\n<li><a href=\"#GLFW-backend\">GLFW backend</a></li>\n<li><a href=\"#OpenGL-ES-2-backend\">OpenGL ES 2.0 backend</a></li>\n<li><a href=\"#screenshots\">Screenshots</a></li>\n<li><a href=\"#license\">License</a></li>\n</ul>\n</li>\n</ul>\n<h2>About</h2>\n<p>FBGraphics was built to produce fullscreen pixels effects easily (think of Processing-like creative coding etc.) with non-accelerated framebuffer by leveraging multi-core processors, it is a bit like a software GPU but much less complex and featured, the initial target platform was a Raspberry PI 3B / NanoPI.</p>\n<p>FBGraphics was extended to support any numbers of custom rendering backend; all graphics calls manipulate internal buffers and a simple interface allow to draw the result the way you want to.</p>\n<p>FBGraphics can support low memory hardware such as GBA. It should be noted that all internal buffers are manipulated in 24/32 bpp so it has to convert to 16bpp on GBA.</p>\n<p>An OpenGL rendering backend which use the <a href=\"http://www.glfw.org/\">GLFW library</a> was created to demonstrate the custom backend feature, it allow to draw the non-accelerated FB Graphics buffer into an OpenGL context through a texture and thus allow to interwine 3D or 2D graphics produced with standard OpenGL calls with CPU-only graphics produced by FBGraphics draw calls.</p>\n<p>An OpenGL ES 2.0 backend is also available with similar features, it target platforms with support for OpenGL ES 2.0 through fbdev (tested on Nano PI Fire 3 SBC) or Raspberry PI dispmanx and similar platforms, it wouldn't be hard to extend this for more OpenGL ES 2.0 platforms...</p>\n<p>There is also a dispmanx backend targeting Raspberry PI, it have better performances than the OpenGL ES 2 backend on this platform and is recommended if you don't need 3D stuff.</p>\n<p>FBGraphics was built so that it is possible to create any number of rendering context using different backend running at the same time while exploiting multi-core processors... the content of any rendering context can be transfered into other context through images when calling <code>fbg_drawInto</code></p>\n<p>FBGraphics framebuffer settings support 16, 24 (BGR/RGB), 32 bpp, 16 bpp mode is handled by converting from 24 bpp to 16 bpp upon drawing, page flipping mechanism is disabled in 16 bpp mode, <b>24 bpp is the fastest mode</b>.</p>\n<p>FBGraphics is lightweight and does not intend to be a fully featured graphics library, it provide a limited set of graphics primitive and a small set of useful functions to start doing computer graphics anywhere right away with or without multi-core support.</p>\n<p>If you want to use the parallelism features with advanced graphics primitives, take a look at great libraries such as <a href=\"http://libgd.github.io/\">libgd</a>, <a href=\"https://github.com/adafruit/Adafruit-GFX-Library\">Adafruit GFX library</a> or even <a href=\"https://imagemagick.org\">ImageMagick</a> which should be easy to integrate.</p>\n<p>FBGraphics is fast but should be used with caution, display bounds checking is not implemented on most primitives, this allow raw performances at the cost of crashs if not careful.</p>\n<p>Multi-core support is optional and is only enabled when <code>FBG_PARALLEL</code> C definition is present.</p>\n<p>FBGraphics framebuffer backend support a mechanism known as page flipping, it allow fast double buffering by doubling the framebuffer virtual area, it is disabled by default because it is actually slower on some devices. You can enable it with a <code>fbg_fbdevSetup</code> call.</p>\n<p>VSync is automatically enabled if supported.</p>\n<p><b>Note</b> : FBGraphics framebuffer backend does not let you setup the framebuffer, it expect the framebuffer to be configured prior launch with a command such as :</p>\n<div class=\"fragment\"><div class=\"line\">fbset -fb /dev/fb0 -g 512 240 512 240 24 -vsync high</div><div class=\"line\">setterm -cursor off &gt; /dev/tty0</div></div><!-- fragment --><p><code>fbset</code> should be available in your package manager.</p>\n<h3>Framebuffer Quickstart</h3>\n<p>The simplest example (no parallelism, without texts and images) :</p>\n<div class=\"fragment\"><div class=\"line\"><span class=\"preprocessor\">#include &lt;sys/stat.h&gt;</span></div><div class=\"line\"><span class=\"preprocessor\">#include &lt;signal.h&gt;</span></div><div class=\"line\"></div><div class=\"line\"><span class=\"preprocessor\">#include &quot;<a class=\"code\" href=\"fbg__fbdev_8h.html\">fbg_fbdev.h</a>&quot;</span></div><div class=\"line\"><span class=\"preprocessor\">#include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">int</span> keep_running = 1;</div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">void</span> int_handler(<span class=\"keywordtype\">int</span> dummy) {</div><div class=\"line\">    keep_running = 0;</div><div class=\"line\">}</div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">int</span> main(<span class=\"keywordtype\">int</span> argc, <span class=\"keywordtype\">char</span>* argv[]) {</div><div class=\"line\">    signal(SIGINT, int_handler);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg = <a class=\"code\" href=\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\">fbg_fbdevSetup</a>(<span class=\"stringliteral\">&quot;/dev/fb0&quot;</span>, 0); <span class=\"comment\">// you can also directly use fbg_fbdevInit(); for &quot;/dev/fb0&quot;, last argument mean that will not use page flipping mechanism  for double buffering (it is actually slower on some devices!)</span></div><div class=\"line\"></div><div class=\"line\">    <span class=\"keywordflow\">do</span> {</div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a>(fbg, 0); <span class=\"comment\">// can also be replaced by fbg_fill(fbg, 0, 0, 0);</span></div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a>(fbg, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a> / 2 - 32, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a> / 2 - 32, 16, 16, 0, 255, 0);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbg_pixel</a>(fbg, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a> / 2, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a> / 2, 255, 0, 0);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbg_flip</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">    } <span class=\"keywordflow\">while</span> (keep_running);</div><div class=\"line\"></div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbg_close</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keywordflow\">return</span> 0;</div><div class=\"line\">}</div></div><!-- fragment --><p>A simple quickstart example with most features (but no parallelism, see below) :</p>\n<div class=\"fragment\"><div class=\"line\"><span class=\"preprocessor\">#include &lt;sys/stat.h&gt;</span></div><div class=\"line\"><span class=\"preprocessor\">#include &lt;signal.h&gt;</span></div><div class=\"line\"></div><div class=\"line\"><span class=\"preprocessor\">#include &quot;<a class=\"code\" href=\"fbg__fbdev_8h.html\">fbg_fbdev.h</a>&quot;</span></div><div class=\"line\"><span class=\"preprocessor\">#include &quot;<a class=\"code\" href=\"fbgraphics_8h.html\">fbgraphics.h</a>&quot;</span></div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">int</span> keep_running = 1;</div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">void</span> int_handler(<span class=\"keywordtype\">int</span> dummy) {</div><div class=\"line\">    keep_running = 0;</div><div class=\"line\">}</div><div class=\"line\"></div><div class=\"line\"><span class=\"keywordtype\">int</span> main(<span class=\"keywordtype\">int</span> argc, <span class=\"keywordtype\">char</span>* argv[]) {</div><div class=\"line\">    signal(SIGINT, int_handler);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keyword\">struct </span><a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg = <a class=\"code\" href=\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\">fbg_fbdevInit</a>();</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *texture = <a class=\"code\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbg_loadImage</a>(fbg, <span class=\"stringliteral\">&quot;texture.png&quot;</span>);</div><div class=\"line\">    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__img\">_fbg_img</a> *bb_font_img = <a class=\"code\" href=\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\">fbg_loadImage</a>(fbg, <span class=\"stringliteral\">&quot;bbmode1_8x8.png&quot;</span>);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keyword\">struct </span><a class=\"code\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> *bbfont = <a class=\"code\" href=\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\">fbg_createFont</a>(fbg, bb_font_img, 8, 8, 33);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keywordflow\">do</span> {</div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a>(fbg, 0);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">        <span class=\"comment\">// you can also use fbg_image(fbg, texture, 0, 0)</span></div><div class=\"line\">        <span class=\"comment\">// but you must be sure that your image size fit on the display</span></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\">fbg_imageClip</a>(fbg, texture, 0, 0, 0, 0, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a>);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">fbg_write</a>(fbg, <span class=\"stringliteral\">&quot;Quickstart example\\nFPS:&quot;</span>, 4, 2);</div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\">fbg_write</a>(fbg, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\">fps_char</a>, 32 + 8, 2 + 8);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a>(fbg, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a> / 2 - 32, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a> / 2 - 32, 16, 16, 0, 255, 0);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\">fbg_pixel</a>(fbg, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a> / 2, fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a> / 2, 255, 0, 0);</div><div class=\"line\"></div><div class=\"line\">        <a class=\"code\" href=\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\">fbg_flip</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">    } <span class=\"keywordflow\">while</span> (keep_running);</div><div class=\"line\"></div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbg_freeImage</a>(texture);</div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\">fbg_freeImage</a>(bb_font_img);</div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\">fbg_freeFont</a>(bbfont);</div><div class=\"line\"></div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\">fbg_close</a>(fbg);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"keywordflow\">return</span> 0;</div><div class=\"line\">}</div></div><!-- fragment --><p><b>Note</b> : Functions like <code>fbg_clear</code> or <code>fbg_fpixel</code> are fast functions, there is slower equivalent (but more parametrable) such as <code>fbg_background</code> or <code>fbg_pixel</code>, some functions variant also support transparency such as `<code>fbg_pixela</code> or <code>fbg_recta</code>.</p>\n<p><b>Note</b> : You can generate monospace bitmap fonts to be used with <code>fbg_createFont</code> function by using my <a href=\"https://github.com/grz0zrg/monoBitmapFontCreator\">monoBitmapFontCreator</a> tool available <a href=\"https://fbg-bitmap-font-creator.netlify.com/\">here</a></p>\n<h3>Parallelism</h3>\n<p>Exploiting multiple cores with FBGraphics is really easy, first you have to prepare 3 functions (of which two are optional if you don't have any allocations to do) of the following definition :</p>\n<div class=\"fragment\"><div class=\"line\"><span class=\"comment\">// optional function</span></div><div class=\"line\"><span class=\"keywordtype\">void</span> *fragmentStart(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg) {</div><div class=\"line\">    <span class=\"comment\">// typically used to allocate your per-thread data</span></div><div class=\"line\">    <span class=\"comment\">// see full_example.c for more informations</span></div><div class=\"line\"></div><div class=\"line\">    <span class=\"keywordflow\">return</span> NULL; <span class=\"comment\">// return your user data here</span></div><div class=\"line\">}</div></div><!-- fragment --><div class=\"fragment\"><div class=\"line\"><span class=\"keywordtype\">void</span> fragment(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> _fragment_user_data *user_data) {</div><div class=\"line\">    <span class=\"comment\">// this function will be executed by each threads</span></div><div class=\"line\">    <span class=\"comment\">// you are free to call any FBG graphics primitive here</span></div><div class=\"line\"></div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\">fbg_clear</a>(fbg, 0);</div><div class=\"line\"></div><div class=\"line\">    <span class=\"comment\">// you are also free to fill each threads back buffer the way you want to</span></div><div class=\"line\">    <span class=\"comment\">// fbg-&gt;task_id : thread identifier (starting at 1, 0 is reserved for the main thread)</span></div><div class=\"line\">    <span class=\"comment\">// each threads will draw an horizontal line, the shade of the blue color will change based on the thread it is drawn from</span></div><div class=\"line\">    <span class=\"keywordtype\">int</span> x = 0, y = 0;</div><div class=\"line\">    <span class=\"keywordflow\">for</span> (y = fbg-&gt;task_id; y &lt; fbg-&gt;height; y += 4) {</div><div class=\"line\">        <span class=\"keywordflow\">for</span> (x = 0; x &lt; fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>; x += 1) {</div><div class=\"line\">            <span class=\"keywordtype\">int</span> i = (x + y * fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a>) * 3;</div><div class=\"line\">            fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[i] = fbg-&gt;task_id * 85; <span class=\"comment\">// note : BGR format</span></div><div class=\"line\">            fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[i + 1] = 0;</div><div class=\"line\">            fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[i + 2] = 0;</div><div class=\"line\">        }</div><div class=\"line\">    }</div><div class=\"line\"></div><div class=\"line\">    <span class=\"comment\">// simple graphics primitive (4 blue rectangle which will be handled by different threads in parallel)</span></div><div class=\"line\">    <a class=\"code\" href=\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\">fbg_rect</a>(fbg, fbg-&gt;task_id * 32, 0, 32, 32, 0, 0, 255);</div><div class=\"line\">}</div></div><!-- fragment --><div class=\"fragment\"><div class=\"line\"><span class=\"comment\">// optional function</span></div><div class=\"line\"><span class=\"keywordtype\">void</span> fragmentStop(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keyword\">struct</span> _fragment_user_data *data) {</div><div class=\"line\">    <span class=\"comment\">// typically used to free your per-thread data</span></div><div class=\"line\">    <span class=\"comment\">// see full_example.c for more informations</span></div><div class=\"line\">}</div></div><!-- fragment --><p>Then you have to create a 'Fragment' which is a FBG multi-core task :</p>\n<div class=\"fragment\"><div class=\"line\">fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);</div></div><!-- fragment --><p>Where :</p>\n<ul>\n<li><code>fbg</code> is the main library data structure returned by <code>fbg_customSetup</code> and any backend <code>fbg_backendnameSetup</code> calls (see available backends in <code>custom_backend</code> directory)</li>\n<li><code>fragmentStart</code>is a C function which will be executed when the thread start (can be NULL)</li>\n<li><code>fragment</code>is a C function which will be executed indefinitly for each threads and where all the draw code will happen</li>\n<li><code>fragmentStop</code> is a C function which will be executed when the thread end (can be NULL)</li>\n<li><code>3</code>is the number of parallel tasks (this will launch 3 threads)</li>\n</ul>\n<p>And finally you just have to make a call to your fragment function in your drawing loop and call <code>fbg_draw</code>!</p>\n<div class=\"fragment\"><div class=\"line\">fragment(fbg, NULL);</div><div class=\"line\"><a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(fbg, NULL);</div></div><!-- fragment --><p><code>fbg_draw</code> will wait until all the data are received from all the threads then draw to screen</p>\n<p><b>Note</b> : This example will use 4 threads (including your app one) for drawing things on the screen but calling the fragment function in your drawing loop is totally optional, you could for example make use of threads for intensive drawing tasks and just use the main thread to draw the GUI or the inverse etc. it is up to you!</p>\n<p>And that is all you have to do!</p>\n<p>See <code>simple_parallel_example.c</code> and <code>full_example.c</code> for more informations.</p>\n<p><b>Note</b> : By default, the resulting buffer of each tasks are additively mixed into the main back buffer, you can override this behavior by specifying a mixing function as the last argument of <code>fbg_draw</code> such as :</p>\n<div class=\"fragment\"><div class=\"line\"><span class=\"comment\">// function called for each tasks in the fbg_draw function</span></div><div class=\"line\"><span class=\"keywordtype\">void</span> selectiveMixing(<span class=\"keyword\">struct</span> <a class=\"code\" href=\"struct__fbg.html\">_fbg</a> *fbg, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> *buffer, <span class=\"keywordtype\">int</span> task_id) {</div><div class=\"line\">    <span class=\"comment\">// fbg is the main fbg structure returned by fbg_customSetup calls and any backend setup calls</span></div><div class=\"line\">    <span class=\"comment\">// buffer is the current task buffer</span></div><div class=\"line\">    <span class=\"comment\">// task_id is the current task id</span></div><div class=\"line\">    <span class=\"keywordtype\">int</span> j = 0;</div><div class=\"line\">    <span class=\"keywordflow\">for</span> (j = 0; j &lt; fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">size</a>; j += 1) {</div><div class=\"line\">        fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[j] = (fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[j] &gt; buffer[j]) ? fbg-&gt;<a class=\"code\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a>[j] : buffer[j];</div><div class=\"line\">    }</div><div class=\"line\">}</div></div><!-- fragment --><p>Then you just have to specify it to the <code>fbg_draw</code> function :</p>\n<div class=\"fragment\"><div class=\"line\"><a class=\"code\" href=\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\">fbg_draw</a>(fbg, additiveMixing);</div></div><!-- fragment --><p>By using the mixing function, you can have different layers handled by different cores with different compositing rule, see <code>compositing.c</code> for an example of alpha blending compositing 2 layers running on their own cores.</p>\n<p><b>Note</b> : You can only create one Fragment per fbg instance, another call to <code>fbg_createFragment</code> will stop all tasks for the passed fbg context and will create a new set of tasks.</p>\n<p><b>Note</b> : On low performances platforms you may encounter performance issues at high resolution and with a high number of fragments, this is because all the threads buffer need to be mixed back onto the main thread before being displayed and at high resolution / threads count that is alot of pixels to process! You can see an alternative implementation using pure pthread in the <code>custom_backend</code> folder and <code>dispmanx_pure_parallel.c</code> but it doesn't have compositing. If your platform support some sort of SIMD instructions you could also do all the compositing using SIMD which should result in a 5x or more speed increase!</p>\n<h3>Technical implementation</h3>\n<p>FBGraphics threads come with their own fbg context data which is essentialy a copy of the actual fbg context, they make use of C atomic types.</p>\n<p>Initially parallelism was implemented using <a href=\"http://liblfds.org/\">liblfds</a> library for its Ringbuffer and Freelist data structure.</p>\n<p>Now parallelism has two implementation, liblfds and a custom synchronization mechanism which has the advantage to not require additional libraries and thus execute on more platforms.</p>\n<p>You can still use the liblfds implementation using the <code>FBG_LFDS</code> define, it may be faster.</p>\n<h4>With liblfds</h4>\n<p>Each threads begin by fetching a pre-allocated buffer from a freelist, then the fragment function is called to fill that buffer, the thread then place the buffer into a ringbuffer data structure which will be fetched upon calling <code>fbg_draw</code>, the buffers are then mixed into the main back buffer and put back into the freelist.</p>\n<h4>Without liblfds</h4>\n<p>Each threads fragment function is called to fill the local buffer, each threads then wait till that buffer is consumed by the main thread upon calling <code>fbg_draw</code>, the buffers are then mixed into the main back buffer and <code>fbg_draw</code> wake up all threads.</p>\n<h2>Benchmark (framebuffer)</h2>\n<p>A simple unoptimized per pixels screen clearing with 4 cores on a Raspberry PI 3B : 30 FPS @ 1280x768 and 370 FPS @ 320x240</p>\n<p>Note : Using the dispmanx backend a screen clearing + rectangle moving on a Raspberry PI 3B : 60 FPS @ 1920x1080</p>\n<h3>Full example</h3>\n<p>Fullscreen per pixels perlin noise with texture mapping and scrolling (unoptimized)</p>\n<p><b>Device</b> : Raspberry PI 3B ( Quad Core 1.2GHz )</p>\n<p><b>Settings</b> : 320x240</p>\n<table class=\"doxtable\">\n<tr>\n<th align=\"left\">Cores used to draw graphics </th><th align=\"left\">FPS  </th></tr>\n<tr>\n<td align=\"left\">1 </td><td align=\"left\">42 FPS </td></tr>\n<tr>\n<td align=\"left\">2 </td><td align=\"left\">81 FPS </td></tr>\n<tr>\n<td align=\"left\">3 </td><td align=\"left\">120 FPS </td></tr>\n</table>\n<p>See screenshots below.</p>\n<h3>Tunnel example</h3>\n<p>Fullscreen texture-mapped and animated tunnel made of 40800 2px rectangles with motion blur (unoptimized)</p>\n<p><b>Device</b> : Raspberry PI 3B ( Quad Core 1.2GHz )</p>\n<p><b>Settings</b> : 320x240</p>\n<table class=\"doxtable\">\n<tr>\n<th align=\"left\">Cores used to draw graphics </th><th align=\"left\">FPS  </th></tr>\n<tr>\n<td align=\"left\">1 </td><td align=\"left\">36 FPS </td></tr>\n<tr>\n<td align=\"left\">2 </td><td align=\"left\">69 FPS </td></tr>\n<tr>\n<td align=\"left\">3 </td><td align=\"left\">99 FPS </td></tr>\n<tr>\n<td align=\"left\">4 </td><td align=\"left\">66 FPS </td></tr>\n</table>\n<p>Note : The framerate drop with 4 cores is due to the main thread being too busy which make all the other threads follow due to the synchronization.</p>\n<p>See screenshots below.</p>\n<h2>Documentation</h2>\n<p>All usable functions and structures are documented in the <code><a class=\"el\" href=\"fbgraphics_8h.html\">fbgraphics.h</a></code> file with <a href=\"http://www.stack.nl/~dimitri/doxygen/\">Doxygen</a></p>\n<p>The HTML documentation can be found in the <code>docs</code> directory.</p>\n<p>Examples demonstrating all features are available in the <code>examples</code> directory.</p>\n<p>Some effects come from <a href=\"https://www.openprocessing.org/user/130883#sketches\">my Open Processing sketches</a></p>\n<h2>Building</h2>\n<p>C11 standard should be supported by the C compiler.</p>\n<p>All examples found in <code>examples</code> directory make use of the framebuffer device <code>/dev/fb0</code> and can be built by typing <code>make</code> into the examples directory then run them by typing <code>./run_quickstart</code> for example (this handle the framebuffer setup prior launch), you will need to compile liblfds for the parallelism features. (see below)</p>\n<p>All examples were tested on a Raspberry PI 3B with framebuffer settings : 320x240 24 bpp</p>\n<p>For the default build (no parallelism), FBGraphics come with a header file <code><a class=\"el\" href=\"fbgraphics_8h.html\">fbgraphics.h</a></code> and a C file <code>fbgraphics.c</code> to be included / compiled / linked with your program plus one of the rendering backend found in <code>custom_backend</code> directory, you will also need to compile the <code>lodepng.c</code> library and <code>nanojpeg.c</code> library, see the examples directory for examples of Makefile.</p>\n<p>For parallelism support, <code>FBG_PARALLEL</code> need to be defined.</p>\n<p>If you need to use the slightly different parallelism implementation (see technical implementation section) you will need the <a href=\"http://liblfds.org/\">liblfds</a> library :</p>\n<ul>\n<li>Get latest liblfds 7.1.1 package on the official website</li>\n<li>uncompress, go into the directory <code>liblfds711</code></li>\n<li>go into the directory <code>build/gcc_gnumake</code></li>\n<li>type <code>make</code> in a terminal</li>\n<li><code>liblfds711.a</code> can now be found in the <code>bin</code> directory, you need to link against it when compiling (see examples)</li>\n</ul>\n<p>To compile liblfds parallel examples, just copy <code>liblfds711.a</code> / <code>liblfds711.h</code> file and <code>liblfds711</code> directory into the <code>examples</code> directory then type <code>make lfds711</code>.</p>\n<p><b>Note</b> : FBGraphics with liblfds work on ARM64 platforms but you will need liblfds720 which is not yet released.</p>\n<h3>Executable size optimization</h3>\n<p>This library may be used for size optimized executable for things like <a href=\"https://en.wikipedia.org/wiki/Demoscene\">demos</a></p>\n<p>PNG and JPEG support can be disabled with the <code>WITHOUT_JPEG</code> and <code>WITHOUT_PNG</code> define.</p>\n<p>See <code>tiny</code> makefile rule inside the <code>custom_backend</code> or <code>examples</code> folder for some compiler optimizations related to executable size.</p>\n<p>Under Linux <a href=\"https://github.com/BR903/ELFkickers/tree/master/sstrip\">sstrip</a> and <a href=\"https://upx.github.io/\">UPX</a> can be used to bring the size down even futher.</p>\n<h2>Rendering backend</h2>\n<p>See <code>README</code> into <code>custom_backend</code> folder</p>\n<h2>GLFW backend</h2>\n<p>See <code>README</code> into <code>custom_backend</code> folder</p>\n<p>The GLFW backend was made to demonstrate how to write a backend but it is complete enough to be used by default.</p>\n<p>The GLFW backend has a cool lightweight Lua example which setup a Processing-like environment making use of the parallelism feature of the library, allowing the user to prototype multithreaded graphical stuff without C code compilation through the Lua language.</p>\n<h2>OpenGL ES 2 backend</h2>\n<p>See <code>README</code> into <code>custom_backend</code> folder</p>\n<h2>GBA backend</h2>\n<p>See <code>README</code> into <code>custom_backend</code> folder</p>\n<h2>Screenshots</h2>\n<div class=\"image\">\n<img src=\"/screenshot1.png?raw=true\" alt=\"Full example screenshot with three threads\" title=\"Full example screenshot with three threads\"/>\n</div>\n<div class=\"image\">\n<img src=\"/screenshot2.png?raw=true\" alt=\"Tunnel with four threads\" title=\"Tunnel with four threads\"/>\n</div>\n<div class=\"image\">\n<img src=\"/screenshot3.png?raw=true\" alt=\"Earth with four threads\" title=\"Earth with four threads\"/>\n</div>\n<div class=\"image\">\n<img src=\"/screenshot4.png?raw=true\" alt=\"Flags of the world with four threads\" title=\"Flags of the world with four threads\"/>\n</div>\n<div class=\"image\">\n<img src=\"/screenshot5.png?raw=true\" alt=\"Compositing with three threads\" title=\"Compositing with three threads\"/>\n</div>\n<h2>License</h2>\n<p>BSD, see LICENSE file </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Mon Nov 21 21:11:03 2011 -0500\n */\n(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,bM=/\\S/,bI=/^\\s+/,bE=/\\s+$/,bA=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,bN=/^[\\],:{}\\s]*$/,bW=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,bJ=/(?:^|:|,)(?:\\s*\\[)+/g,by=/(webkit)[ \\/]([\\w.]+)/,bR=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,bQ=/(msie) ([\\w.]+)/,bS=/(mozilla)(?:.*? rv:([\\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+\"\").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0===\"body\"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0===\"string\"){if(b0.charAt(0)===\"<\"&&b0.charAt(b0.length-1)===\">\"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:\"\",jquery:\"1.7.1\",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3===\"find\"){b2.selector=this.selector+(this.selector?\" \":\"\")+b0}else{if(b3){b2.selector=this.selector+\".\"+b3+\"(\"+b0+\")\"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),\"slice\",bK.call(arguments).join(\",\"))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5===\"boolean\"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!==\"object\"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger(\"ready\").off(\"ready\")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks(\"once memory\");if(av.readyState===\"complete\"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener(\"DOMContentLoaded\",e,false);bb.addEventListener(\"load\",bF.ready,false)}else{if(av.attachEvent){av.attachEvent(\"onreadystatechange\",e);bb.attachEvent(\"onload\",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)===\"function\"},isArray:Array.isArray||function(b0){return bF.type(b0)===\"array\"},isWindow:function(b0){return b0&&typeof b0===\"object\"&&\"setInterval\" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||\"object\"},isPlainObject:function(b2){if(!b2||bF.type(b2)!==\"object\"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,\"constructor\")&&!bG.call(b2.constructor.prototype,\"isPrototypeOf\")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!==\"string\"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,\"@\").replace(bP,\"]\").replace(bJ,\"\"))){return(new Function(\"return \"+b0))()}bF.error(\"Invalid JSON: \"+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,\"text/xml\")}else{b0=new ActiveXObject(\"Microsoft.XMLDOM\");b0.async=\"false\";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName(\"parsererror\").length){bF.error(\"Invalid XML: \"+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb[\"eval\"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,\"ms-\").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?\"\":bO.call(b0)}:function(b0){return b0==null?\"\":b0.toString().replace(bI,\"\").replace(bE,\"\")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2===\"string\"||b2===\"function\"||b2===\"regexp\"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length===\"number\"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1===\"number\"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3===\"string\"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8===\"object\"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf(\"compatible\")<0&&bS.exec(b1)||[];return{browser:b0[1]||\"\",version:b0[2]||\"0\"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(b1,b0){bx[\"[object \"+b0+\"]\"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test(\"\\xA0\")){bI=/^[\\s\\xA0]+/;bE=/[\\s\\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener(\"DOMContentLoaded\",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState===\"complete\"){av.detachEvent(\"onreadystatechange\",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll(\"left\")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH===\"array\"){bE(bI)}else{if(bH===\"function\"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks(\"once memory\"),bw=b.Callbacks(\"once memory\"),bv=b.Callbacks(\"memory\"),e=\"pending\",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,\"resolve\"],fail:[bE,\"reject\"],progress:[bD,\"notify\"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+\"With\"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+\"With\"]=bA[bz].fireWith}bB.done(function(){e=\"resolved\"},bw.disable,bv.lock).fail(function(){e=\"rejected\"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement(\"div\"),bH=av.documentElement;bv.setAttribute(\"className\",\"t\");bv.innerHTML=\"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";bI=bv.getElementsByTagName(\"*\");bF=bv.getElementsByTagName(\"a\")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement(\"select\");bx=bG.appendChild(av.createElement(\"option\"));bE=bv.getElementsByTagName(\"input\")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName(\"tbody\").length,htmlSerialize:!!bv.getElementsByTagName(\"link\").length,style:/top/.test(bF.getAttribute(\"style\")),hrefNormalized:(bF.getAttribute(\"href\")===\"/a\"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value===\"on\"),optSelected:bx.selected,getSetAttribute:bv.className!==\"t\",enctype:!!av.createElement(\"form\").enctype,html5Clone:av.createElement(\"nav\").cloneNode(true).outerHTML!==\"<:nav></:nav>\",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent(\"onclick\",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent(\"onclick\")}bE=av.createElement(\"input\");bE.value=\"t\";bE.setAttribute(\"type\",\"radio\");bJ.radioValue=bE.value===\"t\";bE.setAttribute(\"checked\",\"checked\");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML=\"\";if(bb.getComputedStyle){bA=av.createElement(\"div\");bA.style.width=\"0\";bA.style.marginRight=\"0\";bv.style.width=\"2px\";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB=\"on\"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,\"return;\");bw=(typeof bv[bB]===\"function\")}bJ[by+\"Bubbles\"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName(\"body\")[0];if(!bQ){return}bL=1;bS=\"position:absolute;top:0;left:0;width:1px;height:1px;margin:0;\";bR=\"visibility:hidden;border:0;\";e=\"style='\"+bS+\"border:5px solid #000;padding:0;'\";bP=\"<div \"+e+\"><div></div></div><table \"+e+\" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";bM=av.createElement(\"div\");bM.style.cssText=bR+\"width:0;height:0;position:static;top:0;margin-top:\"+bL+\"px\";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement(\"div\");bM.appendChild(bv);bv.innerHTML=\"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";bz=bv.getElementsByTagName(\"td\");bw=(bz[0].offsetHeight===0);bz[0].style.display=\"\";bz[1].style.display=\"none\";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML=\"\";bv.style.width=bv.style.paddingLeft=\"1px\";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!==\"undefined\"){bv.style.display=\"inline\";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display=\"\";bv.innerHTML=\"<div style='width:4px;'></div>\";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position=\"fixed\";bV.style.top=\"20px\";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top=\"\";bU.style.overflow=\"hidden\";bU.style.position=\"relative\";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\\{.*\\}|\\[.*\\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:\"jQuery\"+(b.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:true,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv===\"string\",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv===\"events\";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv===\"object\"||typeof bv===\"function\"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(\" \")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute(\"classid\")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by===\"undefined\"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],\"parsedAttrs\")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf(\"data-\")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],\"parsedAttrs\",true)}}return bz}else{if(typeof by===\"object\"){return this.each(function(){b.data(this,by)})}}bB=by.split(\".\");bB[1]=bB[1]?\".\"+bB[1]:\"\";if(bA===L){bz=this.triggerHandler(\"getData\"+bB[1]+\"!\",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler(\"setData\"+bB[1]+\"!\",bD);b.data(this,by,bA);bC.triggerHandler(\"changeData\"+bB[1]+\"!\",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv=\"data-\"+bw.replace(aA,\"-$1\").toLowerCase();by=bx.getAttribute(bv);if(typeof by===\"string\"){try{by=by===\"true\"?true:by===\"false\"?false:by===\"null\"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e===\"data\"&&b.isEmptyObject(bv[e])){continue}if(e!==\"toJSON\"){return false}}return true}function bi(by,bx,bA){var bw=bx+\"defer\",bv=bx+\"queue\",e=bx+\"mark\",bz=b._data(by,bw);if(bz&&(bA===\"queue\"||!b._data(by,bv))&&(bA===\"mark\"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||\"fx\")+\"mark\";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||\"fx\";var e=bv+\"mark\",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,\"mark\")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||\"fx\")+\"queue\";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||\"fx\";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw===\"inprogress\"){bw=bv.shift()}if(bw){if(bx===\"fx\"){bv.unshift(\"inprogress\")}b._data(by,bx+\".run\",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+\"queue \"+bx+\".run\",true);bi(by,bx,\"queue\")}}});b.fn.extend({queue:function(e,bv){if(typeof e!==\"string\"){bv=e;e=\"fx\"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e===\"fx\"&&bw[0]!==\"inprogress\"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||\"fx\";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(bD,bw){if(typeof bD!==\"string\"){bw=bD;bD=L}bD=bD||\"fx\";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+\"defer\",bA=bD+\"queue\",bC=bD+\"mark\",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks(\"once memory\"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\\n\\t\\r]/g,af=/\\s+/,aU=/\\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by===\"string\"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=\" \"+bx.className+\" \";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(\" \"+bA[bB]+\" \")){bz+=bA[bB]+\" \"}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz===\"string\")||bz===L){bA=(bz||\"\").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(\" \"+by.className+\" \").replace(aP,\" \");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(\" \"+bA[bB]+\" \",\" \")}by.className=b.trim(bx)}else{by.className=\"\"}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv===\"boolean\";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw===\"string\"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?\"addClass\":\"removeClass\"](bA)}}else{if(bw===\"undefined\"||bw===\"boolean\"){if(this.className){b._data(this,\"__className__\",this.className)}this.className=this.className||bx===false?\"\":b._data(this,\"__className__\")||\"\"}}})},hasClass:function(e){var bx=\" \"+e+\" \",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(\" \"+this[bw].className+\" \").replace(aP,\" \").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&\"get\" in e&&(bv=e.get(bw,\"value\"))!==L){return bv}bv=bw.value;return typeof bv===\"string\"?bv.replace(aU,\"\"):bv==null?\"\":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=\"\"}else{if(typeof bB===\"number\"){bB+=\"\"}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?\"\":bC+\"\"})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!(\"set\" in e)||e.set(this,bB,\"value\")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type===\"select-one\";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute(\"disabled\")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,\"optgroup\"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find(\"option\").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute===\"undefined\"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&\"set\" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,\"\"+bB);return bB}}}else{if(e&&\"get\" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,\"\");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error(\"type property can't be changed\")}else{if(!b.support.radioValue&&bv===\"radio\"&&b.nodeName(e,\"input\")){var bw=e.value;e.setAttribute(\"type\",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,\"button\")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,\"button\")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&\"set\" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&\"get\" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode(\"tabindex\");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!==\"boolean\"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!==\"\":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+\"\")}};b.attrHooks.tabindex.set=be.set;b.each([\"width\",\"height\"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===\"\"){bw.setAttribute(e,\"auto\");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===\"\"){bw=\"false\"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each([\"href\",\"src\",\"width\",\"height\"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=\"\"+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype=\"encoding\"}if(!b.support.checkOn){b.each([\"radio\",\"checkbox\"],function(){b.valHooks[this]={get:function(e){return e.getAttribute(\"value\")===null?\"on\":e.value}}})}b.each([\"radio\",\"checkbox\"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\\.]*)?(?:\\.(.+))?$/,J=/\\bhover(\\.\\S+)?\\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||\"\").toLowerCase();bv[3]=bv[3]&&new RegExp(\"(?:^|\\\\s)\"+bv[3]+\"(?:\\\\s|$)\")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv[\"class\"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,\"mouseenter$1 mouseleave$1\")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!==\"undefined\"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(\" \");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||\"\").split(\".\").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(\".\")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent(\"on\"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||\"\")).split(\" \");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp(\"(^|\\\\.)\"+bC.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH===\"**\"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,[\"events\",\"handle\"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf(\"!\")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(\".\")>=0){bx=bG.split(\".\");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv===\"object\"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(\".\");bv.namespace_re=bv.namespace?new RegExp(\"(^|\\\\.)\"+bx.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;by=bG.indexOf(\":\")<0?\"on\"+bG:\"\";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,\"events\")||{})[bv.type]&&b._data(bH,\"handle\");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG===\"click\"&&b.nodeName(bA,\"a\"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!==\"focus\"&&bG!==\"blur\")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,\"events\")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type===\"click\")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent(\"on\"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,\"form\")){return false}b.event.add(this,\"click._submit keypress._submit\",function(bx){var bw=bx.target,bv=b.nodeName(bw,\"input\")||b.nodeName(bw,\"button\")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,\"submit._submit\",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate(\"submit\",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,\"form\")){return false}b.event.remove(this,\"._submit\")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\"){b.event.add(this,\"propertychange._change\",function(e){if(e.originalEvent.propertyName===\"checked\"){this._just_changed=true}});b.event.add(this,\"click._change\",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate(\"change\",this,e,true)}})}return false}b.event.add(this,\"beforeactivate._change\",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,\"change._change\",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate(\"change\",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!==\"radio\"&&e.type!==\"checkbox\")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,\"._change\");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:\"focusin\",blur:\"focusout\"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw===\"object\"){if(typeof e!==\"string\"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e===\"string\"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+\".\"+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw===\"object\"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e===\"function\"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||\"**\",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,\"**\"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,\"lastToggle\"+bx.guid)||0)%bw;b._data(this,\"lastToggle\"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each((\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\").split(\" \"),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){var bH=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,bC=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\\\/g,bO=/\\r\\n/g,bQ=/\\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!==\"string\"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec(\"\");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]===\"~\"||bW[0]===\"+\")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=\"\"}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)===\"[object Array]\"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!==\"\\\\\"){bT[1]=(bT[1]||\"\").replace(bK,\"\");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],\"\");break}}}}if(!bW){bW=typeof e.getElementsByTagName!==\"undefined\"?e.getElementsByTagName(\"*\"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)===\"\\\\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],\"\");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR=\"\";if(e){if(e===1||e===9){if(typeof bU.textContent===\"string\"){return bU.textContent}else{if(typeof bU.innerText===\"string\"){return bU.innerText.replace(bO,\"\")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(e){return e.getAttribute(\"href\")},type:function(e){return e.getAttribute(\"type\")}},relative:{\"+\":function(bW,bR){var bT=typeof bR===\"string\",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},\">\":function(bW,bR){var bV,bU=typeof bR===\"string\",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},\"\":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR===\"string\"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e(\"parentNode\",bR,bS,bT,bU,bV)},\"~\":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR===\"string\"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e(\"previousSibling\",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!==\"undefined\"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!==\"undefined\"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute(\"name\")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!==\"undefined\"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=\" \"+bT[1].replace(bK,\"\")+\" \";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(\" \"+bV.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,\"\")},TAG:function(bR,e){return bR[1].replace(bK,\"\").toLowerCase()},CHILD:function(e){if(e[1]===\"nth\"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\\+|\\s*/g,\"\");var bR=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(e[2]===\"even\"&&\"2n\"||e[2]===\"odd\"&&\"2n+1\"||!/\\D/.test(e[2])&&\"0n+\"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,\"\");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||\"\").replace(bK,\"\");if(bU[2]===\"~=\"){bU[4]=\" \"+bU[4]+\" \"}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]===\"not\"){if((bH.exec(bU[3])||\"\").length>1||/^\\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!==\"hidden\"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute(\"type\"),bR=bS.type;return bS.nodeName.toLowerCase()===\"input\"&&\"text\"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"radio\"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"checkbox\"===e.type},file:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"file\"===e.type},password:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"password\"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e===\"input\"||e===\"button\")&&\"submit\"===bR.type},image:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"image\"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e===\"input\"||e===\"button\")&&\"reset\"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e===\"input\"&&\"button\"===bR.type||e===\"button\"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e===\"contains\"){return(bS.textContent||bS.innerText||bw([bS])||\"\").indexOf(bX[3])>=0}else{if(e===\"not\"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case\"only\":case\"first\":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX===\"first\"){return true}bR=bS;case\"last\":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case\"nth\":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute(\"id\")===e},TAG:function(bR,e){return(e===\"*\"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(\" \"+(bR.className||bR.getAttribute(\"class\"))+\" \").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+\"\",bU=bT[2],bR=bT[4];return e==null?bU===\"!=\":!bU&&by.attr?e!=null:bU===\"=\"?bW===bR:bU===\"*=\"?bW.indexOf(bR)>=0:bU===\"~=\"?(\" \"+bW+\" \").indexOf(bR)>=0:!bR?bW&&e!==false:bU===\"!=\"?bW!==bR:bU===\"^=\"?bW.indexOf(bR)===0:bU===\"$=\"?bW.substr(bW.length-bR.length)===bR:bU===\"|=\"?bW===bR||bW.substr(0,bR.length+1)===bR+\"-\":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return\"\\\\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\\[]*\\])(?![^\\(]*\\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+bE.match[bz].source.replace(/\\\\(\\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)===\"[object Array]\"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length===\"number\"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement(\"div\"),bS=\"script\"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML=\"<a name='\"+bS+\"'/>\";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!==\"undefined\"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!==\"undefined\"&&bT.getAttributeNode(\"id\").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!==\"undefined\"&&bV.getAttributeNode(\"id\");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement(\"div\");e.appendChild(av.createComment(\"\"));if(e.getElementsByTagName(\"*\").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]===\"*\"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML=\"<a href='#'></a>\";if(e.firstChild&&typeof e.firstChild.getAttribute!==\"undefined\"&&e.firstChild.getAttribute(\"href\")!==\"#\"){bE.attrHandle.href=function(bR){return bR.getAttribute(\"href\",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement(\"div\"),bS=\"__sizzle__\";bT.innerHTML=\"<p class='TEST'></p>\";if(bT.querySelectorAll&&bT.querySelectorAll(\".TEST\").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4===\"body\"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!==\"object\"){var bW=bV,bX=bV.getAttribute(\"id\"),bU=bX||bS,b6=bV.parentNode,b5=/^\\s*[+~]/.test(b4);if(!bX){bV.setAttribute(\"id\",bU)}else{bU=bU.replace(/'/g,\"\\\\$&\")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll(\"[id='\"+bU+\"'] \"+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute(\"id\")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement(\"div\"),\"div\"),bR=false;try{bS.call(av.documentElement,\"[test!='']:sizzle\")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement(\"div\");e.innerHTML=\"<div class='test e'></div><div class='test'></div>\";if(!e.getElementsByClassName||e.getElementsByClassName(\"e\").length===0){return}e.lastChild.className=\"e\";if(e.getElementsByClassName(\"e\").length===1){return}bE.order.splice(1,0,\"CLASS\");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!==\"undefined\"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!==\"string\"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!==\"HTML\":false};var bM=function(bS,e,bW){var bV,bX=[],bU=\"\",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,\"\")}bS=bE.relative[bS]?bS+\"*\":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[\":\"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!==\"string\"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack(\"\",\"find\",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),\"not\",e)},filter:function(e){return this.pushStack(aG(this,e,true),\"filter\",e)},is:function(e){return !!e&&(typeof e===\"string\"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!==\"string\"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,\"closest\",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e===\"string\"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e===\"string\"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,\"parentNode\")},parentsUntil:function(bv,e,bw){return b.dir(bv,\"parentNode\",bw)},next:function(e){return b.nth(e,2,\"nextSibling\")},prev:function(e){return b.nth(e,2,\"previousSibling\")},nextAll:function(e){return b.dir(e,\"nextSibling\")},prevAll:function(e){return b.dir(e,\"previousSibling\")},nextUntil:function(bv,e,bw){return b.dir(bv,\"nextSibling\",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,\"previousSibling\",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw===\"string\"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(\",\"))}});b.extend({filter:function(bw,e,bv){if(bv){bw=\":not(\"+bw+\")\"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw===\"string\"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split(\"|\"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR=\"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",ag=/ jQuery\\d+=\"(?:\\d+|null)\"/g,ar=/^\\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,d=/<([\\w:]+)/,w=/<tbody/i,W=/<|&#?\\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp(\"<(?:\"+aR+\")\",\"i\"),o=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bm=/\\/(java|ecma)script/i,aN=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,ax={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],area:[1,\"<map>\",\"</map>\"],_default:[0,\"\",\"\"]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,\"div<div>\",\"</div>\"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!==\"object\"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,\"body\")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,\"before\",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,\"after\",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName(\"*\"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName(\"*\"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,\"\"):null}else{if(typeof bx===\"string\"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||[\"\",\"\"])[1].toLowerCase()]){bx=bx.replace(R,\"<$1></$2>\");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName(\"*\"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!==\"string\"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),\"replaceWith\",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC===\"string\"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,\"tr\");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,\"table\")?(e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?\".\":\"\")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw===\"object\"){e.outerHTML=bv.outerHTML}else{if(bw===\"input\"&&(bv.type===\"checkbox\"||bv.type===\"radio\")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw===\"option\"){e.selected=bv.defaultSelected}else{if(bw===\"input\"||bw===\"textarea\"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB===\"string\"&&bB.length<512&&bA===av&&bB.charAt(0)===\"<\"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!==\"undefined\"){return e.getElementsByTagName(\"*\")}else{if(typeof e.querySelectorAll!==\"undefined\"){return e.querySelectorAll(\"*\")}else{return[]}}}function az(e){if(e.type===\"checkbox\"||e.type===\"radio\"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||\"\").toLowerCase();if(bv===\"input\"){az(e)}else{if(bv!==\"script\"&&typeof e.getElementsByTagName!==\"undefined\"){b.grep(e.getElementsByTagName(\"input\"),az)}}}function al(e){var bv=av.createElement(\"div\");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test(\"<\"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement===\"undefined\"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz===\"number\"){bz+=\"\"}if(!bz){continue}if(typeof bz===\"string\"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,\"<$1></$2>\");var bK=(d.exec(bz)||[\"\",\"\"])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement(\"div\");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK===\"table\"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===\"<table>\"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],\"tbody\")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)===\"number\"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],\"script\")&&(!bI[bE].type||bI[bE].type.toLowerCase()===\"text/javascript\")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName(\"script\"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:\"script\"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||\"\").replace(aN,\"/*$0*/\"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\\([^)]*\\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\\d+(?:px)?$/i,bn=/^-?\\d/,I=/^([\\-+])=([\\-+.\\de]+)/,a7={position:\"absolute\",visibility:\"hidden\",display:\"block\"},an=[\"Left\",\"Right\"],a1=[\"Top\",\"Bottom\"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,\"opacity\",\"opacity\");return e===\"\"?\"1\":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{\"float\":b.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC===\"string\"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC=\"number\"}if(bD==null||bC===\"number\"&&isNaN(bD)){return}if(bC===\"number\"&&!b.cssNumber[bz]){bD+=\"px\"}if(!bE||!(\"set\" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&\"get\" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx===\"cssFloat\"){bx=\"float\"}if(e&&\"get\" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each([\"height\",\"width\"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+\"px\"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||\"\")?(parseFloat(RegExp.$1)/100)+\"\":e?\"1\":\"\"},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?\"alpha(opacity=\"+bz*100+\")\":\"\",bw=bv&&bv.filter||bx.filter||\"\";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,\"\"))===\"\"){bx.removeAttribute(\"filter\");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+\" \"+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:\"inline-block\"},function(){if(bv){e=Z(bw,\"margin-right\",\"marginRight\")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,\"-$1\").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===\"\"&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw===\"fontSize\"?\"1em\":(bv||0);bv=bx.pixelLeft+\"px\";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===\"\"?\"auto\":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw===\"width\"?by.offsetWidth:by.offsetHeight,bz=bw===\"width\"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!==\"border\"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,\"padding\"+bz[bx]))||0}if(bv===\"margin\"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,\"border\"+bz[bx]+\"Width\"))||0}}}return bA+\"px\"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,\"padding\"+bz[bx]))||0;if(bv!==\"padding\"){bA+=parseFloat(b.css(by,\"border\"+bz[bx]+\"Width\"))||0}if(bv===\"margin\"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+\"px\"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,\"display\"))===\"none\")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\\[\\]$/,bs=/\\r?\\n/g,bq=/#.*$/,aD=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\\/\\//,M=/\\?/,a6=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,q=/^(?:select|textarea)/i,h=/\\s+/,br=/([?&])_=[^&]*/,K=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=[\"*/\"]+[\"*\"];try{aE=bl.href}catch(aw){aE=av.createElement(\"a\");aE.href=\"\";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!==\"string\"){bA=by;by=\"*\"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\\+/.test(bv);if(bC){bv=bv.substr(1)||\"*\"}bB=e[bv]=e[bv]||[];bB[bC?\"unshift\":\"push\"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC===\"string\"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx[\"*\"]){bC=aW(bv,bE,bz,bD,\"*\",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!==\"string\"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(\" \");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx=\"GET\";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz===\"object\"){bz=b.param(bz,b.ajaxSettings.traditional);bx=\"POST\"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:\"html\",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b(\"<div>\").append(bD.replace(a6,\"\")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,\"\\r\\n\")}}):{name:bv.name,value:bw.replace(bs,\"\\r\\n\")}}).get()}});b.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each([\"get\",\"post\"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,\"script\")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,\"json\")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:true,async:true,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":bb.String,\"text html\":true,\"text json\":b.parseJSON,\"text xml\":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz===\"object\"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks(\"once memory\"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||\"abort\";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||\"\";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader(\"Last-Modified\"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader(\"Etag\"))){b.etag[bC]=b2}}if(bZ===304){bX=\"notmodified\";bT=true}else{try{b4=G(bD,bY);bX=\"success\";bT=true}catch(b1){bX=\"parsererror\";b3=b1}}}else{b3=bX;if(!bX||bZ){bX=\"error\";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=\"\"+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger(\"ajax\"+(bT?\"Success\":\"Error\"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger(\"ajaxComplete\",[bJ,bD]);if(!(--b.active)){b.event.trigger(\"ajaxStop\")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+\"\").replace(bq,\"\").replace(c,s[1]+\"//\");bD.dataTypes=b.trim(bD.dataType||\"*\").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]===\"http:\"?80:443))!=(s[3]||(s[1]===\"http:\"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!==\"string\"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger(\"ajaxStart\")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?\"&\":\"?\")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,\"$1_=\"+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?\"&\":\"?\")+\"_=\"+bv:\"\")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader(\"Content-Type\",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader(\"If-Modified-Since\",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader(\"If-None-Match\",b.etag[bC])}}bJ.setRequestHeader(\"Accept\",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!==\"*\"?\", \"+aV+\"; q=0.01\":\"\"):bD.accepts[\"*\"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,\"No Transport\")}else{bJ.readyState=1;if(bw){bG.trigger(\"ajaxSend\",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort(\"timeout\")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+\"=\"+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join(\"&\").replace(k,\"+\")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+\"[\"+(typeof bz===\"object\"||b.isArray(bz)?bA:\"\")+\"]\",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by===\"object\"){for(var e in by){v(bw+\"[\"+e+\"]\",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]===\"*\"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader(\"content-type\")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+\" \"+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE===\"string\"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC===\"*\"){bC=bx}else{if(bx!==\"*\"&&bx!==bC){by=bx+\" \"+bC;bF=bG[by]||bG[\"* \"+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(\" \");if(bB[0]===bx||bB[0]===\"*\"){e=bG[bB[1]+\" \"+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error(\"No conversion from \"+by.replace(\" \",\" to \"))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\\=)\\?(&|$)|\\?\\?/i;b.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return b.expando+\"_\"+(aC++)}});b.ajaxPrefilter(\"json jsonp\",function(bD,bA,bC){var bx=bD.contentType===\"application/x-www-form-urlencoded\"&&(typeof bD.data===\"string\");if(bD.dataTypes[0]===\"jsonp\"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv=\"$1\"+bw+\"$2\";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\\?/.test(e)?\"&\":\"?\")+bD.jsonp+\"=\"+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters[\"script json\"]=function(){if(!bB){b.error(bw+\" was not called\")}return bB[0]};bD.dataTypes[0]=\"json\";return\"script\"}});b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter(\"script\",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type=\"GET\";e.global=false}});b.ajaxTransport(\"script\",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName(\"head\")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement(\"script\");e.async=\"async\";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,\"success\")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&(\"withCredentials\" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB[\"X-Requested-With\"]){bB[\"X-Requested-With\"]=\"XMLHttpRequest\"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=\"\"}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,a3,aH=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0(\"show\",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,\"olddisplay\")&&by===\"none\"){by=bw.style.display=\"\"}if(by===\"\"&&b.css(bw,\"display\")===\"none\"){b._data(bw,\"olddisplay\",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===\"\"||by===\"none\"){bw.style.display=b._data(bw,\"olddisplay\")||\"\"}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0(\"hide\",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,\"display\");if(by!==\"none\"&&!b._data(bw,\"olddisplay\")){b._data(bw,\"olddisplay\",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display=\"none\"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw===\"boolean\";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(\":hidden\");b(this)[by?\"show\":\"hide\"]()})}else{this.animate(a0(\"toggle\",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(\":hidden\"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||\"swing\"}if(bF===\"hide\"&&bI||bF===\"show\"&&!bI){return bE.complete.call(this)}if(bK&&(bB===\"height\"||bB===\"width\")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,\"display\")===\"inline\"&&b.css(this,\"float\")===\"none\"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)===\"inline\"){this.style.display=\"inline-block\"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow=\"hidden\"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,\"toggle\"+bD)||(bF===\"toggle\"?bI?\"show\":\"hide\":0);if(bA){b._data(this,\"toggle\"+bD,bA===\"show\"?\"hide\":\"show\");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?\"\":\"px\");if(bL!==\"px\"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]===\"-=\"?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,\"\")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!==\"string\"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||\"fx\",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(\".run\")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+\".run\"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0(\"show\",1),slideUp:a0(\"hide\",1),slideToggle:a0(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw===\"object\"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration===\"number\"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue=\"fx\"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv===\"auto\"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?\"\":\"px\");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,\"fxshow\"+e.prop)===L){b._data(e.elem,\"fxshow\"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,\"fxshow\"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each([\"\",\"X\",\"Y\"],function(bC,bD){bz.style[\"overflow\"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,\"fxshow\"+bA,true);b.removeData(bz,\"toggle\"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,\"opacity\",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each([\"width\",\"height\"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b(\"<\"+bx+\">\").appendTo(e),bw=bv.css(\"display\");bv.remove();if(bw===\"none\"||bw===\"\"){if(!a8){a8=av.createElement(\"iframe\");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode===\"CSS1Compat\"?\"<!doctype html>\":\"\")+\"<html><body>\");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,\"display\");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if(\"getBoundingClientRect\" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position===\"fixed\"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!==\"visible\"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position===\"relative\"||e.position===\"static\"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position===\"fixed\"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,\"marginTop\"))||0;bv+=parseFloat(b.css(e,\"marginLeft\"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,\"position\");if(bB===\"static\"){bx.style.position=\"relative\"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,\"top\"),bE=b.css(bx,\"left\"),bF=(bB===\"absolute\"||bB===\"fixed\")&&b.inArray(\"auto\",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if(\"using\" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,\"marginTop\"))||0;bx.left-=parseFloat(b.css(bw,\"marginLeft\"))||0;e.top+=parseFloat(b.css(bv[0],\"borderTopWidth\"))||0;e.left+=parseFloat(b.css(bv[0],\"borderLeftWidth\"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,\"position\")===\"static\")){e=e.offsetParent}return e})}});b.each([\"Left\",\"Top\"],function(bv,e){var bw=\"scroll\"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?(\"pageXOffset\" in by)?by[bv?\"pageYOffset\":\"pageXOffset\"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each([\"Height\",\"Width\"],function(bv,e){var bw=e.toLowerCase();b.fn[\"inner\"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,\"padding\")):this[bw]():null};b.fn[\"outer\"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?\"margin\":\"border\")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement[\"client\"+e],bx=bA.document.body;return bA.document.compatMode===\"CSS1Compat\"&&bB||bx&&bx[\"client\"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement[\"client\"+e],bA.body[\"scroll\"+e],bA.documentElement[\"scroll\"+e],bA.body[\"offset\"+e],bA.documentElement[\"offset\"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz===\"string\"?bz:bz+\"px\")}}}}});bb.jQuery=bb.$=b;if(typeof define===\"function\"&&define.amd&&define.amd.jQuery){define(\"jquery\",[],function(){return b})}})(window);/*!\n * jQuery UI 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI\n */\n(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:\"1.8.18\",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e===\"number\"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css(\"position\")))||(/absolute/).test(this.css(\"position\"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,\"position\",1))&&(/(auto|scroll)/).test(a.curCSS(this,\"overflow\",1)+a.curCSS(this,\"overflow-y\",1)+a.curCSS(this,\"overflow-x\",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,\"overflow\",1)+a.curCSS(this,\"overflow-y\",1)+a.curCSS(this,\"overflow-x\",1))}).eq(0)}return(/fixed/).test(this.css(\"position\"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css(\"zIndex\",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css(\"position\");if(e===\"absolute\"||e===\"relative\"||e===\"fixed\"){g=parseInt(f.css(\"zIndex\"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?\"selectstart\":\"mousedown\")+\".ui-disableSelection\",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(\".ui-disableSelection\")}});a.each([\"Width\",\"Height\"],function(g,e){var f=e===\"Width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,\"padding\"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,\"border\"+this+\"Width\",true))||0}if(n){l-=parseFloat(a.curCSS(m,\"margin\"+this,true))||0}});return l}a.fn[\"inner\"+e]=function(i){if(i===d){return k[\"inner\"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+\"px\")})};a.fn[\"outer\"+e]=function(i,l){if(typeof i!==\"number\"){return k[\"outer\"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+\"px\")})}});function c(g,e){var j=g.nodeName.toLowerCase();if(\"area\"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!==\"map\"){return false}f=a(\"img[usemap=#\"+h+\"]\")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:\"a\"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,\"visibility\")===\"hidden\"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[\":\"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,\"tabindex\")))},tabbable:function(g){var e=a.attr(g,\"tabindex\"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement(\"div\"));f.offsetHeight;a.extend(f.style,{minHeight:\"100px\",height:\"auto\",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart=\"onselectstart\" in f;e.removeChild(f).style.display=\"none\"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css(\"overflow\")===\"hidden\"){return false}var e=(f&&f===\"left\")?\"scrollLeft\":\"scrollTop\",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!\n * jQuery UI Widget 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Widget\n */\n(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler(\"remove\")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b(\"*\",this).add([this]).each(function(){try{b(this).triggerHandler(\"remove\")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(\".\")[0],j;f=f.split(\".\")[1];j=g+\"-\"+f;if(!e){e=h;h=b.Widget}b.expr[\":\"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i===\"string\",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)===\"_\"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind(\"remove.\"+this.widgetName,function(){e.destroy()});this._create();this._trigger(\"create\");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind(\".\"+this.widgetName).removeData(this.widgetName);this.widget().unbind(\".\"+this.widgetName).removeAttr(\"aria-disabled\").removeClass(this.widgetBaseClass+\"-disabled ui-state-disabled\")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f===\"string\"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e===\"disabled\"){this.widget()[f?\"addClass\":\"removeClass\"](this.widgetBaseClass+\"-disabled ui-state-disabled\").attr(\"aria-disabled\",f)}return this},enable:function(){return this._setOption(\"disabled\",false)},disable:function(){return this._setOption(\"disabled\",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!\n * jQuery UI Mouse 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Mouse\n *\n * Depends:\n *\tjquery.ui.widget.js\n */\n(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget(\"ui.mouse\",{options:{cancel:\":input,option\",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind(\"mousedown.\"+this.widgetName,function(e){return d._mouseDown(e)}).bind(\"click.\"+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+\".preventClickEvent\")){b.removeData(e.target,d.widgetName+\".preventClickEvent\");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel==\"string\"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+\".preventClickEvent\")){b.removeData(f.target,this.widgetName+\".preventClickEvent\")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+\".preventClickEvent\",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget(\"ui.resizable\",c.ui.mouse,{widgetEventPrefix:\"resize\",options:{alsoResize:false,animate:false,animateDuration:\"slow\",animateEasing:\"swing\",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:\"e,s,se\",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass(\"ui-resizable\");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||\"ui-resizable-helper\":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({position:this.element.css(\"position\"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(\"top\"),left:this.element.css(\"left\")}));this.element=this.element.parent().data(\"resizable\",this.element.data(\"resizable\"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css(\"marginLeft\"),marginTop:this.originalElement.css(\"marginTop\"),marginRight:this.originalElement.css(\"marginRight\"),marginBottom:this.originalElement.css(\"marginBottom\")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css(\"resize\");this.originalElement.css(\"resize\",\"none\");this._proportionallyResizeElements.push(this.originalElement.css({position:\"static\",zoom:1,display:\"block\"}));this.originalElement.css({margin:this.originalElement.css(\"margin\")});this._proportionallyResize()}this.handles=k.handles||(!c(\".ui-resizable-handle\",this.element).length?\"e,s,se\":{n:\".ui-resizable-n\",e:\".ui-resizable-e\",s:\".ui-resizable-s\",w:\".ui-resizable-w\",se:\".ui-resizable-se\",sw:\".ui-resizable-sw\",ne:\".ui-resizable-ne\",nw:\".ui-resizable-nw\"});if(this.handles.constructor==String){if(this.handles==\"all\"){this.handles=\"n,e,s,w,se,sw,ne,nw\"}var l=this.handles.split(\",\");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e=\"ui-resizable-\"+j;var h=c('<div class=\"ui-resizable-handle '+e+'\"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if(\"se\"==j){h.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\")}this.handles[j]=\".ui-resizable-\"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=[\"padding\",/ne|nw|n/.test(n)?\"Top\":/se|sw|s/.test(n)?\"Bottom\":/^e$/.test(n)?\"Right\":\"Left\"].join(\"\");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(\".ui-resizable-handle\",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:\"se\"}});if(k.autoHide){this._handles.hide();c(this.element).addClass(\"ui-resizable-autohide\").hover(function(){if(k.disabled){return}c(this).removeClass(\"ui-resizable-autohide\");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass(\"ui-resizable-autohide\");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\").removeData(\"resizable\").unbind(\".resizable\").find(\".ui-resizable-handle\").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css(\"position\"),width:f.outerWidth(),height:f.outerHeight(),top:f.css(\"top\"),left:f.css(\"left\")})).remove()}this.originalElement.css(\"resize\",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(\".ui-draggable\")||(/absolute/).test(e.css(\"position\"))){e.css({position:\"absolute\",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css(\"left\")),h=b(this.helper.css(\"top\"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio==\"number\")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(\".ui-resizable-\"+this.axis).css(\"cursor\");c(\"body\").css(\"cursor\",i==\"auto\"?this.axis+\"-resize\":i);e.addClass(\"ui-resizable-resizing\");this._propagate(\"start\",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate(\"resize\",e);h.css({top:this.position.top+\"px\",left:this.position.left+\"px\",width:this.size.width+\"px\",height:this.size.height+\"px\"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger(\"resize\",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],\"left\")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css(\"left\"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css(\"top\"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c(\"body\").css(\"cursor\",\"auto\");this.element.removeClass(\"ui-resizable-resizing\");this._propagate(\"stop\",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e==\"sw\"){h.left=j.left+(f.width-h.width);h.top=null}if(e==\"nw\"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css(\"borderTopWidth\"),h.css(\"borderRightWidth\"),h.css(\"borderBottomWidth\"),h.css(\"borderLeftWidth\")],j=[h.css(\"paddingTop\"),h.css(\"paddingRight\"),h.css(\"paddingBottom\"),h.css(\"paddingLeft\")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(\":hidden\")||c(g).parents(\":hidden\").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style=\"overflow:hidden;\"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:\"absolute\",left:this.elementOffset.left-g+\"px\",top:this.elementOffset.top-g+\"px\",zIndex:++i.zIndex});this.helper.appendTo(\"body\").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!=\"resize\"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:\"1.8.18\"});c.ui.plugin.add(\"resizable\",\"alsoResize\",{start:function(f,g){var e=c(this).data(\"resizable\"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data(\"resizable-alsoresize\",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css(\"left\"),10),top:parseInt(k.css(\"top\"),10)})})};if(typeof(i.alsoResize)==\"object\"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data(\"resizable\"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data(\"resizable-alsoresize\"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?[\"width\",\"height\"]:[\"width\",\"height\",\"top\",\"left\"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)==\"object\"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData(\"resizable-alsoresize\")}});c.ui.plugin.add(\"resizable\",\"animate\",{stop:function(i,n){var p=c(this).data(\"resizable\"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],\"left\")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css(\"left\"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css(\"top\"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css(\"width\"),10),height:parseInt(p.element.css(\"height\"),10),top:parseInt(p.element.css(\"top\"),10),left:parseInt(p.element.css(\"left\"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate(\"resize\",i)}})}});c.ui.plugin.add(\"resizable\",\"containment\",{start:function(f,r){var t=c(this).data(\"resizable\"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c([\"Top\",\"Right\",\"Left\",\"Bottom\"]).each(function(p,o){i[p]=b(n.css(\"padding\"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,\"left\")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data(\"resizable\"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css(\"position\"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css(\"position\"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data(\"resizable\"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css(\"position\"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css(\"position\"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add(\"resizable\",\"ghost\",{start:function(g,h){var e=c(this).data(\"resizable\"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:\"block\",position:\"relative\",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass(\"ui-resizable-ghost\").addClass(typeof i.ghost==\"string\"?i.ghost:\"\");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data(\"resizable\"),h=e.options;if(e.ghost){e.ghost.css({position:\"relative\",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data(\"resizable\"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add(\"resizable\",\"grid\",{resize:function(e,m){var p=c(this).data(\"resizable\"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid==\"number\"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!\n * jQuery hashchange event - v1.3 - 7/21/2010\n * http://benalman.com/projects/jquery-hashchange-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,b){var c=\"hashchange\",h=document,f,g=$.event.special,i=h.documentMode,d=\"on\"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return\"#\"+j.replace(/^[^#]*#?(.*)$/,\"$1\")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,\"\")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex=\"-1\" title=\"empty\"/>').hide().one(\"load\",function(){r||l(a());n()}).attr(\"src\",r||\"javascript:0\").insertAfter(\"body\")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName===\"title\"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain=\"'+t+'\"<\\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:\"xy\",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),[\"iframe\",\"#document\",\"html\",\"body\"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode==\"BackCompat\"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e==\"object\"){d=e;e=0}if(typeof d==\"function\"){d={onAfter:d}}if(f==\"max\"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is(\"html,body\");switch(typeof k){case\"number\":case\"string\":if(/^([+-]=)?\\d+(\\.\\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case\"object\":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(\"\"),function(q,r){var s=r==\"x\"?\"Left\":\"Top\",u=s.toLowerCase(),p=\"scroll\"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css(\"margin\"+s))||0;g[p]-=parseInt(k.css(\"border\"+s+\"Width\"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r==\"x\"?\"width\":\"height\"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)==\"%\"?parseFloat(t)/100*n:t}if(/^\\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i==\"x\"?\"Width\":\"Height\",e=\"scroll\"+h;if(!c(j).is(\"html,body\")){return j[e]-c(j)[h.toLowerCase()]()}var g=\"client\"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d==\"object\"?d:{top:d,left:d}}})(jQuery);/*!\n PowerTip - v1.2.0 - 2013-04-03\n http://stevenbenner.github.com/jquery-powertip/\n Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).\n Released under MIT license.\n https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt\n*/\n(function(a){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k(\"body\");var n=\"displayController\",e=\"hasActiveHover\",d=\"forcedOpen\",u=\"hasMouseMove\",f=\"mouseOnToPopup\",g=\"originalTitle\",y=\"powertip\",o=\"powertipjq\",l=\"powertiptarget\",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)===\"string\"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr(\"title\");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr(\"title\")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({\"mouseenter.powertip\":function J(P){k.powerTip.show(this,P)},\"mouseleave.powertip\":function L(){k.powerTip.hide(this)},\"focus.powertip\":function K(){k.powerTip.show(this)},\"blur.powertip\":function H(){k.powerTip.hide(this,true)},\"keydown.powertip\":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:\"powerTip\",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:\"n\",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:[\"n\",\"ne\",\"nw\",\"s\"],e:[\"e\",\"ne\",\"se\",\"w\",\"nw\",\"sw\",\"n\",\"s\",\"e\"],s:[\"s\",\"se\",\"sw\",\"n\"],w:[\"w\",\"nw\",\"sw\",\"e\",\"ne\",\"se\",\"n\",\"s\",\"w\"],nw:[\"nw\",\"w\",\"sw\",\"n\",\"s\",\"se\",\"nw\"],ne:[\"ne\",\"e\",\"se\",\"n\",\"s\",\"sw\",\"ne\"],sw:[\"sw\",\"w\",\"nw\",\"s\",\"n\",\"ne\",\"sw\"],se:[\"se\",\"e\",\"ne\",\"s\",\"n\",\"nw\",\"se\"],\"nw-alt\":[\"nw-alt\",\"n\",\"ne-alt\",\"sw-alt\",\"s\",\"se-alt\",\"w\",\"e\"],\"ne-alt\":[\"ne-alt\",\"n\",\"nw-alt\",\"se-alt\",\"s\",\"sw-alt\",\"e\",\"w\"],\"sw-alt\":[\"sw-alt\",\"s\",\"se-alt\",\"nw-alt\",\"n\",\"ne-alt\",\"w\",\"e\"],\"se-alt\":[\"se-alt\",\"s\",\"sw-alt\",\"ne-alt\",\"n\",\"nw-alt\",\"e\",\"w\"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(\".powertip\").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr(\"title\",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top=\"auto\";F.left=\"auto\";F.right=\"auto\";F.bottom=\"auto\";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split(\"-\")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case\"n\":N.set(\"left\",I.left-(J/2));N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"e\":N.set(\"left\",I.left+P);N.set(\"top\",I.top-(O/2));break;case\"s\":N.set(\"left\",I.left-(J/2));N.set(\"top\",I.top+P);break;case\"w\":N.set(\"top\",I.top-(O/2));N.set(\"right\",c.windowWidth-I.left+P);break;case\"nw\":N.set(\"bottom\",c.windowHeight-I.top+P);N.set(\"right\",c.windowWidth-I.left-20);break;case\"nw-alt\":N.set(\"left\",I.left);N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"ne\":N.set(\"left\",I.left-20);N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"ne-alt\":N.set(\"bottom\",c.windowHeight-I.top+P);N.set(\"right\",c.windowWidth-I.left);break;case\"sw\":N.set(\"top\",I.top+P);N.set(\"right\",c.windowWidth-I.left-20);break;case\"sw-alt\":N.set(\"left\",I.left);N.set(\"top\",I.top+P);break;case\"se\":N.set(\"left\",I.left-20);N.set(\"top\",I.top+P);break;case\"se-alt\":N.set(\"top\",I.top+P);N.set(\"right\",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case\"n\":M=O.left+N/2;L=O.top;break;case\"e\":M=O.left+N;L=O.top+I/2;break;case\"s\":M=O.left+N/2;L=O.top+I;break;case\"w\":M=O.left;L=O.top+I/2;break;case\"nw\":M=O.left;L=O.top;break;case\"ne\":M=O.left+N;L=O.top;break;case\"sw\":M=O.left;L=O.top+I;break;case\"se\":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest(\"svg\")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=[\"nw\",\"n\",\"ne\",\"e\",\"se\",\"s\",\"sw\",\"w\"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k(\"#\"+Q.popupId);if(O.length===0){O=k(\"<div/>\",{id:Q.popupId});if(w.length===0){w=k(\"body\")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on(\"mousemove\",M);s.on(\"scroll\",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger(\"powerTipPreRender\");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger(\"powerTipRender\");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger(\"powerTipOpen\")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set(\"top\",c.currentY+Q.offset);T.set(\"left\",c.currentX+Q.offset);O.css(T);R.trigger(\"powerTipClose\")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set(\"top\",c.currentY+Q.offset);U.set(\"left\",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set(\"left\",c.windowWidth-R)}else{if(S===p.bottom){U.set(\"top\",c.scrollTop+c.windowHeight-V)}}}else{U.set(\"left\",c.currentX-R-Q.offset);U.set(\"top\",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set(\"top\",0);V.set(\"left\",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(\":disabled\")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(\":focus\")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on(\"mousemove\",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k(\"#\"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));/*!\n * jQuery UI Touch Punch 0.2.3\n *\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n(function(b){b.support.touch=\"ontouchend\" in document;if(!b.support.touch){return}var d=b.ui.mouse.prototype,f=d._mouseInit,c=d._mouseDestroy,a;function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDefault();var j=h.originalEvent.changedTouches[0],g=document.createEvent(\"MouseEvents\");g.initMouseEvent(i,true,true,window,1,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,0,null);h.target.dispatchEvent(g)}d._touchStart=function(h){var g=this;if(a||!g._mouseCapture(h.originalEvent.changedTouches[0])){return}a=true;g._touchMoved=false;e(h,\"mouseover\");e(h,\"mousemove\");e(h,\"mousedown\")};d._touchMove=function(g){if(!a){return}this._touchMoved=true;e(g,\"mousemove\")};d._touchEnd=function(g){if(!a){return}e(g,\"mouseup\");e(g,\"mouseout\");if(!this._touchMoved){e(g,\"click\")}a=false};d._mouseInit=function(){var g=this;g.element.bind({touchstart:b.proxy(g,\"_touchStart\"),touchmove:b.proxy(g,\"_touchMove\"),touchend:b.proxy(g,\"_touchEnd\")});f.call(g)};d._mouseDestroy=function(){var g=this;g.element.unbind({touchstart:b.proxy(g,\"_touchStart\"),touchmove:b.proxy(g,\"_touchMove\"),touchend:b.proxy(g,\"_touchEnd\")});c.call(g)}})(jQuery);/*!\n * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016\n * http://www.smartmenus.org/\n *\n * Copyright Vasil Dinkov, Vadikom Web Ltd.\n * http://vadikom.com\n *\n * Licensed MIT\n */\n(function(a){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],a)}else{if(typeof module===\"object\"&&typeof module.exports===\"object\"){module.exports=a(require(\"jquery\"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d=\"ontouchstart\" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=\".smartmenus_mouse\";if(!h&&!m){var o=true,l=null;a(document).bind(i([[\"mousemove\",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest(\"a\");if(r.is(\"a\")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?\"touchstart\":\"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut\",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=\"\"}var m={};a.each(l,function(o,p){m[p[0].split(\" \").join(n+\" \")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId=\"\";this.accessIdPrefix=\"\";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d=\"perspective\" in m.style||\"webkitPerspective\" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+\"\").replace(/\\D/g,\"\");this.accessIdPrefix=\"sm-\"+this.rootId+\"-\";if(this.$root.hasClass(\"sm-rtl\")){this.opts.rightToLeftSubMenus=true}var r=\".smartmenus\";this.$root.data(\"smartmenus\",this).attr(\"data-smartmenus-id\",this.rootId).dataSM(\"level\",1).bind(i([[\"mouseover focusin\",a.proxy(this.rootOver,this)],[\"mouseout focusout\",a.proxy(this.rootOut,this)],[\"keydown\",a.proxy(this.rootKeyDown,this)]],r)).delegate(\"a\",i([[\"mouseenter\",a.proxy(this.itemEnter,this)],[\"mouseleave\",a.proxy(this.itemLeave,this)],[\"mousedown\",a.proxy(this.itemDown,this)],[\"focus\",a.proxy(this.itemFocus,this)],[\"blur\",a.proxy(this.itemBlur,this)],[\"click\",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([[\"touchstart\",a.proxy(this.docTouchStart,this)],[\"touchmove\",a.proxy(this.docTouchMove,this)],[\"touchend\",a.proxy(this.docTouchEnd,this)],[\"click\",a.proxy(this.docClick,this)]],r))}a(window).bind(i([[\"resize orientationchange\",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a(\"<span/>\").addClass(\"sub-arrow\");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find(\"ul\").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find(\"a\").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\\.[^#\\?\\/]*/i,m=/#.*/,q=window.location.href.replace(p,\"\"),o=q.replace(m,\"\");this.$root.find(\"a\").each(function(){var s=this.href.replace(p,\"\"),t=a(this);if(s==q||s==o){t.addClass(\"current\");if(l.opts.markCurrentTree){t.parentsUntil(\"[data-smartmenus-id]\",\"ul\").each(function(){a(this).dataSM(\"parent-a\").addClass(\"current\")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=\".smartmenus\";this.$root.removeData(\"smartmenus\").removeAttr(\"data-smartmenus-id\").removeDataSM(\"level\").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find(\"ul\").each(function(){var o=a(this);if(o.dataSM(\"scroll-arrows\")){o.dataSM(\"scroll-arrows\").remove()}if(o.dataSM(\"shown-before\")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:\"\",minWidth:\"\",maxWidth:\"\"}).removeClass(\"sm-nowrap\")}if(o.dataSM(\"scroll-arrows\")){o.dataSM(\"scroll-arrows\").remove()}o.css({zIndex:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\",display:\"\"})}if((o.attr(\"id\")||\"\").indexOf(l.accessIdPrefix)==0){o.removeAttr(\"id\")}}).removeDataSM(\"in-mega\").removeDataSM(\"shown-before\").removeDataSM(\"ie-shim\").removeDataSM(\"scroll-arrows\").removeDataSM(\"parent-a\").removeDataSM(\"level\").removeDataSM(\"beforefirstshowfired\").removeAttr(\"role\").removeAttr(\"aria-hidden\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-expanded\");this.$root.find(\"a.has-submenu\").each(function(){var o=a(this);if(o.attr(\"id\").indexOf(l.accessIdPrefix)==0){o.removeAttr(\"id\")}}).removeClass(\"has-submenu\").removeDataSM(\"sub\").removeAttr(\"aria-haspopup\").removeAttr(\"aria-controls\").removeAttr(\"aria-expanded\").closest(\"li\").removeDataSM(\"sub\");if(this.opts.subIndicators){this.$root.find(\"span.sub-arrow\").remove()}if(this.opts.markCurrentItem){this.$root.find(\"a.current\").removeClass(\"current\")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(\":visible\")){var m=this.$root.offset();this.$disableOverlay=a('<div class=\"sm-jquery-disable-overlay\"/>').css({position:\"absolute\",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is(\"a\")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest(\"ul\");while(l.dataSM(\"in-mega\")){l=l.parent().closest(\"ul\")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css(\"display\")==\"none\"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:\"absolute\",visibility:\"hidden\"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?\"$root\":\"$firstSub\"].css(\"z-index\"));if(!l&&isNaN(m)){m=parseInt(this.$root.css(\"z-index\"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?\"Height\":\"Width\",o=document.documentElement[\"client\"+m],n=window[\"inner\"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css(\"position\")==\"static\"},isCSSOn:function(){return this.$firstLink.css(\"display\")==\"block\"},isFixed:function(){var l=this.$root.css(\"position\")==\"fixed\";if(!l){this.$root.parentsUntil(\"body\").each(function(){if(a(this).css(\"position\")==\"fixed\"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass(\"mega-menu\")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest(\"ul\"),q=n.dataSM(\"level\");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM(\"parent-a\")[0])){var m=this;a(n.parentsUntil(\"[data-smartmenus-id]\",\"ul\").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM(\"parent-a\"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler(\"activate.smapi\",p[0])===false){return}var o=p.dataSM(\"sub\");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler(\"blur.smapi\",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest(\"ul\")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler(\"click.smapi\",n[0])===false){return false}var p=a(o.target).is(\"span.sub-arrow\"),m=n.dataSM(\"sub\"),l=m?m.dataSM(\"level\")==2:false;if(m&&!m.is(\":visible\")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(\":visible\")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass(\"disabled\")||this.$root.triggerHandler(\"select.smapi\",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM(\"mousedown\",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest(\"ul\").dataSM(\"level\")==1?1:this.opts.showTimeout)}this.$root.triggerHandler(\"mouseenter.smapi\",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM(\"mousedown\"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler(\"focus.smapi\",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM(\"mousedown\");this.$root.triggerHandler(\"mouseleave.smapi\",l[0])},menuHide:function(m){if(this.$root.triggerHandler(\"beforehide.smapi\",m[0])===false){return}m.stop(true,true);if(m.css(\"display\")!=\"none\"){var l=function(){m.css(\"z-index\",\"\")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM(\"ie-shim\")){m.dataSM(\"ie-shim\").remove().css({\"-webkit-transform\":\"\",transform:\"\"})}if(m.dataSM(\"scroll\")){this.menuScrollStop(m);m.css({\"touch-action\":\"\",\"-ms-touch-action\":\"\",\"-webkit-transform\":\"\",transform:\"\"}).unbind(\".smartmenus_scroll\").removeDataSM(\"scroll\").dataSM(\"scroll-arrows\").hide()}m.dataSM(\"parent-a\").removeClass(\"highlighted\").attr(\"aria-expanded\",\"false\");m.attr({\"aria-expanded\":\"false\",\"aria-hidden\":\"true\"});var n=m.dataSM(\"level\");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler(\"hide.smapi\",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(\":visible\")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM(\"ie-shim\")){this.$root.dataSM(\"ie-shim\").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler(\"hideAll.smapi\")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM(\"sub\");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM(\"ie-shim\")){l.dataSM(\"ie-shim\",a(\"<iframe/>\").attr({src:\"javascript:0\",tabindex:-9}).css({position:\"absolute\",top:\"auto\",left:\"0\",opacity:0,border:\"0\"}))}},menuInit:function(l){if(!l.dataSM(\"in-mega\")){if(l.hasClass(\"mega-menu\")){l.find(\"ul\").dataSM(\"in-mega\",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll(\"a\").eq(-1);if(!n.length){n=l.prevAll().find(\"a\").eq(-1)}n.addClass(\"has-submenu\").dataSM(\"sub\",l);l.dataSM(\"parent-a\",n).dataSM(\"level\",q).parent().dataSM(\"sub\",l);var o=n.attr(\"id\")||this.accessIdPrefix+(++this.idInc),p=l.attr(\"id\")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,\"aria-haspopup\":\"true\",\"aria-controls\":p,\"aria-expanded\":\"false\"});l.attr({id:p,role:\"group\",\"aria-hidden\":\"true\",\"aria-labelledby\":o,\"aria-expanded\":\"false\"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM(\"parent-a\"),D=r.closest(\"li\"),E=D.parent(),l=K.dataSM(\"level\"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is(\"[data-sm-horizontal-sub]\")||l==2&&!E.hasClass(\"sm-vertical\"),B=this.opts.rightToLeftSubMenus&&!D.is(\"[data-sm-reverse]\")||!this.opts.rightToLeftSubMenus&&D.is(\"[data-sm-reverse]\"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM(\"scroll-arrows\")){K.dataSM(\"scroll-arrows\",a([a('<span class=\"scroll-up\"><span class=\"scroll-up-arrow\"></span></span>')[0],a('<span class=\"scroll-down\"><span class=\"scroll-down-arrow\"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM(\"scroll\").up=a(this).hasClass(\"scroll-up\");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},\"mousewheel DOMMouseScroll\":function(x){x.preventDefault()}}).insertAfter(K))}var I=\".smartmenus_scroll\";K.dataSM(\"scroll\",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM(\"scroll-arrows\").eq(1))}).bind(i([[\"mouseover\",function(x){G.menuScrollOver(K,x)}],[\"mouseout\",function(x){G.menuScrollOut(K,x)}],[\"mousewheel DOMMouseScroll\",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM(\"scroll-arrows\").css({top:\"auto\",left:\"0\",marginLeft:C+(parseInt(K.css(\"border-left-width\"))||0),width:t-(parseInt(K.css(\"border-left-width\"))||0)-(parseInt(K.css(\"border-right-width\"))||0),zIndex:K.css(\"z-index\")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({\"touch-action\":\"none\",\"-ms-touch-action\":\"none\"}).bind(i([[d?\"touchstart touchmove touchend\":\"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp\",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:\"auto\",left:\"0\",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM(\"ie-shim\")){K.dataSM(\"ie-shim\").css({zIndex:K.css(\"z-index\"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM(\"scroll\"),q=r.dataSM(\"scroll-arrows\"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM(\"level\");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM(\"sub\")&&this.activatedItems[l-1].dataSM(\"sub\").is(\":visible\")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM(\"ie-shim\")).css(this.cssTransforms3d?{\"-webkit-transform\":\"translate3d(0, \"+p.y+\"px, 0)\",transform:\"translate3d(0, \"+p.y+\"px, 0)\"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM(\"scroll-arrows\").eq(l?0:1).is(\":visible\")){m.dataSM(\"scroll\").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||\"\").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM(\"scroll-arrows\").css(\"visibility\",\"hidden\")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM(\"scroll\"),l=a(window).scrollTop()-n.dataSM(\"parent-a\").offset().top-m.itemH;n.dataSM(\"scroll-arrows\").eq(0).css(\"margin-top\",l).end().eq(1).css(\"margin-top\",l+this.getViewportHeight()-m.arrowDownH).end().css(\"visibility\",\"visible\")}}},menuScrollRefreshData:function(n){var m=n.dataSM(\"scroll\"),l=a(window).scrollTop()-n.dataSM(\"parent-a\").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css(\"margin-top\"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM(\"scroll\").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM(\"scroll\");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM(\"beforefirstshowfired\")){n.dataSM(\"beforefirstshowfired\",true);if(this.$root.triggerHandler(\"beforefirstshow.smapi\",n[0])===false){return}}if(this.$root.triggerHandler(\"beforeshow.smapi\",n[0])===false){return}n.dataSM(\"shown-before\",true).stop(true,true);if(!n.is(\":visible\")){var m=n.dataSM(\"parent-a\");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass(\"highlighted\")}if(this.isCollapsible()){n.removeClass(\"sm-nowrap\").css({zIndex:\"\",width:\"auto\",minWidth:\"\",maxWidth:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\"})}else{n.css(\"z-index\",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:\"auto\",minWidth:\"\",maxWidth:\"\"}).addClass(\"sm-nowrap\");if(this.opts.subMenusMinWidth){n.css(\"min-width\",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css(\"max-width\",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass(\"sm-nowrap\").css(\"width\",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM(\"ie-shim\")){n.dataSM(\"ie-shim\").insertBefore(n)}}var l=function(){n.css(\"overflow\",\"\")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr(\"aria-expanded\",\"true\");n.attr({\"aria-expanded\":\"true\",\"aria-hidden\":\"false\"});this.visibleSubMenus.push(n);this.$root.triggerHandler(\"show.smapi\",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\\n\\nIf you want to show this menu via the \"popupShow\" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM(\"shown-before\",true).stop(true,true);if(!this.$root.is(\":visible\")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM(\"ie-shim\")){this.$root.dataSM(\"ie-shim\").css({zIndex:this.$root.css(\"z-index\"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css(\"overflow\",\"\")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM(\"sub\");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is(\"a\")&&this.handleItemEvents(l)){var n=l.dataSM(\"sub\");if(n&&!n.is(\":visible\")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!(\"onorientationchange\" in window)||m.type==\"orientationchange\"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+\"_smartmenus\",m)}return this.data(l+\"_smartmenus\")};a.fn.removeDataSM=function(l){return this.removeData(l+\"_smartmenus\")};a.fn.smartmenus=function(m){if(typeof m==\"string\"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data(\"smartmenus\");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:\"10em\",subMenusMaxWidth:\"20em\",subIndicators:true,subIndicatorsPos:\"prepend\",subIndicatorsText:\"+\",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a}));"
  },
  {
    "path": "docs/menu.js",
    "content": "function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {\n  function makeTree(data,relPath) {\n    var result='';\n    if ('children' in data) {\n      result+='<ul>';\n      for (var i in data.children) {\n        result+='<li><a href=\"'+relPath+data.children[i].url+'\">'+\n                                data.children[i].text+'</a>'+\n                                makeTree(data.children[i],relPath)+'</li>';\n      }\n      result+='</ul>';\n    }\n    return result;\n  }\n\n  $('#main-nav').append(makeTree(menudata,relPath));\n  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');\n  if (searchEnabled) {\n    if (serverSide) {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><div class=\"left\"><form id=\"FSearchBox\" action=\"'+searchPage+'\" method=\"get\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag.png\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"'+search+'\" size=\"20\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\"></form></div><div class=\"right\"></div></div></li>');\n    } else {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><span class=\"left\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag_sel.png\" onmouseover=\"return searchBox.OnSearchSelectShow()\" onmouseout=\"return searchBox.OnSearchSelectHide()\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" value=\"'+search+'\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\" onkeyup=\"searchBox.OnSearchFieldChange(event)\"/></span><span class=\"right\"><a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\"><img id=\"MSearchCloseImg\" border=\"0\" src=\"'+relPath+'search/close.png\" alt=\"\"/></a></span></div></li>');\n    }\n  }\n  $('#main-menu').smartmenus();\n}\n"
  },
  {
    "path": "docs/menudata.js",
    "content": "var menudata={children:[\n{text:\"Main Page\",url:\"index.html\"},\n{text:\"Data Structures\",url:\"annotated.html\",children:[\n{text:\"Data Structures\",url:\"annotated.html\"},\n{text:\"Data Structure Index\",url:\"classes.html\"},\n{text:\"Data Fields\",url:\"functions.html\",children:[\n{text:\"All\",url:\"functions.html\",children:[\n{text:\"a\",url:\"functions.html#index_a\"},\n{text:\"b\",url:\"functions.html#index_b\"},\n{text:\"c\",url:\"functions.html#index_c\"},\n{text:\"d\",url:\"functions.html#index_d\"},\n{text:\"e\",url:\"functions.html#index_e\"},\n{text:\"f\",url:\"functions.html#index_f\"},\n{text:\"g\",url:\"functions.html#index_g\"},\n{text:\"h\",url:\"functions.html#index_h\"},\n{text:\"i\",url:\"functions.html#index_i\"},\n{text:\"l\",url:\"functions.html#index_l\"},\n{text:\"m\",url:\"functions.html#index_m\"},\n{text:\"n\",url:\"functions.html#index_n\"},\n{text:\"o\",url:\"functions.html#index_o\"},\n{text:\"p\",url:\"functions.html#index_p\"},\n{text:\"r\",url:\"functions.html#index_r\"},\n{text:\"s\",url:\"functions.html#index_s\"},\n{text:\"t\",url:\"functions.html#index_t\"},\n{text:\"u\",url:\"functions.html#index_u\"},\n{text:\"v\",url:\"functions.html#index_v\"},\n{text:\"w\",url:\"functions.html#index_w\"}]},\n{text:\"Variables\",url:\"functions_vars.html\",children:[\n{text:\"a\",url:\"functions_vars.html#index_a\"},\n{text:\"b\",url:\"functions_vars.html#index_b\"},\n{text:\"c\",url:\"functions_vars.html#index_c\"},\n{text:\"d\",url:\"functions_vars.html#index_d\"},\n{text:\"e\",url:\"functions_vars.html#index_e\"},\n{text:\"f\",url:\"functions_vars.html#index_f\"},\n{text:\"g\",url:\"functions_vars.html#index_g\"},\n{text:\"h\",url:\"functions_vars.html#index_h\"},\n{text:\"i\",url:\"functions_vars.html#index_i\"},\n{text:\"l\",url:\"functions_vars.html#index_l\"},\n{text:\"m\",url:\"functions_vars.html#index_m\"},\n{text:\"n\",url:\"functions_vars.html#index_n\"},\n{text:\"o\",url:\"functions_vars.html#index_o\"},\n{text:\"p\",url:\"functions_vars.html#index_p\"},\n{text:\"r\",url:\"functions_vars.html#index_r\"},\n{text:\"s\",url:\"functions_vars.html#index_s\"},\n{text:\"t\",url:\"functions_vars.html#index_t\"},\n{text:\"u\",url:\"functions_vars.html#index_u\"},\n{text:\"v\",url:\"functions_vars.html#index_v\"},\n{text:\"w\",url:\"functions_vars.html#index_w\"}]}]}]},\n{text:\"Files\",url:\"files.html\",children:[\n{text:\"File List\",url:\"files.html\"},\n{text:\"Globals\",url:\"globals.html\",children:[\n{text:\"All\",url:\"globals.html\",children:[\n{text:\"_\",url:\"globals.html#index__\"},\n{text:\"f\",url:\"globals.html#index_f\"}]},\n{text:\"Functions\",url:\"globals_func.html\",children:[\n{text:\"f\",url:\"globals_func.html#index_f\"}]},\n{text:\"Variables\",url:\"globals_vars.html\"},\n{text:\"Macros\",url:\"globals_defs.html\"}]}]}]}\n"
  },
  {
    "path": "docs/navtree.css",
    "content": "#nav-tree .children_ul {\n  margin:0;\n  padding:4px;\n}\n\n#nav-tree ul {\n  list-style:none outside none;\n  margin:0px;\n  padding:0px;\n}\n\n#nav-tree li {\n  white-space:nowrap;\n  margin:0px;\n  padding:0px;\n}\n\n#nav-tree .plus {\n  margin:0px;\n}\n\n#nav-tree .selected {\n  background-image: url('tab_a.png');\n  background-repeat:repeat-x;\n  color: #fff;\n  text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n}\n\n#nav-tree img {\n  margin:0px;\n  padding:0px;\n  border:0px;\n  vertical-align: middle;\n}\n\n#nav-tree a {\n  text-decoration:none;\n  padding:0px;\n  margin:0px;\n  outline:none;\n}\n\n#nav-tree .label {\n  margin:0px;\n  padding:0px;\n  font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n}\n\n#nav-tree .label a {\n  padding:2px;\n}\n\n#nav-tree .selected a {\n  text-decoration:none;\n  color:#fff;\n}\n\n#nav-tree .children_ul {\n  margin:0px;\n  padding:0px;\n}\n\n#nav-tree .item {\n  margin:0px;\n  padding:0px;\n}\n\n#nav-tree {\n  padding: 0px 0px;\n  background-color: #FAFAFF; \n  font-size:14px;\n  overflow:auto;\n}\n\n#doc-content {\n  overflow:auto;\n  display:block;\n  padding:0px;\n  margin:0px;\n  -webkit-overflow-scrolling : touch; /* iOS 5+ */\n}\n\n#side-nav {\n  padding:0 6px 0 0;\n  margin: 0px;\n  display:block;\n  position: absolute;\n  left: 0px;\n  width: 250px;\n}\n\n.ui-resizable .ui-resizable-handle {\n  display:block;\n}\n\n.ui-resizable-e {\n  background-image:url(\"splitbar.png\");\n  background-size:100%;\n  background-repeat:no-repeat;\n  background-attachment: scroll;\n  cursor:ew-resize;\n  height:100%;\n  right:0;\n  top:0;\n  width:6px;\n}\n\n.ui-resizable-handle {\n  display:none;\n  font-size:0.1px;\n  position:absolute;\n  z-index:1;\n}\n\n#nav-tree-contents {\n  margin: 6px 0px 0px 0px;\n}\n\n#nav-tree {\n  background-image:url('nav_h.png');\n  background-repeat:repeat-x;\n  background-color: #F9FAFC;\n  -webkit-overflow-scrolling : touch; /* iOS 5+ */\n}\n\n#nav-sync {\n  position:absolute;\n  top:5px;\n  right:24px;\n  z-index:0;\n}\n\n#nav-sync img {\n  opacity:0.3;\n}\n\n#nav-sync img:hover {\n  opacity:0.9;\n}\n\n@media print\n{\n  #nav-tree { display: none; }\n  div.ui-resizable-handle { display: none; position: relative; }\n}\n\n"
  },
  {
    "path": "docs/navtree.js",
    "content": "var navTreeSubIndices = new Array();\nvar arrowDown = '&#9660;';\nvar arrowRight = '&#9658;';\n\nfunction getData(varName)\n{\n  var i = varName.lastIndexOf('/');\n  var n = i>=0 ? varName.substring(i+1) : varName;\n  return eval(n.replace(/\\-/g,'_'));\n}\n\nfunction stripPath(uri)\n{\n  return uri.substring(uri.lastIndexOf('/')+1);\n}\n\nfunction stripPath2(uri)\n{\n  var i = uri.lastIndexOf('/');\n  var s = uri.substring(i+1);\n  var m = uri.substring(0,i+1).match(/\\/d\\w\\/d\\w\\w\\/$/);\n  return m ? uri.substring(i-6) : s;\n}\n\nfunction hashValue()\n{\n  return $(location).attr('hash').substring(1).replace(/[^\\w\\-]/g,'');\n}\n\nfunction hashUrl()\n{\n  return '#'+hashValue();\n}\n\nfunction pathName()\n{\n  return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\\(\\)]/g, '');\n}\n\nfunction localStorageSupported()\n{\n  try {\n    return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;\n  }\n  catch(e) {\n    return false;\n  }\n}\n\n\nfunction storeLink(link)\n{\n  if (!$(\"#nav-sync\").hasClass('sync') && localStorageSupported()) {\n      window.localStorage.setItem('navpath',link);\n  }\n}\n\nfunction deleteLink()\n{\n  if (localStorageSupported()) {\n    window.localStorage.setItem('navpath','');\n  }\n}\n\nfunction cachedLink()\n{\n  if (localStorageSupported()) {\n    return window.localStorage.getItem('navpath');\n  } else {\n    return '';\n  }\n}\n\nfunction getScript(scriptName,func,show)\n{\n  var head = document.getElementsByTagName(\"head\")[0];\n  var script = document.createElement('script');\n  script.id = scriptName;\n  script.type = 'text/javascript';\n  script.onload = func;\n  script.src = scriptName+'.js';\n  if ($.browser.msie && $.browser.version<=8) {\n    // script.onload does not work with older versions of IE\n    script.onreadystatechange = function() {\n      if (script.readyState=='complete' || script.readyState=='loaded') {\n        func(); if (show) showRoot();\n      }\n    }\n  }\n  head.appendChild(script); \n}\n\nfunction createIndent(o,domNode,node,level)\n{\n  var level=-1;\n  var n = node;\n  while (n.parentNode) { level++; n=n.parentNode; }\n  if (node.childrenData) {\n    var imgNode = document.createElement(\"span\");\n    imgNode.className = 'arrow';\n    imgNode.style.paddingLeft=(16*level).toString()+'px';\n    imgNode.innerHTML=arrowRight;\n    node.plus_img = imgNode;\n    node.expandToggle = document.createElement(\"a\");\n    node.expandToggle.href = \"javascript:void(0)\";\n    node.expandToggle.onclick = function() {\n      if (node.expanded) {\n        $(node.getChildrenUL()).slideUp(\"fast\");\n        node.plus_img.innerHTML=arrowRight;\n        node.expanded = false;\n      } else {\n        expandNode(o, node, false, false);\n      }\n    }\n    node.expandToggle.appendChild(imgNode);\n    domNode.appendChild(node.expandToggle);\n  } else {\n    var span = document.createElement(\"span\");\n    span.className = 'arrow';\n    span.style.width   = 16*(level+1)+'px';\n    span.innerHTML = '&#160;';\n    domNode.appendChild(span);\n  }\n}\n\nvar animationInProgress = false;\n\nfunction gotoAnchor(anchor,aname,updateLocation)\n{\n  var pos, docContent = $('#doc-content');\n  var ancParent = $(anchor.parent());\n  if (ancParent.hasClass('memItemLeft') ||\n      ancParent.hasClass('fieldname') ||\n      ancParent.hasClass('fieldtype') ||\n      ancParent.is(':header'))\n  {\n    pos = ancParent.position().top;\n  } else if (anchor.position()) {\n    pos = anchor.position().top;\n  }\n  if (pos) {\n    var dist = Math.abs(Math.min(\n               pos-docContent.offset().top,\n               docContent[0].scrollHeight-\n               docContent.height()-docContent.scrollTop()));\n    animationInProgress=true;\n    docContent.animate({\n      scrollTop: pos + docContent.scrollTop() - docContent.offset().top\n    },Math.max(50,Math.min(500,dist)),function(){\n      if (updateLocation) window.location.href=aname;\n      animationInProgress=false;\n    });\n  }\n}\n\nfunction newNode(o, po, text, link, childrenData, lastNode)\n{\n  var node = new Object();\n  node.children = Array();\n  node.childrenData = childrenData;\n  node.depth = po.depth + 1;\n  node.relpath = po.relpath;\n  node.isLast = lastNode;\n\n  node.li = document.createElement(\"li\");\n  po.getChildrenUL().appendChild(node.li);\n  node.parentNode = po;\n\n  node.itemDiv = document.createElement(\"div\");\n  node.itemDiv.className = \"item\";\n\n  node.labelSpan = document.createElement(\"span\");\n  node.labelSpan.className = \"label\";\n\n  createIndent(o,node.itemDiv,node,0);\n  node.itemDiv.appendChild(node.labelSpan);\n  node.li.appendChild(node.itemDiv);\n\n  var a = document.createElement(\"a\");\n  node.labelSpan.appendChild(a);\n  node.label = document.createTextNode(text);\n  node.expanded = false;\n  a.appendChild(node.label);\n  if (link) {\n    var url;\n    if (link.substring(0,1)=='^') {\n      url = link.substring(1);\n      link = url;\n    } else {\n      url = node.relpath+link;\n    }\n    a.className = stripPath(link.replace('#',':'));\n    if (link.indexOf('#')!=-1) {\n      var aname = '#'+link.split('#')[1];\n      var srcPage = stripPath(pathName());\n      var targetPage = stripPath(link.split('#')[0]);\n      a.href = srcPage!=targetPage ? url : \"javascript:void(0)\";\n      a.onclick = function(){\n        storeLink(link);\n        if (!$(a).parent().parent().hasClass('selected'))\n        {\n          $('.item').removeClass('selected');\n          $('.item').removeAttr('id');\n          $(a).parent().parent().addClass('selected');\n          $(a).parent().parent().attr('id','selected');\n        }\n        var anchor = $(aname);\n        gotoAnchor(anchor,aname,true);\n      };\n    } else {\n      a.href = url;\n      a.onclick = function() { storeLink(link); }\n    }\n  } else {\n    if (childrenData != null)\n    {\n      a.className = \"nolink\";\n      a.href = \"javascript:void(0)\";\n      a.onclick = node.expandToggle.onclick;\n    }\n  }\n\n  node.childrenUL = null;\n  node.getChildrenUL = function() {\n    if (!node.childrenUL) {\n      node.childrenUL = document.createElement(\"ul\");\n      node.childrenUL.className = \"children_ul\";\n      node.childrenUL.style.display = \"none\";\n      node.li.appendChild(node.childrenUL);\n    }\n    return node.childrenUL;\n  };\n\n  return node;\n}\n\nfunction showRoot()\n{\n  var headerHeight = $(\"#top\").height();\n  var footerHeight = $(\"#nav-path\").height();\n  var windowHeight = $(window).height() - headerHeight - footerHeight;\n  (function (){ // retry until we can scroll to the selected item\n    try {\n      var navtree=$('#nav-tree');\n      navtree.scrollTo('#selected',0,{offset:-windowHeight/2});\n    } catch (err) {\n      setTimeout(arguments.callee, 0);\n    }\n  })();\n}\n\nfunction expandNode(o, node, imm, showRoot)\n{\n  if (node.childrenData && !node.expanded) {\n    if (typeof(node.childrenData)==='string') {\n      var varName    = node.childrenData;\n      getScript(node.relpath+varName,function(){\n        node.childrenData = getData(varName);\n        expandNode(o, node, imm, showRoot);\n      }, showRoot);\n    } else {\n      if (!node.childrenVisited) {\n        getNode(o, node);\n      } if (imm || ($.browser.msie && $.browser.version>8)) {\n        // somehow slideDown jumps to the start of tree for IE9 :-(\n        $(node.getChildrenUL()).show();\n      } else {\n        $(node.getChildrenUL()).slideDown(\"fast\");\n      }\n      node.plus_img.innerHTML = arrowDown;\n      node.expanded = true;\n    }\n  }\n}\n\nfunction glowEffect(n,duration)\n{\n  n.addClass('glow').delay(duration).queue(function(next){\n    $(this).removeClass('glow');next();\n  });\n}\n\nfunction highlightAnchor()\n{\n  var aname = hashUrl();\n  var anchor = $(aname);\n  if (anchor.parent().attr('class')=='memItemLeft'){\n    var rows = $('.memberdecls tr[class$=\"'+hashValue()+'\"]');\n    glowEffect(rows.children(),300); // member without details\n  } else if (anchor.parent().attr('class')=='fieldname'){\n    glowEffect(anchor.parent().parent(),1000); // enum value\n  } else if (anchor.parent().attr('class')=='fieldtype'){\n    glowEffect(anchor.parent().parent(),1000); // struct field\n  } else if (anchor.parent().is(\":header\")) {\n    glowEffect(anchor.parent(),1000); // section header\n  } else {\n    glowEffect(anchor.next(),1000); // normal member\n  }\n  gotoAnchor(anchor,aname,false);\n}\n\nfunction selectAndHighlight(hash,n)\n{\n  var a;\n  if (hash) {\n    var link=stripPath(pathName())+':'+hash.substring(1);\n    a=$('.item a[class$=\"'+link+'\"]');\n  }\n  if (a && a.length) {\n    a.parent().parent().addClass('selected');\n    a.parent().parent().attr('id','selected');\n    highlightAnchor();\n  } else if (n) {\n    $(n.itemDiv).addClass('selected');\n    $(n.itemDiv).attr('id','selected');\n  }\n  if ($('#nav-tree-contents .item:first').hasClass('selected')) {\n    $('#nav-sync').css('top','30px');\n  } else {\n    $('#nav-sync').css('top','5px');\n  }\n  showRoot();\n}\n\nfunction showNode(o, node, index, hash)\n{\n  if (node && node.childrenData) {\n    if (typeof(node.childrenData)==='string') {\n      var varName    = node.childrenData;\n      getScript(node.relpath+varName,function(){\n        node.childrenData = getData(varName);\n        showNode(o,node,index,hash);\n      },true);\n    } else {\n      if (!node.childrenVisited) {\n        getNode(o, node);\n      }\n      $(node.getChildrenUL()).css({'display':'block'});\n      node.plus_img.innerHTML = arrowDown;\n      node.expanded = true;\n      var n = node.children[o.breadcrumbs[index]];\n      if (index+1<o.breadcrumbs.length) {\n        showNode(o,n,index+1,hash);\n      } else {\n        if (typeof(n.childrenData)==='string') {\n          var varName = n.childrenData;\n          getScript(n.relpath+varName,function(){\n            n.childrenData = getData(varName);\n            node.expanded=false;\n            showNode(o,node,index,hash); // retry with child node expanded\n          },true);\n        } else {\n          var rootBase = stripPath(o.toroot.replace(/\\..+$/, ''));\n          if (rootBase==\"index\" || rootBase==\"pages\" || rootBase==\"search\") {\n            expandNode(o, n, true, true);\n          }\n          selectAndHighlight(hash,n);\n        }\n      }\n    }\n  } else {\n    selectAndHighlight(hash);\n  }\n}\n\nfunction removeToInsertLater(element) {\n  var parentNode = element.parentNode;\n  var nextSibling = element.nextSibling;\n  parentNode.removeChild(element);\n  return function() {\n    if (nextSibling) {\n      parentNode.insertBefore(element, nextSibling);\n    } else {\n      parentNode.appendChild(element);\n    }\n  };\n}\n\nfunction getNode(o, po)\n{\n  var insertFunction = removeToInsertLater(po.li);\n  po.childrenVisited = true;\n  var l = po.childrenData.length-1;\n  for (var i in po.childrenData) {\n    var nodeData = po.childrenData[i];\n    po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],\n      i==l);\n  }\n  insertFunction();\n}\n\nfunction gotoNode(o,subIndex,root,hash,relpath)\n{\n  var nti = navTreeSubIndices[subIndex][root+hash];\n  o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);\n  if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index\n    navTo(o,NAVTREE[0][1],\"\",relpath);\n    $('.item').removeClass('selected');\n    $('.item').removeAttr('id');\n  }\n  if (o.breadcrumbs) {\n    o.breadcrumbs.unshift(0); // add 0 for root node\n    showNode(o, o.node, 0, hash);\n  }\n}\n\nfunction navTo(o,root,hash,relpath)\n{\n  var link = cachedLink();\n  if (link) {\n    var parts = link.split('#');\n    root = parts[0];\n    if (parts.length>1) hash = '#'+parts[1].replace(/[^\\w\\-]/g,'');\n    else hash='';\n  }\n  if (hash.match(/^#l\\d+$/)) {\n    var anchor=$('a[name='+hash.substring(1)+']');\n    glowEffect(anchor.parent(),1000); // line number\n    hash=''; // strip line number anchors\n  }\n  var url=root+hash;\n  var i=-1;\n  while (NAVTREEINDEX[i+1]<=url) i++;\n  if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index\n  if (navTreeSubIndices[i]) {\n    gotoNode(o,i,root,hash,relpath)\n  } else {\n    getScript(relpath+'navtreeindex'+i,function(){\n      navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);\n      if (navTreeSubIndices[i]) {\n        gotoNode(o,i,root,hash,relpath);\n      }\n    },true);\n  }\n}\n\nfunction showSyncOff(n,relpath)\n{\n    n.html('<img src=\"'+relpath+'sync_off.png\" title=\"'+SYNCOFFMSG+'\"/>');\n}\n\nfunction showSyncOn(n,relpath)\n{\n    n.html('<img src=\"'+relpath+'sync_on.png\" title=\"'+SYNCONMSG+'\"/>');\n}\n\nfunction toggleSyncButton(relpath)\n{\n  var navSync = $('#nav-sync');\n  if (navSync.hasClass('sync')) {\n    navSync.removeClass('sync');\n    showSyncOff(navSync,relpath);\n    storeLink(stripPath2(pathName())+hashUrl());\n  } else {\n    navSync.addClass('sync');\n    showSyncOn(navSync,relpath);\n    deleteLink();\n  }\n}\n\nfunction initNavTree(toroot,relpath)\n{\n  var o = new Object();\n  o.toroot = toroot;\n  o.node = new Object();\n  o.node.li = document.getElementById(\"nav-tree-contents\");\n  o.node.childrenData = NAVTREE;\n  o.node.children = new Array();\n  o.node.childrenUL = document.createElement(\"ul\");\n  o.node.getChildrenUL = function() { return o.node.childrenUL; };\n  o.node.li.appendChild(o.node.childrenUL);\n  o.node.depth = 0;\n  o.node.relpath = relpath;\n  o.node.expanded = false;\n  o.node.isLast = true;\n  o.node.plus_img = document.createElement(\"span\");\n  o.node.plus_img.className = 'arrow';\n  o.node.plus_img.innerHTML = arrowRight;\n\n  if (localStorageSupported()) {\n    var navSync = $('#nav-sync');\n    if (cachedLink()) {\n      showSyncOff(navSync,relpath);\n      navSync.removeClass('sync');\n    } else {\n      showSyncOn(navSync,relpath);\n    }\n    navSync.click(function(){ toggleSyncButton(relpath); });\n  }\n\n  $(window).load(function(){\n    navTo(o,toroot,hashUrl(),relpath);\n    showRoot();\n  });\n\n  $(window).bind('hashchange', function(){\n     if (window.location.hash && window.location.hash.length>1){\n       var a;\n       if ($(location).attr('hash')){\n         var clslink=stripPath(pathName())+':'+hashValue();\n         a=$('.item a[class$=\"'+clslink.replace(/</g,'\\\\3c ')+'\"]');\n       }\n       if (a==null || !$(a).parent().parent().hasClass('selected')){\n         $('.item').removeClass('selected');\n         $('.item').removeAttr('id');\n       }\n       var link=stripPath2(pathName());\n       navTo(o,link,hashUrl(),relpath);\n     } else if (!animationInProgress) {\n       $('#doc-content').scrollTop(0);\n       $('.item').removeClass('selected');\n       $('.item').removeAttr('id');\n       navTo(o,toroot,hashUrl(),relpath);\n     }\n  })\n}\n\n"
  },
  {
    "path": "docs/navtreedata.js",
    "content": "var NAVTREE =\n[\n  [ \"FB Graphics\", \"index.html\", [\n    [ \"FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support\", \"index.html\", null ],\n    [ \"Data Structures\", \"annotated.html\", [\n      [ \"Data Structures\", \"annotated.html\", \"annotated_dup\" ],\n      [ \"Data Structure Index\", \"classes.html\", null ],\n      [ \"Data Fields\", \"functions.html\", [\n        [ \"All\", \"functions.html\", null ],\n        [ \"Variables\", \"functions_vars.html\", null ]\n      ] ]\n    ] ],\n    [ \"Files\", null, [\n      [ \"File List\", \"files.html\", \"files\" ],\n      [ \"Globals\", \"globals.html\", [\n        [ \"All\", \"globals.html\", null ],\n        [ \"Functions\", \"globals_func.html\", null ],\n        [ \"Variables\", \"globals_vars.html\", null ],\n        [ \"Macros\", \"globals_defs.html\", null ]\n      ] ]\n    ] ]\n  ] ]\n];\n\nvar NAVTREEINDEX =\n[\n\"annotated.html\"\n];\n\nvar SYNCONMSG = 'click to disable panel synchronisation';\nvar SYNCOFFMSG = 'click to enable panel synchronisation';"
  },
  {
    "path": "docs/navtreeindex0.js",
    "content": "var NAVTREEINDEX0 =\n{\n\"annotated.html\":[1,0],\n\"classes.html\":[1,1],\n\"fbg__dispmanx_8h.html\":[2,0,0],\n\"fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7\":[2,0,0,2],\n\"fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2\":[2,0,0,1],\n\"fbg__dispmanx_8h_source.html\":[2,0,0],\n\"fbg__fbdev_8h.html\":[2,0,1],\n\"fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e\":[2,0,1,2],\n\"fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1\":[2,0,1,0,1],\n\"fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43\":[2,0,1,0,3],\n\"fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc\":[2,0,1,1],\n\"fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708\":[2,0,1,0,0],\n\"fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c\":[2,0,1,0,2],\n\"fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f\":[2,0,1,0,4],\n\"fbg__fbdev_8h.html#struct__fbg__fbdev__context\":[2,0,1,0],\n\"fbg__fbdev_8h_source.html\":[2,0,1],\n\"fbg__gba_8h.html\":[2,0,2],\n\"fbg__gba_8h.html#a6679b30ad162111859a3276397324a83\":[2,0,2,1],\n\"fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf\":[2,0,2,0,1],\n\"fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe\":[2,0,2,0,0],\n\"fbg__gba_8h.html#struct__fbg__gba__context\":[2,0,2,0],\n\"fbg__gba_8h_source.html\":[2,0,2],\n\"fbg__glfw_8h.html\":[2,0,3],\n\"fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb\":[2,0,3,0,2],\n\"fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07\":[2,0,3,17],\n\"fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f\":[2,0,3,1],\n\"fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c\":[2,0,3,0,4],\n\"fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8\":[2,0,3,6],\n\"fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9\":[2,0,3,14],\n\"fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8\":[2,0,3,3],\n\"fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b\":[2,0,3,10],\n\"fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50\":[2,0,3,15],\n\"fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b\":[2,0,3,16],\n\"fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b\":[2,0,3,5],\n\"fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e\":[2,0,3,19],\n\"fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36\":[2,0,3,18],\n\"fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb\":[2,0,3,7],\n\"fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3\":[2,0,3,12],\n\"fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36\":[2,0,3,0,3],\n\"fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29\":[2,0,3,0,0],\n\"fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0\":[2,0,3,8],\n\"fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1\":[2,0,3,9],\n\"fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4\":[2,0,3,2],\n\"fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4\":[2,0,3,0,5],\n\"fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a\":[2,0,3,0,1],\n\"fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8\":[2,0,3,4],\n\"fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848\":[2,0,3,13],\n\"fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c\":[2,0,3,11],\n\"fbg__glfw_8h.html#struct__fbg__glfw__context\":[2,0,3,0],\n\"fbg__glfw_8h_source.html\":[2,0,3],\n\"fbg__opengl__es2_8h.html\":[2,0,4],\n\"fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68\":[2,0,4,18],\n\"fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147\":[2,0,4,0,2],\n\"fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20\":[2,0,4,1,0],\n\"fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33\":[2,0,4,14],\n\"fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d\":[2,0,4,7],\n\"fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26\":[2,0,4,0,8],\n\"fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b\":[2,0,4,0,0],\n\"fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b\":[2,0,4,5],\n\"fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e\":[2,0,4,12],\n\"fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e\":[2,0,4,9],\n\"fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95\":[2,0,4,2],\n\"fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54\":[2,0,4,17],\n\"fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4\":[2,0,4,0,7],\n\"fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7\":[2,0,4,6],\n\"fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc\":[2,0,4,15],\n\"fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4\":[2,0,4,8],\n\"fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560\":[2,0,4,1,2],\n\"fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228\":[2,0,4,0,3],\n\"fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb\":[2,0,4,1,4],\n\"fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d\":[2,0,4,16],\n\"fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8\":[2,0,4,3],\n\"fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14\":[2,0,4,4],\n\"fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a\":[2,0,4,13],\n\"fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498\":[2,0,4,1,3],\n\"fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0\":[2,0,4,10],\n\"fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d\":[2,0,4,1,1],\n\"fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9\":[2,0,4,11],\n\"fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2\":[2,0,4,0,5],\n\"fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592\":[2,0,4,0,9],\n\"fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0\":[2,0,4,0,4],\n\"fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4\":[2,0,4,0,6],\n\"fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74\":[2,0,4,0,1],\n\"fbg__opengl__es2_8h.html#struct__fbg__gles2__context\":[2,0,4,0],\n\"fbg__opengl__es2_8h.html#struct__fbg__vbo__data\":[2,0,4,1],\n\"fbg__opengl__es2_8h_source.html\":[2,0,4],\n\"fbgraphics_8h.html\":[2,0,5],\n\"fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a\":[2,0,5,52],\n\"fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531\":[2,0,5,33],\n\"fbgraphics_8h.html#a05730637b297339a1fe39db736335cff\":[2,0,5,3,1],\n\"fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe\":[2,0,5,45],\n\"fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f\":[2,0,5,3,0],\n\"fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a\":[2,0,5,12],\n\"fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1\":[2,0,5,21],\n\"fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125\":[2,0,5,14],\n\"fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f\":[2,0,5,10],\n\"fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743\":[2,0,5,24],\n\"fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3\":[2,0,5,3,2],\n\"fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390\":[2,0,5,9],\n\"fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16\":[2,0,5,18],\n\"fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66\":[2,0,5,25],\n\"fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f\":[2,0,5,1,2],\n\"fbgraphics_8h.html#a279be685895357ebda19f155ed405efc\":[2,0,5,3,5],\n\"fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab\":[2,0,5,47],\n\"fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816\":[2,0,5,20],\n\"fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1\":[2,0,5,56],\n\"fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea\":[2,0,5,55],\n\"fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e\":[2,0,5,48],\n\"fbgraphics_8h.html#a3610bf730319af99045283ea66955741\":[2,0,5,36],\n\"fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401\":[2,0,5,16],\n\"fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8\":[2,0,5,0,3],\n\"fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e\":[2,0,5,3,4],\n\"fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557\":[2,0,5,60],\n\"fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174\":[2,0,5,1,1],\n\"fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea\":[2,0,5,32],\n\"fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0\":[2,0,5,13],\n\"fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303\":[2,0,5,40],\n\"fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f\":[2,0,5,43],\n\"fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f\":[2,0,5,11],\n\"fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db\":[2,0,5,28],\n\"fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7\":[2,0,5,0,1],\n\"fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c\":[2,0,5,27],\n\"fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad\":[2,0,5,35],\n\"fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019\":[2,0,5,0,0],\n\"fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2\":[2,0,5,2,2],\n\"fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386\":[2,0,5,54],\n\"fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489\":[2,0,5,58],\n\"fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3\":[2,0,5,1,0],\n\"fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18\":[2,0,5,39],\n\"fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6\":[2,0,5,41],\n\"fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c\":[2,0,5,30],\n\"fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1\":[2,0,5,0,2],\n\"fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb\":[2,0,5,44],\n\"fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab\":[2,0,5,31],\n\"fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf\":[2,0,5,51],\n\"fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114\":[2,0,5,37],\n\"fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823\":[2,0,5,19],\n\"fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d\":[2,0,5,3,3],\n\"fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777\":[2,0,5,46],\n\"fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0\":[2,0,5,15],\n\"fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830\":[2,0,5,29],\n\"fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc\":[2,0,5,53],\n\"fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e\":[2,0,5,23],\n\"fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347\":[2,0,5,8],\n\"fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658\":[2,0,5,2,0],\n\"fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4\":[2,0,5,34],\n\"fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b\":[2,0,5,59],\n\"fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db\":[2,0,5,2,1],\n\"fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1\":[2,0,5,57],\n\"fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec\":[2,0,5,42],\n\"fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692\":[2,0,5,38],\n\"fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5\":[2,0,5,50],\n\"fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7\":[2,0,5,7],\n\"fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437\":[2,0,5,22],\n\"fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c\":[2,0,5,49],\n\"fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b\":[2,0,5,26],\n\"fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1\":[2,0,5,5],\n\"fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3\":[2,0,5,6],\n\"fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c\":[2,0,5,17],\n\"fbgraphics_8h.html#struct__fbg__font\":[2,0,5,3],\n\"fbgraphics_8h.html#struct__fbg__hsl\":[2,0,5,1],\n\"fbgraphics_8h.html#struct__fbg__img\":[2,0,5,2],\n\"fbgraphics_8h.html#struct__fbg__rgb\":[2,0,5,0],\n\"fbgraphics_8h_source.html\":[2,0,5],\n\"files.html\":[2,0],\n\"functions.html\":[1,2,0],\n\"functions_vars.html\":[1,2,1],\n\"globals.html\":[2,1,0],\n\"globals_defs.html\":[2,1,3],\n\"globals_func.html\":[2,1,1],\n\"globals_vars.html\":[2,1,2],\n\"index.html\":[0],\n\"index.html\":[],\n\"pages.html\":[],\n\"struct__fbg.html\":[1,0,0],\n\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\":[1,0,0,21],\n\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\":[1,0,0,25],\n\"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\":[1,0,0,12],\n\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\":[1,0,0,32],\n\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\":[1,0,0,31],\n\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\":[1,0,0,5],\n\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\":[1,0,0,15],\n\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\":[1,0,0,28],\n\"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\":[1,0,0,24],\n\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\":[1,0,0,18],\n\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\":[1,0,0,3],\n\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\":[1,0,0,10],\n\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\":[1,0,0,30],\n\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\":[1,0,0,6],\n\"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\":[1,0,0,7],\n\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\":[1,0,0,4],\n\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\":[1,0,0,20],\n\"struct__fbg.html#a870987786121c51135f20b630d731abd\":[1,0,0,22],\n\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\":[1,0,0,29],\n\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\":[1,0,0,1],\n\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\":[1,0,0,19],\n\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\":[1,0,0,8],\n\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\":[1,0,0,14],\n\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\":[1,0,0,27],\n\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\":[1,0,0,16],\n\"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\":[1,0,0,9],\n\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\":[1,0,0,0],\n\"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\":[1,0,0,13],\n\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\":[1,0,0,26],\n\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\":[1,0,0,2],\n\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\":[1,0,0,11],\n\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\":[1,0,0,17],\n\"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\":[1,0,0,23],\n\"struct__fbg__dispmanx__context.html\":[1,0,1],\n\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\":[1,0,1,5],\n\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\":[1,0,1,0],\n\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\":[1,0,1,9],\n\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\":[1,0,1,6],\n\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\":[1,0,1,7],\n\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\":[1,0,1,1],\n\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\":[1,0,1,3],\n\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\":[1,0,1,4],\n\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\":[1,0,1,2],\n\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\":[1,0,1,8]\n};\n"
  },
  {
    "path": "docs/resize.js",
    "content": "function initResizable()\n{\n  var cookie_namespace = 'doxygen';\n  var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight;\n\n  function readCookie(cookie)\n  {\n    var myCookie = cookie_namespace+\"_\"+cookie+\"=\";\n    if (document.cookie) {\n      var index = document.cookie.indexOf(myCookie);\n      if (index != -1) {\n        var valStart = index + myCookie.length;\n        var valEnd = document.cookie.indexOf(\";\", valStart);\n        if (valEnd == -1) {\n          valEnd = document.cookie.length;\n        }\n        var val = document.cookie.substring(valStart, valEnd);\n        return val;\n      }\n    }\n    return 0;\n  }\n\n  function writeCookie(cookie, val, expiration)\n  {\n    if (val==undefined) return;\n    if (expiration == null) {\n      var date = new Date();\n      date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week\n      expiration = date.toGMTString();\n    }\n    document.cookie = cookie_namespace + \"_\" + cookie + \"=\" + val + \"; expires=\" + expiration+\"; path=/\";\n  }\n\n  function resizeWidth()\n  {\n    var windowWidth = $(window).width() + \"px\";\n    var sidenavWidth = $(sidenav).outerWidth();\n    content.css({marginLeft:parseInt(sidenavWidth)+\"px\"});\n    writeCookie('width',sidenavWidth-barWidth, null);\n  }\n\n  function restoreWidth(navWidth)\n  {\n    var windowWidth = $(window).width() + \"px\";\n    content.css({marginLeft:parseInt(navWidth)+barWidth+\"px\"});\n    sidenav.css({width:navWidth + \"px\"});\n  }\n\n  function resizeHeight()\n  {\n    var headerHeight = header.outerHeight();\n    var footerHeight = footer.outerHeight();\n    var windowHeight = $(window).height() - headerHeight - footerHeight;\n    content.css({height:windowHeight + \"px\"});\n    navtree.css({height:windowHeight + \"px\"});\n    sidenav.css({height:windowHeight + \"px\"});\n    var width=$(window).width();\n    if (width!=collapsedWidth) {\n      if (width<desktop_vp && collapsedWidth>=desktop_vp) {\n        if (!collapsed) {\n          collapseExpand();\n        }\n      } else if (width>desktop_vp && collapsedWidth<desktop_vp) {\n        if (collapsed) {\n          collapseExpand();\n        }\n      }\n      collapsedWidth=width;\n    }\n  }\n\n  function collapseExpand()\n  {\n    if (sidenav.width()>0) {\n      restoreWidth(0);\n      collapsed=true;\n    }\n    else {\n      var width = readCookie('width');\n      if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); }\n      collapsed=false;\n    }\n  }\n\n  header  = $(\"#top\");\n  sidenav = $(\"#side-nav\");\n  content = $(\"#doc-content\");\n  navtree = $(\"#nav-tree\");\n  footer  = $(\"#nav-path\");\n  $(\".side-nav-resizable\").resizable({resize: function(e, ui) { resizeWidth(); } });\n  $(sidenav).resizable({ minWidth: 0 });\n  $(window).resize(function() { resizeHeight(); });\n  var device = navigator.userAgent.toLowerCase();\n  var touch_device = device.match(/(iphone|ipod|ipad|android)/);\n  if (touch_device) { /* wider split bar for touch only devices */\n    $(sidenav).css({ paddingRight:'20px' });\n    $('.ui-resizable-e').css({ width:'20px' });\n    $('#nav-sync').css({ right:'34px' });\n    barWidth=20;\n  }\n  var width = readCookie('width');\n  if (width) { restoreWidth(width); } else { resizeWidth(); }\n  resizeHeight();\n  var url = location.href;\n  var i=url.indexOf(\"#\");\n  if (i>=0) window.location.hash=url.substr(i);\n  var _preventDefault = function(evt) { evt.preventDefault(); };\n  $(\"#splitbar\").bind(\"dragstart\", _preventDefault).bind(\"selectstart\", _preventDefault);\n  $(\".ui-resizable-handle\").dblclick(collapseExpand);\n  $(window).load(resizeHeight);\n}\n\n\n"
  },
  {
    "path": "docs/search/all_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_0.js",
    "content": "var searchData=\n[\n  ['_5ffbg',['_fbg',['../struct__fbg.html',1,'']]],\n  ['_5ffbg_5fdegtorad',['_FBG_DEGTORAD',['../fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1',1,'fbgraphics.h']]],\n  ['_5ffbg_5fdispmanx_5fcontext',['_fbg_dispmanx_context',['../struct__fbg__dispmanx__context.html',1,'']]],\n  ['_5ffbg_5ffbdev_5fcontext',['_fbg_fbdev_context',['../fbg__fbdev_8h.html#struct__fbg__fbdev__context',1,'']]],\n  ['_5ffbg_5ffont',['_fbg_font',['../fbgraphics_8h.html#struct__fbg__font',1,'']]],\n  ['_5ffbg_5fgba_5fcontext',['_fbg_gba_context',['../fbg__gba_8h.html#struct__fbg__gba__context',1,'']]],\n  ['_5ffbg_5fgles2_5fcontext',['_fbg_gles2_context',['../fbg__opengl__es2_8h.html#struct__fbg__gles2__context',1,'']]],\n  ['_5ffbg_5fglfw_5fcontext',['_fbg_glfw_context',['../fbg__glfw_8h.html#struct__fbg__glfw__context',1,'']]],\n  ['_5ffbg_5fhsl',['_fbg_hsl',['../fbgraphics_8h.html#struct__fbg__hsl',1,'']]],\n  ['_5ffbg_5fimg',['_fbg_img',['../fbgraphics_8h.html#struct__fbg__img',1,'']]],\n  ['_5ffbg_5fmax',['_FBG_MAX',['../fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3',1,'fbgraphics.h']]],\n  ['_5ffbg_5fmin',['_FBG_MIN',['../fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7',1,'fbgraphics.h']]],\n  ['_5ffbg_5fradtodeg',['_FBG_RADTODEG',['../fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347',1,'fbgraphics.h']]],\n  ['_5ffbg_5frgb',['_fbg_rgb',['../fbgraphics_8h.html#struct__fbg__rgb',1,'']]],\n  ['_5ffbg_5fsgn',['_FBG_SGN',['../fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390',1,'fbgraphics.h']]],\n  ['_5ffbg_5fsource_5fover',['_FBG_SOURCE_OVER',['../fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f',1,'fbgraphics.h']]],\n  ['_5ffbg_5fvbo_5fdata',['_fbg_vbo_data',['../fbg__opengl__es2_8h.html#struct__fbg__vbo__data',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/all_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_1.js",
    "content": "var searchData=\n[\n  ['a',['a',['../fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019',1,'_fbg_rgb']]],\n  ['allow_5fresizing',['allow_resizing',['../struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_10.js",
    "content": "var searchData=\n[\n  ['s',['s',['../fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f',1,'_fbg_hsl']]],\n  ['simple_5fprogram',['simple_program',['../fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36',1,'_fbg_glfw_context::simple_program()'],['../fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4',1,'_fbg_gles2_context::simple_program()']]],\n  ['size',['size',['../struct__fbg.html#a84fb220d4804cba22176997898e75b73',1,'_fbg']]],\n  ['src_5frect',['src_rect',['../struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_11.js",
    "content": "var searchData=\n[\n  ['tbo',['tbo',['../fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498',1,'_fbg_vbo_data']]],\n  ['temp_5fbuffer',['temp_buffer',['../struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d',1,'_fbg']]],\n  ['text_5falpha',['text_alpha',['../struct__fbg.html#a870987786121c51135f20b630d731abd',1,'_fbg']]],\n  ['text_5fbackground',['text_background',['../struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67',1,'_fbg']]],\n  ['text_5fcolor',['text_color',['../struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2',1,'_fbg']]],\n  ['text_5fcolorkey',['text_colorkey',['../struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_12.js",
    "content": "var searchData=\n[\n  ['update',['update',['../struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34',1,'_fbg_dispmanx_context']]],\n  ['update_5fbuffer',['update_buffer',['../fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c',1,'_fbg_glfw_context::update_buffer()'],['../fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26',1,'_fbg_gles2_context::update_buffer()']]],\n  ['user_5fcontext',['user_context',['../struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde',1,'_fbg']]],\n  ['user_5fdraw',['user_draw',['../struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e',1,'_fbg']]],\n  ['user_5fflip',['user_flip',['../struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37',1,'_fbg']]],\n  ['user_5ffree',['user_free',['../struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0',1,'_fbg']]],\n  ['user_5fresize',['user_resize',['../struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_13.js",
    "content": "var searchData=\n[\n  ['vbo',['vbo',['../fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb',1,'_fbg_vbo_data']]],\n  ['vinfo',['vinfo',['../fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592',1,'_fbg_gles2_context::vinfo()'],['../fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f',1,'_fbg_fbdev_context::vinfo()']]]\n];\n"
  },
  {
    "path": "docs/search/all_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_14.js",
    "content": "var searchData=\n[\n  ['width',['width',['../fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2',1,'_fbg_img::width()'],['../struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e',1,'_fbg::width()']]],\n  ['width_5fn_5fheight',['width_n_height',['../struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d',1,'_fbg']]],\n  ['window',['window',['../fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4',1,'_fbg_glfw_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_2.js",
    "content": "var searchData=\n[\n  ['b',['b',['../fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7',1,'_fbg_rgb']]],\n  ['back_5fbuffer',['back_buffer',['../struct__fbg.html#a907e7fc97965b972c17114c885e53735',1,'_fbg']]],\n  ['back_5fresource',['back_resource',['../struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710',1,'_fbg_dispmanx_context']]],\n  ['backend_5fresize',['backend_resize',['../struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e',1,'_fbg']]],\n  ['bgr',['bgr',['../struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338',1,'_fbg']]],\n  ['bitmap',['bitmap',['../fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f',1,'_fbg_font']]],\n  ['buffer',['buffer',['../fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708',1,'_fbg_fbdev_context::buffer()'],['../fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe',1,'_fbg_gba_context::buffer()']]]\n];\n"
  },
  {
    "path": "docs/search/all_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_3.js",
    "content": "var searchData=\n[\n  ['cbo',['cbo',['../fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20',1,'_fbg_vbo_data']]],\n  ['comp_5foffset',['comp_offset',['../struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e',1,'_fbg']]],\n  ['components',['components',['../struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747',1,'_fbg']]],\n  ['compositing',['compositing',['../struct__fbg.html#a7090d672982fe465f2186dbfea384d32',1,'_fbg']]],\n  ['current_5ffont',['current_font',['../struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_4.js",
    "content": "var searchData=\n[\n  ['data',['data',['../fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658',1,'_fbg_img']]],\n  ['disp_5fbuffer',['disp_buffer',['../struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8',1,'_fbg']]],\n  ['display',['display',['../struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee',1,'_fbg_dispmanx_context']]],\n  ['dst_5frect',['dst_rect',['../struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_5.js",
    "content": "var searchData=\n[\n  ['egl_5fcontext',['egl_context',['../fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b',1,'_fbg_gles2_context']]],\n  ['egl_5fdisplay',['egl_display',['../fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74',1,'_fbg_gles2_context']]],\n  ['egl_5fimage',['egl_image',['../fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147',1,'_fbg_gles2_context']]],\n  ['egl_5fsurface',['egl_surface',['../fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228',1,'_fbg_gles2_context']]],\n  ['elem',['elem',['../struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_6.js",
    "content": "var searchData=\n[\n  ['fbg_5fbackground',['fbg_background',['../fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125',1,'fbgraphics.h']]],\n  ['fbg_5fclear',['fbg_clear',['../fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0',1,'fbgraphics.h']]],\n  ['fbg_5fclose',['fbg_close',['../fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401',1,'fbgraphics.h']]],\n  ['fbg_5fcreatefont',['fbg_createFont',['../fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c',1,'fbgraphics.h']]],\n  ['fbg_5fcreateimage',['fbg_createImage',['../fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16',1,'fbgraphics.h']]],\n  ['fbg_5fcustomsetup',['fbg_customSetup',['../fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823',1,'fbgraphics.h']]],\n  ['fbg_5fdispmanx_2eh',['fbg_dispmanx.h',['../fbg__dispmanx_8h.html',1,'']]],\n  ['fbg_5fdispmanxonflip',['fbg_dispmanxOnFlip',['../fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2',1,'fbg_dispmanx.h']]],\n  ['fbg_5fdispmanxsetup',['fbg_dispmanxSetup',['../fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7',1,'fbg_dispmanx.h']]],\n  ['fbg_5fdraw',['fbg_draw',['../fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816',1,'fbgraphics.h']]],\n  ['fbg_5fdrawframerate',['fbg_drawFramerate',['../fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1',1,'fbgraphics.h']]],\n  ['fbg_5fdrawinto',['fbg_drawInto',['../fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437',1,'fbgraphics.h']]],\n  ['fbg_5ffade',['fbg_fade',['../fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f',1,'fbgraphics.h']]],\n  ['fbg_5ffadedown',['fbg_fadeDown',['../fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e',1,'fbgraphics.h']]],\n  ['fbg_5ffadeup',['fbg_fadeUp',['../fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743',1,'fbgraphics.h']]],\n  ['fbg_5ffbdev_2eh',['fbg_fbdev.h',['../fbg__fbdev_8h.html',1,'']]],\n  ['fbg_5ffbdevinit',['fbg_fbdevInit',['../fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc',1,'fbg_fbdev.h']]],\n  ['fbg_5ffbdevsetup',['fbg_fbdevSetup',['../fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e',1,'fbg_fbdev.h']]],\n  ['fbg_5ffill',['fbg_fill',['../fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66',1,'fbgraphics.h']]],\n  ['fbg_5fflip',['fbg_flip',['../fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b',1,'fbgraphics.h']]],\n  ['fbg_5ffpixel',['fbg_fpixel',['../fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c',1,'fbgraphics.h']]],\n  ['fbg_5ffrect',['fbg_frect',['../fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db',1,'fbgraphics.h']]],\n  ['fbg_5ffreefont',['fbg_freeFont',['../fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830',1,'fbgraphics.h']]],\n  ['fbg_5ffreeimage',['fbg_freeImage',['../fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c',1,'fbgraphics.h']]],\n  ['fbg_5fgba_2eh',['fbg_gba.h',['../fbg__gba_8h.html',1,'']]],\n  ['fbg_5fgbasetup',['fbg_gbaSetup',['../fbg__gba_8h.html#a6679b30ad162111859a3276397324a83',1,'fbg_gba.h']]],\n  ['fbg_5fgetframerate',['fbg_getFramerate',['../fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab',1,'fbgraphics.h']]],\n  ['fbg_5fgetpixel',['fbg_getPixel',['../fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea',1,'fbgraphics.h']]],\n  ['fbg_5fgles2clear',['fbg_gles2Clear',['../fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogram',['fbg_gles2CreateProgram',['../fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogramfromfiles',['fbg_gles2CreateProgramFromFiles',['../fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogramfromstring',['fbg_gles2CreateProgramFromString',['../fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createshader',['fbg_gles2CreateShader',['../fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createshaderfromfile',['fbg_gles2CreateShaderFromFile',['../fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createtexture',['fbg_gles2CreateTexture',['../fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createtexturefromimage',['fbg_gles2CreateTextureFromImage',['../fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createvbo',['fbg_gles2CreateVBO',['../fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createvbovu',['fbg_gles2CreateVBOvu',['../fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2freevbodata',['fbg_gles2FreeVBOData',['../fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2quad',['fbg_gles2Quad',['../fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2setup',['fbg_gles2Setup',['../fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2shouldclose',['fbg_gles2ShouldClose',['../fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2simplefs',['fbg_gles2SimpleFs',['../fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2simplevs',['fbg_gles2SimpleVs',['../fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2updatebuffer',['fbg_gles2UpdateBuffer',['../fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fglfw_2eh',['fbg_glfw.h',['../fbg__glfw_8h.html',1,'']]],\n  ['fbg_5fglfwclear',['fbg_glfwClear',['../fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatefbo',['fbg_glfwCreateFBO',['../fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogram',['fbg_glfwCreateProgram',['../fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogramfromfiles',['fbg_glfwCreateProgramFromFiles',['../fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogramfromstring',['fbg_glfwCreateProgramFromString',['../fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateshader',['fbg_glfwCreateShader',['../fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateshaderfromfile',['fbg_glfwCreateShaderFromFile',['../fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatetexture',['fbg_glfwCreateTexture',['../fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatetexturefromimage',['fbg_glfwCreateTextureFromImage',['../fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatevao',['fbg_glfwCreateVAO',['../fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatevaovu',['fbg_glfwCreateVAOvu',['../fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwfullscreen',['fbg_glfwFullscreen',['../fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwquad',['fbg_glfwQuad',['../fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwresize',['fbg_glfwResize',['../fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsetup',['fbg_glfwSetup',['../fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwshouldclose',['fbg_glfwShouldClose',['../fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsimplefs',['fbg_glfwSimpleFs',['../fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsimplevs',['fbg_glfwSimpleVs',['../fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwupdatebuffer',['fbg_glfwUpdateBuffer',['../fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b',1,'fbg_glfw.h']]],\n  ['fbg_5fhline',['fbg_hline',['../fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531',1,'fbgraphics.h']]],\n  ['fbg_5fhsltorgb',['fbg_hslToRGB',['../fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4',1,'fbgraphics.h']]],\n  ['fbg_5fimage',['fbg_image',['../fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad',1,'fbgraphics.h']]],\n  ['fbg_5fimageclip',['fbg_imageClip',['../fbgraphics_8h.html#a3610bf730319af99045283ea66955741',1,'fbgraphics.h']]],\n  ['fbg_5fimagecolorkey',['fbg_imageColorkey',['../fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114',1,'fbgraphics.h']]],\n  ['fbg_5fimageex',['fbg_imageEx',['../fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692',1,'fbgraphics.h']]],\n  ['fbg_5fimageflip',['fbg_imageFlip',['../fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18',1,'fbgraphics.h']]],\n  ['fbg_5fimagescale',['fbg_imageScale',['../fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a',1,'fbgraphics.h']]],\n  ['fbg_5fline',['fbg_line',['../fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303',1,'fbgraphics.h']]],\n  ['fbg_5floadimage',['fbg_loadImage',['../fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6',1,'fbgraphics.h']]],\n  ['fbg_5floadjpeg',['fbg_loadJPEG',['../fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec',1,'fbgraphics.h']]],\n  ['fbg_5floadpng',['fbg_loadPNG',['../fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f',1,'fbgraphics.h']]],\n  ['fbg_5fopengl_5fes2_2eh',['fbg_opengl_es2.h',['../fbg__opengl__es2_8h.html',1,'']]],\n  ['fbg_5fpixel',['fbg_pixel',['../fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb',1,'fbgraphics.h']]],\n  ['fbg_5fpixela',['fbg_pixela',['../fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe',1,'fbgraphics.h']]],\n  ['fbg_5fplot',['fbg_plot',['../fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777',1,'fbgraphics.h']]],\n  ['fbg_5fpolygon',['fbg_polygon',['../fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab',1,'fbgraphics.h']]],\n  ['fbg_5fpushresize',['fbg_pushResize',['../fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e',1,'fbgraphics.h']]],\n  ['fbg_5frandf',['fbg_randf',['../fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c',1,'fbgraphics.h']]],\n  ['fbg_5frect',['fbg_rect',['../fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5',1,'fbgraphics.h']]],\n  ['fbg_5frecta',['fbg_recta',['../fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf',1,'fbgraphics.h']]],\n  ['fbg_5fresize',['fbg_resize',['../fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a',1,'fbgraphics.h']]],\n  ['fbg_5frgbtohsl',['fbg_rgbToHsl',['../fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc',1,'fbgraphics.h']]],\n  ['fbg_5fsetresizecallback',['fbg_setResizeCallback',['../fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386',1,'fbgraphics.h']]],\n  ['fbg_5ftext',['fbg_text',['../fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea',1,'fbgraphics.h']]],\n  ['fbg_5ftextbackground',['fbg_textBackground',['../fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1',1,'fbgraphics.h']]],\n  ['fbg_5ftextcolor',['fbg_textColor',['../fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1',1,'fbgraphics.h']]],\n  ['fbg_5ftextcolorkey',['fbg_textColorKey',['../fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489',1,'fbgraphics.h']]],\n  ['fbg_5ftextfont',['fbg_textFont',['../fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b',1,'fbgraphics.h']]],\n  ['fbg_5ftexture',['fbg_texture',['../fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29',1,'_fbg_glfw_context::fbg_texture()'],['../fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0',1,'_fbg_gles2_context::fbg_texture()']]],\n  ['fbg_5fvao',['fbg_vao',['../fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a',1,'_fbg_glfw_context']]],\n  ['fbg_5fvbo',['fbg_vbo',['../fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2',1,'_fbg_gles2_context']]],\n  ['fbg_5fvline',['fbg_vline',['../fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557',1,'fbgraphics.h']]],\n  ['fbg_5fwrite',['fbg_write',['../fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0',1,'fbgraphics.h']]],\n  ['fbgraphics_2eh',['fbgraphics.h',['../fbgraphics_8h.html',1,'']]],\n  ['fd',['fd',['../fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4',1,'_fbg_gles2_context::fd()'],['../fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1',1,'_fbg_fbdev_context::fd()']]],\n  ['fill_5fcolor',['fill_color',['../struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a',1,'_fbg']]],\n  ['finfo',['finfo',['../fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c',1,'_fbg_fbdev_context']]],\n  ['first_5fchar',['first_char',['../fbgraphics_8h.html#a05730637b297339a1fe39db736335cff',1,'_fbg_font']]],\n  ['fps',['fps',['../struct__fbg.html#a64b16363bc48d1e19141df2e242930a9',1,'_fbg']]],\n  ['fps_5fchar',['fps_char',['../struct__fbg.html#af447e6ed58d893989c8dad075807a79b',1,'_fbg']]],\n  ['fps_5fstart',['fps_start',['../struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33',1,'_fbg']]],\n  ['fps_5fstop',['fps_stop',['../struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c',1,'_fbg']]],\n  ['frame',['frame',['../struct__fbg.html#aa3ef83f919d12e680f8c64006b441454',1,'_fbg']]],\n  ['front_5fresource',['front_resource',['../struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7',1,'_fbg_dispmanx_context']]],\n  ['fbgraphics_20_3a_20lightweight_20c_202d_20graphics_20api_20agnostic_20library_20with_20parallelism_20support',['FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support',['../index.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/all_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_7.js",
    "content": "var searchData=\n[\n  ['g',['g',['../fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1',1,'_fbg_rgb']]],\n  ['glyph_5fcoord_5fx',['glyph_coord_x',['../fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3',1,'_fbg_font']]],\n  ['glyph_5fcoord_5fy',['glyph_coord_y',['../fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d',1,'_fbg_font']]],\n  ['glyph_5fheight',['glyph_height',['../fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e',1,'_fbg_font']]],\n  ['glyph_5fwidth',['glyph_width',['../fbgraphics_8h.html#a279be685895357ebda19f155ed405efc',1,'_fbg_font']]]\n];\n"
  },
  {
    "path": "docs/search/all_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_8.js",
    "content": "var searchData=\n[\n  ['h',['h',['../fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3',1,'_fbg_hsl']]],\n  ['height',['height',['../fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db',1,'_fbg_img::height()'],['../struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8',1,'_fbg::height()']]]\n];\n"
  },
  {
    "path": "docs/search/all_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_9.js",
    "content": "var searchData=\n[\n  ['ibo',['ibo',['../fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d',1,'_fbg_vbo_data']]],\n  ['initialize_5fbuffers',['initialize_buffers',['../struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_a.js",
    "content": "var searchData=\n[\n  ['l',['l',['../fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174',1,'_fbg_hsl']]],\n  ['line_5flength',['line_length',['../struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_b.js",
    "content": "var searchData=\n[\n  ['mode',['mode',['../fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf',1,'_fbg_gba_context']]],\n  ['monitor',['monitor',['../fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb',1,'_fbg_glfw_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_c.js",
    "content": "var searchData=\n[\n  ['nbo',['nbo',['../fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560',1,'_fbg_vbo_data']]],\n  ['new_5fheight',['new_height',['../struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc',1,'_fbg']]],\n  ['new_5fwidth',['new_width',['../struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/all_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_d.js",
    "content": "var searchData=\n[\n  ['opt_5fflip',['opt_flip',['../struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_e.js",
    "content": "var searchData=\n[\n  ['page_5fflipping',['page_flipping',['../fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43',1,'_fbg_fbdev_context']]],\n  ['pitch',['pitch',['../struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/all_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_f.js",
    "content": "var searchData=\n[\n  ['r',['r',['../fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8',1,'_fbg_rgb']]],\n  ['readme_2emd',['README.md',['../README_8md.html',1,'']]],\n  ['resource_5ftype',['resource_type',['../struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/classes_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_0.js",
    "content": "var searchData=\n[\n  ['_5ffbg',['_fbg',['../struct__fbg.html',1,'']]],\n  ['_5ffbg_5fdispmanx_5fcontext',['_fbg_dispmanx_context',['../struct__fbg__dispmanx__context.html',1,'']]],\n  ['_5ffbg_5ffbdev_5fcontext',['_fbg_fbdev_context',['../fbg__fbdev_8h.html#struct__fbg__fbdev__context',1,'']]],\n  ['_5ffbg_5ffont',['_fbg_font',['../fbgraphics_8h.html#struct__fbg__font',1,'']]],\n  ['_5ffbg_5fgba_5fcontext',['_fbg_gba_context',['../fbg__gba_8h.html#struct__fbg__gba__context',1,'']]],\n  ['_5ffbg_5fgles2_5fcontext',['_fbg_gles2_context',['../fbg__opengl__es2_8h.html#struct__fbg__gles2__context',1,'']]],\n  ['_5ffbg_5fglfw_5fcontext',['_fbg_glfw_context',['../fbg__glfw_8h.html#struct__fbg__glfw__context',1,'']]],\n  ['_5ffbg_5fhsl',['_fbg_hsl',['../fbgraphics_8h.html#struct__fbg__hsl',1,'']]],\n  ['_5ffbg_5fimg',['_fbg_img',['../fbgraphics_8h.html#struct__fbg__img',1,'']]],\n  ['_5ffbg_5frgb',['_fbg_rgb',['../fbgraphics_8h.html#struct__fbg__rgb',1,'']]],\n  ['_5ffbg_5fvbo_5fdata',['_fbg_vbo_data',['../fbg__opengl__es2_8h.html#struct__fbg__vbo__data',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/defines_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/defines_0.js",
    "content": "var searchData=\n[\n  ['_5ffbg_5fdegtorad',['_FBG_DEGTORAD',['../fbgraphics_8h.html#aee61fffe4a48a3b1e5697eff6f5bbaf1',1,'fbgraphics.h']]],\n  ['_5ffbg_5fmax',['_FBG_MAX',['../fbgraphics_8h.html#af424bd0f275b38651aabf1a7e3e34de3',1,'fbgraphics.h']]],\n  ['_5ffbg_5fmin',['_FBG_MIN',['../fbgraphics_8h.html#add101b7a583f64094141ce1de49f92a7',1,'fbgraphics.h']]],\n  ['_5ffbg_5fradtodeg',['_FBG_RADTODEG',['../fbgraphics_8h.html#ab377dd49e23e56f2325559991ac85347',1,'fbgraphics.h']]],\n  ['_5ffbg_5fsgn',['_FBG_SGN',['../fbgraphics_8h.html#a1e3a69cf9aa6b9d50ac0dad1abb42390',1,'fbgraphics.h']]],\n  ['_5ffbg_5fsource_5fover',['_FBG_SOURCE_OVER',['../fbgraphics_8h.html#a17b79968958984d51750cae2ac7bea8f',1,'fbgraphics.h']]]\n];\n"
  },
  {
    "path": "docs/search/defines_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/defines_1.js",
    "content": "var searchData=\n[\n  ['fbg_5ffade',['fbg_fade',['../fbgraphics_8h.html#a4f15c1c2215c201e644c4c3de812f16f',1,'fbgraphics.h']]],\n  ['fbg_5ffbdevinit',['fbg_fbdevInit',['../fbg__fbdev_8h.html#a8ebf35a2c6451e36bd33e3e985f418dc',1,'fbg_fbdev.h']]],\n  ['fbg_5fimagescale',['fbg_imageScale',['../fbgraphics_8h.html#a110e7e4228a6350bebc68b6bdfd6d24a',1,'fbgraphics.h']]],\n  ['fbg_5fwrite',['fbg_write',['../fbgraphics_8h.html#a45d1d295d53d80013ca6d55487c02fa0',1,'fbgraphics.h']]]\n];\n"
  },
  {
    "path": "docs/search/files_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/files_0.js",
    "content": "var searchData=\n[\n  ['fbg_5fdispmanx_2eh',['fbg_dispmanx.h',['../fbg__dispmanx_8h.html',1,'']]],\n  ['fbg_5ffbdev_2eh',['fbg_fbdev.h',['../fbg__fbdev_8h.html',1,'']]],\n  ['fbg_5fgba_2eh',['fbg_gba.h',['../fbg__gba_8h.html',1,'']]],\n  ['fbg_5fglfw_2eh',['fbg_glfw.h',['../fbg__glfw_8h.html',1,'']]],\n  ['fbg_5fopengl_5fes2_2eh',['fbg_opengl_es2.h',['../fbg__opengl__es2_8h.html',1,'']]],\n  ['fbgraphics_2eh',['fbgraphics.h',['../fbgraphics_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/files_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/files_1.js",
    "content": "var searchData=\n[\n  ['readme_2emd',['README.md',['../README_8md.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/functions_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_0.js",
    "content": "var searchData=\n[\n  ['fbg_5fbackground',['fbg_background',['../fbgraphics_8h.html#a1622b4cd13f223d161cd234ea1fe6125',1,'fbgraphics.h']]],\n  ['fbg_5fclear',['fbg_clear',['../fbgraphics_8h.html#aab50cccf3eceac81bda220a0c09e38e0',1,'fbgraphics.h']]],\n  ['fbg_5fclose',['fbg_close',['../fbgraphics_8h.html#a390cd3fb535cbad76856700a035ed401',1,'fbgraphics.h']]],\n  ['fbg_5fcreatefont',['fbg_createFont',['../fbgraphics_8h.html#afdcb72ae08437471569c4880fb43f20c',1,'fbgraphics.h']]],\n  ['fbg_5fcreateimage',['fbg_createImage',['../fbgraphics_8h.html#a1e3ebfcc75e055a24f1a0f5765936d16',1,'fbgraphics.h']]],\n  ['fbg_5fcustomsetup',['fbg_customSetup',['../fbgraphics_8h.html#a8c36c8bfbfa3e589ea445d3197923823',1,'fbgraphics.h']]],\n  ['fbg_5fdispmanxonflip',['fbg_dispmanxOnFlip',['../fbg__dispmanx_8h.html#ac0a4c6e0821a33671fae87e7c5fb7fe2',1,'fbg_dispmanx.h']]],\n  ['fbg_5fdispmanxsetup',['fbg_dispmanxSetup',['../fbg__dispmanx_8h.html#a84447aff22c0387208aa478eafd983f7',1,'fbg_dispmanx.h']]],\n  ['fbg_5fdraw',['fbg_draw',['../fbgraphics_8h.html#a2dfb2f17bc31e161868e6baf1c391816',1,'fbgraphics.h']]],\n  ['fbg_5fdrawframerate',['fbg_drawFramerate',['../fbgraphics_8h.html#a112e427410882007fbcea78b0657c5f1',1,'fbgraphics.h']]],\n  ['fbg_5fdrawinto',['fbg_drawInto',['../fbgraphics_8h.html#adda2a3ebc3a63cc275c78c61e62ce437',1,'fbgraphics.h']]],\n  ['fbg_5ffadedown',['fbg_fadeDown',['../fbgraphics_8h.html#ab18823ca0e95ca51c5d6c69a48af8d0e',1,'fbgraphics.h']]],\n  ['fbg_5ffadeup',['fbg_fadeUp',['../fbgraphics_8h.html#a19d56a111248b7f7d52f4bc6392d3743',1,'fbgraphics.h']]],\n  ['fbg_5ffbdevsetup',['fbg_fbdevSetup',['../fbg__fbdev_8h.html#a038c291213ab0fa68de9fadd0fb2d31e',1,'fbg_fbdev.h']]],\n  ['fbg_5ffill',['fbg_fill',['../fbgraphics_8h.html#a224b9ae07cc8fcd8c497b1d5f7007b66',1,'fbgraphics.h']]],\n  ['fbg_5fflip',['fbg_flip',['../fbgraphics_8h.html#aedfec23bc4c51ff5ffb843bb289d448b',1,'fbgraphics.h']]],\n  ['fbg_5ffpixel',['fbg_fpixel',['../fbgraphics_8h.html#a5f656e76477d51b8faf039dd5baea65c',1,'fbgraphics.h']]],\n  ['fbg_5ffrect',['fbg_frect',['../fbgraphics_8h.html#a543755814e43b77b0beebea7a08457db',1,'fbgraphics.h']]],\n  ['fbg_5ffreefont',['fbg_freeFont',['../fbgraphics_8h.html#aae823fe76a206cbc1fdd405c13d26830',1,'fbgraphics.h']]],\n  ['fbg_5ffreeimage',['fbg_freeImage',['../fbgraphics_8h.html#a737482b6170ea3273d6679fdca63a27c',1,'fbgraphics.h']]],\n  ['fbg_5fgbasetup',['fbg_gbaSetup',['../fbg__gba_8h.html#a6679b30ad162111859a3276397324a83',1,'fbg_gba.h']]],\n  ['fbg_5fgetframerate',['fbg_getFramerate',['../fbgraphics_8h.html#a8125b5b37979f803c4640d9864fadbab',1,'fbgraphics.h']]],\n  ['fbg_5fgetpixel',['fbg_getPixel',['../fbgraphics_8h.html#a416971e772c114423b6c037f81d6f5ea',1,'fbgraphics.h']]],\n  ['fbg_5fgles2clear',['fbg_gles2Clear',['../fbg__opengl__es2_8h.html#a56535b156300a90cf5aa817fc4fdfe95',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogram',['fbg_gles2CreateProgram',['../fbg__opengl__es2_8h.html#a99da9de6f427c8dfa282479526cab0d8',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogramfromfiles',['fbg_gles2CreateProgramFromFiles',['../fbg__opengl__es2_8h.html#aa40dcfe49b117e0cc56f0e37136d2e14',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createprogramfromstring',['fbg_gles2CreateProgramFromString',['../fbg__opengl__es2_8h.html#a31d962efec67e4646f4e4d783f771f5b',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createshader',['fbg_gles2CreateShader',['../fbg__opengl__es2_8h.html#a6fecc8d59fce8fde2aa583d14d40e6c7',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createshaderfromfile',['fbg_gles2CreateShaderFromFile',['../fbg__opengl__es2_8h.html#a1e9bdd02d2bd4d842a037d89f160c97d',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createtexture',['fbg_gles2CreateTexture',['../fbg__opengl__es2_8h.html#a78b04688484a4ff7ec9651f872d6d7c4',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createtexturefromimage',['fbg_gles2CreateTextureFromImage',['../fbg__opengl__es2_8h.html#a40a597d6ce20e0bbcd1009ae9fe7328e',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createvbo',['fbg_gles2CreateVBO',['../fbg__opengl__es2_8h.html#ab7c677445f8e1853931f0d58bd53a9c0',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2createvbovu',['fbg_gles2CreateVBOvu',['../fbg__opengl__es2_8h.html#ad5ee72a7f71de24bdee26e09816c51a9',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2freevbodata',['fbg_gles2FreeVBOData',['../fbg__opengl__es2_8h.html#a3ac6ebf34ab696d79368321eb231336e',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2setup',['fbg_gles2Setup',['../fbg__opengl__es2_8h.html#aa6d3bab630c17f240843c2872b05d18a',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2shouldclose',['fbg_gles2ShouldClose',['../fbg__opengl__es2_8h.html#a182413439943678ce07ca310ccfded33',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2updatebuffer',['fbg_gles2UpdateBuffer',['../fbg__opengl__es2_8h.html#a74b92a4aab0207a1c15d7e8fc1b723dc',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fglfwclear',['fbg_glfwClear',['../fbg__glfw_8h.html#a17dd8947f781a20136c59eb9579edf2f',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatefbo',['fbg_glfwCreateFBO',['../fbg__glfw_8h.html#ae16afafa7eec0ed48b8a8fb38bb83ac4',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogram',['fbg_glfwCreateProgram',['../fbg__glfw_8h.html#a45cf81b5b25c6ef69025693650c9bcb8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogramfromfiles',['fbg_glfwCreateProgramFromFiles',['../fbg__glfw_8h.html#aeb42580d7148df3ffbbb590bbf0028a8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateprogramfromstring',['fbg_glfwCreateProgramFromString',['../fbg__glfw_8h.html#a9454484e4d9b5d484a1b46f35a2ed64b',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateshader',['fbg_glfwCreateShader',['../fbg__glfw_8h.html#a3ed78e4ad11ac7e2a021e1747eb59aa8',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreateshaderfromfile',['fbg_glfwCreateShaderFromFile',['../fbg__glfw_8h.html#ab156d8b8da0ef3135888942c054bbbeb',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatetexture',['fbg_glfwCreateTexture',['../fbg__glfw_8h.html#ac328fff77bfd3e7ddafb2dfdf5d6b4b0',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatetexturefromimage',['fbg_glfwCreateTextureFromImage',['../fbg__glfw_8h.html#aca78bdcc45f25aeb9ae74a3d6ef136d1',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatevao',['fbg_glfwCreateVAO',['../fbg__glfw_8h.html#a49073f43825b79bdf11b7a20cabac56b',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwcreatevaovu',['fbg_glfwCreateVAOvu',['../fbg__glfw_8h.html#af9d4876755370dc34cb76b9209ff8b6c',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwfullscreen',['fbg_glfwFullscreen',['../fbg__glfw_8h.html#ab1e510fded4ac300b4a21efd577604f3',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwresize',['fbg_glfwResize',['../fbg__glfw_8h.html#af724a4a5f9f195765ef6b11255851848',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsetup',['fbg_glfwSetup',['../fbg__glfw_8h.html#a41d8a89a2bf7c6d2310d07eae206faa9',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwshouldclose',['fbg_glfwShouldClose',['../fbg__glfw_8h.html#a723385d297914375f9c5269492b05b50',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwupdatebuffer',['fbg_glfwUpdateBuffer',['../fbg__glfw_8h.html#a88a6523e8ce117e334bad1220bfbc55b',1,'fbg_glfw.h']]],\n  ['fbg_5fhline',['fbg_hline',['../fbgraphics_8h.html#a0558e4513da1d844526d54afea4d1531',1,'fbgraphics.h']]],\n  ['fbg_5fhsltorgb',['fbg_hslToRGB',['../fbgraphics_8h.html#ac037925696a8bfab4163e011731a76a4',1,'fbgraphics.h']]],\n  ['fbg_5fimage',['fbg_image',['../fbgraphics_8h.html#a600d896c04feec33d001662ca23e50ad',1,'fbgraphics.h']]],\n  ['fbg_5fimageclip',['fbg_imageClip',['../fbgraphics_8h.html#a3610bf730319af99045283ea66955741',1,'fbgraphics.h']]],\n  ['fbg_5fimagecolorkey',['fbg_imageColorkey',['../fbgraphics_8h.html#a8ba2088b60304afa9ee7ce1b39bff114',1,'fbgraphics.h']]],\n  ['fbg_5fimageex',['fbg_imageEx',['../fbgraphics_8h.html#ad0c3a773dcab62f514726b03e54ad692',1,'fbgraphics.h']]],\n  ['fbg_5fimageflip',['fbg_imageFlip',['../fbgraphics_8h.html#a728d5bc6d1ee11e127db8722fe3cbc18',1,'fbgraphics.h']]],\n  ['fbg_5fline',['fbg_line',['../fbgraphics_8h.html#a46f7354a04a7bfb7467d25394ce38303',1,'fbgraphics.h']]],\n  ['fbg_5floadimage',['fbg_loadImage',['../fbgraphics_8h.html#a731ce4c5439d16555aa6ec48751ecea6',1,'fbgraphics.h']]],\n  ['fbg_5floadjpeg',['fbg_loadJPEG',['../fbgraphics_8h.html#ad05affc24eed0b9f906d6926b8f02fec',1,'fbgraphics.h']]],\n  ['fbg_5floadpng',['fbg_loadPNG',['../fbgraphics_8h.html#a4be92c5b1376fb7f06de1529b0a43f7f',1,'fbgraphics.h']]],\n  ['fbg_5fpixel',['fbg_pixel',['../fbgraphics_8h.html#a7d81b1ddf54b0d4da0f30e36d7e2f3bb',1,'fbgraphics.h']]],\n  ['fbg_5fpixela',['fbg_pixela',['../fbgraphics_8h.html#a08c6a08afcb5bd07793801554b8f0bfe',1,'fbgraphics.h']]],\n  ['fbg_5fplot',['fbg_plot',['../fbgraphics_8h.html#a990acac7dcc899656dc87c98404af777',1,'fbgraphics.h']]],\n  ['fbg_5fpolygon',['fbg_polygon',['../fbgraphics_8h.html#a2a5a2ef48f5b26794473c51082fb75ab',1,'fbgraphics.h']]],\n  ['fbg_5fpushresize',['fbg_pushResize',['../fbgraphics_8h.html#a3604f59f02b47730a47a2fc15644d61e',1,'fbgraphics.h']]],\n  ['fbg_5frandf',['fbg_randf',['../fbgraphics_8h.html#aedca9d7bf294d143f860d2f0ddcd528c',1,'fbgraphics.h']]],\n  ['fbg_5frect',['fbg_rect',['../fbgraphics_8h.html#ad208d61ec4f50a5fd13f2cc8dd2ee0e5',1,'fbgraphics.h']]],\n  ['fbg_5frecta',['fbg_recta',['../fbgraphics_8h.html#a83a99e5c8d44e2acf52cad38519ececf',1,'fbgraphics.h']]],\n  ['fbg_5fresize',['fbg_resize',['../fbgraphics_8h.html#a00509b4956e358ae3f9135151c1e524a',1,'fbgraphics.h']]],\n  ['fbg_5frgbtohsl',['fbg_rgbToHsl',['../fbgraphics_8h.html#aaf344cf56286931ee7a4a0e5fce920fc',1,'fbgraphics.h']]],\n  ['fbg_5fsetresizecallback',['fbg_setResizeCallback',['../fbgraphics_8h.html#a70e747dee4eda4a434b746e2bbd14386',1,'fbgraphics.h']]],\n  ['fbg_5ftext',['fbg_text',['../fbgraphics_8h.html#a3233e3de8fc3ad06391641241c77a1ea',1,'fbgraphics.h']]],\n  ['fbg_5ftextbackground',['fbg_textBackground',['../fbgraphics_8h.html#a2e82acd949a5c12a1fa494fb4c028ff1',1,'fbgraphics.h']]],\n  ['fbg_5ftextcolor',['fbg_textColor',['../fbgraphics_8h.html#acae7a4ff39407371a52ebf9ae4c260c1',1,'fbgraphics.h']]],\n  ['fbg_5ftextcolorkey',['fbg_textColorKey',['../fbgraphics_8h.html#a7165bceebbbe11332256d1bd4e179489',1,'fbgraphics.h']]],\n  ['fbg_5ftextfont',['fbg_textFont',['../fbgraphics_8h.html#ac1ccfb0069d4567313391dc819ada76b',1,'fbgraphics.h']]],\n  ['fbg_5fvline',['fbg_vline',['../fbgraphics_8h.html#a3c4fb5fa694646ec66b50a32eaf38557',1,'fbgraphics.h']]]\n];\n"
  },
  {
    "path": "docs/search/functions_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.15\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\n/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\ncreateResults();\n/* @license-end */\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\n/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n/* @license-end */\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_1.js",
    "content": "var searchData=\n[\n  ['rgbtohsl',['rgbToHsl',['../fbgraphics_8h.html#a2b89c989d4bedd173affaa8bf2dd6b54',1,'fbgraphics.h']]]\n];\n"
  },
  {
    "path": "docs/search/nomatches.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_0.js",
    "content": "var searchData=\n[\n  ['fbgraphics_20_3a_20lightweight_20c_202d_20graphics_20api_20agnostic_20library_20with_20parallelism_20support',['FBGraphics : Lightweight C 2D graphics API agnostic library with parallelism support',['../index.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/search.css",
    "content": "/*---------------- Search Box */\n\n#FSearchBox {\n    float: left;\n}\n\n#MSearchBox {\n    white-space : nowrap;\n    float: none;\n    margin-top: 8px;\n    right: 0px;\n    width: 170px;\n    height: 24px;\n    z-index: 102;\n}\n\n#MSearchBox .left\n{\n    display:block;\n    position:absolute;\n    left:10px;\n    width:20px;\n    height:19px;\n    background:url('search_l.png') no-repeat;\n    background-position:right;\n}\n\n#MSearchSelect {\n    display:block;\n    position:absolute;\n    width:20px;\n    height:19px;\n}\n\n.left #MSearchSelect {\n    left:4px;\n}\n\n.right #MSearchSelect {\n    right:5px;\n}\n\n#MSearchField {\n    display:block;\n    position:absolute;\n    height:19px;\n    background:url('search_m.png') repeat-x;\n    border:none;\n    width:115px;\n    margin-left:20px;\n    padding-left:4px;\n    color: #909090;\n    outline: none;\n    font: 9pt Arial, Verdana, sans-serif;\n    -webkit-border-radius: 0px;\n}\n\n#FSearchBox #MSearchField {\n    margin-left:15px;\n}\n\n#MSearchBox .right {\n    display:block;\n    position:absolute;\n    right:10px;\n    top:8px;\n    width:20px;\n    height:19px;\n    background:url('search_r.png') no-repeat;\n    background-position:left;\n}\n\n#MSearchClose {\n    display: none;\n    position: absolute;\n    top: 4px;\n    background : none;\n    border: none;\n    margin: 0px 4px 0px 0px;\n    padding: 0px 0px;\n    outline: none;\n}\n\n.left #MSearchClose {\n    left: 6px;\n}\n\n.right #MSearchClose {\n    right: 2px;\n}\n\n.MSearchBoxActive #MSearchField {\n    color: #000000;\n}\n\n/*---------------- Search filter selection */\n\n#MSearchSelectWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #90A5CE;\n    background-color: #F9FAFC;\n    z-index: 10001;\n    padding-top: 4px;\n    padding-bottom: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-top-left-radius: 4px;\n    -webkit-border-top-right-radius: 4px;\n    -webkit-border-bottom-left-radius: 4px;\n    -webkit-border-bottom-right-radius: 4px;\n    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\n.SelectItem {\n    font: 8pt Arial, Verdana, sans-serif;\n    padding-left:  2px;\n    padding-right: 12px;\n    border: 0px;\n}\n\nspan.SelectionMark {\n    margin-right: 4px;\n    font-family: monospace;\n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem {\n    display: block;\n    outline-style: none;\n    color: #000000; \n    text-decoration: none;\n    padding-left:   6px;\n    padding-right: 12px;\n}\n\na.SelectItem:focus,\na.SelectItem:active {\n    color: #000000; \n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem:hover {\n    color: #FFFFFF;\n    background-color: #3D578C;\n    outline-style: none;\n    text-decoration: none;\n    cursor: pointer;\n    display: block;\n}\n\n/*---------------- Search results window */\n\niframe#MSearchResults {\n    width: 60ex;\n    height: 15em;\n}\n\n#MSearchResultsWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #000;\n    background-color: #EEF1F7;\n    z-index:10000;\n}\n\n/* ----------------------------------- */\n\n\n#SRIndex {\n    clear:both; \n    padding-bottom: 15px;\n}\n\n.SREntry {\n    font-size: 10pt;\n    padding-left: 1ex;\n}\n\n.SRPage .SREntry {\n    font-size: 8pt;\n    padding: 1px 5px;\n}\n\nbody.SRPage {\n    margin: 5px 2px;\n}\n\n.SRChildren {\n    padding-left: 3ex; padding-bottom: .5em \n}\n\n.SRPage .SRChildren {\n    display: none;\n}\n\n.SRSymbol {\n    font-weight: bold; \n    color: #425E97;\n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRScope {\n    display: block;\n    color: #425E97; \n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRSymbol:focus, a.SRSymbol:active,\na.SRScope:focus, a.SRScope:active {\n    text-decoration: underline;\n}\n\nspan.SRScope {\n    padding-left: 4px;\n}\n\n.SRPage .SRStatus {\n    padding: 2px 5px;\n    font-size: 8pt;\n    font-style: italic;\n}\n\n.SRResult {\n    display: none;\n}\n\nDIV.searchresults {\n    margin-left: 10px;\n    margin-right: 10px;\n}\n\n/*---------------- External search page results */\n\n.searchresult {\n    background-color: #F0F3F8;\n}\n\n.pages b {\n   color: white;\n   padding: 5px 5px 3px 5px;\n   background-image: url(\"../tab_a.png\");\n   background-repeat: repeat-x;\n   text-shadow: 0 1px 1px #000000;\n}\n\n.pages {\n    line-height: 17px;\n    margin-left: 4px;\n    text-decoration: none;\n}\n\n.hl {\n    font-weight: bold;\n}\n\n#searchresults {\n    margin-bottom: 20px;\n}\n\n.searchpages {\n    margin-top: 10px;\n}\n\n"
  },
  {
    "path": "docs/search/search.js",
    "content": "function convertToId(search)\n{\n  var result = '';\n  for (i=0;i<search.length;i++)\n  {\n    var c = search.charAt(i);\n    var cn = c.charCodeAt(0);\n    if (c.match(/[a-z0-9\\u0080-\\uFFFF]/))\n    {\n      result+=c;\n    }\n    else if (cn<16)\n    {\n      result+=\"_0\"+cn.toString(16);\n    }\n    else\n    {\n      result+=\"_\"+cn.toString(16);\n    }\n  }\n  return result;\n}\n\nfunction getXPos(item)\n{\n  var x = 0;\n  if (item.offsetWidth)\n  {\n    while (item && item!=document.body)\n    {\n      x   += item.offsetLeft;\n      item = item.offsetParent;\n    }\n  }\n  return x;\n}\n\nfunction getYPos(item)\n{\n  var y = 0;\n  if (item.offsetWidth)\n  {\n     while (item && item!=document.body)\n     {\n       y   += item.offsetTop;\n       item = item.offsetParent;\n     }\n  }\n  return y;\n}\n\n/* A class handling everything associated with the search panel.\n\n   Parameters:\n   name - The name of the global variable that will be\n          storing this instance.  Is needed to be able to set timeouts.\n   resultPath - path to use for external files\n*/\nfunction SearchBox(name, resultsPath, inFrame, label)\n{\n  if (!name || !resultsPath) {  alert(\"Missing parameters to SearchBox.\"); }\n\n  // ---------- Instance variables\n  this.name                  = name;\n  this.resultsPath           = resultsPath;\n  this.keyTimeout            = 0;\n  this.keyTimeoutLength      = 500;\n  this.closeSelectionTimeout = 300;\n  this.lastSearchValue       = \"\";\n  this.lastResultsPage       = \"\";\n  this.hideTimeout           = 0;\n  this.searchIndex           = 0;\n  this.searchActive          = false;\n  this.insideFrame           = inFrame;\n  this.searchLabel           = label;\n\n  // ----------- DOM Elements\n\n  this.DOMSearchField = function()\n  {  return document.getElementById(\"MSearchField\");  }\n\n  this.DOMSearchSelect = function()\n  {  return document.getElementById(\"MSearchSelect\");  }\n\n  this.DOMSearchSelectWindow = function()\n  {  return document.getElementById(\"MSearchSelectWindow\");  }\n\n  this.DOMPopupSearchResults = function()\n  {  return document.getElementById(\"MSearchResults\");  }\n\n  this.DOMPopupSearchResultsWindow = function()\n  {  return document.getElementById(\"MSearchResultsWindow\");  }\n\n  this.DOMSearchClose = function()\n  {  return document.getElementById(\"MSearchClose\"); }\n\n  this.DOMSearchBox = function()\n  {  return document.getElementById(\"MSearchBox\");  }\n\n  // ------------ Event Handlers\n\n  // Called when focus is added or removed from the search field.\n  this.OnSearchFieldFocus = function(isActive)\n  {\n    this.Activate(isActive);\n  }\n\n  this.OnSearchSelectShow = function()\n  {\n    var searchSelectWindow = this.DOMSearchSelectWindow();\n    var searchField        = this.DOMSearchSelect();\n\n    if (this.insideFrame)\n    {\n      var left = getXPos(searchField);\n      var top  = getYPos(searchField);\n      left += searchField.offsetWidth + 6;\n      top += searchField.offsetHeight;\n\n      // show search selection popup\n      searchSelectWindow.style.display='block';\n      left -= searchSelectWindow.offsetWidth;\n      searchSelectWindow.style.left =  left + 'px';\n      searchSelectWindow.style.top  =  top  + 'px';\n    }\n    else\n    {\n      var left = getXPos(searchField);\n      var top  = getYPos(searchField);\n      top += searchField.offsetHeight;\n\n      // show search selection popup\n      searchSelectWindow.style.display='block';\n      searchSelectWindow.style.left =  left + 'px';\n      searchSelectWindow.style.top  =  top  + 'px';\n    }\n\n    // stop selection hide timer\n    if (this.hideTimeout)\n    {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout=0;\n    }\n    return false; // to avoid \"image drag\" default event\n  }\n\n  this.OnSearchSelectHide = function()\n  {\n    this.hideTimeout = setTimeout(this.name +\".CloseSelectionWindow()\",\n                                  this.closeSelectionTimeout);\n  }\n\n  // Called when the content of the search field is changed.\n  this.OnSearchFieldChange = function(evt)\n  {\n    if (this.keyTimeout) // kill running timer\n    {\n      clearTimeout(this.keyTimeout);\n      this.keyTimeout = 0;\n    }\n\n    var e  = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 || e.keyCode==13)\n    {\n      if (e.shiftKey==1)\n      {\n        this.OnSearchSelectShow();\n        var win=this.DOMSearchSelectWindow();\n        for (i=0;i<win.childNodes.length;i++)\n        {\n          var child = win.childNodes[i]; // get span within a\n          if (child.className=='SelectItem')\n          {\n            child.focus();\n            return;\n          }\n        }\n        return;\n      }\n      else if (window.frames.MSearchResults.searchResults)\n      {\n        var elem = window.frames.MSearchResults.searchResults.NavNext(0);\n        if (elem) elem.focus();\n      }\n    }\n    else if (e.keyCode==27) // Escape out of the search field\n    {\n      this.DOMSearchField().blur();\n      this.DOMPopupSearchResultsWindow().style.display = 'none';\n      this.DOMSearchClose().style.display = 'none';\n      this.lastSearchValue = '';\n      this.Activate(false);\n      return;\n    }\n\n    // strip whitespaces\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n\n    if (searchValue != this.lastSearchValue) // search value has changed\n    {\n      if (searchValue != \"\") // non-empty search\n      {\n        // set timer for search update\n        this.keyTimeout = setTimeout(this.name + '.Search()',\n                                     this.keyTimeoutLength);\n      }\n      else // empty search field\n      {\n        this.DOMPopupSearchResultsWindow().style.display = 'none';\n        this.DOMSearchClose().style.display = 'none';\n        this.lastSearchValue = '';\n      }\n    }\n  }\n\n  this.SelectItemCount = function(id)\n  {\n    var count=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        count++;\n      }\n    }\n    return count;\n  }\n\n  this.SelectItemSet = function(id)\n  {\n    var i,j=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        var node = child.firstChild;\n        if (j==id)\n        {\n          node.innerHTML='&#8226;';\n        }\n        else\n        {\n          node.innerHTML='&#160;';\n        }\n        j++;\n      }\n    }\n  }\n\n  // Called when an search filter selection is made.\n  // set item with index id as the active item\n  this.OnSelectItem = function(id)\n  {\n    this.searchIndex = id;\n    this.SelectItemSet(id);\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n    if (searchValue!=\"\" && this.searchActive) // something was found -> do a search\n    {\n      this.Search();\n    }\n  }\n\n  this.OnSearchSelectKey = function(evt)\n  {\n    var e = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down\n    {\n      this.searchIndex++;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==38 && this.searchIndex>0) // Up\n    {\n      this.searchIndex--;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==13 || e.keyCode==27)\n    {\n      this.OnSelectItem(this.searchIndex);\n      this.CloseSelectionWindow();\n      this.DOMSearchField().focus();\n    }\n    return false;\n  }\n\n  // --------- Actions\n\n  // Closes the results window.\n  this.CloseResultsWindow = function()\n  {\n    this.DOMPopupSearchResultsWindow().style.display = 'none';\n    this.DOMSearchClose().style.display = 'none';\n    this.Activate(false);\n  }\n\n  this.CloseSelectionWindow = function()\n  {\n    this.DOMSearchSelectWindow().style.display = 'none';\n  }\n\n  // Performs a search.\n  this.Search = function()\n  {\n    this.keyTimeout = 0;\n\n    // strip leading whitespace\n    var searchValue = this.DOMSearchField().value.replace(/^ +/, \"\");\n\n    var code = searchValue.toLowerCase().charCodeAt(0);\n    var idxChar = searchValue.substr(0, 1).toLowerCase();\n    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair\n    {\n      idxChar = searchValue.substr(0, 2);\n    }\n\n    var resultsPage;\n    var resultsPageWithSearch;\n    var hasResultsPage;\n\n    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);\n    if (idx!=-1)\n    {\n       var hexCode=idx.toString(16);\n       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';\n       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);\n       hasResultsPage = true;\n    }\n    else // nothing available for this search term\n    {\n       resultsPage = this.resultsPath + '/nomatches.html';\n       resultsPageWithSearch = resultsPage;\n       hasResultsPage = false;\n    }\n\n    window.frames.MSearchResults.location = resultsPageWithSearch;\n    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();\n\n    if (domPopupSearchResultsWindow.style.display!='block')\n    {\n       var domSearchBox = this.DOMSearchBox();\n       this.DOMSearchClose().style.display = 'inline';\n       if (this.insideFrame)\n       {\n         var domPopupSearchResults = this.DOMPopupSearchResults();\n         domPopupSearchResultsWindow.style.position = 'relative';\n         domPopupSearchResultsWindow.style.display  = 'block';\n         var width = document.body.clientWidth - 8; // the -8 is for IE :-(\n         domPopupSearchResultsWindow.style.width    = width + 'px';\n         domPopupSearchResults.style.width          = width + 'px';\n       }\n       else\n       {\n         var domPopupSearchResults = this.DOMPopupSearchResults();\n         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;\n         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;\n         domPopupSearchResultsWindow.style.display = 'block';\n         left -= domPopupSearchResults.offsetWidth;\n         domPopupSearchResultsWindow.style.top     = top  + 'px';\n         domPopupSearchResultsWindow.style.left    = left + 'px';\n       }\n    }\n\n    this.lastSearchValue = searchValue;\n    this.lastResultsPage = resultsPage;\n  }\n\n  // -------- Activation Functions\n\n  // Activates or deactivates the search panel, resetting things to\n  // their default values if necessary.\n  this.Activate = function(isActive)\n  {\n    if (isActive || // open it\n        this.DOMPopupSearchResultsWindow().style.display == 'block'\n       )\n    {\n      this.DOMSearchBox().className = 'MSearchBoxActive';\n\n      var searchField = this.DOMSearchField();\n\n      if (searchField.value == this.searchLabel) // clear \"Search\" term upon entry\n      {\n        searchField.value = '';\n        this.searchActive = true;\n      }\n    }\n    else if (!isActive) // directly remove the panel\n    {\n      this.DOMSearchBox().className = 'MSearchBoxInactive';\n      this.DOMSearchField().value   = this.searchLabel;\n      this.searchActive             = false;\n      this.lastSearchValue          = ''\n      this.lastResultsPage          = '';\n    }\n  }\n}\n\n// -----------------------------------------------------------------------\n\n// The class that handles everything on the search results page.\nfunction SearchResults(name)\n{\n    // The number of matches from the last run of <Search()>.\n    this.lastMatchCount = 0;\n    this.lastKey = 0;\n    this.repeatOn = false;\n\n    // Toggles the visibility of the passed element ID.\n    this.FindChildElement = function(id)\n    {\n      var parentElement = document.getElementById(id);\n      var element = parentElement.firstChild;\n\n      while (element && element!=parentElement)\n      {\n        if (element.nodeName == 'DIV' && element.className == 'SRChildren')\n        {\n          return element;\n        }\n\n        if (element.nodeName == 'DIV' && element.hasChildNodes())\n        {\n           element = element.firstChild;\n        }\n        else if (element.nextSibling)\n        {\n           element = element.nextSibling;\n        }\n        else\n        {\n          do\n          {\n            element = element.parentNode;\n          }\n          while (element && element!=parentElement && !element.nextSibling);\n\n          if (element && element!=parentElement)\n          {\n            element = element.nextSibling;\n          }\n        }\n      }\n    }\n\n    this.Toggle = function(id)\n    {\n      var element = this.FindChildElement(id);\n      if (element)\n      {\n        if (element.style.display == 'block')\n        {\n          element.style.display = 'none';\n        }\n        else\n        {\n          element.style.display = 'block';\n        }\n      }\n    }\n\n    // Searches for the passed string.  If there is no parameter,\n    // it takes it from the URL query.\n    //\n    // Always returns true, since other documents may try to call it\n    // and that may or may not be possible.\n    this.Search = function(search)\n    {\n      if (!search) // get search word from URL\n      {\n        search = window.location.search;\n        search = search.substring(1);  // Remove the leading '?'\n        search = unescape(search);\n      }\n\n      search = search.replace(/^ +/, \"\"); // strip leading spaces\n      search = search.replace(/ +$/, \"\"); // strip trailing spaces\n      search = search.toLowerCase();\n      search = convertToId(search);\n\n      var resultRows = document.getElementsByTagName(\"div\");\n      var matches = 0;\n\n      var i = 0;\n      while (i < resultRows.length)\n      {\n        var row = resultRows.item(i);\n        if (row.className == \"SRResult\")\n        {\n          var rowMatchName = row.id.toLowerCase();\n          rowMatchName = rowMatchName.replace(/^sr\\d*_/, ''); // strip 'sr123_'\n\n          if (search.length<=rowMatchName.length &&\n             rowMatchName.substr(0, search.length)==search)\n          {\n            row.style.display = 'block';\n            matches++;\n          }\n          else\n          {\n            row.style.display = 'none';\n          }\n        }\n        i++;\n      }\n      document.getElementById(\"Searching\").style.display='none';\n      if (matches == 0) // no results\n      {\n        document.getElementById(\"NoMatches\").style.display='block';\n      }\n      else // at least one result\n      {\n        document.getElementById(\"NoMatches\").style.display='none';\n      }\n      this.lastMatchCount = matches;\n      return true;\n    }\n\n    // return the first item with index index or higher that is visible\n    this.NavNext = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index++;\n      }\n      return focusItem;\n    }\n\n    this.NavPrev = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index--;\n      }\n      return focusItem;\n    }\n\n    this.ProcessKeys = function(e)\n    {\n      if (e.type == \"keydown\")\n      {\n        this.repeatOn = false;\n        this.lastKey = e.keyCode;\n      }\n      else if (e.type == \"keypress\")\n      {\n        if (!this.repeatOn)\n        {\n          if (this.lastKey) this.repeatOn = true;\n          return false; // ignore first keypress after keydown\n        }\n      }\n      else if (e.type == \"keyup\")\n      {\n        this.lastKey = 0;\n        this.repeatOn = false;\n      }\n      return this.lastKey!=0;\n    }\n\n    this.Nav = function(evt,itemIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        var newIndex = itemIndex-1;\n        var focusItem = this.NavPrev(newIndex);\n        if (focusItem)\n        {\n          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);\n          if (child && child.style.display == 'block') // children visible\n          {\n            var n=0;\n            var tmpElem;\n            while (1) // search for last child\n            {\n              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);\n              if (tmpElem)\n              {\n                focusItem = tmpElem;\n              }\n              else // found it!\n              {\n                break;\n              }\n              n++;\n            }\n          }\n        }\n        if (focusItem)\n        {\n          focusItem.focus();\n        }\n        else // return focus to search field\n        {\n           parent.document.getElementById(\"MSearchField\").focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = itemIndex+1;\n        var focusItem;\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem && elem.style.display == 'block') // children visible\n        {\n          focusItem = document.getElementById('Item'+itemIndex+'_c0');\n        }\n        if (!focusItem) focusItem = this.NavNext(newIndex);\n        if (focusItem)  focusItem.focus();\n      }\n      else if (this.lastKey==39) // Right\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'block';\n      }\n      else if (this.lastKey==37) // Left\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'none';\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n\n    this.NavChild = function(evt,itemIndex,childIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        if (childIndex>0)\n        {\n          var newIndex = childIndex-1;\n          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();\n        }\n        else // already at first child, jump to parent\n        {\n          document.getElementById('Item'+itemIndex).focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = childIndex+1;\n        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);\n        if (!elem) // last child, jump to parent next parent\n        {\n          elem = this.NavNext(itemIndex+1);\n        }\n        if (elem)\n        {\n          elem.focus();\n        }\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n}\n\nfunction setKeyActions(elem,action)\n{\n  elem.setAttribute('onkeydown',action);\n  elem.setAttribute('onkeypress',action);\n  elem.setAttribute('onkeyup',action);\n}\n\nfunction setClassAttr(elem,attr)\n{\n  elem.setAttribute('class',attr);\n  elem.setAttribute('className',attr);\n}\n\nfunction createResults()\n{\n  var results = document.getElementById(\"SRResults\");\n  for (var e=0; e<searchData.length; e++)\n  {\n    var id = searchData[e][0];\n    var srResult = document.createElement('div');\n    srResult.setAttribute('id','SR_'+id);\n    setClassAttr(srResult,'SRResult');\n    var srEntry = document.createElement('div');\n    setClassAttr(srEntry,'SREntry');\n    var srLink = document.createElement('a');\n    srLink.setAttribute('id','Item'+e);\n    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');\n    setClassAttr(srLink,'SRSymbol');\n    srLink.innerHTML = searchData[e][1][0];\n    srEntry.appendChild(srLink);\n    if (searchData[e][1].length==2) // single result\n    {\n      srLink.setAttribute('href',searchData[e][1][1][0]);\n      if (searchData[e][1][1][1])\n      {\n       srLink.setAttribute('target','_parent');\n      }\n      var srScope = document.createElement('span');\n      setClassAttr(srScope,'SRScope');\n      srScope.innerHTML = searchData[e][1][1][2];\n      srEntry.appendChild(srScope);\n    }\n    else // multiple results\n    {\n      srLink.setAttribute('href','javascript:searchResults.Toggle(\"SR_'+id+'\")');\n      var srChildren = document.createElement('div');\n      setClassAttr(srChildren,'SRChildren');\n      for (var c=0; c<searchData[e][1].length-1; c++)\n      {\n        var srChild = document.createElement('a');\n        srChild.setAttribute('id','Item'+e+'_c'+c);\n        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');\n        setClassAttr(srChild,'SRScope');\n        srChild.setAttribute('href',searchData[e][1][c+1][0]);\n        if (searchData[e][1][c+1][1])\n        {\n         srChild.setAttribute('target','_parent');\n        }\n        srChild.innerHTML = searchData[e][1][c+1][2];\n        srChildren.appendChild(srChild);\n      }\n      srEntry.appendChild(srChildren);\n    }\n    srResult.appendChild(srEntry);\n    results.appendChild(srResult);\n  }\n}\n\nfunction init_search()\n{\n  var results = document.getElementById(\"MSearchSelectWindow\");\n  for (var key in indexSectionLabels)\n  {\n    var link = document.createElement('a');\n    link.setAttribute('class','SelectItem');\n    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');\n    link.href='javascript:void(0)';\n    link.innerHTML='<span class=\"SelectionMark\">&#160;</span>'+indexSectionLabels[key];\n    results.appendChild(link);\n  }\n  searchBox.OnSelectItem(0);\n}\n\n"
  },
  {
    "path": "docs/search/searchdata.js",
    "content": "var indexSectionsWithContent =\n{\n  0: \"_abcdefghilmnoprstuvw\",\n  1: \"_\",\n  2: \"fr\",\n  3: \"f\",\n  4: \"abcdefghilmnoprstuvw\",\n  5: \"_f\",\n  6: \"f\"\n};\n\nvar indexSectionNames =\n{\n  0: \"all\",\n  1: \"classes\",\n  2: \"files\",\n  3: \"functions\",\n  4: \"variables\",\n  5: \"defines\",\n  6: \"pages\"\n};\n\nvar indexSectionLabels =\n{\n  0: \"All\",\n  1: \"Data Structures\",\n  2: \"Files\",\n  3: \"Functions\",\n  4: \"Variables\",\n  5: \"Macros\",\n  6: \"Pages\"\n};\n\n"
  },
  {
    "path": "docs/search/variables_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_0.js",
    "content": "var searchData=\n[\n  ['a',['a',['../fbgraphics_8h.html#a683be8ec38b9931754fe8501c4df3019',1,'_fbg_rgb']]],\n  ['allow_5fresizing',['allow_resizing',['../struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_1.js",
    "content": "var searchData=\n[\n  ['b',['b',['../fbgraphics_8h.html#a5eb0caaedd56ed29a1ef1f7941f414d7',1,'_fbg_rgb']]],\n  ['back_5fbuffer',['back_buffer',['../struct__fbg.html#a907e7fc97965b972c17114c885e53735',1,'_fbg']]],\n  ['back_5fresource',['back_resource',['../struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710',1,'_fbg_dispmanx_context']]],\n  ['backend_5fresize',['backend_resize',['../struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e',1,'_fbg']]],\n  ['bgr',['bgr',['../struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338',1,'_fbg']]],\n  ['bitmap',['bitmap',['../fbgraphics_8h.html#a0e7995b285b04f41d883165b0e7e387f',1,'_fbg_font']]],\n  ['buffer',['buffer',['../fbg__fbdev_8h.html#ab55635eae34af7a431d2bc1e811ce708',1,'_fbg_fbdev_context::buffer()'],['../fbg__gba_8h.html#aed8228182579172a6666619ee05e4dfe',1,'_fbg_gba_context::buffer()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_10.js",
    "content": "var searchData=\n[\n  ['tbo',['tbo',['../fbg__opengl__es2_8h.html#ab4bd72ffd8ed50a3153ce8458eec0498',1,'_fbg_vbo_data']]],\n  ['temp_5fbuffer',['temp_buffer',['../struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d',1,'_fbg']]],\n  ['text_5falpha',['text_alpha',['../struct__fbg.html#a870987786121c51135f20b630d731abd',1,'_fbg']]],\n  ['text_5fbackground',['text_background',['../struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67',1,'_fbg']]],\n  ['text_5fcolor',['text_color',['../struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2',1,'_fbg']]],\n  ['text_5fcolorkey',['text_colorkey',['../struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_11.js",
    "content": "var searchData=\n[\n  ['update',['update',['../struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34',1,'_fbg_dispmanx_context']]],\n  ['update_5fbuffer',['update_buffer',['../fbg__glfw_8h.html#a368de6aed34d9828a84ad7d629a8f96c',1,'_fbg_glfw_context::update_buffer()'],['../fbg__opengl__es2_8h.html#a2af2636ae98239c2cd1072e3cf9a5e26',1,'_fbg_gles2_context::update_buffer()']]],\n  ['user_5fcontext',['user_context',['../struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde',1,'_fbg']]],\n  ['user_5fdraw',['user_draw',['../struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e',1,'_fbg']]],\n  ['user_5fflip',['user_flip',['../struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37',1,'_fbg']]],\n  ['user_5ffree',['user_free',['../struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0',1,'_fbg']]],\n  ['user_5fresize',['user_resize',['../struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_12.js",
    "content": "var searchData=\n[\n  ['vbo',['vbo',['../fbg__opengl__es2_8h.html#a8b13e18bbdd0085855c8bbfae453bdeb',1,'_fbg_vbo_data']]],\n  ['vinfo',['vinfo',['../fbg__opengl__es2_8h.html#adb624ccb30f3d6a3a4aea5c1cdb03592',1,'_fbg_gles2_context::vinfo()'],['../fbg__fbdev_8h.html#ae522c89dc6af43b8500741f0f7e8f34f',1,'_fbg_fbdev_context::vinfo()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_13.js",
    "content": "var searchData=\n[\n  ['width',['width',['../fbgraphics_8h.html#a6e666c23aea3d07ee2c8c9f83f25eed2',1,'_fbg_img::width()'],['../struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e',1,'_fbg::width()']]],\n  ['width_5fn_5fheight',['width_n_height',['../struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d',1,'_fbg']]],\n  ['window',['window',['../fbg__glfw_8h.html#ae249286407780f32b8c65bce835475f4',1,'_fbg_glfw_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_2.js",
    "content": "var searchData=\n[\n  ['cbo',['cbo',['../fbg__opengl__es2_8h.html#a14d3420112271942e23d0de0d3b53b20',1,'_fbg_vbo_data']]],\n  ['comp_5foffset',['comp_offset',['../struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e',1,'_fbg']]],\n  ['components',['components',['../struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747',1,'_fbg']]],\n  ['compositing',['compositing',['../struct__fbg.html#a7090d672982fe465f2186dbfea384d32',1,'_fbg']]],\n  ['current_5ffont',['current_font',['../struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_3.js",
    "content": "var searchData=\n[\n  ['data',['data',['../fbgraphics_8h.html#ab996d65bce285a78c8a8f3ac99b40658',1,'_fbg_img']]],\n  ['disp_5fbuffer',['disp_buffer',['../struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8',1,'_fbg']]],\n  ['display',['display',['../struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee',1,'_fbg_dispmanx_context']]],\n  ['dst_5frect',['dst_rect',['../struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_4.js",
    "content": "var searchData=\n[\n  ['egl_5fcontext',['egl_context',['../fbg__opengl__es2_8h.html#a2ca2f4f23e8b651ec11708d211ed765b',1,'_fbg_gles2_context']]],\n  ['egl_5fdisplay',['egl_display',['../fbg__opengl__es2_8h.html#affc02efb9ec2cda13d822b275e596f74',1,'_fbg_gles2_context']]],\n  ['egl_5fimage',['egl_image',['../fbg__opengl__es2_8h.html#a0937c99d8efac543926d5cee7708b147',1,'_fbg_gles2_context']]],\n  ['egl_5fsurface',['egl_surface',['../fbg__opengl__es2_8h.html#a82a71c25f8b378ca6d50bcfe9bde2228',1,'_fbg_gles2_context']]],\n  ['elem',['elem',['../struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_5.js",
    "content": "var searchData=\n[\n  ['fbg_5fgles2quad',['fbg_gles2Quad',['../fbg__opengl__es2_8h.html#a9629d95895432370d9f324880289ad4d',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2simplefs',['fbg_gles2SimpleFs',['../fbg__opengl__es2_8h.html#a6986e3484c0e218fd9d527643b74fe54',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fgles2simplevs',['fbg_gles2SimpleVs',['../fbg__opengl__es2_8h.html#a03be1f1cb0a92af8c8c6dc6fcd990b68',1,'fbg_opengl_es2.h']]],\n  ['fbg_5fglfwquad',['fbg_glfwQuad',['../fbg__glfw_8h.html#a06771c76a305bf753611309286e73c07',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsimplefs',['fbg_glfwSimpleFs',['../fbg__glfw_8h.html#a9fd4455e8dddd7c55fb5fb3e5d973f36',1,'fbg_glfw.h']]],\n  ['fbg_5fglfwsimplevs',['fbg_glfwSimpleVs',['../fbg__glfw_8h.html#a998669be4cb45dda77c48cb23891fc4e',1,'fbg_glfw.h']]],\n  ['fbg_5ftexture',['fbg_texture',['../fbg__glfw_8h.html#ab9766ea45a75dae87a27b93097849e29',1,'_fbg_glfw_context::fbg_texture()'],['../fbg__opengl__es2_8h.html#af1ab819f45eb1407455cba90991c11e0',1,'_fbg_gles2_context::fbg_texture()']]],\n  ['fbg_5fvao',['fbg_vao',['../fbg__glfw_8h.html#ae65b56bcf995bc599bc98d6a6d81072a',1,'_fbg_glfw_context']]],\n  ['fbg_5fvbo',['fbg_vbo',['../fbg__opengl__es2_8h.html#ad91d53fa2f501b5ca598e7dfaef6c7a2',1,'_fbg_gles2_context']]],\n  ['fd',['fd',['../fbg__opengl__es2_8h.html#af4aca9e8f28ec07109a8c850d9e941f4',1,'_fbg_gles2_context::fd()'],['../fbg__fbdev_8h.html#a1bc9cdf0319e87ed2e4f4b7a32397da1',1,'_fbg_fbdev_context::fd()']]],\n  ['fill_5fcolor',['fill_color',['../struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a',1,'_fbg']]],\n  ['finfo',['finfo',['../fbg__fbdev_8h.html#adff746dbaa8d0ff15492a3003a6ccd4c',1,'_fbg_fbdev_context']]],\n  ['first_5fchar',['first_char',['../fbgraphics_8h.html#a05730637b297339a1fe39db736335cff',1,'_fbg_font']]],\n  ['fps',['fps',['../struct__fbg.html#a64b16363bc48d1e19141df2e242930a9',1,'_fbg']]],\n  ['fps_5fchar',['fps_char',['../struct__fbg.html#af447e6ed58d893989c8dad075807a79b',1,'_fbg']]],\n  ['fps_5fstart',['fps_start',['../struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33',1,'_fbg']]],\n  ['fps_5fstop',['fps_stop',['../struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c',1,'_fbg']]],\n  ['frame',['frame',['../struct__fbg.html#aa3ef83f919d12e680f8c64006b441454',1,'_fbg']]],\n  ['front_5fresource',['front_resource',['../struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_6.js",
    "content": "var searchData=\n[\n  ['g',['g',['../fbgraphics_8h.html#a73d04c86a962adfeac115c18c231eae1',1,'_fbg_rgb']]],\n  ['glyph_5fcoord_5fx',['glyph_coord_x',['../fbgraphics_8h.html#a1a9dc1b888e744c8e8d69f1a39d7a0b3',1,'_fbg_font']]],\n  ['glyph_5fcoord_5fy',['glyph_coord_y',['../fbgraphics_8h.html#a929f320fae39630e84bd1c949b9d845d',1,'_fbg_font']]],\n  ['glyph_5fheight',['glyph_height',['../fbgraphics_8h.html#a3b11d9dc4724e8b789509882d4cff87e',1,'_fbg_font']]],\n  ['glyph_5fwidth',['glyph_width',['../fbgraphics_8h.html#a279be685895357ebda19f155ed405efc',1,'_fbg_font']]]\n];\n"
  },
  {
    "path": "docs/search/variables_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_7.js",
    "content": "var searchData=\n[\n  ['h',['h',['../fbgraphics_8h.html#a7246517249c3b27ed57f82a11da3c7d3',1,'_fbg_hsl']]],\n  ['height',['height',['../fbgraphics_8h.html#ac6293cb3d118f0ccdde38c13cbefa9db',1,'_fbg_img::height()'],['../struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8',1,'_fbg::height()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_8.js",
    "content": "var searchData=\n[\n  ['ibo',['ibo',['../fbg__opengl__es2_8h.html#ad3d86948330c3e3887733228f8369a1d',1,'_fbg_vbo_data']]],\n  ['initialize_5fbuffers',['initialize_buffers',['../struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_9.js",
    "content": "var searchData=\n[\n  ['l',['l',['../fbgraphics_8h.html#a405724441abc0190dea559bf11b8b174',1,'_fbg_hsl']]],\n  ['line_5flength',['line_length',['../struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_a.js",
    "content": "var searchData=\n[\n  ['mode',['mode',['../fbg__gba_8h.html#abfb08c9ec453d0a38e1b4f78f0894faf',1,'_fbg_gba_context']]],\n  ['monitor',['monitor',['../fbg__glfw_8h.html#a0377751d89c499aaa9d3a8b75c6724bb',1,'_fbg_glfw_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_b.js",
    "content": "var searchData=\n[\n  ['nbo',['nbo',['../fbg__opengl__es2_8h.html#a795cc9acb2bec510a4681aa824fe2560',1,'_fbg_vbo_data']]],\n  ['new_5fheight',['new_height',['../struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc',1,'_fbg']]],\n  ['new_5fwidth',['new_width',['../struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef',1,'_fbg']]]\n];\n"
  },
  {
    "path": "docs/search/variables_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_c.js",
    "content": "var searchData=\n[\n  ['opt_5fflip',['opt_flip',['../struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_d.js",
    "content": "var searchData=\n[\n  ['page_5fflipping',['page_flipping',['../fbg__fbdev_8h.html#a895ef3bfc6f4797eb2812371f8b69b43',1,'_fbg_fbdev_context']]],\n  ['pitch',['pitch',['../struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_e.js",
    "content": "var searchData=\n[\n  ['r',['r',['../fbgraphics_8h.html#a3974f2dce77af4058a1ae585f55c5bb8',1,'_fbg_rgb']]],\n  ['resource_5ftype',['resource_type',['../struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/search/variables_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_f.js",
    "content": "var searchData=\n[\n  ['s',['s',['../fbgraphics_8h.html#a22a62f07da21ac2ef92365718104348f',1,'_fbg_hsl']]],\n  ['simple_5fprogram',['simple_program',['../fbg__glfw_8h.html#ab95a2f530b32939e45f3ee7f453acf36',1,'_fbg_glfw_context::simple_program()'],['../fbg__opengl__es2_8h.html#a6dbba5982fbf4db17d85f5587ee2afd4',1,'_fbg_gles2_context::simple_program()']]],\n  ['size',['size',['../struct__fbg.html#a84fb220d4804cba22176997898e75b73',1,'_fbg']]],\n  ['src_5frect',['src_rect',['../struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19',1,'_fbg_dispmanx_context']]]\n];\n"
  },
  {
    "path": "docs/struct__fbg.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: _fbg Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Data Fields</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">_fbg Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>FB Graphics context data structure.  \n <a href=\"struct__fbg.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nData Fields</h2></td></tr>\n<tr class=\"memitem:a84fb220d4804cba22176997898e75b73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a84fb220d4804cba22176997898e75b73\">size</a></td></tr>\n<tr class=\"memdesc:a84fb220d4804cba22176997898e75b73\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Framebuffer real data length (with BPP)  <a href=\"#a84fb220d4804cba22176997898e75b73\">More...</a><br /></td></tr>\n<tr class=\"separator:a84fb220d4804cba22176997898e75b73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa20614c94c7235bc5bc105b6e71e1be8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\">disp_buffer</a></td></tr>\n<tr class=\"memdesc:aa20614c94c7235bc5bc105b6e71e1be8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Front / display buffer.  <a href=\"#aa20614c94c7235bc5bc105b6e71e1be8\">More...</a><br /></td></tr>\n<tr class=\"separator:aa20614c94c7235bc5bc105b6e71e1be8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a907e7fc97965b972c17114c885e53735\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a907e7fc97965b972c17114c885e53735\">back_buffer</a></td></tr>\n<tr class=\"memdesc:a907e7fc97965b972c17114c885e53735\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Back buffer.  <a href=\"#a907e7fc97965b972c17114c885e53735\">More...</a><br /></td></tr>\n<tr class=\"separator:a907e7fc97965b972c17114c885e53735\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0463af9bf583afe770b822c1fbb9a24d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\">temp_buffer</a></td></tr>\n<tr class=\"memdesc:a0463af9bf583afe770b822c1fbb9a24d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Temporary buffer.  <a href=\"#a0463af9bf583afe770b822c1fbb9a24d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0463af9bf583afe770b822c1fbb9a24d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7796d799a4ad67405101b8548d99ad8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\">allow_resizing</a></td></tr>\n<tr class=\"memdesc:ad7796d799a4ad67405101b8548d99ad8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wether to allow context resize.  <a href=\"#ad7796d799a4ad67405101b8548d99ad8\">More...</a><br /></td></tr>\n<tr class=\"separator:ad7796d799a4ad67405101b8548d99ad8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9a25b7b2700bee151d8f9dc3e586487\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\">initialize_buffers</a></td></tr>\n<tr class=\"memdesc:ac9a25b7b2700bee151d8f9dc3e586487\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wether to allow FBG to allocate its internal buffers.  <a href=\"#ac9a25b7b2700bee151d8f9dc3e586487\">More...</a><br /></td></tr>\n<tr class=\"separator:ac9a25b7b2700bee151d8f9dc3e586487\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3cac82bd9448a4020a4e08621f5269a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\">fill_color</a></td></tr>\n<tr class=\"memdesc:ad3cac82bd9448a4020a4e08621f5269a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current fill color.  <a href=\"#ad3cac82bd9448a4020a4e08621f5269a\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3cac82bd9448a4020a4e08621f5269a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4abb858439598b09790ec6d5d8326bb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\">text_color</a></td></tr>\n<tr class=\"memdesc:a4abb858439598b09790ec6d5d8326bb2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current text color.  <a href=\"#a4abb858439598b09790ec6d5d8326bb2\">More...</a><br /></td></tr>\n<tr class=\"separator:a4abb858439598b09790ec6d5d8326bb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd34a8de5a853e915bd101f11d44cf67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\">text_background</a></td></tr>\n<tr class=\"memdesc:afd34a8de5a853e915bd101f11d44cf67\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current text background color (based on colorkey value)  <a href=\"#afd34a8de5a853e915bd101f11d44cf67\">More...</a><br /></td></tr>\n<tr class=\"separator:afd34a8de5a853e915bd101f11d44cf67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06e65293cf0b48e70d76d63f5de453e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\">text_colorkey</a></td></tr>\n<tr class=\"memdesc:a06e65293cf0b48e70d76d63f5de453e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current text color key.  <a href=\"#a06e65293cf0b48e70d76d63f5de453e6\">More...</a><br /></td></tr>\n<tr class=\"separator:a06e65293cf0b48e70d76d63f5de453e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a870987786121c51135f20b630d731abd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a870987786121c51135f20b630d731abd\">text_alpha</a></td></tr>\n<tr class=\"memdesc:a870987786121c51135f20b630d731abd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Text background alpha value.  <a href=\"#a870987786121c51135f20b630d731abd\">More...</a><br /></td></tr>\n<tr class=\"separator:a870987786121c51135f20b630d731abd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72868d703236aaabb7a5031703a6bbd8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\">current_font</a></td></tr>\n<tr class=\"memdesc:a72868d703236aaabb7a5031703a6bbd8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current font.  <a href=\"#a72868d703236aaabb7a5031703a6bbd8\">More...</a><br /></td></tr>\n<tr class=\"separator:a72868d703236aaabb7a5031703a6bbd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7090d672982fe465f2186dbfea384d32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\">compositing</a></td></tr>\n<tr class=\"memdesc:a7090d672982fe465f2186dbfea384d32\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Compositing method (only used with fbg_drawImage for now)  <a href=\"#a7090d672982fe465f2186dbfea384d32\">More...</a><br /></td></tr>\n<tr class=\"separator:a7090d672982fe465f2186dbfea384d32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d3c76643e4ee424f4d17e27991d5e2e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\">width</a></td></tr>\n<tr class=\"memdesc:a1d3c76643e4ee424f4d17e27991d5e2e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Display width in pixels.  <a href=\"#a1d3c76643e4ee424f4d17e27991d5e2e\">More...</a><br /></td></tr>\n<tr class=\"separator:a1d3c76643e4ee424f4d17e27991d5e2e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a3bd409e71d020fa77f69a541d832f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\">height</a></td></tr>\n<tr class=\"memdesc:a3a3bd409e71d020fa77f69a541d832f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Display height in pixels.  <a href=\"#a3a3bd409e71d020fa77f69a541d832f8\">More...</a><br /></td></tr>\n<tr class=\"separator:a3a3bd409e71d020fa77f69a541d832f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ab3f10e8c3483d7286db9850511d46d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\">width_n_height</a></td></tr>\n<tr class=\"memdesc:a1ab3f10e8c3483d7286db9850511d46d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Display lenght in pixels (width * height)  <a href=\"#a1ab3f10e8c3483d7286db9850511d46d\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ab3f10e8c3483d7286db9850511d46d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1db77a2ef506723a575644dbc1cfb747\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\">components</a></td></tr>\n<tr class=\"memdesc:a1db77a2ef506723a575644dbc1cfb747\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Display components amount (3 = 24 BPP / 4 = 32 BPP)  <a href=\"#a1db77a2ef506723a575644dbc1cfb747\">More...</a><br /></td></tr>\n<tr class=\"separator:a1db77a2ef506723a575644dbc1cfb747\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c2e64d2f40575c8a989c759c30acb0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\">comp_offset</a></td></tr>\n<tr class=\"memdesc:a7c2e64d2f40575c8a989c759c30acb0e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Offset to add in case of 32 BPP.  <a href=\"#a7c2e64d2f40575c8a989c759c30acb0e\">More...</a><br /></td></tr>\n<tr class=\"separator:a7c2e64d2f40575c8a989c759c30acb0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8a1ee8d7004e6f2193f2a3ed98f8ce8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">line_length</a></td></tr>\n<tr class=\"memdesc:af8a1ee8d7004e6f2193f2a3ed98f8ce8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Internal buffers line length.  <a href=\"#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">More...</a><br /></td></tr>\n<tr class=\"separator:af8a1ee8d7004e6f2193f2a3ed98f8ce8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95859bd418a5cfff155cdb1421d295ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a></td></tr>\n<tr class=\"memdesc:a95859bd418a5cfff155cdb1421d295ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Requested new display width (resize event)  <a href=\"#a95859bd418a5cfff155cdb1421d295ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a95859bd418a5cfff155cdb1421d295ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a509aa5f8f0a94d8313bb4da777aa64bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a></td></tr>\n<tr class=\"memdesc:a509aa5f8f0a94d8313bb4da777aa64bc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Requested new display height (resize event)  <a href=\"#a509aa5f8f0a94d8313bb4da777aa64bc\">More...</a><br /></td></tr>\n<tr class=\"separator:a509aa5f8f0a94d8313bb4da777aa64bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64b16363bc48d1e19141df2e242930a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\">fps</a></td></tr>\n<tr class=\"memdesc:a64b16363bc48d1e19141df2e242930a9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current FPS.  <a href=\"#a64b16363bc48d1e19141df2e242930a9\">More...</a><br /></td></tr>\n<tr class=\"separator:a64b16363bc48d1e19141df2e242930a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af447e6ed58d893989c8dad075807a79b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\">fps_char</a> [10]</td></tr>\n<tr class=\"memdesc:af447e6ed58d893989c8dad075807a79b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current FPS as a string.  <a href=\"#af447e6ed58d893989c8dad075807a79b\">More...</a><br /></td></tr>\n<tr class=\"separator:af447e6ed58d893989c8dad075807a79b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07d7bb827a7595c956fe22c2d65bba33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct timeval&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\">fps_start</a></td></tr>\n<tr class=\"memdesc:a07d7bb827a7595c956fe22c2d65bba33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">First frame time for the current second.  <a href=\"#a07d7bb827a7595c956fe22c2d65bba33\">More...</a><br /></td></tr>\n<tr class=\"separator:a07d7bb827a7595c956fe22c2d65bba33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade17a45bbc82bef326857c2837cdf66c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct timeval&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\">fps_stop</a></td></tr>\n<tr class=\"memdesc:ade17a45bbc82bef326857c2837cdf66c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Last frame time for the current second.  <a href=\"#ade17a45bbc82bef326857c2837cdf66c\">More...</a><br /></td></tr>\n<tr class=\"separator:ade17a45bbc82bef326857c2837cdf66c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3ef83f919d12e680f8c64006b441454\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\">frame</a></td></tr>\n<tr class=\"memdesc:aa3ef83f919d12e680f8c64006b441454\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Frame counter for the current second.  <a href=\"#aa3ef83f919d12e680f8c64006b441454\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3ef83f919d12e680f8c64006b441454\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5844c5bf4789117cbc0c972ff160b338\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\">bgr</a></td></tr>\n<tr class=\"memdesc:a5844c5bf4789117cbc0c972ff160b338\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag indicating a BGR framebuffer.  <a href=\"#a5844c5bf4789117cbc0c972ff160b338\">More...</a><br /></td></tr>\n<tr class=\"separator:a5844c5bf4789117cbc0c972ff160b338\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef07a92ae059ea2a43653f4d0c5d928e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\">backend_resize</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, unsigned int <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>)</td></tr>\n<tr class=\"memdesc:aef07a92ae059ea2a43653f4d0c5d928e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Backend resize function.  <a href=\"#aef07a92ae059ea2a43653f4d0c5d928e\">More...</a><br /></td></tr>\n<tr class=\"separator:aef07a92ae059ea2a43653f4d0c5d928e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68add70dac4b055809c1bcab1e65b18d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\">user_resize</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, unsigned int <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>)</td></tr>\n<tr class=\"memdesc:a68add70dac4b055809c1bcab1e65b18d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User-defined resize function.  <a href=\"#a68add70dac4b055809c1bcab1e65b18d\">More...</a><br /></td></tr>\n<tr class=\"separator:a68add70dac4b055809c1bcab1e65b18d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f2ad2eb06555cdbe2d18f541231cb37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\">user_flip</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a3f2ad2eb06555cdbe2d18f541231cb37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User-defined flip function.  <a href=\"#a3f2ad2eb06555cdbe2d18f541231cb37\">More...</a><br /></td></tr>\n<tr class=\"separator:a3f2ad2eb06555cdbe2d18f541231cb37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac66a762877982c6f381a7cfd54a8f17e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\">user_draw</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:ac66a762877982c6f381a7cfd54a8f17e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User-defined draw function.  <a href=\"#ac66a762877982c6f381a7cfd54a8f17e\">More...</a><br /></td></tr>\n<tr class=\"separator:ac66a762877982c6f381a7cfd54a8f17e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88d48b502672cfb8bd2c94ea3feac8d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\">user_free</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a88d48b502672cfb8bd2c94ea3feac8d0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User-defined free function.  <a href=\"#a88d48b502672cfb8bd2c94ea3feac8d0\">More...</a><br /></td></tr>\n<tr class=\"separator:a88d48b502672cfb8bd2c94ea3feac8d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3ecac18abee9dedabacaca9bb063bde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\">user_context</a></td></tr>\n<tr class=\"memdesc:ae3ecac18abee9dedabacaca9bb063bde\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User-defined context structure.  <a href=\"#ae3ecac18abee9dedabacaca9bb063bde\">More...</a><br /></td></tr>\n<tr class=\"separator:ae3ecac18abee9dedabacaca9bb063bde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>FB Graphics context data structure. </p>\n<p>Hold all data related to a FBG context </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00123\">123</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n</div><h2 class=\"groupheader\">Field Documentation</h2>\n<a id=\"ad7796d799a4ad67405101b8548d99ad8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7796d799a4ad67405101b8548d99ad8\">&#9670;&nbsp;</a></span>allow_resizing</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::allow_resizing</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Wether to allow context resize. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00136\">136</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a907e7fc97965b972c17114c885e53735\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a907e7fc97965b972c17114c885e53735\">&#9670;&nbsp;</a></span>back_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">unsigned char* _fbg::back_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Back buffer. </p>\n<p>All FB Graphics functions draw into this buffer. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00131\">131</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"aef07a92ae059ea2a43653f4d0c5d928e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef07a92ae059ea2a43653f4d0c5d928e\">&#9670;&nbsp;</a></span>backend_resize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg::backend_resize) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, unsigned int <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Backend resize function. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00209\">209</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a5844c5bf4789117cbc0c972ff160b338\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5844c5bf4789117cbc0c972ff160b338\">&#9670;&nbsp;</a></span>bgr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::bgr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Flag indicating a BGR framebuffer. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00206\">206</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a7c2e64d2f40575c8a989c759c30acb0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c2e64d2f40575c8a989c759c30acb0e\">&#9670;&nbsp;</a></span>comp_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::comp_offset</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Offset to add in case of 32 BPP. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00178\">178</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a1db77a2ef506723a575644dbc1cfb747\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1db77a2ef506723a575644dbc1cfb747\">&#9670;&nbsp;</a></span>components</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::components</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Display components amount (3 = 24 BPP / 4 = 32 BPP) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00176\">176</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a7090d672982fe465f2186dbfea384d32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7090d672982fe465f2186dbfea384d32\">&#9670;&nbsp;</a></span>compositing</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::compositing</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Compositing method (only used with fbg_drawImage for now) </p>\n<p>Default to source-over compositing. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00167\">167</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a72868d703236aaabb7a5031703a6bbd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72868d703236aaabb7a5031703a6bbd8\">&#9670;&nbsp;</a></span>current_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__font\">_fbg_font</a> _fbg::current_font</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current font. </p>\n<p>No fonts is loaded by default and the first loaded font will be assigned automatically as the current font. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00163\">163</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"aa20614c94c7235bc5bc105b6e71e1be8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa20614c94c7235bc5bc105b6e71e1be8\">&#9670;&nbsp;</a></span>disp_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">unsigned char* _fbg::disp_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Front / display buffer. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00128\">128</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ad3cac82bd9448a4020a4e08621f5269a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3cac82bd9448a4020a4e08621f5269a\">&#9670;&nbsp;</a></span>fill_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> _fbg::fill_color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current fill color. </p>\n<p>Default to black. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00143\">143</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a64b16363bc48d1e19141df2e242930a9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64b16363bc48d1e19141df2e242930a9\">&#9670;&nbsp;</a></span>fps</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int16_t _fbg::fps</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current FPS. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00191\">191</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"af447e6ed58d893989c8dad075807a79b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af447e6ed58d893989c8dad075807a79b\">&#9670;&nbsp;</a></span>fps_char</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char _fbg::fps_char[10]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current FPS as a string. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00195\">195</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a07d7bb827a7595c956fe22c2d65bba33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07d7bb827a7595c956fe22c2d65bba33\">&#9670;&nbsp;</a></span>fps_start</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct timeval _fbg::fps_start</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>First frame time for the current second. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00198\">198</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ade17a45bbc82bef326857c2837cdf66c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade17a45bbc82bef326857c2837cdf66c\">&#9670;&nbsp;</a></span>fps_stop</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct timeval _fbg::fps_stop</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Last frame time for the current second. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00200\">200</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"aa3ef83f919d12e680f8c64006b441454\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3ef83f919d12e680f8c64006b441454\">&#9670;&nbsp;</a></span>frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::frame</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Frame counter for the current second. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00203\">203</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a3a3bd409e71d020fa77f69a541d832f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a3bd409e71d020fa77f69a541d832f8\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Display height in pixels. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00172\">172</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ac9a25b7b2700bee151d8f9dc3e586487\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9a25b7b2700bee151d8f9dc3e586487\">&#9670;&nbsp;</a></span>initialize_buffers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::initialize_buffers</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Wether to allow FBG to allocate its internal buffers. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00139\">139</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"af8a1ee8d7004e6f2193f2a3ed98f8ce8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8a1ee8d7004e6f2193f2a3ed98f8ce8\">&#9670;&nbsp;</a></span>line_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::line_length</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Internal buffers line length. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00180\">180</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a509aa5f8f0a94d8313bb4da777aa64bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a509aa5f8f0a94d8313bb4da777aa64bc\">&#9670;&nbsp;</a></span>new_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::new_height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Requested new display height (resize event) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00185\">185</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a95859bd418a5cfff155cdb1421d295ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95859bd418a5cfff155cdb1421d295ef\">&#9670;&nbsp;</a></span>new_width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::new_width</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Requested new display width (resize event) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00183\">183</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a84fb220d4804cba22176997898e75b73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84fb220d4804cba22176997898e75b73\">&#9670;&nbsp;</a></span>size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::size</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Framebuffer real data length (with BPP) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00125\">125</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a0463af9bf583afe770b822c1fbb9a24d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0463af9bf583afe770b822c1fbb9a24d\">&#9670;&nbsp;</a></span>temp_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">unsigned char* _fbg::temp_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Temporary buffer. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00133\">133</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a870987786121c51135f20b630d731abd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a870987786121c51135f20b630d731abd\">&#9670;&nbsp;</a></span>text_alpha</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::text_alpha</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Text background alpha value. </p>\n<p>Default to transparent. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00159\">159</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"afd34a8de5a853e915bd101f11d44cf67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd34a8de5a853e915bd101f11d44cf67\">&#9670;&nbsp;</a></span>text_background</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> _fbg::text_background</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current text background color (based on colorkey value) </p>\n<p>Default to black. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00151\">151</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a4abb858439598b09790ec6d5d8326bb2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4abb858439598b09790ec6d5d8326bb2\">&#9670;&nbsp;</a></span>text_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct <a class=\"el\" href=\"fbgraphics_8h.html#struct__fbg__rgb\">_fbg_rgb</a> _fbg::text_color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current text color. </p>\n<p>Default to white. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00147\">147</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a06e65293cf0b48e70d76d63f5de453e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06e65293cf0b48e70d76d63f5de453e6\">&#9670;&nbsp;</a></span>text_colorkey</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">unsigned char _fbg::text_colorkey</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Current text color key. </p>\n<p>Default to black. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00155\">155</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ae3ecac18abee9dedabacaca9bb063bde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3ecac18abee9dedabacaca9bb063bde\">&#9670;&nbsp;</a></span>user_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* _fbg::user_context</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>User-defined context structure. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00219\">219</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ac66a762877982c6f381a7cfd54a8f17e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac66a762877982c6f381a7cfd54a8f17e\">&#9670;&nbsp;</a></span>user_draw</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg::user_draw) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>User-defined draw function. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00215\">215</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a3f2ad2eb06555cdbe2d18f541231cb37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f2ad2eb06555cdbe2d18f541231cb37\">&#9670;&nbsp;</a></span>user_flip</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg::user_flip) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>User-defined flip function. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00213\">213</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a88d48b502672cfb8bd2c94ea3feac8d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88d48b502672cfb8bd2c94ea3feac8d0\">&#9670;&nbsp;</a></span>user_free</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg::user_free) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>User-defined free function. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00217\">217</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a68add70dac4b055809c1bcab1e65b18d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68add70dac4b055809c1bcab1e65b18d\">&#9670;&nbsp;</a></span>user_resize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg::user_resize) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg, unsigned int <a class=\"el\" href=\"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\">new_width</a>, unsigned int <a class=\"el\" href=\"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\">new_height</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>User-defined resize function. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00211\">211</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a1d3c76643e4ee424f4d17e27991d5e2e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d3c76643e4ee424f4d17e27991d5e2e\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::width</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Display width in pixels. </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00170\">170</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a1ab3f10e8c3483d7286db9850511d46d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ab3f10e8c3483d7286db9850511d46d\">&#9670;&nbsp;</a></span>width_n_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg::width_n_height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Display lenght in pixels (width * height) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbgraphics_8h_source.html#l00174\">174</a> of file <a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li><a class=\"el\" href=\"fbgraphics_8h_source.html\">fbgraphics.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/struct__fbg.js",
    "content": "var struct__fbg =\n[\n    [ \"allow_resizing\", \"struct__fbg.html#ad7796d799a4ad67405101b8548d99ad8\", null ],\n    [ \"back_buffer\", \"struct__fbg.html#a907e7fc97965b972c17114c885e53735\", null ],\n    [ \"backend_resize\", \"struct__fbg.html#aef07a92ae059ea2a43653f4d0c5d928e\", null ],\n    [ \"bgr\", \"struct__fbg.html#a5844c5bf4789117cbc0c972ff160b338\", null ],\n    [ \"comp_offset\", \"struct__fbg.html#a7c2e64d2f40575c8a989c759c30acb0e\", null ],\n    [ \"components\", \"struct__fbg.html#a1db77a2ef506723a575644dbc1cfb747\", null ],\n    [ \"compositing\", \"struct__fbg.html#a7090d672982fe465f2186dbfea384d32\", null ],\n    [ \"current_font\", \"struct__fbg.html#a72868d703236aaabb7a5031703a6bbd8\", null ],\n    [ \"disp_buffer\", \"struct__fbg.html#aa20614c94c7235bc5bc105b6e71e1be8\", null ],\n    [ \"fill_color\", \"struct__fbg.html#ad3cac82bd9448a4020a4e08621f5269a\", null ],\n    [ \"fps\", \"struct__fbg.html#a64b16363bc48d1e19141df2e242930a9\", null ],\n    [ \"fps_char\", \"struct__fbg.html#af447e6ed58d893989c8dad075807a79b\", null ],\n    [ \"fps_start\", \"struct__fbg.html#a07d7bb827a7595c956fe22c2d65bba33\", null ],\n    [ \"fps_stop\", \"struct__fbg.html#ade17a45bbc82bef326857c2837cdf66c\", null ],\n    [ \"frame\", \"struct__fbg.html#aa3ef83f919d12e680f8c64006b441454\", null ],\n    [ \"height\", \"struct__fbg.html#a3a3bd409e71d020fa77f69a541d832f8\", null ],\n    [ \"initialize_buffers\", \"struct__fbg.html#ac9a25b7b2700bee151d8f9dc3e586487\", null ],\n    [ \"line_length\", \"struct__fbg.html#af8a1ee8d7004e6f2193f2a3ed98f8ce8\", null ],\n    [ \"new_height\", \"struct__fbg.html#a509aa5f8f0a94d8313bb4da777aa64bc\", null ],\n    [ \"new_width\", \"struct__fbg.html#a95859bd418a5cfff155cdb1421d295ef\", null ],\n    [ \"size\", \"struct__fbg.html#a84fb220d4804cba22176997898e75b73\", null ],\n    [ \"temp_buffer\", \"struct__fbg.html#a0463af9bf583afe770b822c1fbb9a24d\", null ],\n    [ \"text_alpha\", \"struct__fbg.html#a870987786121c51135f20b630d731abd\", null ],\n    [ \"text_background\", \"struct__fbg.html#afd34a8de5a853e915bd101f11d44cf67\", null ],\n    [ \"text_color\", \"struct__fbg.html#a4abb858439598b09790ec6d5d8326bb2\", null ],\n    [ \"text_colorkey\", \"struct__fbg.html#a06e65293cf0b48e70d76d63f5de453e6\", null ],\n    [ \"user_context\", \"struct__fbg.html#ae3ecac18abee9dedabacaca9bb063bde\", null ],\n    [ \"user_draw\", \"struct__fbg.html#ac66a762877982c6f381a7cfd54a8f17e\", null ],\n    [ \"user_flip\", \"struct__fbg.html#a3f2ad2eb06555cdbe2d18f541231cb37\", null ],\n    [ \"user_free\", \"struct__fbg.html#a88d48b502672cfb8bd2c94ea3feac8d0\", null ],\n    [ \"user_resize\", \"struct__fbg.html#a68add70dac4b055809c1bcab1e65b18d\", null ],\n    [ \"width\", \"struct__fbg.html#a1d3c76643e4ee424f4d17e27991d5e2e\", null ],\n    [ \"width_n_height\", \"struct__fbg.html#a1ab3f10e8c3483d7286db9850511d46d\", null ]\n];"
  },
  {
    "path": "docs/struct__fbg__dispmanx__context.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>FB Graphics: _fbg_dispmanx_context Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">FB Graphics\n   </div>\n   <div id=\"projectbrief\">FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Data Fields</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">_fbg_dispmanx_context Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>dispmanx wrapper data structure  \n <a href=\"struct__fbg__dispmanx__context.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nData Fields</h2></td></tr>\n<tr class=\"memitem:a9263fa3b9088feba4becb5488f3a27ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DISPMANX_DISPLAY_HANDLE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\">display</a></td></tr>\n<tr class=\"memdesc:a9263fa3b9088feba4becb5488f3a27ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx display  <a href=\"#a9263fa3b9088feba4becb5488f3a27ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a9263fa3b9088feba4becb5488f3a27ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e5395ea92a73ef0db5048824c7df710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DISPMANX_RESOURCE_HANDLE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\">back_resource</a></td></tr>\n<tr class=\"memdesc:a4e5395ea92a73ef0db5048824c7df710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx back resource  <a href=\"#a4e5395ea92a73ef0db5048824c7df710\">More...</a><br /></td></tr>\n<tr class=\"separator:a4e5395ea92a73ef0db5048824c7df710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfd61d15e712eb715bb99ff4c6ec1dc7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DISPMANX_RESOURCE_HANDLE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\">front_resource</a></td></tr>\n<tr class=\"memdesc:acfd61d15e712eb715bb99ff4c6ec1dc7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx front resource  <a href=\"#acfd61d15e712eb715bb99ff4c6ec1dc7\">More...</a><br /></td></tr>\n<tr class=\"separator:acfd61d15e712eb715bb99ff4c6ec1dc7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab18b7173ed0ff6e670068041cf0779e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DISPMANX_ELEMENT_HANDLE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\">elem</a></td></tr>\n<tr class=\"memdesc:ab18b7173ed0ff6e670068041cf0779e9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx elem  <a href=\"#ab18b7173ed0ff6e670068041cf0779e9\">More...</a><br /></td></tr>\n<tr class=\"separator:ab18b7173ed0ff6e670068041cf0779e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88cb809e4e2653c6925824ebd5a66149\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">VC_IMAGE_TYPE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\">resource_type</a></td></tr>\n<tr class=\"memdesc:a88cb809e4e2653c6925824ebd5a66149\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx image type (RGB888)  <a href=\"#a88cb809e4e2653c6925824ebd5a66149\">More...</a><br /></td></tr>\n<tr class=\"separator:a88cb809e4e2653c6925824ebd5a66149\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a583202df9f959780bc21e9e5ce824f34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DISPMANX_UPDATE_HANDLE_T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\">update</a></td></tr>\n<tr class=\"memdesc:a583202df9f959780bc21e9e5ce824f34\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx update  <a href=\"#a583202df9f959780bc21e9e5ce824f34\">More...</a><br /></td></tr>\n<tr class=\"separator:a583202df9f959780bc21e9e5ce824f34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef1016d77620bbfd67bf090fd2f08e19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">VC_RECT_T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\">src_rect</a></td></tr>\n<tr class=\"memdesc:aef1016d77620bbfd67bf090fd2f08e19\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx src rect  <a href=\"#aef1016d77620bbfd67bf090fd2f08e19\">More...</a><br /></td></tr>\n<tr class=\"separator:aef1016d77620bbfd67bf090fd2f08e19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1857220a611fd3e288cd76c6b8a5985\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">VC_RECT_T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\">dst_rect</a></td></tr>\n<tr class=\"memdesc:ae1857220a611fd3e288cd76c6b8a5985\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dispmanx src rect  <a href=\"#ae1857220a611fd3e288cd76c6b8a5985\">More...</a><br /></td></tr>\n<tr class=\"separator:ae1857220a611fd3e288cd76c6b8a5985\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39f7c0bacaedd656908c5e2378610477\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\">opt_flip</a> )(struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td></tr>\n<tr class=\"memdesc:a39f7c0bacaedd656908c5e2378610477\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">optional flip content (will be executed between dispmanx start / sync)  <a href=\"#a39f7c0bacaedd656908c5e2378610477\">More...</a><br /></td></tr>\n<tr class=\"separator:a39f7c0bacaedd656908c5e2378610477\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7847ad38fd083df3b2a513a43f7d82b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\">pitch</a></td></tr>\n<tr class=\"memdesc:a7847ad38fd083df3b2a513a43f7d82b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">fbg-&gt;width * 3  <a href=\"#a7847ad38fd083df3b2a513a43f7d82b2\">More...</a><br /></td></tr>\n<tr class=\"separator:a7847ad38fd083df3b2a513a43f7d82b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>dispmanx wrapper data structure </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00052\">52</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n</div><h2 class=\"groupheader\">Field Documentation</h2>\n<a id=\"a4e5395ea92a73ef0db5048824c7df710\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e5395ea92a73ef0db5048824c7df710\">&#9670;&nbsp;</a></span>back_resource</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DISPMANX_RESOURCE_HANDLE_T _fbg_dispmanx_context::back_resource</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx back resource </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00064\">64</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a9263fa3b9088feba4becb5488f3a27ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9263fa3b9088feba4becb5488f3a27ee\">&#9670;&nbsp;</a></span>display</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DISPMANX_DISPLAY_HANDLE_T _fbg_dispmanx_context::display</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx display </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00062\">62</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ae1857220a611fd3e288cd76c6b8a5985\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1857220a611fd3e288cd76c6b8a5985\">&#9670;&nbsp;</a></span>dst_rect</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">VC_RECT_T* _fbg_dispmanx_context::dst_rect</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx src rect </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00076\">76</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"ab18b7173ed0ff6e670068041cf0779e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab18b7173ed0ff6e670068041cf0779e9\">&#9670;&nbsp;</a></span>elem</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DISPMANX_ELEMENT_HANDLE_T _fbg_dispmanx_context::elem</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx elem </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00068\">68</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"acfd61d15e712eb715bb99ff4c6ec1dc7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfd61d15e712eb715bb99ff4c6ec1dc7\">&#9670;&nbsp;</a></span>front_resource</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DISPMANX_RESOURCE_HANDLE_T _fbg_dispmanx_context::front_resource</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx front resource </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00066\">66</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a39f7c0bacaedd656908c5e2378610477\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39f7c0bacaedd656908c5e2378610477\">&#9670;&nbsp;</a></span>opt_flip</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* _fbg_dispmanx_context::opt_flip) (struct <a class=\"el\" href=\"struct__fbg.html\">_fbg</a> *fbg)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>optional flip content (will be executed between dispmanx start / sync) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00079\">79</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a7847ad38fd083df3b2a513a43f7d82b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7847ad38fd083df3b2a513a43f7d82b2\">&#9670;&nbsp;</a></span>pitch</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _fbg_dispmanx_context::pitch</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>fbg-&gt;width * 3 </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00082\">82</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a88cb809e4e2653c6925824ebd5a66149\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88cb809e4e2653c6925824ebd5a66149\">&#9670;&nbsp;</a></span>resource_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">VC_IMAGE_TYPE_T _fbg_dispmanx_context::resource_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx image type (RGB888) </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00070\">70</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"aef1016d77620bbfd67bf090fd2f08e19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef1016d77620bbfd67bf090fd2f08e19\">&#9670;&nbsp;</a></span>src_rect</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">VC_RECT_T* _fbg_dispmanx_context::src_rect</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx src rect </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00074\">74</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<a id=\"a583202df9f959780bc21e9e5ce824f34\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a583202df9f959780bc21e9e5ce824f34\">&#9670;&nbsp;</a></span>update</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DISPMANX_UPDATE_HANDLE_T _fbg_dispmanx_context::update</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>dispmanx update </p>\n\n<p class=\"definition\">Definition at line <a class=\"el\" href=\"fbg__dispmanx_8h_source.html#l00072\">72</a> of file <a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li><a class=\"el\" href=\"fbg__dispmanx_8h_source.html\">fbg_dispmanx.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated on Thu Mar 25 2021 19:10:56 for FB Graphics by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/struct__fbg__dispmanx__context.js",
    "content": "var struct__fbg__dispmanx__context =\n[\n    [ \"back_resource\", \"struct__fbg__dispmanx__context.html#a4e5395ea92a73ef0db5048824c7df710\", null ],\n    [ \"display\", \"struct__fbg__dispmanx__context.html#a9263fa3b9088feba4becb5488f3a27ee\", null ],\n    [ \"dst_rect\", \"struct__fbg__dispmanx__context.html#ae1857220a611fd3e288cd76c6b8a5985\", null ],\n    [ \"elem\", \"struct__fbg__dispmanx__context.html#ab18b7173ed0ff6e670068041cf0779e9\", null ],\n    [ \"front_resource\", \"struct__fbg__dispmanx__context.html#acfd61d15e712eb715bb99ff4c6ec1dc7\", null ],\n    [ \"opt_flip\", \"struct__fbg__dispmanx__context.html#a39f7c0bacaedd656908c5e2378610477\", null ],\n    [ \"pitch\", \"struct__fbg__dispmanx__context.html#a7847ad38fd083df3b2a513a43f7d82b2\", null ],\n    [ \"resource_type\", \"struct__fbg__dispmanx__context.html#a88cb809e4e2653c6925824ebd5a66149\", null ],\n    [ \"src_rect\", \"struct__fbg__dispmanx__context.html#aef1016d77620bbfd67bf090fd2f08e19\", null ],\n    [ \"update\", \"struct__fbg__dispmanx__context.html#a583202df9f959780bc21e9e5ce824f34\", null ]\n];"
  },
  {
    "path": "docs/tabs.css",
    "content": ".sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:\"\\00a0\";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url(\"tab_b.png\")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:\"Lucida Grande\",\"Geneva\",\"Helvetica\",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url(\"tab_b.png\");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url(\"tab_s.png\");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url(\"tab_b.png\")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}\n"
  },
  {
    "path": "documentation/Doxyfile",
    "content": "# Doxyfile 1.8.15\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the configuration\n# file that follow. The default is UTF-8 which is also the encoding used for all\n# text before the first occurrence of this tag. Doxygen uses libiconv (or the\n# iconv built into libc) for the transcoding. See\n# https://www.gnu.org/software/libiconv/ for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"FB Graphics\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          = \"FBGraphics (FBG) : Simple C 16, 24, 32 bpp generic graphics library with parallelism support and custom backend.\"\n\n# With the PROJECT_LOGO tag one can specify a logo or an icon that is included\n# in the documentation. The maximum height of the logo should not exceed 55\n# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy\n# the logo to the output directory.\n\nPROJECT_LOGO           = \n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       =\n\n# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = NO\n\n# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII\n# characters to appear in the names of generated files. If set to NO, non-ASCII\n# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode\n# U+3044.\n# The default value is: NO.\n\nALLOW_UNICODE_NAMES    = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all generated output in the proper direction.\n# Possible values are: None, LTR, RTL and Context.\n# The default value is: None.\n\nOUTPUT_TEXT_DIRECTION  = None\n\n# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       = \"The $name class\" \\\n                         \"The $name widget\" \\\n                         \"The $name file\" \\\n                         is \\\n                         provides \\\n                         specifies \\\n                         contains \\\n                         represents \\\n                         a \\\n                         an \\\n                         the\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = YES\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = NO\n\n# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = NO\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = NO\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = NO\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new\n# page for each member. If set to NO, the documentation of a member will be part\n# of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines (in the resulting output). You can put ^^ in the value part of an\n# alias to insert a newline as if a physical newline was in the original file.\n\nALIASES                =\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = YES\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:\n# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:\n# Fortran. In the later case the parser tries to guess whether the code is fixed\n# or free formatted code, this is the default for Fortran type files), VHDL. For\n# instance to make doxygen treat .inc files as Fortran files (default is PHP),\n# and .f files as C (default is Fortran), use: inc=Fortran f=C.\n#\n# Note: For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See http://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up\n# to that level are automatically included in the table of contents, even if\n# they do not have an id attribute.\n# Note: This feature currently applies only to Markdown headings.\n# Minimum value: 0, maximum value: 99, default value: 0.\n# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.\n\nTOC_INCLUDE_HEADINGS   = 0\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by putting a % sign in front of the word or\n# globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = NO\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# If one adds a struct or class to a group and this option is enabled, then also\n# any nested class or struct is added to the same group. By default this option\n# is disabled and one has to add nested compounds explicitly via \\ingroup.\n# The default value is: NO.\n\nGROUP_NESTED_COMPOUNDS = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = YES\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = YES\n\n# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = NO\n\n# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = NO\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO,\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. If set to YES, local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO, only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO, these classes will be included in the various overviews. This option\n# has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO, these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO, these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES, upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# and Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = YES\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES, the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = NO\n\n# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will\n# append additional text to a page's title, such as Class Reference. If set to\n# YES the compound reference will be hidden.\n# The default value is: NO.\n\nHIDE_COMPOUND_REFERENCE= NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = YES\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = NO\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = NO\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = NO\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo\n# list. This list is created by putting \\todo commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test\n# list. This list is created by putting \\test commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES, the\n# list will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = YES\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = YES\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = YES\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. See also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = NO\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO, doxygen will only warn about wrong or incomplete\n# parameter documentation, but not about the absence of documentation.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when\n# a warning is encountered.\n# The default value is: NO.\n\nWARN_AS_ERROR          = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  = ../src/fbgraphics.h ../custom_backend/glfw/fbg_glfw.h ../custom_backend/dispmanx/fbg_dispmanx.h ../custom_backend/opengl_es2/fbg_opengl_es2.h ../custom_backend/fbdev/fbg_fbdev.h ../custom_backend/gba/fbg_gba.h ../README.md\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: https://www.gnu.org/software/libiconv/) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# read by doxygen.\n#\n# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,\n# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,\n# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,\n# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,\n# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.\n\nFILE_PATTERNS          = *.c \\\n                         *.cc \\\n                         *.cxx \\\n                         *.cpp \\\n                         *.c++ \\\n                         *.java \\\n                         *.ii \\\n                         *.ixx \\\n                         *.ipp \\\n                         *.i++ \\\n                         *.inl \\\n                         *.idl \\\n                         *.ddl \\\n                         *.odl \\\n                         *.h \\\n                         *.hh \\\n                         *.hxx \\\n                         *.hpp \\\n                         *.h++ \\\n                         *.cs \\\n                         *.d \\\n                         *.php \\\n                         *.php4 \\\n                         *.php5 \\\n                         *.phtml \\\n                         *.inc \\\n                         *.m \\\n                         *.markdown \\\n                         *.md \\\n                         *.mm \\\n                         *.dox \\\n                         *.py \\\n                         *.pyw \\\n                         *.f90 \\\n                         *.f95 \\\n                         *.f03 \\\n                         *.f08 \\\n                         *.f \\\n                         *.for \\\n                         *.tcl \\\n                         *.vhd \\\n                         *.vhdl \\\n                         *.ucf \\\n                         *.qsf\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = NO\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                =\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = NO\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       =\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        =\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           =\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       = *\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = NO\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE = ../README.md\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = YES\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = YES\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# entity all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see https://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = ../docs\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# cascading style sheets that are included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefore more robust against future updates.\n# Doxygen will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list). For an example see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  =\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the style sheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# https://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to YES can help to show when doxygen was last run and thus if the\n# documentation is up to date.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = YES\n\n# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML\n# documentation will contain a main index with vertical navigation menus that\n# are dynamically created via Javascript. If disabled, the navigation index will\n# consists of multiple levels of tabs that are statically embedded in every HTML\n# page. Disable this option to support browsers that do not have Javascript,\n# like the Qt help browser.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_MENUS     = NO\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: https://developer.apple.com/tools/xcode/), introduced with\n# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html\n# for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler (hhc.exe). If non-empty,\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated\n# (YES) or that it should be included in the master .chm file (NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated\n# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it\n# enables the Previous and Next buttons.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = YES\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = NO\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 4\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANSPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# https://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from https://www.mathjax.org before deployment.\n# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavors of web server based searching depending on the EXTERNAL_SEARCH\n# setting. When disabled, doxygen will generate a PHP script for searching and\n# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing\n# and searching needs to be provided by external tools. See the section\n# \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = YES\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when not enabling USE_PDFLATEX the default is latex when enabling\n# USE_PDFLATEX the default is pdflatex and when in the later case latex is\n# chosen this is overwritten by pdflatex. For specific output languages the\n# default can have been set differently, this depends on the implementation of\n# the output language.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         =\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. The package can be specified just\n# by its name or with the correct syntax as to be used with the LaTeX\n# \\usepackage command. To get the times font for instance you can specify :\n# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}\n# To use the option intlimits with the amsmath package you can specify:\n# EXTRA_PACKAGES=[intlimits]{amsmath}\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber,\n# $projectbrief, $projectlogo. Doxygen will replace $title with the empty\n# string, for the replacement values of the other commands the user is referred\n# to HTML_HEADER.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer. See\n# LATEX_HEADER for more information on how to generate a default footer and what\n# special commands can be used inside the footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# LaTeX style sheets that are included after the standard style sheets created\n# by doxygen. Using this option one can overrule certain style aspects. Doxygen\n# will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_STYLESHEET =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES, to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# https://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_TIMESTAMP        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's\n# configuration file, i.e. a series of assignments. You only have to provide\n# replacements, missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's configuration file. A template extensions file can be\n# generated using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code\n# with syntax highlighting in the RTF output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_SOURCE_CODE        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# The MAN_SUBDIR tag determines the name of the directory created within\n# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by\n# MAN_EXTENSION with the initial . removed.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_SUBDIR             =\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the\n# program listings (including syntax highlighting and cross-referencing\n# information) to the DOCBOOK output. Note that enabling this will significantly\n# increase the size of the DOCBOOK output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_PROGRAMLISTING = NO\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an\n# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures\n# the structure of the code including all documentation. Note that this feature\n# is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO, the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names\n# in the source code. If set to NO, only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = NO\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = NO\n\n# If the SEARCH_INCLUDES tag is set to YES, the include files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             =\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all references to function-like macros that are alone on a line, have\n# an all uppercase name, and do not end with a semicolon. Such function macros\n# are typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have a unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES, all external class will be listed in\n# the class index. If set to NO, only the inherited external classes will be\n# listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed\n# in the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n# The PERL_PATH should be the absolute path and name of the perl script\n# interpreter (i.e. the result of 'which perl').\n# The default file (with absolute path) is: /usr/bin/perl.\n\nPERL_PATH              = /usr/bin/perl\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can define message sequence charts within doxygen comments using the \\msc\n# command. Doxygen will then run the mscgen tool (see:\n# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the\n# documentation. The MSCGEN_PATH tag allows you to specify the directory where\n# the mscgen tool resides. If left empty the tool is assumed to be found in the\n# default search path.\n\nMSCGEN_PATH            =\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: NO.\n\nHAVE_DOT               = NO\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font in the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command. Disabling a call graph can be\n# accomplished by means of the command \\hidecallgraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command. Disabling a caller graph can be\n# accomplished by means of the command \\hidecallergraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot. For an explanation of the image formats see the section\n# output formats in the documentation of the dot tool (Graphviz (see:\n# http://www.graphviz.org/)).\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,\n# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and\n# png:gdiplus:gdiplus.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the\n# path where java can find the plantuml.jar file. If left blank, it is assumed\n# PlantUML is not used or called during a preprocessing step. Doxygen will\n# generate a warning when it encounters a \\startuml command in this case and\n# will not generate output for the diagram.\n\nPLANTUML_JAR_PATH      =\n\n# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a\n# configuration file for plantuml.\n\nPLANTUML_CFG_FILE      =\n\n# When using plantuml, the specified paths are searched for files specified by\n# the !include statement in a plantuml block.\n\nPLANTUML_INCLUDE_PATH  =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = NO\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "documentation/html/doxygen.css",
    "content": "/* The standard CSS for doxygen 1.8.13 */\n\nbody, table, div, p, dl {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\np.reference, p.definition {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\n/* @group Heading Levels */\n\nh1.groupheader {\n\tfont-size: 150%;\n}\n\n.title {\n\tfont: 400 14px/28px Roboto,sans-serif;\n\tfont-size: 150%;\n\tfont-weight: bold;\n\tmargin: 10px 2px;\n}\n\nh2.groupheader {\n\tborder-bottom: 1px solid #879ECB;\n\tcolor: #354C7B;\n\tfont-size: 150%;\n\tfont-weight: normal;\n\tmargin-top: 1.75em;\n\tpadding-top: 8px;\n\tpadding-bottom: 4px;\n\twidth: 100%;\n}\n\nh3.groupheader {\n\tfont-size: 100%;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\t-webkit-transition: text-shadow 0.5s linear;\n\t-moz-transition: text-shadow 0.5s linear;\n\t-ms-transition: text-shadow 0.5s linear;\n\t-o-transition: text-shadow 0.5s linear;\n\ttransition: text-shadow 0.5s linear;\n\tmargin-right: 15px;\n}\n\nh1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n\ttext-shadow: 0 0 15px cyan;\n}\n\ndt {\n\tfont-weight: bold;\n}\n\ndiv.multicol {\n\t-moz-column-gap: 1em;\n\t-webkit-column-gap: 1em;\n\t-moz-column-count: 3;\n\t-webkit-column-count: 3;\n}\n\np.startli, p.startdd {\n\tmargin-top: 2px;\n}\n\np.starttd {\n\tmargin-top: 0px;\n}\n\np.endli {\n\tmargin-bottom: 0px;\n}\n\np.enddd {\n\tmargin-bottom: 4px;\n}\n\np.endtd {\n\tmargin-bottom: 2px;\n}\n\n/* @end */\n\ncaption {\n\tfont-weight: bold;\n}\n\nspan.legend {\n        font-size: 70%;\n        text-align: center;\n}\n\nh3.version {\n        font-size: 90%;\n        text-align: center;\n}\n\ndiv.qindex, div.navtab{\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n}\n\ndiv.qindex, div.navpath {\n\twidth: 100%;\n\tline-height: 140%;\n}\n\ndiv.navtab {\n\tmargin-right: 15px;\n}\n\n/* @group Link Styling */\n\na {\n\tcolor: #3D578C;\n\tfont-weight: normal;\n\ttext-decoration: none;\n}\n\n.contents a:visited {\n\tcolor: #4665A2;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\na.qindex {\n\tfont-weight: bold;\n}\n\na.qindexHL {\n\tfont-weight: bold;\n\tbackground-color: #9CAFD4;\n\tcolor: #ffffff;\n\tborder: 1px double #869DCA;\n}\n\n.contents a.qindexHL:visited {\n        color: #ffffff;\n}\n\na.el {\n\tfont-weight: bold;\n}\n\na.elRef {\n}\n\na.code, a.code:visited, a.line, a.line:visited {\n\tcolor: #4665A2; \n}\n\na.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {\n\tcolor: #4665A2; \n}\n\n/* @end */\n\ndl.el {\n\tmargin-left: -1cm;\n}\n\npre.fragment {\n        border: 1px solid #C4CFE5;\n        background-color: #FBFCFD;\n        padding: 4px 6px;\n        margin: 4px 8px 4px 2px;\n        overflow: auto;\n        word-wrap: break-word;\n        font-size:  9pt;\n        line-height: 125%;\n        font-family: monospace, fixed;\n        font-size: 105%;\n}\n\ndiv.fragment {\n        padding: 0px;\n        margin: 4px 8px 4px 2px;\n\tbackground-color: #FBFCFD;\n\tborder: 1px solid #C4CFE5;\n}\n\ndiv.line {\n\tfont-family: monospace, fixed;\n        font-size: 13px;\n\tmin-height: 13px;\n\tline-height: 1.0;\n\ttext-wrap: unrestricted;\n\twhite-space: -moz-pre-wrap; /* Moz */\n\twhite-space: -pre-wrap;     /* Opera 4-6 */\n\twhite-space: -o-pre-wrap;   /* Opera 7 */\n\twhite-space: pre-wrap;      /* CSS3  */\n\tword-wrap: break-word;      /* IE 5.5+ */\n\ttext-indent: -53px;\n\tpadding-left: 53px;\n\tpadding-bottom: 0px;\n\tmargin: 0px;\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\ndiv.line:after {\n    content:\"\\000A\";\n    white-space: pre;\n}\n\ndiv.line.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 10px cyan;\n}\n\n\nspan.lineno {\n\tpadding-right: 4px;\n\ttext-align: right;\n\tborder-right: 2px solid #0F0;\n\tbackground-color: #E8E8E8;\n        white-space: pre;\n}\nspan.lineno a {\n\tbackground-color: #D8D8D8;\n}\n\nspan.lineno a:hover {\n\tbackground-color: #C8C8C8;\n}\n\n.lineno {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\ndiv.ah, span.ah {\n\tbackground-color: black;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\tpadding: 0.2em;\n\tborder: solid thin #333;\n\tborder-radius: 0.5em;\n\t-webkit-border-radius: .5em;\n\t-moz-border-radius: .5em;\n\tbox-shadow: 2px 2px 3px #999;\n\t-webkit-box-shadow: 2px 2px 3px #999;\n\t-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n\tbackground-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n\tbackground-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);\n}\n\ndiv.classindex ul {\n        list-style: none;\n        padding-left: 0;\n}\n\ndiv.classindex span.ai {\n        display: inline-block;\n}\n\ndiv.groupHeader {\n\tmargin-left: 16px;\n\tmargin-top: 12px;\n\tfont-weight: bold;\n}\n\ndiv.groupText {\n\tmargin-left: 16px;\n\tfont-style: italic;\n}\n\nbody {\n\tbackground-color: white;\n\tcolor: black;\n        margin: 0;\n}\n\ndiv.contents {\n\tmargin-top: 10px;\n\tmargin-left: 12px;\n\tmargin-right: 8px;\n}\n\ntd.indexkey {\n\tbackground-color: #EBEFF6;\n\tfont-weight: bold;\n\tborder: 1px solid #C4CFE5;\n\tmargin: 2px 0px 2px 0;\n\tpadding: 2px 10px;\n        white-space: nowrap;\n        vertical-align: top;\n}\n\ntd.indexvalue {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #C4CFE5;\n\tpadding: 2px 10px;\n\tmargin: 2px 0px;\n}\n\ntr.memlist {\n\tbackground-color: #EEF1F7;\n}\n\np.formulaDsp {\n\ttext-align: center;\n}\n\nimg.formulaDsp {\n\t\n}\n\nimg.formulaInl {\n\tvertical-align: middle;\n}\n\ndiv.center {\n\ttext-align: center;\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding: 0px;\n}\n\ndiv.center img {\n\tborder: 0px;\n}\n\naddress.footer {\n\ttext-align: right;\n\tpadding-right: 12px;\n}\n\nimg.footer {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n\n/* @group Code Colorization */\n\nspan.keyword {\n\tcolor: #008000\n}\n\nspan.keywordtype {\n\tcolor: #604020\n}\n\nspan.keywordflow {\n\tcolor: #e08000\n}\n\nspan.comment {\n\tcolor: #800000\n}\n\nspan.preprocessor {\n\tcolor: #806020\n}\n\nspan.stringliteral {\n\tcolor: #002080\n}\n\nspan.charliteral {\n\tcolor: #008080\n}\n\nspan.vhdldigit { \n\tcolor: #ff00ff \n}\n\nspan.vhdlchar { \n\tcolor: #000000 \n}\n\nspan.vhdlkeyword { \n\tcolor: #700070 \n}\n\nspan.vhdllogic { \n\tcolor: #ff0000 \n}\n\nblockquote {\n        background-color: #F7F8FB;\n        border-left: 2px solid #9CAFD4;\n        margin: 0 24px 0 4px;\n        padding: 0 12px 0 16px;\n}\n\n/* @end */\n\n/*\n.search {\n\tcolor: #003399;\n\tfont-weight: bold;\n}\n\nform.search {\n\tmargin-bottom: 0px;\n\tmargin-top: 0px;\n}\n\ninput.search {\n\tfont-size: 75%;\n\tcolor: #000080;\n\tfont-weight: normal;\n\tbackground-color: #e8eef2;\n}\n*/\n\ntd.tiny {\n\tfont-size: 75%;\n}\n\n.dirtab {\n\tpadding: 4px;\n\tborder-collapse: collapse;\n\tborder: 1px solid #A3B4D7;\n}\n\nth.dirtab {\n\tbackground: #EBEFF6;\n\tfont-weight: bold;\n}\n\nhr {\n\theight: 0px;\n\tborder: none;\n\tborder-top: 1px solid #4A6AAA;\n}\n\nhr.footer {\n\theight: 1px;\n}\n\n/* @group Member Descriptions */\n\ntable.memberdecls {\n\tborder-spacing: 0px;\n\tpadding: 0px;\n}\n\n.memberdecls td, .fieldtable tr {\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\n.memberdecls td.glow, .fieldtable tr.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 15px cyan;\n}\n\n.mdescLeft, .mdescRight,\n.memItemLeft, .memItemRight,\n.memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n\tbackground-color: #F9FAFC;\n\tborder: none;\n\tmargin: 4px;\n\tpadding: 1px 0 0 8px;\n}\n\n.mdescLeft, .mdescRight {\n\tpadding: 0px 8px 4px 8px;\n\tcolor: #555;\n}\n\n.memSeparator {\n        border-bottom: 1px solid #DEE4F0;\n        line-height: 1px;\n        margin: 0px;\n        padding: 0px;\n}\n\n.memItemLeft, .memTemplItemLeft {\n        white-space: nowrap;\n}\n\n.memItemRight {\n\twidth: 100%;\n}\n\n.memTemplParams {\n\tcolor: #4665A2;\n        white-space: nowrap;\n\tfont-size: 80%;\n}\n\n/* @end */\n\n/* @group Member Details */\n\n/* Styles for detailed member documentation */\n\n.memtitle {\n\tpadding: 8px;\n\tborder-top: 1px solid #A8B8D9;\n\tborder-left: 1px solid #A8B8D9;\n\tborder-right: 1px solid #A8B8D9;\n\tborder-top-right-radius: 4px;\n\tborder-top-left-radius: 4px;\n\tmargin-bottom: -1px;\n\tbackground-image: url('nav_f.png');\n\tbackground-repeat: repeat-x;\n\tbackground-color: #E2E8F2;\n\tline-height: 1.25;\n\tfont-weight: 300;\n\tfloat:left;\n}\n\n.permalink\n{\n        font-size: 65%;\n        display: inline-block;\n        vertical-align: middle;\n}\n\n.memtemplate {\n\tfont-size: 80%;\n\tcolor: #4665A2;\n\tfont-weight: normal;\n\tmargin-left: 9px;\n}\n\n.memnav {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n\tmargin: 2px;\n\tmargin-right: 15px;\n\tpadding: 2px;\n}\n\n.mempage {\n\twidth: 100%;\n}\n\n.memitem {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tmargin-right: 5px;\n        -webkit-transition: box-shadow 0.5s linear;\n        -moz-transition: box-shadow 0.5s linear;\n        -ms-transition: box-shadow 0.5s linear;\n        -o-transition: box-shadow 0.5s linear;\n        transition: box-shadow 0.5s linear;\n        display: table !important;\n        width: 100%;\n}\n\n.memitem.glow {\n         box-shadow: 0 0 15px cyan;\n}\n\n.memname {\n        font-weight: 400;\n        margin-left: 6px;\n}\n\n.memname td {\n\tvertical-align: bottom;\n}\n\n.memproto, dl.reflist dt {\n        border-top: 1px solid #A8B8D9;\n        border-left: 1px solid #A8B8D9;\n        border-right: 1px solid #A8B8D9;\n        padding: 6px 0px 6px 0px;\n        color: #253555;\n        font-weight: bold;\n        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n        background-color: #DFE5F1;\n        /* opera specific markup */\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        border-top-right-radius: 4px;\n        /* firefox specific markup */\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        -moz-border-radius-topright: 4px;\n        /* webkit specific markup */\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        -webkit-border-top-right-radius: 4px;\n\n}\n\n.overload {\n        font-family: \"courier new\",courier,monospace;\n\tfont-size: 65%;\n}\n\n.memdoc, dl.reflist dd {\n        border-bottom: 1px solid #A8B8D9;      \n        border-left: 1px solid #A8B8D9;      \n        border-right: 1px solid #A8B8D9; \n        padding: 6px 10px 2px 10px;\n        background-color: #FBFCFD;\n        border-top-width: 0;\n        background-image:url('nav_g.png');\n        background-repeat:repeat-x;\n        background-color: #FFFFFF;\n        /* opera specific markup */\n        border-bottom-left-radius: 4px;\n        border-bottom-right-radius: 4px;\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        /* firefox specific markup */\n        -moz-border-radius-bottomleft: 4px;\n        -moz-border-radius-bottomright: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        /* webkit specific markup */\n        -webkit-border-bottom-left-radius: 4px;\n        -webkit-border-bottom-right-radius: 4px;\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\ndl.reflist dt {\n        padding: 5px;\n}\n\ndl.reflist dd {\n        margin: 0px 0px 10px 0px;\n        padding: 5px;\n}\n\n.paramkey {\n\ttext-align: right;\n}\n\n.paramtype {\n\twhite-space: nowrap;\n}\n\n.paramname {\n\tcolor: #602020;\n\twhite-space: nowrap;\n}\n.paramname em {\n\tfont-style: normal;\n}\n.paramname code {\n        line-height: 14px;\n}\n\n.params, .retval, .exception, .tparams {\n        margin-left: 0px;\n        padding-left: 0px;\n}       \n\n.params .paramname, .retval .paramname {\n        font-weight: bold;\n        vertical-align: top;\n}\n        \n.params .paramtype {\n        font-style: italic;\n        vertical-align: top;\n}       \n        \n.params .paramdir {\n        font-family: \"courier new\",courier,monospace;\n        vertical-align: top;\n}\n\ntable.mlabels {\n\tborder-spacing: 0px;\n}\n\ntd.mlabels-left {\n\twidth: 100%;\n\tpadding: 0px;\n}\n\ntd.mlabels-right {\n\tvertical-align: bottom;\n\tpadding: 0px;\n\twhite-space: nowrap;\n}\n\nspan.mlabels {\n        margin-left: 8px;\n}\n\nspan.mlabel {\n        background-color: #728DC1;\n        border-top:1px solid #5373B4;\n        border-left:1px solid #5373B4;\n        border-right:1px solid #C4CFE5;\n        border-bottom:1px solid #C4CFE5;\n\ttext-shadow: none;\n\tcolor: white;\n\tmargin-right: 4px;\n\tpadding: 2px 3px;\n\tborder-radius: 3px;\n\tfont-size: 7pt;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n}\n\n\n\n/* @end */\n\n/* these are for tree view inside a (index) page */\n\ndiv.directory {\n        margin: 10px 0px;\n        border-top: 1px solid #9CAFD4;\n        border-bottom: 1px solid #9CAFD4;\n        width: 100%;\n}\n\n.directory table {\n        border-collapse:collapse;\n}\n\n.directory td {\n        margin: 0px;\n        padding: 0px;\n\tvertical-align: top;\n}\n\n.directory td.entry {\n        white-space: nowrap;\n        padding-right: 6px;\n\tpadding-top: 3px;\n}\n\n.directory td.entry a {\n        outline:none;\n}\n\n.directory td.entry a img {\n        border: none;\n}\n\n.directory td.desc {\n        width: 100%;\n        padding-left: 6px;\n\tpadding-right: 6px;\n\tpadding-top: 3px;\n\tborder-left: 1px solid rgba(0,0,0,0.05);\n}\n\n.directory tr.even {\n\tpadding-left: 6px;\n\tbackground-color: #F7F8FB;\n}\n\n.directory img {\n\tvertical-align: -30%;\n}\n\n.directory .levels {\n        white-space: nowrap;\n        width: 100%;\n        text-align: right;\n        font-size: 9pt;\n}\n\n.directory .levels span {\n        cursor: pointer;\n        padding-left: 2px;\n        padding-right: 2px;\n\tcolor: #3D578C;\n}\n\n.arrow {\n    color: #9CAFD4;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    cursor: pointer;\n    font-size: 80%;\n    display: inline-block;\n    width: 16px;\n    height: 22px;\n}\n\n.icon {\n    font-family: Arial, Helvetica;\n    font-weight: bold;\n    font-size: 12px;\n    height: 14px;\n    width: 16px;\n    display: inline-block;\n    background-color: #728DC1;\n    color: white;\n    text-align: center;\n    border-radius: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\n.icona {\n    width: 24px;\n    height: 22px;\n    display: inline-block;\n}\n\n.iconfopen {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderopen.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.iconfclosed {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderclosed.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.icondoc {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('doc.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\ntable.directory {\n    font: 400 14px Roboto,sans-serif;\n}\n\n/* @end */\n\ndiv.dynheader {\n        margin-top: 8px;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\naddress {\n\tfont-style: normal;\n\tcolor: #2A3D61;\n}\n\ntable.doxtable caption {\n\tcaption-side: top;\n}\n\ntable.doxtable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.doxtable td, table.doxtable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.doxtable th {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\ntable.fieldtable {\n        /*width: 100%;*/\n        margin-bottom: 10px;\n        border: 1px solid #A8B8D9;\n        border-spacing: 0px;\n        -moz-border-radius: 4px;\n        -webkit-border-radius: 4px;\n        border-radius: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n}\n\n.fieldtable td, .fieldtable th {\n        padding: 3px 7px 2px;\n}\n\n.fieldtable td.fieldtype, .fieldtable td.fieldname {\n        white-space: nowrap;\n        border-right: 1px solid #A8B8D9;\n        border-bottom: 1px solid #A8B8D9;\n        vertical-align: top;\n}\n\n.fieldtable td.fieldname {\n        padding-top: 3px;\n}\n\n.fieldtable td.fielddoc {\n        border-bottom: 1px solid #A8B8D9;\n        /*width: 100%;*/\n}\n\n.fieldtable td.fielddoc p:first-child {\n        margin-top: 0px;\n}       \n        \n.fieldtable td.fielddoc p:last-child {\n        margin-bottom: 2px;\n}\n\n.fieldtable tr:last-child td {\n        border-bottom: none;\n}\n\n.fieldtable th {\n        background-image:url('nav_f.png');\n        background-repeat:repeat-x;\n        background-color: #E2E8F2;\n        font-size: 90%;\n        color: #253555;\n        padding-bottom: 4px;\n        padding-top: 5px;\n        text-align:left;\n        font-weight: 400;\n        -moz-border-radius-topleft: 4px;\n        -moz-border-radius-topright: 4px;\n        -webkit-border-top-left-radius: 4px;\n        -webkit-border-top-right-radius: 4px;\n        border-top-left-radius: 4px;\n        border-top-right-radius: 4px;\n        border-bottom: 1px solid #A8B8D9;\n}\n\n\n.tabsearch {\n\ttop: 0px;\n\tleft: 10px;\n\theight: 36px;\n\tbackground-image: url('tab_b.png');\n\tz-index: 101;\n\toverflow: hidden;\n\tfont-size: 13px;\n}\n\n.navpath ul\n{\n\tfont-size: 11px;\n\tbackground-image:url('tab_b.png');\n\tbackground-repeat:repeat-x;\n\tbackground-position: 0 -5px;\n\theight:30px;\n\tline-height:30px;\n\tcolor:#8AA0CC;\n\tborder:solid 1px #C2CDE4;\n\toverflow:hidden;\n\tmargin:0px;\n\tpadding:0px;\n}\n\n.navpath li\n{\n\tlist-style-type:none;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:15px;\n\tbackground-image:url('bc_s.png');\n\tbackground-repeat:no-repeat;\n\tbackground-position:right;\n\tcolor:#364D7C;\n}\n\n.navpath li.navelem a\n{\n\theight:32px;\n\tdisplay:block;\n\ttext-decoration: none;\n\toutline: none;\n\tcolor: #283A5D;\n\tfont-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n\ttext-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n\ttext-decoration: none;        \n}\n\n.navpath li.navelem a:hover\n{\n\tcolor:#6884BD;\n}\n\n.navpath li.footer\n{\n        list-style-type:none;\n        float:right;\n        padding-left:10px;\n        padding-right:15px;\n        background-image:none;\n        background-repeat:no-repeat;\n        background-position:right;\n        color:#364D7C;\n        font-size: 8pt;\n}\n\n\ndiv.summary\n{\n\tfloat: right;\n\tfont-size: 8pt;\n\tpadding-right: 5px;\n\twidth: 50%;\n\ttext-align: right;\n}       \n\ndiv.summary a\n{\n\twhite-space: nowrap;\n}\n\ntable.classindex\n{\n        margin: 10px;\n        white-space: nowrap;\n        margin-left: 3%;\n        margin-right: 3%;\n        width: 94%;\n        border: 0;\n        border-spacing: 0; \n        padding: 0;\n}\n\ndiv.ingroups\n{\n\tfont-size: 8pt;\n\twidth: 50%;\n\ttext-align: left;\n}\n\ndiv.ingroups a\n{\n\twhite-space: nowrap;\n}\n\ndiv.header\n{\n        background-image:url('nav_h.png');\n        background-repeat:repeat-x;\n\tbackground-color: #F9FAFC;\n\tmargin:  0px;\n\tborder-bottom: 1px solid #C4CFE5;\n}\n\ndiv.headertitle\n{\n\tpadding: 5px 5px 5px 10px;\n}\n\ndl\n{\n        padding: 0 0 0 10px;\n}\n\n/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */\ndl.section\n{\n\tmargin-left: 0px;\n\tpadding-left: 0px;\n}\n\ndl.note\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #D0C000;\n}\n\ndl.warning, dl.attention\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #FF0000;\n}\n\ndl.pre, dl.post, dl.invariant\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00D000;\n}\n\ndl.deprecated\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #505050;\n}\n\ndl.todo\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00C0E0;\n}\n\ndl.test\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #3030E0;\n}\n\ndl.bug\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #C08050;\n}\n\ndl.section dd {\n\tmargin-bottom: 6px;\n}\n\n\n#projectlogo\n{\n\ttext-align: center;\n\tvertical-align: bottom;\n\tborder-collapse: separate;\n}\n \n#projectlogo img\n{ \n\tborder: 0px none;\n}\n \n#projectalign\n{\n        vertical-align: middle;\n}\n\n#projectname\n{\n\tfont: 300% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 2px 0px;\n}\n    \n#projectbrief\n{\n\tfont: 120% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#projectnumber\n{\n\tfont: 50% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#titlearea\n{\n\tpadding: 0px;\n\tmargin: 0px;\n\twidth: 100%;\n\tborder-bottom: 1px solid #5373B4;\n}\n\n.image\n{\n        text-align: center;\n}\n\n.dotgraph\n{\n        text-align: center;\n}\n\n.mscgraph\n{\n        text-align: center;\n}\n\n.plantumlgraph\n{\n        text-align: center;\n}\n\n.diagraph\n{\n        text-align: center;\n}\n\n.caption\n{\n\tfont-weight: bold;\n}\n\ndiv.zoom\n{\n\tborder: 1px solid #90A5CE;\n}\n\ndl.citelist {\n        margin-bottom:50px;\n}\n\ndl.citelist dt {\n        color:#334975;\n        float:left;\n        font-weight:bold;\n        margin-right:10px;\n        padding:5px;\n}\n\ndl.citelist dd {\n        margin:2px 0;\n        padding:5px 0;\n}\n\ndiv.toc {\n        padding: 14px 25px;\n        background-color: #F4F6FA;\n        border: 1px solid #D8DFEE;\n        border-radius: 7px 7px 7px 7px;\n        float: right;\n        height: auto;\n        margin: 0 8px 10px 10px;\n        width: 200px;\n}\n\ndiv.toc li {\n        background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n        margin-top: 5px;\n        padding-left: 10px;\n        padding-top: 2px;\n}\n\ndiv.toc h3 {\n        font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n\tcolor: #4665A2;\n        border-bottom: 0 none;\n        margin: 0;\n}\n\ndiv.toc ul {\n        list-style: none outside none;\n        border: medium none;\n        padding: 0px;\n}       \n\ndiv.toc li.level1 {\n        margin-left: 0px;\n}\n\ndiv.toc li.level2 {\n        margin-left: 15px;\n}\n\ndiv.toc li.level3 {\n        margin-left: 30px;\n}\n\ndiv.toc li.level4 {\n        margin-left: 45px;\n}\n\n.inherit_header {\n        font-weight: bold;\n        color: gray;\n        cursor: pointer;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.inherit_header td {\n        padding: 6px 0px 2px 5px;\n}\n\n.inherit {\n        display: none;\n}\n\ntr.heading h2 {\n        margin-top: 12px;\n        margin-bottom: 4px;\n}\n\n/* tooltip related style info */\n\n.ttc {\n        position: absolute;\n        display: none;\n}\n\n#powerTip {\n\tcursor: default;\n\twhite-space: nowrap;\n\tbackground-color: white;\n\tborder: 1px solid gray;\n\tborder-radius: 4px 4px 4px 4px;\n\tbox-shadow: 1px 1px 7px gray;\n\tdisplay: none;\n\tfont-size: smaller;\n\tmax-width: 80%;\n\topacity: 0.9;\n\tpadding: 1ex 1em 1em;\n\tposition: absolute;\n\tz-index: 2147483647;\n}\n\n#powerTip div.ttdoc {\n        color: grey;\n\tfont-style: italic;\n}\n\n#powerTip div.ttname a {\n        font-weight: bold;\n}\n\n#powerTip div.ttname {\n        font-weight: bold;\n}\n\n#powerTip div.ttdeci {\n        color: #006318;\n}\n\n#powerTip div {\n        margin: 0px;\n        padding: 0px;\n        font: 12px/16px Roboto,sans-serif;\n}\n\n#powerTip:before, #powerTip:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tmargin: 0px;\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.w:after,  #powerTip.w:before,\n#powerTip.e:after,  #powerTip.e:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.nw:after, #powerTip.nw:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n}\n\n#powerTip.n:after,  #powerTip.s:after,\n#powerTip.w:after,  #powerTip.e:after,\n#powerTip.nw:after, #powerTip.ne:after,\n#powerTip.sw:after, #powerTip.se:after {\n\tborder-color: rgba(255, 255, 255, 0);\n}\n\n#powerTip.n:before,  #powerTip.s:before,\n#powerTip.w:before,  #powerTip.e:before,\n#powerTip.nw:before, #powerTip.ne:before,\n#powerTip.sw:before, #powerTip.se:before {\n\tborder-color: rgba(128, 128, 128, 0);\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.nw:after, #powerTip.nw:before {\n\ttop: 100%;\n}\n\n#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {\n\tborder-top-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n#powerTip.n:before {\n\tborder-top-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n#powerTip.n:after, #powerTip.n:before {\n\tleft: 50%;\n}\n\n#powerTip.nw:after, #powerTip.nw:before {\n\tright: 14px;\n}\n\n#powerTip.ne:after, #powerTip.ne:before {\n\tleft: 14px;\n}\n\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tbottom: 100%;\n}\n\n#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {\n\tborder-bottom-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n\n#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {\n\tborder-bottom-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n\n#powerTip.s:after, #powerTip.s:before {\n\tleft: 50%;\n}\n\n#powerTip.sw:after, #powerTip.sw:before {\n\tright: 14px;\n}\n\n#powerTip.se:after, #powerTip.se:before {\n\tleft: 14px;\n}\n\n#powerTip.e:after, #powerTip.e:before {\n\tleft: 100%;\n}\n#powerTip.e:after {\n\tborder-left-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.e:before {\n\tborder-left-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n#powerTip.w:after, #powerTip.w:before {\n\tright: 100%;\n}\n#powerTip.w:after {\n\tborder-right-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.w:before {\n\tborder-right-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n@media print\n{\n  #top { display: none; }\n  #side-nav { display: none; }\n  #nav-path { display: none; }\n  body { overflow:visible; }\n  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }\n  .summary { display: none; }\n  .memitem { page-break-inside: avoid; }\n  #doc-content\n  {\n    margin-left:0 !important;\n    height:auto !important;\n    width:auto !important;\n    overflow:inherit;\n    display:inline;\n  }\n}\n\n/* @group Markdown */\n\n/*\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTableHead tr {\n}\n\ntable.markdownTableBodyLeft td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\nth.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter {\n\ttext-align: center\n}\n*/\n\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTable tr {\n}\n\nth.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft, td.markdownTableBodyLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight, td.markdownTableBodyRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter, td.markdownTableBodyCenter {\n\ttext-align: center\n}\n\n\n/* @end */\n"
  },
  {
    "path": "documentation/html/dynsections.js",
    "content": "function toggleVisibility(linkObj)\n{\n var base = $(linkObj).attr('id');\n var summary = $('#'+base+'-summary');\n var content = $('#'+base+'-content');\n var trigger = $('#'+base+'-trigger');\n var src=$(trigger).attr('src');\n if (content.is(':visible')===true) {\n   content.hide();\n   summary.show();\n   $(linkObj).addClass('closed').removeClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');\n } else {\n   content.show();\n   summary.hide();\n   $(linkObj).removeClass('closed').addClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');\n } \n return false;\n}\n\nfunction updateStripes()\n{\n  $('table.directory tr').\n       removeClass('even').filter(':visible:even').addClass('even');\n}\n\nfunction toggleLevel(level)\n{\n  $('table.directory tr').each(function() {\n    var l = this.id.split('_').length-1;\n    var i = $('#img'+this.id.substring(3));\n    var a = $('#arr'+this.id.substring(3));\n    if (l<level+1) {\n      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');\n      a.html('&#9660;');\n      $(this).show();\n    } else if (l==level+1) {\n      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');\n      a.html('&#9658;');\n      $(this).show();\n    } else {\n      $(this).hide();\n    }\n  });\n  updateStripes();\n}\n\nfunction toggleFolder(id)\n{\n  // the clicked row\n  var currentRow = $('#row_'+id);\n\n  // all rows after the clicked row\n  var rows = currentRow.nextAll(\"tr\");\n\n  var re = new RegExp('^row_'+id+'\\\\d+_$', \"i\"); //only one sub\n\n  // only match elements AFTER this one (can't hide elements before)\n  var childRows = rows.filter(function() { return this.id.match(re); });\n\n  // first row is visible we are HIDING\n  if (childRows.filter(':first').is(':visible')===true) {\n    // replace down arrow by right arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    currentRowSpans.filter(\".arrow\").html('&#9658;');\n    rows.filter(\"[id^=row_\"+id+\"]\").hide(); // hide all children\n  } else { // we are SHOWING\n    // replace right arrow by down arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfclosed\").removeClass(\"iconfclosed\").addClass(\"iconfopen\");\n    currentRowSpans.filter(\".arrow\").html('&#9660;');\n    // replace down arrows by right arrows for child rows\n    var childRowsSpans = childRows.find(\"span\");\n    childRowsSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    childRowsSpans.filter(\".arrow\").html('&#9658;');\n    childRows.show(); //show all children\n  }\n  updateStripes();\n}\n\n\nfunction toggleInherit(id)\n{\n  var rows = $('tr.inherit.'+id);\n  var img = $('tr.inherit_header.'+id+' img');\n  var src = $(img).attr('src');\n  if (rows.filter(':first').is(':visible')===true) {\n    rows.css('display','none');\n    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');\n  } else {\n    rows.css('display','table-row'); // using show() causes jump in firefox\n    $(img).attr('src',src.substring(0,src.length-10)+'open.png');\n  }\n}\n\n"
  },
  {
    "path": "documentation/html/menu.js",
    "content": "function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {\n  function makeTree(data,relPath) {\n    var result='';\n    if ('children' in data) {\n      result+='<ul>';\n      for (var i in data.children) {\n        result+='<li><a href=\"'+relPath+data.children[i].url+'\">'+\n                                data.children[i].text+'</a>'+\n                                makeTree(data.children[i],relPath)+'</li>';\n      }\n      result+='</ul>';\n    }\n    return result;\n  }\n\n  $('#main-nav').append(makeTree(menudata,relPath));\n  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');\n  if (searchEnabled) {\n    if (serverSide) {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><div class=\"left\"><form id=\"FSearchBox\" action=\"'+searchPage+'\" method=\"get\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag.png\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"'+search+'\" size=\"20\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\"></form></div><div class=\"right\"></div></div></li>');\n    } else {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><span class=\"left\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag_sel.png\" onmouseover=\"return searchBox.OnSearchSelectShow()\" onmouseout=\"return searchBox.OnSearchSelectHide()\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" value=\"'+search+'\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\" onkeyup=\"searchBox.OnSearchFieldChange(event)\"/></span><span class=\"right\"><a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\"><img id=\"MSearchCloseImg\" border=\"0\" src=\"'+relPath+'search/close.png\" alt=\"\"/></a></span></div></li>');\n    }\n  }\n  $('#main-menu').smartmenus();\n}\n"
  },
  {
    "path": "documentation/latex/Makefile",
    "content": "all: refman.pdf\n\npdf: refman.pdf\n\nrefman.pdf: clean refman.tex\n\tpdflatex refman\n\tmakeindex refman.idx\n\tpdflatex refman\n\tlatex_count=8 ; \\\n\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\\n\t    do \\\n\t      echo \"Rerunning latex....\" ;\\\n\t      pdflatex refman ;\\\n\t      latex_count=`expr $$latex_count - 1` ;\\\n\t    done\n\tmakeindex refman.idx\n\tpdflatex refman\n\n\nclean:\n\trm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf\n"
  },
  {
    "path": "documentation/latex/README_8md.tex",
    "content": "\\hypertarget{README_8md}{}\\section{R\\+E\\+A\\+D\\+M\\+E.\\+md File Reference}\n\\label{README_8md}\\index{R\\+E\\+A\\+D\\+M\\+E.\\+md@{R\\+E\\+A\\+D\\+M\\+E.\\+md}}\n"
  },
  {
    "path": "documentation/latex/annotated.tex",
    "content": "\\section{Data Structures}\nHere are the data structures with brief descriptions\\+:\\begin{DoxyCompactList}\n\\item\\contentsline{section}{\\hyperlink{struct__fbg}{\\+\\_\\+fbg} \\\\*FB Graphics context data structure }{\\pageref{struct__fbg}}{}\n\\item\\contentsline{section}{\\hyperlink{struct__fbg__dispmanx__context}{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context} \\\\*Dispmanx wrapper data structure }{\\pageref{struct__fbg__dispmanx__context}}{}\n\\end{DoxyCompactList}\n"
  },
  {
    "path": "documentation/latex/dir_2665f63191f4afb0d340db1cd0753229.tex",
    "content": "\\hypertarget{dir_2665f63191f4afb0d340db1cd0753229}{}\\section{glfw Directory Reference}\n\\label{dir_2665f63191f4afb0d340db1cd0753229}\\index{glfw Directory Reference@{glfw Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbg__glfw_8h}{fbg\\+\\_\\+glfw.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_306cfb62d1d3531b68bf1f0f292c4744.tex",
    "content": "\\hypertarget{dir_306cfb62d1d3531b68bf1f0f292c4744}{}\\section{dispmanx Directory Reference}\n\\label{dir_306cfb62d1d3531b68bf1f0f292c4744}\\index{dispmanx Directory Reference@{dispmanx Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbg__dispmanx_8h}{fbg\\+\\_\\+dispmanx.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_30a16d91d70e9988af00af0764afdb22.tex",
    "content": "\\hypertarget{dir_30a16d91d70e9988af00af0764afdb22}{}\\section{custom\\+\\_\\+backend Directory Reference}\n\\label{dir_30a16d91d70e9988af00af0764afdb22}\\index{custom\\+\\_\\+backend Directory Reference@{custom\\+\\_\\+backend Directory Reference}}\n\\subsection*{Directories}\n\\begin{DoxyCompactItemize}\n\\item \ndirectory \\hyperlink{dir_306cfb62d1d3531b68bf1f0f292c4744}{dispmanx}\n\\item \ndirectory \\hyperlink{dir_cd6eaa540ed8d7f18047d0dfe0a4f94a}{fbdev}\n\\item \ndirectory \\hyperlink{dir_f87af8b164f0cd63cd64846525e0544b}{gba}\n\\item \ndirectory \\hyperlink{dir_2665f63191f4afb0d340db1cd0753229}{glfw}\n\\item \ndirectory \\hyperlink{dir_ef37642b6b64fd185f53d45d9625a884}{opengl\\+\\_\\+es2}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex",
    "content": "\\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\\section{src Directory Reference}\n\\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\\index{src Directory Reference@{src Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbgraphics_8h}{fbgraphics.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_cd6eaa540ed8d7f18047d0dfe0a4f94a.tex",
    "content": "\\hypertarget{dir_cd6eaa540ed8d7f18047d0dfe0a4f94a}{}\\section{fbdev Directory Reference}\n\\label{dir_cd6eaa540ed8d7f18047d0dfe0a4f94a}\\index{fbdev Directory Reference@{fbdev Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbg__fbdev_8h}{fbg\\+\\_\\+fbdev.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_ef37642b6b64fd185f53d45d9625a884.tex",
    "content": "\\hypertarget{dir_ef37642b6b64fd185f53d45d9625a884}{}\\section{opengl\\+\\_\\+es2 Directory Reference}\n\\label{dir_ef37642b6b64fd185f53d45d9625a884}\\index{opengl\\+\\_\\+es2 Directory Reference@{opengl\\+\\_\\+es2 Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbg__opengl__es2_8h}{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/dir_f87af8b164f0cd63cd64846525e0544b.tex",
    "content": "\\hypertarget{dir_f87af8b164f0cd63cd64846525e0544b}{}\\section{gba Directory Reference}\n\\label{dir_f87af8b164f0cd63cd64846525e0544b}\\index{gba Directory Reference@{gba Directory Reference}}\n\\subsection*{Files}\n\\begin{DoxyCompactItemize}\n\\item \nfile \\hyperlink{fbg__gba_8h}{fbg\\+\\_\\+gba.\\+h}\n\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/doxygen.sty",
    "content": "\\NeedsTeXFormat{LaTeX2e}\n\\ProvidesPackage{doxygen}\n\n% Packages used by this style file\n\\RequirePackage{alltt}\n\\RequirePackage{array}\n\\RequirePackage{calc}\n\\RequirePackage{float}\n\\RequirePackage{ifthen}\n\\RequirePackage{verbatim}\n\\RequirePackage[table]{xcolor}\n\\RequirePackage{longtable}\n\\RequirePackage{tabu}\n\\RequirePackage{tabularx}\n\\RequirePackage{multirow}\n\n%---------- Internal commands used in this style file ----------------\n\n\\newcommand{\\ensurespace}[1]{%\n  \\begingroup%\n    \\setlength{\\dimen@}{#1}%\n    \\vskip\\z@\\@plus\\dimen@%\n    \\penalty -100\\vskip\\z@\\@plus -\\dimen@%\n    \\vskip\\dimen@%\n    \\penalty 9999%\n    \\vskip -\\dimen@%\n    \\vskip\\z@skip% hide the previous |\\vskip| from |\\addvspace|\n  \\endgroup%\n}\n\n\\newcommand{\\DoxyLabelFont}{}\n\\newcommand{\\entrylabel}[1]{%\n  {%\n    \\parbox[b]{\\labelwidth-4pt}{%\n      \\makebox[0pt][l]{\\DoxyLabelFont#1}%\n      \\vspace{1.5\\baselineskip}%\n    }%\n  }%\n}\n\n\\newenvironment{DoxyDesc}[1]{%\n  \\ensurespace{4\\baselineskip}%\n  \\begin{list}{}{%\n    \\settowidth{\\labelwidth}{20pt}%\n    \\setlength{\\parsep}{0pt}%\n    \\setlength{\\itemsep}{0pt}%\n    \\setlength{\\leftmargin}{\\labelwidth+\\labelsep}%\n    \\renewcommand{\\makelabel}{\\entrylabel}%\n  }%\n  \\item[#1]%\n}{%\n  \\end{list}%\n}\n\n\\newsavebox{\\xrefbox}\n\\newlength{\\xreflength}\n\\newcommand{\\xreflabel}[1]{%\n  \\sbox{\\xrefbox}{#1}%\n  \\setlength{\\xreflength}{\\wd\\xrefbox}%\n  \\ifthenelse{\\xreflength>\\labelwidth}{%\n    \\begin{minipage}{\\textwidth}%\n      \\setlength{\\parindent}{0pt}%\n      \\hangindent=15pt\\bfseries #1\\vspace{1.2\\itemsep}%\n    \\end{minipage}%\n  }{%\n   \\parbox[b]{\\labelwidth}{\\makebox[0pt][l]{\\textbf{#1}}}%\n  }%\n}\n\n%---------- Commands used by doxygen LaTeX output generator ----------\n\n% Used by <pre> ... </pre>\n\\newenvironment{DoxyPre}{%\n  \\small%\n  \\begin{alltt}%\n}{%\n  \\end{alltt}%\n  \\normalsize%\n}\n\n% Used by @code ... @endcode\n\\newenvironment{DoxyCode}{%\n  \\par%\n  \\scriptsize%\n  \\begin{alltt}%\n}{%\n  \\end{alltt}%\n  \\normalsize%\n}\n\n% Used by @example, @include, @includelineno and @dontinclude\n\\newenvironment{DoxyCodeInclude}{%\n  \\DoxyCode%\n}{%\n  \\endDoxyCode%\n}\n\n% Used by @verbatim ... @endverbatim\n\\newenvironment{DoxyVerb}{%\n  \\footnotesize%\n  \\verbatim%\n}{%\n  \\endverbatim%\n  \\normalsize%\n}\n\n% Used by @verbinclude\n\\newenvironment{DoxyVerbInclude}{%\n  \\DoxyVerb%\n}{%\n  \\endDoxyVerb%\n}\n\n% Used by numbered lists (using '-#' or <ol> ... </ol>)\n\\newenvironment{DoxyEnumerate}{%\n  \\enumerate%\n}{%\n  \\endenumerate%\n}\n\n% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)\n\\newenvironment{DoxyItemize}{%\n  \\itemize%\n}{%\n  \\enditemize%\n}\n\n% Used by description lists (using <dl> ... </dl>)\n\\newenvironment{DoxyDescription}{%\n  \\description%\n}{%\n  \\enddescription%\n}\n\n% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc\n% (only if caption is specified)\n\\newenvironment{DoxyImage}{%\n  \\begin{figure}[H]%\n    \\begin{center}%\n}{%\n    \\end{center}%\n  \\end{figure}%\n}\n\n% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc\n% (only if no caption is specified)\n\\newenvironment{DoxyImageNoCaption}{%\n  \\begin{center}%\n}{%\n  \\end{center}%\n}\n\n% Used by @attention\n\\newenvironment{DoxyAttention}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @author and @authors\n\\newenvironment{DoxyAuthor}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @date\n\\newenvironment{DoxyDate}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @invariant\n\\newenvironment{DoxyInvariant}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @note\n\\newenvironment{DoxyNote}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @post\n\\newenvironment{DoxyPostcond}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @pre\n\\newenvironment{DoxyPrecond}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @copyright\n\\newenvironment{DoxyCopyright}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @remark\n\\newenvironment{DoxyRemark}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @return and @returns\n\\newenvironment{DoxyReturn}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @since\n\\newenvironment{DoxySince}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @see\n\\newenvironment{DoxySeeAlso}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @version\n\\newenvironment{DoxyVersion}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @warning\n\\newenvironment{DoxyWarning}[1]{%\n  \\begin{DoxyDesc}{#1}%\n}{%\n  \\end{DoxyDesc}%\n}\n\n% Used by @internal\n\\newenvironment{DoxyInternal}[1]{%\n  \\paragraph*{#1}%\n}{%\n}\n\n% Used by @par and @paragraph\n\\newenvironment{DoxyParagraph}[1]{%\n  \\begin{list}{}{%\n    \\settowidth{\\labelwidth}{40pt}%\n    \\setlength{\\leftmargin}{\\labelwidth}%\n    \\setlength{\\parsep}{0pt}%\n    \\setlength{\\itemsep}{-4pt}%\n    \\renewcommand{\\makelabel}{\\entrylabel}%\n  }%\n  \\item[#1]%\n}{%\n  \\end{list}%\n}\n\n% Used by parameter lists\n\\newenvironment{DoxyParams}[2][]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\ifthenelse{\\equal{#1}{}}%\n      {\\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description\n    {\\ifthenelse{\\equal{#1}{1}}%\n      {\\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc\n      {\\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc\n    }\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #2}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #2}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used for fields of simple structs\n\\newenvironment{DoxyFields}[1]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%\n    \\multicolumn{3}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{3}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used for fields simple class style enums\n\\newenvironment{DoxyEnumFields}[1]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used for parameters within a detailed function description\n\\newenvironment{DoxyParamCaption}{%\n  \\renewcommand{\\item}[2][]{\\\\ \\hspace*{2.0cm} ##1 {\\em ##2}}% \n}{%\n}\n\n% Used by return value lists\n\\newenvironment{DoxyRetVals}[1]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used by exception lists\n\\newenvironment{DoxyExceptions}[1]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used by template parameter lists\n\\newenvironment{DoxyTemplParams}[1]{%\n    \\tabulinesep=1mm%\n    \\par%\n    \\begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endfirsthead%\n    \\multicolumn{2}{l}{\\hspace{-6pt}\\bfseries\\fontseries{bc}\\selectfont\\color{darkgray} #1}\\\\[1ex]%\n    \\hline%\n    \\endhead%\n}{%\n    \\end{longtabu}%\n    \\vspace{6pt}%\n}\n\n% Used for member lists\n\\newenvironment{DoxyCompactItemize}{%\n  \\begin{itemize}%\n    \\setlength{\\itemsep}{-3pt}%\n    \\setlength{\\parsep}{0pt}%\n    \\setlength{\\topsep}{0pt}%\n    \\setlength{\\partopsep}{0pt}%\n}{%\n  \\end{itemize}%\n}\n\n% Used for member descriptions\n\\newenvironment{DoxyCompactList}{%\n  \\begin{list}{}{%\n    \\setlength{\\leftmargin}{0.5cm}%\n    \\setlength{\\itemsep}{0pt}%\n    \\setlength{\\parsep}{0pt}%\n    \\setlength{\\topsep}{0pt}%\n    \\renewcommand{\\makelabel}{\\hfill}%\n  }%\n}{%\n  \\end{list}%\n}\n\n% Used for reference lists (@bug, @deprecated, @todo, etc.)\n\\newenvironment{DoxyRefList}{%\n  \\begin{list}{}{%\n    \\setlength{\\labelwidth}{10pt}%\n    \\setlength{\\leftmargin}{\\labelwidth}%\n    \\addtolength{\\leftmargin}{\\labelsep}%\n    \\renewcommand{\\makelabel}{\\xreflabel}%\n  }%\n}{%\n  \\end{list}%\n}\n\n% Used by @bug, @deprecated, @todo, etc.\n\\newenvironment{DoxyRefDesc}[1]{%\n  \\begin{list}{}{%\n    \\renewcommand\\makelabel[1]{\\textbf{##1}}%\n    \\settowidth\\labelwidth{\\makelabel{#1}}%\n    \\setlength\\leftmargin{\\labelwidth+\\labelsep}%\n  }%\n}{%\n  \\end{list}%\n}\n\n% Used by parameter lists and simple sections\n\\newenvironment{Desc}\n{\\begin{list}{}{%\n    \\settowidth{\\labelwidth}{20pt}%\n    \\setlength{\\parsep}{0pt}%\n    \\setlength{\\itemsep}{0pt}%\n    \\setlength{\\leftmargin}{\\labelwidth+\\labelsep}%\n    \\renewcommand{\\makelabel}{\\entrylabel}%\n  }\n}{%\n  \\end{list}%\n}\n\n% Used by tables\n\\newcommand{\\PBS}[1]{\\let\\temp=\\\\#1\\let\\\\=\\temp}%\n\\newenvironment{TabularC}[1]%\n{\\tabulinesep=1mm\n\\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}%\n{\\end{longtabu}\\par}%\n\n\\newenvironment{TabularNC}[1]%\n{\\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}%\n{\\end{tabu}\\par}%\n\n% Used for member group headers\n\\newenvironment{Indent}{%\n  \\begin{list}{}{%\n    \\setlength{\\leftmargin}{0.5cm}%\n  }%\n  \\item[]\\ignorespaces%\n}{%\n  \\unskip%\n  \\end{list}%\n}\n\n% Used when hyperlinks are turned off\n\\newcommand{\\doxyref}[3]{%\n  \\textbf{#1} (\\textnormal{#2}\\,\\pageref{#3})%\n}\n\n% Used to link to a table when hyperlinks are turned on\n\\newcommand{\\doxytablelink}[2]{%\n  \\ref{#1}%\n}\n\n% Used to link to a table when hyperlinks are turned off\n\\newcommand{\\doxytableref}[3]{%\n  \\ref{#3}%\n}\n\n% Used by @addindex\n\\newcommand{\\lcurly}{\\{}\n\\newcommand{\\rcurly}{\\}}\n\n% Colors used for syntax highlighting\n\\definecolor{comment}{rgb}{0.5,0.0,0.0}\n\\definecolor{keyword}{rgb}{0.0,0.5,0.0}\n\\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}\n\\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}\n\\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}\n\\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}\n\\definecolor{charliteral}{rgb}{0.0,0.5,0.5}\n\\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}\n\\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}\n\\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}\n\\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}\n\n% Color used for table heading\n\\newcommand{\\tableheadbgcolor}{lightgray}%\n\n% Version of hypertarget with correct landing location\n\\newcommand{\\Hypertarget}[1]{\\Hy@raisedlink{\\hypertarget{#1}{}}}\n\n% Define caption that is also suitable in a table\n\\makeatletter\n\\def\\doxyfigcaption{%\n\\refstepcounter{figure}%\n\\@dblarg{\\@caption{figure}}}\n\\makeatother\n"
  },
  {
    "path": "documentation/latex/fbg__dispmanx_8h.tex",
    "content": "\\hypertarget{fbg__dispmanx_8h}{}\\section{fbg\\+\\_\\+dispmanx.\\+h File Reference}\n\\label{fbg__dispmanx_8h}\\index{fbg\\+\\_\\+dispmanx.\\+h@{fbg\\+\\_\\+dispmanx.\\+h}}\n{\\ttfamily \\#include $<$sys/ioctl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$linux/fb.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$unistd.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$fcntl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$G\\+L\\+E\\+S2/gl2.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$E\\+G\\+L/egl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$E\\+G\\+L/eglext.\\+h$>$}\\newline\n{\\ttfamily \\#include \\char`\\\"{}bcm\\+\\_\\+host.\\+h\\char`\\\"{}}\\newline\n{\\ttfamily \\#include \\char`\\\"{}fbgraphics.\\+h\\char`\\\"{}}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg__dispmanx__context}{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx wrapper data structure \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbg__dispmanx_8h_a84447aff22c0387208aa478eafd983f7}{fbg\\+\\_\\+dispmanx\\+Setup} (uint32\\+\\_\\+t display\\+Number)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics dispmanx context \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__dispmanx_8h_ac0a4c6e0821a33671fae87e7c5fb7fe2}{fbg\\+\\_\\+dispmanx\\+On\\+Flip} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, void($\\ast$opt\\+\\_\\+flip)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg))\n\\begin{DoxyCompactList}\\small\\item\\em add additional flip content (will be executed between dispmanx start / sync) \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbg__dispmanx_8h_ac0a4c6e0821a33671fae87e7c5fb7fe2}\\label{fbg__dispmanx_8h_ac0a4c6e0821a33671fae87e7c5fb7fe2}} \n\\index{fbg\\+\\_\\+dispmanx.\\+h@{fbg\\+\\_\\+dispmanx.\\+h}!fbg\\+\\_\\+dispmanx\\+On\\+Flip@{fbg\\+\\_\\+dispmanx\\+On\\+Flip}}\n\\index{fbg\\+\\_\\+dispmanx\\+On\\+Flip@{fbg\\+\\_\\+dispmanx\\+On\\+Flip}!fbg\\+\\_\\+dispmanx.\\+h@{fbg\\+\\_\\+dispmanx.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+dispmanx\\+On\\+Flip()}{fbg\\_dispmanxOnFlip()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+dispmanx\\+On\\+Flip (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}]{opt\\+\\_\\+flip }\\end{DoxyParamCaption})}\n\n\n\nadd additional flip content (will be executed between dispmanx start / sync) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & F\\+BG data structure pointer \\\\\n\\hline\n{\\em opt\\+\\_\\+flip} & flip function executed between dispmanx start / sync upong \\hyperlink{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}{fbg\\+\\_\\+flip()} call \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbg__dispmanx_8h_a84447aff22c0387208aa478eafd983f7}\\label{fbg__dispmanx_8h_a84447aff22c0387208aa478eafd983f7}} \n\\index{fbg\\+\\_\\+dispmanx.\\+h@{fbg\\+\\_\\+dispmanx.\\+h}!fbg\\+\\_\\+dispmanx\\+Setup@{fbg\\+\\_\\+dispmanx\\+Setup}}\n\\index{fbg\\+\\_\\+dispmanx\\+Setup@{fbg\\+\\_\\+dispmanx\\+Setup}!fbg\\+\\_\\+dispmanx.\\+h@{fbg\\+\\_\\+dispmanx.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+dispmanx\\+Setup()}{fbg\\_dispmanxSetup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+dispmanx\\+Setup (\\begin{DoxyParamCaption}\\item[{uint32\\+\\_\\+t}]{display\\+Number }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics dispmanx context \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em display\\+Number} & dispmanx display number \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nF\\+BG data structure pointer \n\\end{DoxyReturn}\n"
  },
  {
    "path": "documentation/latex/fbg__fbdev_8h.tex",
    "content": "\\hypertarget{fbg__fbdev_8h}{}\\section{fbg\\+\\_\\+fbdev.\\+h File Reference}\n\\label{fbg__fbdev_8h}\\index{fbg\\+\\_\\+fbdev.\\+h@{fbg\\+\\_\\+fbdev.\\+h}}\n{\\ttfamily \\#include $<$linux/fb.\\+h$>$}\\newline\n{\\ttfamily \\#include \\char`\\\"{}fbgraphics.\\+h\\char`\\\"{}}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{fbg__fbdev_8h_struct__fbg__fbdev__context}{\\+\\_\\+fbg\\+\\_\\+fbdev\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em fbdev wrapper data structure  \\hyperlink{fbg__fbdev_8h_struct__fbg__fbdev__context}{More...}\\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Macros}\n\\begin{DoxyCompactItemize}\n\\item \n\\#define \\hyperlink{fbg__fbdev_8h_a8ebf35a2c6451e36bd33e3e985f418dc}{fbg\\+\\_\\+fbdev\\+Init}()~\\hyperlink{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}{fbg\\+\\_\\+fbdev\\+Setup}(N\\+U\\+LL, 0)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics context with \\textquotesingle{}/dev/fb0\\textquotesingle{} as framebuffer device and no page flipping \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}{fbg\\+\\_\\+fbdev\\+Setup} (char $\\ast$fb\\+\\_\\+device, int page\\+\\_\\+flipping)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics context (framebuffer) \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Data Structure Documentation}\n\\index{\\+\\_\\+fbg\\+\\_\\+fbdev\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+fbdev\\+\\_\\+context}}\\label{struct__fbg__fbdev__context}\n\\Hypertarget{fbg__fbdev_8h_struct__fbg__fbdev__context}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+fbdev\\+\\_\\+context}\nfbdev wrapper data structure \n\nDefinition at line 35 of file fbg\\+\\_\\+fbdev.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbg__fbdev_8h_ab55635eae34af7a431d2bc1e811ce708}\\label{fbg__fbdev_8h_ab55635eae34af7a431d2bc1e811ce708}} \nunsigned char $\\ast$&\nbuffer&\nMemory-\\/mapped framebuffer. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__fbdev_8h_a1bc9cdf0319e87ed2e4f4b7a32397da1}\\label{fbg__fbdev_8h_a1bc9cdf0319e87ed2e4f4b7a32397da1}} \nint&\nfd&\nFramebuffer device file descriptor. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__fbdev_8h_adff746dbaa8d0ff15492a3003a6ccd4c}\\label{fbg__fbdev_8h_adff746dbaa8d0ff15492a3003a6ccd4c}} \nstruct fb\\_fix\\_screeninfo&\nfinfo&\nFramebuffer device fix. informations. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__fbdev_8h_a895ef3bfc6f4797eb2812371f8b69b43}\\label{fbg__fbdev_8h_a895ef3bfc6f4797eb2812371f8b69b43}} \nint&\npage\\_flipping&\nFlag indicating that page flipping is enabled. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__fbdev_8h_ae522c89dc6af43b8500741f0f7e8f34f}\\label{fbg__fbdev_8h_ae522c89dc6af43b8500741f0f7e8f34f}} \nstruct fb\\_var\\_screeninfo&\nvinfo&\nFramebuffer device var. informations. \\\\\n\\hline\n\n\\end{DoxyFields}\n\n\n\\subsection{Macro Definition Documentation}\n\\mbox{\\Hypertarget{fbg__fbdev_8h_a8ebf35a2c6451e36bd33e3e985f418dc}\\label{fbg__fbdev_8h_a8ebf35a2c6451e36bd33e3e985f418dc}} \n\\index{fbg\\+\\_\\+fbdev.\\+h@{fbg\\+\\_\\+fbdev.\\+h}!fbg\\+\\_\\+fbdev\\+Init@{fbg\\+\\_\\+fbdev\\+Init}}\n\\index{fbg\\+\\_\\+fbdev\\+Init@{fbg\\+\\_\\+fbdev\\+Init}!fbg\\+\\_\\+fbdev.\\+h@{fbg\\+\\_\\+fbdev.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fbdev\\+Init}{fbg\\_fbdevInit}}\n{\\footnotesize\\ttfamily \\#define fbg\\+\\_\\+fbdev\\+Init(\\begin{DoxyParamCaption}{ }\\end{DoxyParamCaption})~\\hyperlink{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}{fbg\\+\\_\\+fbdev\\+Setup}(N\\+U\\+LL, 0)}\n\n\n\ninitialize a FB Graphics context with \\textquotesingle{}/dev/fb0\\textquotesingle{} as framebuffer device and no page flipping \n\n\n\nDefinition at line 60 of file fbg\\+\\_\\+fbdev.\\+h.\n\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}\\label{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}} \n\\index{fbg\\+\\_\\+fbdev.\\+h@{fbg\\+\\_\\+fbdev.\\+h}!fbg\\+\\_\\+fbdev\\+Setup@{fbg\\+\\_\\+fbdev\\+Setup}}\n\\index{fbg\\+\\_\\+fbdev\\+Setup@{fbg\\+\\_\\+fbdev\\+Setup}!fbg\\+\\_\\+fbdev.\\+h@{fbg\\+\\_\\+fbdev.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fbdev\\+Setup()}{fbg\\_fbdevSetup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+fbdev\\+Setup (\\begin{DoxyParamCaption}\\item[{char $\\ast$}]{fb\\+\\_\\+device,  }\\item[{int}]{page\\+\\_\\+flipping }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics context (framebuffer) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fb\\+\\_\\+device} & framebuffer device (example \\+: /dev/fb0) \\\\\n\\hline\n{\\em page\\+\\_\\+flipping} & wether to use page flipping mechanism for double buffering (slow on some devices) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{struct__fbg}{\\+\\_\\+fbg} structure pointer to pass to any F\\+BG library functions \n\\end{DoxyReturn}\n"
  },
  {
    "path": "documentation/latex/fbg__gba_8h.tex",
    "content": "\\hypertarget{fbg__gba_8h}{}\\section{fbg\\+\\_\\+gba.\\+h File Reference}\n\\label{fbg__gba_8h}\\index{fbg\\+\\_\\+gba.\\+h@{fbg\\+\\_\\+gba.\\+h}}\n{\\ttfamily \\#include \\char`\\\"{}fbgraphics.\\+h\\char`\\\"{}}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{fbg__gba_8h_struct__fbg__gba__context}{\\+\\_\\+fbg\\+\\_\\+gba\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em fbdev wrapper data structure  \\hyperlink{fbg__gba_8h_struct__fbg__gba__context}{More...}\\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbg__gba_8h_a6679b30ad162111859a3276397324a83}{fbg\\+\\_\\+gba\\+Setup} (int mode)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics context \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Data Structure Documentation}\n\\index{\\+\\_\\+fbg\\+\\_\\+gba\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+gba\\+\\_\\+context}}\\label{struct__fbg__gba__context}\n\\Hypertarget{fbg__gba_8h_struct__fbg__gba__context}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+gba\\+\\_\\+context}\nfbdev wrapper data structure \n\nDefinition at line 34 of file fbg\\+\\_\\+gba.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbg__gba_8h_aed8228182579172a6666619ee05e4dfe}\\label{fbg__gba_8h_aed8228182579172a6666619ee05e4dfe}} \nunsigned short $\\ast$&\nbuffer&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__gba_8h_abfb08c9ec453d0a38e1b4f78f0894faf}\\label{fbg__gba_8h_abfb08c9ec453d0a38e1b4f78f0894faf}} \nint&\nmode&\n\\\\\n\\hline\n\n\\end{DoxyFields}\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbg__gba_8h_a6679b30ad162111859a3276397324a83}\\label{fbg__gba_8h_a6679b30ad162111859a3276397324a83}} \n\\index{fbg\\+\\_\\+gba.\\+h@{fbg\\+\\_\\+gba.\\+h}!fbg\\+\\_\\+gba\\+Setup@{fbg\\+\\_\\+gba\\+Setup}}\n\\index{fbg\\+\\_\\+gba\\+Setup@{fbg\\+\\_\\+gba\\+Setup}!fbg\\+\\_\\+gba.\\+h@{fbg\\+\\_\\+gba.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gba\\+Setup()}{fbg\\_gbaSetup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+gba\\+Setup (\\begin{DoxyParamCaption}\\item[{int}]{mode }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics context \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em mode} & G\\+BA bitmap modes (3 = 240x160x16, 4 = 240x160x8 page flip, 5 = 160x128x16 page flip) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{struct__fbg}{\\+\\_\\+fbg} structure pointer to pass to any F\\+BG library functions \n\\end{DoxyReturn}\n"
  },
  {
    "path": "documentation/latex/fbg__glfw_8h.tex",
    "content": "\\hypertarget{fbg__glfw_8h}{}\\section{fbg\\+\\_\\+glfw.\\+h File Reference}\n\\label{fbg__glfw_8h}\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n{\\ttfamily \\#include $<$G\\+L/glew.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$G\\+L\\+F\\+W/glfw3.\\+h$>$}\\newline\n{\\ttfamily \\#include \\char`\\\"{}fbgraphics.\\+h\\char`\\\"{}}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{fbg__glfw_8h_struct__fbg__glfw__context}{\\+\\_\\+fbg\\+\\_\\+glfw\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em G\\+L\\+FW wrapper data structure.  \\hyperlink{fbg__glfw_8h_struct__fbg__glfw__context}{More...}\\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbg__glfw_8h_a41d8a89a2bf7c6d2310d07eae206faa9}{fbg\\+\\_\\+glfw\\+Setup} (int width, int height, int components, const char $\\ast$title, int monitor, int fullscreen)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics Open\\+GL context (G\\+L\\+FW library) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__glfw_8h_a17dd8947f781a20136c59eb9579edf2f}{fbg\\+\\_\\+glfw\\+Clear} ()\n\\begin{DoxyCompactList}\\small\\item\\em Open\\+GL clear. \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__glfw_8h_a88a6523e8ce117e334bad1220bfbc55b}{fbg\\+\\_\\+glfw\\+Update\\+Buffer} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em this update F\\+BG disp\\+\\_\\+buffer with the actual rendered Open\\+GL content \\end{DoxyCompactList}\\item \nint \\hyperlink{fbg__glfw_8h_a723385d297914375f9c5269492b05b50}{fbg\\+\\_\\+glfw\\+Should\\+Close} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em Query the user requested (window close etc) close status. \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__glfw_8h_ab1e510fded4ac300b4a21efd577604f3}{fbg\\+\\_\\+glfw\\+Fullscreen} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int enable)\n\\begin{DoxyCompactList}\\small\\item\\em Switch to fullscreen or windowed mode. \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__glfw_8h_af724a4a5f9f195765ef6b11255851848}{fbg\\+\\_\\+glfw\\+Resize} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int new\\+\\_\\+width, unsigned new\\+\\_\\+height)\n\\begin{DoxyCompactList}\\small\\item\\em Display resize. \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_aca78bdcc45f25aeb9ae74a3d6ef136d1}{fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img)\n\\begin{DoxyCompactList}\\small\\item\\em create a non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture from a F\\+BG image \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_ac328fff77bfd3e7ddafb2dfdf5d6b4b0}{fbg\\+\\_\\+glfw\\+Create\\+Texture} (G\\+Luint width, G\\+Luint height, G\\+Lint internal\\+\\_\\+format)\n\\begin{DoxyCompactList}\\small\\item\\em create an empty non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_a49073f43825b79bdf11b7a20cabac56b}{fbg\\+\\_\\+glfw\\+Create\\+V\\+AO} (G\\+Lsizeiptr indices\\+\\_\\+count, const G\\+Lvoid $\\ast$indices\\+\\_\\+data, size\\+\\_\\+t sizeof\\+\\_\\+indice\\+\\_\\+type, G\\+Lsizeiptr vertices\\+\\_\\+count, const G\\+Lvoid $\\ast$vertices\\+\\_\\+data, G\\+Lsizeiptr texcoords\\+\\_\\+count, const G\\+Lvoid $\\ast$texcoords\\+\\_\\+data, G\\+Lsizeiptr normals\\+\\_\\+count, const G\\+Lvoid $\\ast$normals\\+\\_\\+data, G\\+Lsizeiptr colors\\+\\_\\+count, const G\\+Lvoid $\\ast$colors\\+\\_\\+data)\n\\begin{DoxyCompactList}\\small\\item\\em create a V\\+AO from indexed data, support for vertices, U\\+Vs, normals and colors \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_af9d4876755370dc34cb76b9209ff8b6c}{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu} (G\\+Lsizeiptr data\\+\\_\\+count, const G\\+Lvoid $\\ast$data)\n\\begin{DoxyCompactList}\\small\\item\\em create a V\\+AO from vertices + UV data packed into a single array \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_ae16afafa7eec0ed48b8a8fb38bb83ac4}{fbg\\+\\_\\+glfw\\+Create\\+F\\+BO} (G\\+Luint texture)\n\\begin{DoxyCompactList}\\small\\item\\em create a F\\+BO \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_a3ed78e4ad11ac7e2a021e1747eb59aa8}{fbg\\+\\_\\+glfw\\+Create\\+Shader} (G\\+Lenum type, const G\\+Lchar $\\ast$source)\n\\begin{DoxyCompactList}\\small\\item\\em create a single shader \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_ab156d8b8da0ef3135888942c054bbbeb}{fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File} (G\\+Lenum type, const char $\\ast$filename)\n\\begin{DoxyCompactList}\\small\\item\\em create a shader from the content of a file \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__glfw_8h_a45cf81b5b25c6ef69025693650c9bcb8}{fbg\\+\\_\\+glfw\\+Create\\+Program} (G\\+Luint vertex\\+\\_\\+shader, G\\+Luint fragment\\+\\_\\+shader, G\\+Luint geometry\\+\\_\\+shader)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment program \\end{DoxyCompactList}\\item \nG\\+Lenum \\hyperlink{fbg__glfw_8h_aeb42580d7148df3ffbbb590bbf0028a8}{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files} (const char $\\ast$vs, const char $\\ast$fs, const char $\\ast$gs)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment/geometry program from a file \\end{DoxyCompactList}\\item \nG\\+Lenum \\hyperlink{fbg__glfw_8h_a9454484e4d9b5d484a1b46f35a2ed64b}{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String} (const char $\\ast$vs, const char $\\ast$fs, const char $\\ast$gs)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment/geometry program from a string \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Variables}\n\\begin{DoxyCompactItemize}\n\\item \nconst G\\+Lfloat \\hyperlink{fbg__glfw_8h_a06771c76a305bf753611309286e73c07}{fbg\\+\\_\\+glfw\\+Quad} \\mbox{[}$\\,$\\mbox{]}\n\\begin{DoxyCompactList}\\small\\item\\em Simple quad geometry (vertices + UV) \\end{DoxyCompactList}\\item \nconst char $\\ast$ \\hyperlink{fbg__glfw_8h_a998669be4cb45dda77c48cb23891fc4e}{fbg\\+\\_\\+glfw\\+Simple\\+Vs}\n\\begin{DoxyCompactList}\\small\\item\\em Simple vertex shader (screen quad, vertices + UV) \\end{DoxyCompactList}\\item \nconst char $\\ast$ \\hyperlink{fbg__glfw_8h_a9fd4455e8dddd7c55fb5fb3e5d973f36}{fbg\\+\\_\\+glfw\\+Simple\\+Fs}\n\\begin{DoxyCompactList}\\small\\item\\em Simple textured fragment shader. \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Data Structure Documentation}\n\\index{\\+\\_\\+fbg\\+\\_\\+glfw\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+glfw\\+\\_\\+context}}\\label{struct__fbg__glfw__context}\n\\Hypertarget{fbg__glfw_8h_struct__fbg__glfw__context}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+glfw\\+\\_\\+context}\nG\\+L\\+FW wrapper data structure. \n\nDefinition at line 37 of file fbg\\+\\_\\+glfw.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbg__glfw_8h_ab9766ea45a75dae87a27b93097849e29}\\label{fbg__glfw_8h_ab9766ea45a75dae87a27b93097849e29}} \nGLuint&\nfbg\\_texture&\nF\\+BG texture (updated at each frames) \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__glfw_8h_ae65b56bcf995bc599bc98d6a6d81072a}\\label{fbg__glfw_8h_ae65b56bcf995bc599bc98d6a6d81072a}} \nGLuint&\nfbg\\_vao&\nF\\+BG V\\+AO. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__glfw_8h_a0377751d89c499aaa9d3a8b75c6724bb}\\label{fbg__glfw_8h_a0377751d89c499aaa9d3a8b75c6724bb}} \nGLFWmonitor $\\ast$&\nmonitor&\nG\\+L\\+FW monitor. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__glfw_8h_ab95a2f530b32939e45f3ee7f453acf36}\\label{fbg__glfw_8h_ab95a2f530b32939e45f3ee7f453acf36}} \nGLenum&\nsimple\\_program&\nSimple G\\+L\\+SL program (screen-\\/aligned textured quad) \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__glfw_8h_a368de6aed34d9828a84ad7d629a8f96c}\\label{fbg__glfw_8h_a368de6aed34d9828a84ad7d629a8f96c}} \nint&\nupdate\\_buffer&\ntell wether fbg\\+\\_\\+glfw should update fbg disp\\+\\_\\+buffer after rendering \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__glfw_8h_ae249286407780f32b8c65bce835475f4}\\label{fbg__glfw_8h_ae249286407780f32b8c65bce835475f4}} \nGLFWwindow $\\ast$&\nwindow&\nG\\+L\\+FW window. \\\\\n\\hline\n\n\\end{DoxyFields}\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a17dd8947f781a20136c59eb9579edf2f}\\label{fbg__glfw_8h_a17dd8947f781a20136c59eb9579edf2f}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Clear@{fbg\\+\\_\\+glfw\\+Clear}}\n\\index{fbg\\+\\_\\+glfw\\+Clear@{fbg\\+\\_\\+glfw\\+Clear}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Clear()}{fbg\\_glfwClear()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+glfw\\+Clear (\\begin{DoxyParamCaption}{ }\\end{DoxyParamCaption})}\n\n\n\nOpen\\+GL clear. \n\n\\mbox{\\Hypertarget{fbg__glfw_8h_ae16afafa7eec0ed48b8a8fb38bb83ac4}\\label{fbg__glfw_8h_ae16afafa7eec0ed48b8a8fb38bb83ac4}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+F\\+BO@{fbg\\+\\_\\+glfw\\+Create\\+F\\+BO}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+F\\+BO@{fbg\\+\\_\\+glfw\\+Create\\+F\\+BO}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+F\\+B\\+O()}{fbg\\_glfwCreateFBO()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+F\\+BO (\\begin{DoxyParamCaption}\\item[{G\\+Luint}]{texture }\\end{DoxyParamCaption})}\n\n\n\ncreate a F\\+BO \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em texture} & GL texture id \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL F\\+BO id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a45cf81b5b25c6ef69025693650c9bcb8}\\label{fbg__glfw_8h_a45cf81b5b25c6ef69025693650c9bcb8}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Program@{fbg\\+\\_\\+glfw\\+Create\\+Program}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Program@{fbg\\+\\_\\+glfw\\+Create\\+Program}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Program()}{fbg\\_glfwCreateProgram()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+Program (\\begin{DoxyParamCaption}\\item[{G\\+Luint}]{vertex\\+\\_\\+shader,  }\\item[{G\\+Luint}]{fragment\\+\\_\\+shader,  }\\item[{G\\+Luint}]{geometry\\+\\_\\+shader }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment program \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vertex\\+\\_\\+shader} & vertex shader id, can be 0 \\\\\n\\hline\n{\\em fragment\\+\\_\\+shader} & fragment shader id, can be 0 \\\\\n\\hline\n{\\em geometry\\+\\_\\+shader} & geometry shader id, can be 0 \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_aeb42580d7148df3ffbbb590bbf0028a8}\\label{fbg__glfw_8h_aeb42580d7148df3ffbbb590bbf0028a8}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files@{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files@{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files()}{fbg\\_glfwCreateProgramFromFiles()}}\n{\\footnotesize\\ttfamily G\\+Lenum fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+Files (\\begin{DoxyParamCaption}\\item[{const char $\\ast$}]{vs,  }\\item[{const char $\\ast$}]{fs,  }\\item[{const char $\\ast$}]{gs }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment/geometry program from a file \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vs} & vertex shader file \\\\\n\\hline\n{\\em fs} & fragment shader file \\\\\n\\hline\n{\\em gs} & geometry shader file \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a9454484e4d9b5d484a1b46f35a2ed64b}\\label{fbg__glfw_8h_a9454484e4d9b5d484a1b46f35a2ed64b}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String@{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String@{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String()}{fbg\\_glfwCreateProgramFromString()}}\n{\\footnotesize\\ttfamily G\\+Lenum fbg\\+\\_\\+glfw\\+Create\\+Program\\+From\\+String (\\begin{DoxyParamCaption}\\item[{const char $\\ast$}]{vs,  }\\item[{const char $\\ast$}]{fs,  }\\item[{const char $\\ast$}]{gs }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment/geometry program from a string \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vs} & vertex shader string \\\\\n\\hline\n{\\em fs} & fragment shader string \\\\\n\\hline\n{\\em gs} & geometry shader string \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a3ed78e4ad11ac7e2a021e1747eb59aa8}\\label{fbg__glfw_8h_a3ed78e4ad11ac7e2a021e1747eb59aa8}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Shader@{fbg\\+\\_\\+glfw\\+Create\\+Shader}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Shader@{fbg\\+\\_\\+glfw\\+Create\\+Shader}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Shader()}{fbg\\_glfwCreateShader()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+Shader (\\begin{DoxyParamCaption}\\item[{G\\+Lenum}]{type,  }\\item[{const G\\+Lchar $\\ast$}]{source }\\end{DoxyParamCaption})}\n\n\n\ncreate a single shader \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em type} & GL shader type \\\\\n\\hline\n{\\em source} & shader code \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_ab156d8b8da0ef3135888942c054bbbeb}\\label{fbg__glfw_8h_ab156d8b8da0ef3135888942c054bbbeb}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File@{fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File@{fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File()}{fbg\\_glfwCreateShaderFromFile()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+Shader\\+From\\+File (\\begin{DoxyParamCaption}\\item[{G\\+Lenum}]{type,  }\\item[{const char $\\ast$}]{filename }\\end{DoxyParamCaption})}\n\n\n\ncreate a shader from the content of a file \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em type} & GL shader type \\\\\n\\hline\n{\\em filename} & file to load \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_ac328fff77bfd3e7ddafb2dfdf5d6b4b0}\\label{fbg__glfw_8h_ac328fff77bfd3e7ddafb2dfdf5d6b4b0}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Texture@{fbg\\+\\_\\+glfw\\+Create\\+Texture}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Texture@{fbg\\+\\_\\+glfw\\+Create\\+Texture}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Texture()}{fbg\\_glfwCreateTexture()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+Texture (\\begin{DoxyParamCaption}\\item[{G\\+Luint}]{width,  }\\item[{G\\+Luint}]{height,  }\\item[{G\\+Lint}]{internal\\+\\_\\+format }\\end{DoxyParamCaption})}\n\n\n\ncreate an empty non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em width} & width of the requested texture \\\\\n\\hline\n{\\em height} & height of the requested texture \\\\\n\\hline\n{\\em internal\\+\\_\\+format} & Open\\+GL format (G\\+L\\+\\_\\+\\+R\\+G\\+BA etc.) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL texture id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_aca78bdcc45f25aeb9ae74a3d6ef136d1}\\label{fbg__glfw_8h_aca78bdcc45f25aeb9ae74a3d6ef136d1}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image@{fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image@{fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image()}{fbg\\_glfwCreateTextureFromImage()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+Texture\\+From\\+Image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img }\\end{DoxyParamCaption})}\n\n\n\ncreate a non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture from a F\\+BG image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL texture id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a49073f43825b79bdf11b7a20cabac56b}\\label{fbg__glfw_8h_a49073f43825b79bdf11b7a20cabac56b}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+V\\+AO@{fbg\\+\\_\\+glfw\\+Create\\+V\\+AO}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+V\\+AO@{fbg\\+\\_\\+glfw\\+Create\\+V\\+AO}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+O()}{fbg\\_glfwCreateVAO()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+V\\+AO (\\begin{DoxyParamCaption}\\item[{G\\+Lsizeiptr}]{indices\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{indices\\+\\_\\+data,  }\\item[{size\\+\\_\\+t}]{sizeof\\+\\_\\+indice\\+\\_\\+type,  }\\item[{G\\+Lsizeiptr}]{vertices\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{vertices\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{texcoords\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{texcoords\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{normals\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{normals\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{colors\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{colors\\+\\_\\+data }\\end{DoxyParamCaption})}\n\n\n\ncreate a V\\+AO from indexed data, support for vertices, U\\+Vs, normals and colors \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em indices\\+\\_\\+count} & indices count \\\\\n\\hline\n{\\em indices\\+\\_\\+data} & data containing indices \\\\\n\\hline\n{\\em sizeof\\+\\_\\+indice\\+\\_\\+type} & sizeof indice type \\\\\n\\hline\n{\\em vertices\\+\\_\\+count} & vertices count \\\\\n\\hline\n{\\em vertices\\+\\_\\+data} & data containing vertices \\\\\n\\hline\n{\\em texcoords\\+\\_\\+count} & uv count \\\\\n\\hline\n{\\em texcoords\\+\\_\\+data} & data containing uv \\\\\n\\hline\n{\\em normals\\+\\_\\+count} & normals count \\\\\n\\hline\n{\\em normals\\+\\_\\+data} & data containing normals \\\\\n\\hline\n{\\em colors\\+\\_\\+count} & colors count \\\\\n\\hline\n{\\em colors\\+\\_\\+data} & data containing colors \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL V\\+AO id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_af9d4876755370dc34cb76b9209ff8b6c}\\label{fbg__glfw_8h_af9d4876755370dc34cb76b9209ff8b6c}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu@{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu}}\n\\index{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu@{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu()}{fbg\\_glfwCreateVAOvu()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+glfw\\+Create\\+V\\+A\\+Ovu (\\begin{DoxyParamCaption}\\item[{G\\+Lsizeiptr}]{data\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{data }\\end{DoxyParamCaption})}\n\n\n\ncreate a V\\+AO from vertices + UV data packed into a single array \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em data\\+\\_\\+count} & vertices data count \\\\\n\\hline\n{\\em data} & data containing all vertices (set of 3 x float) then all associated U\\+Vs (set of 2 x float) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL V\\+AO id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_ab1e510fded4ac300b4a21efd577604f3}\\label{fbg__glfw_8h_ab1e510fded4ac300b4a21efd577604f3}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Fullscreen@{fbg\\+\\_\\+glfw\\+Fullscreen}}\n\\index{fbg\\+\\_\\+glfw\\+Fullscreen@{fbg\\+\\_\\+glfw\\+Fullscreen}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Fullscreen()}{fbg\\_glfwFullscreen()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+glfw\\+Fullscreen (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{enable }\\end{DoxyParamCaption})}\n\n\n\nSwitch to fullscreen or windowed mode. \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em enable} & Boolean indicating windowed or fullscreen \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbg__glfw_8h_af724a4a5f9f195765ef6b11255851848}\\label{fbg__glfw_8h_af724a4a5f9f195765ef6b11255851848}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Resize@{fbg\\+\\_\\+glfw\\+Resize}}\n\\index{fbg\\+\\_\\+glfw\\+Resize@{fbg\\+\\_\\+glfw\\+Resize}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Resize()}{fbg\\_glfwResize()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+glfw\\+Resize (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned int}]{new\\+\\_\\+width,  }\\item[{unsigned}]{new\\+\\_\\+height }\\end{DoxyParamCaption})}\n\n\n\nDisplay resize. \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em new\\+\\_\\+width} & new display width \\\\\n\\hline\n{\\em new\\+\\_\\+height} & new display height \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a41d8a89a2bf7c6d2310d07eae206faa9}\\label{fbg__glfw_8h_a41d8a89a2bf7c6d2310d07eae206faa9}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Setup@{fbg\\+\\_\\+glfw\\+Setup}}\n\\index{fbg\\+\\_\\+glfw\\+Setup@{fbg\\+\\_\\+glfw\\+Setup}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Setup()}{fbg\\_glfwSetup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+glfw\\+Setup (\\begin{DoxyParamCaption}\\item[{int}]{width,  }\\item[{int}]{height,  }\\item[{int}]{components,  }\\item[{const char $\\ast$}]{title,  }\\item[{int}]{monitor,  }\\item[{int}]{fullscreen }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics Open\\+GL context (G\\+L\\+FW library) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em width} & window width \\\\\n\\hline\n{\\em height} & window height \\\\\n\\hline\n{\\em components} & fbg context color components (4 for R\\+G\\+BA or 3 for R\\+GB) \\\\\n\\hline\n{\\em title} & window title \\\\\n\\hline\n{\\em monitor} & monitor id (0 = primary display) \\\\\n\\hline\n{\\em fullscreen} & 0 = windowed, 1 = fullscreen, 2 = windowed full screen \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nF\\+BG data structure pointer \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a723385d297914375f9c5269492b05b50}\\label{fbg__glfw_8h_a723385d297914375f9c5269492b05b50}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Should\\+Close@{fbg\\+\\_\\+glfw\\+Should\\+Close}}\n\\index{fbg\\+\\_\\+glfw\\+Should\\+Close@{fbg\\+\\_\\+glfw\\+Should\\+Close}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Should\\+Close()}{fbg\\_glfwShouldClose()}}\n{\\footnotesize\\ttfamily int fbg\\+\\_\\+glfw\\+Should\\+Close (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nQuery the user requested (window close etc) close status. \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nBoolean indicating close status \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a88a6523e8ce117e334bad1220bfbc55b}\\label{fbg__glfw_8h_a88a6523e8ce117e334bad1220bfbc55b}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Update\\+Buffer@{fbg\\+\\_\\+glfw\\+Update\\+Buffer}}\n\\index{fbg\\+\\_\\+glfw\\+Update\\+Buffer@{fbg\\+\\_\\+glfw\\+Update\\+Buffer}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Update\\+Buffer()}{fbg\\_glfwUpdateBuffer()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+glfw\\+Update\\+Buffer (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nthis update F\\+BG disp\\+\\_\\+buffer with the actual rendered Open\\+GL content \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\n\n\\subsection{Variable Documentation}\n\\mbox{\\Hypertarget{fbg__glfw_8h_a06771c76a305bf753611309286e73c07}\\label{fbg__glfw_8h_a06771c76a305bf753611309286e73c07}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Quad@{fbg\\+\\_\\+glfw\\+Quad}}\n\\index{fbg\\+\\_\\+glfw\\+Quad@{fbg\\+\\_\\+glfw\\+Quad}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Quad}{fbg\\_glfwQuad}}\n{\\footnotesize\\ttfamily const G\\+Lfloat fbg\\+\\_\\+glfw\\+Quad\\mbox{[}$\\,$\\mbox{]}}\n\n\n\nSimple quad geometry (vertices + UV) \n\n\\mbox{\\Hypertarget{fbg__glfw_8h_a9fd4455e8dddd7c55fb5fb3e5d973f36}\\label{fbg__glfw_8h_a9fd4455e8dddd7c55fb5fb3e5d973f36}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Simple\\+Fs@{fbg\\+\\_\\+glfw\\+Simple\\+Fs}}\n\\index{fbg\\+\\_\\+glfw\\+Simple\\+Fs@{fbg\\+\\_\\+glfw\\+Simple\\+Fs}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Simple\\+Fs}{fbg\\_glfwSimpleFs}}\n{\\footnotesize\\ttfamily const char$\\ast$ fbg\\+\\_\\+glfw\\+Simple\\+Fs}\n\n\n\nSimple textured fragment shader. \n\n\\mbox{\\Hypertarget{fbg__glfw_8h_a998669be4cb45dda77c48cb23891fc4e}\\label{fbg__glfw_8h_a998669be4cb45dda77c48cb23891fc4e}} \n\\index{fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}!fbg\\+\\_\\+glfw\\+Simple\\+Vs@{fbg\\+\\_\\+glfw\\+Simple\\+Vs}}\n\\index{fbg\\+\\_\\+glfw\\+Simple\\+Vs@{fbg\\+\\_\\+glfw\\+Simple\\+Vs}!fbg\\+\\_\\+glfw.\\+h@{fbg\\+\\_\\+glfw.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+glfw\\+Simple\\+Vs}{fbg\\_glfwSimpleVs}}\n{\\footnotesize\\ttfamily const char$\\ast$ fbg\\+\\_\\+glfw\\+Simple\\+Vs}\n\n\n\nSimple vertex shader (screen quad, vertices + UV) \n\n"
  },
  {
    "path": "documentation/latex/fbg__opengl__es2_8h.tex",
    "content": "\\hypertarget{fbg__opengl__es2_8h}{}\\section{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h File Reference}\n\\label{fbg__opengl__es2_8h}\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n{\\ttfamily \\#include $<$sys/ioctl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$linux/fb.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$unistd.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$fcntl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$G\\+L\\+E\\+S2/gl2.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$E\\+G\\+L/egl.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$E\\+G\\+L/eglext.\\+h$>$}\\newline\n{\\ttfamily \\#include \\char`\\\"{}fbgraphics.\\+h\\char`\\\"{}}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__gles2__context}{\\+\\_\\+fbg\\+\\_\\+gles2\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em Open\\+GL ES 2.\\+0 wrapper data structure.  \\hyperlink{fbg__opengl__es2_8h_struct__fbg__gles2__context}{More...}\\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data}\n\\begin{DoxyCompactList}\\small\\item\\em struct which hold usual V\\+BO data for 3D objects  \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{More...}\\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbg__opengl__es2_8h_aa6d3bab630c17f240843c2872b05d18a}{fbg\\+\\_\\+gles2\\+Setup} (const char $\\ast$fb\\+\\_\\+device, int components)\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics Open\\+GL ES 2 (fbdev or R\\+PI direct) context \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__opengl__es2_8h_a56535b156300a90cf5aa817fc4fdfe95}{fbg\\+\\_\\+gles2\\+Clear} ()\n\\begin{DoxyCompactList}\\small\\item\\em Open\\+GL clear. \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__opengl__es2_8h_a74b92a4aab0207a1c15d7e8fc1b723dc}{fbg\\+\\_\\+gles2\\+Update\\+Buffer} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em this update F\\+BG disp\\+\\_\\+buffer with the actual rendered Open\\+GL content \\end{DoxyCompactList}\\item \nint \\hyperlink{fbg__opengl__es2_8h_a182413439943678ce07ca310ccfded33}{fbg\\+\\_\\+gles2\\+Should\\+Close} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em Query the user requested (window close etc) close status. \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_a40a597d6ce20e0bbcd1009ae9fe7328e}{fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img)\n\\begin{DoxyCompactList}\\small\\item\\em create a non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture from a F\\+BG image \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_a78b04688484a4ff7ec9651f872d6d7c4}{fbg\\+\\_\\+gles2\\+Create\\+Texture} (G\\+Luint width, G\\+Luint height, G\\+Lint internal\\+\\_\\+format)\n\\begin{DoxyCompactList}\\small\\item\\em create an empty non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data} $\\ast$ \\hyperlink{fbg__opengl__es2_8h_ab7c677445f8e1853931f0d58bd53a9c0}{fbg\\+\\_\\+gles2\\+Create\\+V\\+BO} (G\\+Lsizeiptr indices\\+\\_\\+count, const G\\+Lvoid $\\ast$indices\\+\\_\\+data, size\\+\\_\\+t sizeof\\+\\_\\+indice\\+\\_\\+type, G\\+Lsizeiptr vertices\\+\\_\\+count, const G\\+Lvoid $\\ast$vertices\\+\\_\\+data, G\\+Lsizeiptr texcoords\\+\\_\\+count, const G\\+Lvoid $\\ast$texcoords\\+\\_\\+data, G\\+Lsizeiptr normals\\+\\_\\+count, const G\\+Lvoid $\\ast$normals\\+\\_\\+data, G\\+Lsizeiptr colors\\+\\_\\+count, const G\\+Lvoid $\\ast$colors\\+\\_\\+data)\n\\begin{DoxyCompactList}\\small\\item\\em create a V\\+BO from indexed data, support for vertices, U\\+Vs, normals and colors \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbg__opengl__es2_8h_a3ac6ebf34ab696d79368321eb231336e}{fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data} (struct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data} $\\ast$vbo\\+\\_\\+data)\n\\begin{DoxyCompactList}\\small\\item\\em free V\\+BO data (created with fbg\\+\\_\\+gles2\\+Create\\+V\\+BO) \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_ad5ee72a7f71de24bdee26e09816c51a9}{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu} (G\\+Lsizeiptr data\\+\\_\\+count, const G\\+Lvoid $\\ast$data)\n\\begin{DoxyCompactList}\\small\\item\\em create a V\\+BO from vertices + UV data packed into a single array \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_a6fecc8d59fce8fde2aa583d14d40e6c7}{fbg\\+\\_\\+gles2\\+Create\\+Shader} (G\\+Lenum type, const G\\+Lchar $\\ast$source)\n\\begin{DoxyCompactList}\\small\\item\\em create a F\\+BO \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_a1e9bdd02d2bd4d842a037d89f160c97d}{fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File} (G\\+Lenum type, const char $\\ast$filename)\n\\begin{DoxyCompactList}\\small\\item\\em create a shader from the content of a file \\end{DoxyCompactList}\\item \nG\\+Luint \\hyperlink{fbg__opengl__es2_8h_a99da9de6f427c8dfa282479526cab0d8}{fbg\\+\\_\\+gles2\\+Create\\+Program} (G\\+Luint vertex\\+\\_\\+shader, G\\+Luint fragment\\+\\_\\+shader)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment program \\end{DoxyCompactList}\\item \nG\\+Lenum \\hyperlink{fbg__opengl__es2_8h_aa40dcfe49b117e0cc56f0e37136d2e14}{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files} (const char $\\ast$vs, const char $\\ast$fs)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment/geometry program from a file \\end{DoxyCompactList}\\item \nG\\+Lenum \\hyperlink{fbg__opengl__es2_8h_a31d962efec67e4646f4e4d783f771f5b}{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String} (const char $\\ast$vs, const char $\\ast$fs)\n\\begin{DoxyCompactList}\\small\\item\\em create a vertex and/or fragment/geometry program from a string \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Variables}\n\\begin{DoxyCompactItemize}\n\\item \nconst G\\+Lfloat \\hyperlink{fbg__opengl__es2_8h_a9629d95895432370d9f324880289ad4d}{fbg\\+\\_\\+gles2\\+Quad} \\mbox{[}$\\,$\\mbox{]}\n\\begin{DoxyCompactList}\\small\\item\\em Simple quad geometry (vertices + UV) \\end{DoxyCompactList}\\item \nconst char $\\ast$ \\hyperlink{fbg__opengl__es2_8h_a03be1f1cb0a92af8c8c6dc6fcd990b68}{fbg\\+\\_\\+gles2\\+Simple\\+Vs}\n\\begin{DoxyCompactList}\\small\\item\\em Simple vertex shader (screen quad, vertices + UV) \\end{DoxyCompactList}\\item \nconst char $\\ast$ \\hyperlink{fbg__opengl__es2_8h_a6986e3484c0e218fd9d527643b74fe54}{fbg\\+\\_\\+gles2\\+Simple\\+Fs}\n\\begin{DoxyCompactList}\\small\\item\\em Simple textured fragment shader. \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Data Structure Documentation}\n\\index{\\+\\_\\+fbg\\+\\_\\+gles2\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+gles2\\+\\_\\+context}}\\label{struct__fbg__gles2__context}\n\\Hypertarget{fbg__opengl__es2_8h_struct__fbg__gles2__context}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+gles2\\+\\_\\+context}\nOpen\\+GL ES 2.\\+0 wrapper data structure. \n\nDefinition at line 47 of file fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a2ca2f4f23e8b651ec11708d211ed765b}\\label{fbg__opengl__es2_8h_a2ca2f4f23e8b651ec11708d211ed765b}} \nEGLContext&\negl\\_context&\nE\\+GL context. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_affc02efb9ec2cda13d822b275e596f74}\\label{fbg__opengl__es2_8h_affc02efb9ec2cda13d822b275e596f74}} \nEGLDisplay&\negl\\_display&\nE\\+GL display. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a0937c99d8efac543926d5cee7708b147}\\label{fbg__opengl__es2_8h_a0937c99d8efac543926d5cee7708b147}} \nvoid $\\ast$&\negl\\_image&\nE\\+GL image. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a82a71c25f8b378ca6d50bcfe9bde2228}\\label{fbg__opengl__es2_8h_a82a71c25f8b378ca6d50bcfe9bde2228}} \nEGLContext&\negl\\_surface&\nE\\+GL surface. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_af1ab819f45eb1407455cba90991c11e0}\\label{fbg__opengl__es2_8h_af1ab819f45eb1407455cba90991c11e0}} \nGLuint&\nfbg\\_texture&\nF\\+BG texture (updated at each frames) \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_ad91d53fa2f501b5ca598e7dfaef6c7a2}\\label{fbg__opengl__es2_8h_ad91d53fa2f501b5ca598e7dfaef6c7a2}} \nGLuint&\nfbg\\_vbo&\nF\\+BG V\\+BO. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_af4aca9e8f28ec07109a8c850d9e941f4}\\label{fbg__opengl__es2_8h_af4aca9e8f28ec07109a8c850d9e941f4}} \nint&\nfd&\nFramebuffer file descriptor. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a6dbba5982fbf4db17d85f5587ee2afd4}\\label{fbg__opengl__es2_8h_a6dbba5982fbf4db17d85f5587ee2afd4}} \nGLenum&\nsimple\\_program&\nSimple G\\+L\\+SL program (screen-\\/aligned textured quad) \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a2af2636ae98239c2cd1072e3cf9a5e26}\\label{fbg__opengl__es2_8h_a2af2636ae98239c2cd1072e3cf9a5e26}} \nint&\nupdate\\_buffer&\ntell wether fbg\\+\\_\\+gles2 should update fbg disp\\+\\_\\+buffer after rendering \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_adb624ccb30f3d6a3a4aea5c1cdb03592}\\label{fbg__opengl__es2_8h_adb624ccb30f3d6a3a4aea5c1cdb03592}} \nstruct fb\\_var\\_screeninfo&\nvinfo&\nFramebuffer device var. informations. \\\\\n\\hline\n\n\\end{DoxyFields}\n\\index{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data@{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data}}\\label{struct__fbg__vbo__data}\n\\Hypertarget{fbg__opengl__es2_8h_struct__fbg__vbo__data}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data}\nstruct which hold usual V\\+BO data for 3D objects \n\nDefinition at line 73 of file fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a14d3420112271942e23d0de0d3b53b20}\\label{fbg__opengl__es2_8h_a14d3420112271942e23d0de0d3b53b20}} \nGLuint&\ncbo&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_ad3d86948330c3e3887733228f8369a1d}\\label{fbg__opengl__es2_8h_ad3d86948330c3e3887733228f8369a1d}} \nGLuint&\nibo&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a795cc9acb2bec510a4681aa824fe2560}\\label{fbg__opengl__es2_8h_a795cc9acb2bec510a4681aa824fe2560}} \nGLuint&\nnbo&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_ab4bd72ffd8ed50a3153ce8458eec0498}\\label{fbg__opengl__es2_8h_ab4bd72ffd8ed50a3153ce8458eec0498}} \nGLuint&\ntbo&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a8b13e18bbdd0085855c8bbfae453bdeb}\\label{fbg__opengl__es2_8h_a8b13e18bbdd0085855c8bbfae453bdeb}} \nGLuint&\nvbo&\n\\\\\n\\hline\n\n\\end{DoxyFields}\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a56535b156300a90cf5aa817fc4fdfe95}\\label{fbg__opengl__es2_8h_a56535b156300a90cf5aa817fc4fdfe95}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Clear@{fbg\\+\\_\\+gles2\\+Clear}}\n\\index{fbg\\+\\_\\+gles2\\+Clear@{fbg\\+\\_\\+gles2\\+Clear}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Clear()}{fbg\\_gles2Clear()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+gles2\\+Clear (\\begin{DoxyParamCaption}{ }\\end{DoxyParamCaption})}\n\n\n\nOpen\\+GL clear. \n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a99da9de6f427c8dfa282479526cab0d8}\\label{fbg__opengl__es2_8h_a99da9de6f427c8dfa282479526cab0d8}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Program@{fbg\\+\\_\\+gles2\\+Create\\+Program}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Program@{fbg\\+\\_\\+gles2\\+Create\\+Program}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Program()}{fbg\\_gles2CreateProgram()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+Program (\\begin{DoxyParamCaption}\\item[{G\\+Luint}]{vertex\\+\\_\\+shader,  }\\item[{G\\+Luint}]{fragment\\+\\_\\+shader }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment program \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vertex\\+\\_\\+shader} & vertex shader id, can be 0 \\\\\n\\hline\n{\\em fragment\\+\\_\\+shader} & fragment shader id, can be 0 \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_aa40dcfe49b117e0cc56f0e37136d2e14}\\label{fbg__opengl__es2_8h_aa40dcfe49b117e0cc56f0e37136d2e14}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files@{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files@{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files()}{fbg\\_gles2CreateProgramFromFiles()}}\n{\\footnotesize\\ttfamily G\\+Lenum fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+Files (\\begin{DoxyParamCaption}\\item[{const char $\\ast$}]{vs,  }\\item[{const char $\\ast$}]{fs }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment/geometry program from a file \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vs} & vertex shader file \\\\\n\\hline\n{\\em fs} & fragment shader file \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a31d962efec67e4646f4e4d783f771f5b}\\label{fbg__opengl__es2_8h_a31d962efec67e4646f4e4d783f771f5b}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String@{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String@{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String()}{fbg\\_gles2CreateProgramFromString()}}\n{\\footnotesize\\ttfamily G\\+Lenum fbg\\+\\_\\+gles2\\+Create\\+Program\\+From\\+String (\\begin{DoxyParamCaption}\\item[{const char $\\ast$}]{vs,  }\\item[{const char $\\ast$}]{fs }\\end{DoxyParamCaption})}\n\n\n\ncreate a vertex and/or fragment/geometry program from a string \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vs} & vertex shader string \\\\\n\\hline\n{\\em fs} & fragment shader string \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a6fecc8d59fce8fde2aa583d14d40e6c7}\\label{fbg__opengl__es2_8h_a6fecc8d59fce8fde2aa583d14d40e6c7}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Shader@{fbg\\+\\_\\+gles2\\+Create\\+Shader}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Shader@{fbg\\+\\_\\+gles2\\+Create\\+Shader}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Shader()}{fbg\\_gles2CreateShader()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+Shader (\\begin{DoxyParamCaption}\\item[{G\\+Lenum}]{type,  }\\item[{const G\\+Lchar $\\ast$}]{source }\\end{DoxyParamCaption})}\n\n\n\ncreate a F\\+BO \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em texture} & GL texture id \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL F\\+BO idcreate a single shader\n\\end{DoxyReturn}\n\n\\begin{DoxyParams}{Parameters}\n{\\em type} & GL shader type \\\\\n\\hline\n{\\em source} & shader code \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a1e9bdd02d2bd4d842a037d89f160c97d}\\label{fbg__opengl__es2_8h_a1e9bdd02d2bd4d842a037d89f160c97d}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File@{fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File@{fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File()}{fbg\\_gles2CreateShaderFromFile()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+Shader\\+From\\+File (\\begin{DoxyParamCaption}\\item[{G\\+Lenum}]{type,  }\\item[{const char $\\ast$}]{filename }\\end{DoxyParamCaption})}\n\n\n\ncreate a shader from the content of a file \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em type} & GL shader type \\\\\n\\hline\n{\\em filename} & file to load \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL shader id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a78b04688484a4ff7ec9651f872d6d7c4}\\label{fbg__opengl__es2_8h_a78b04688484a4ff7ec9651f872d6d7c4}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Texture@{fbg\\+\\_\\+gles2\\+Create\\+Texture}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Texture@{fbg\\+\\_\\+gles2\\+Create\\+Texture}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Texture()}{fbg\\_gles2CreateTexture()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+Texture (\\begin{DoxyParamCaption}\\item[{G\\+Luint}]{width,  }\\item[{G\\+Luint}]{height,  }\\item[{G\\+Lint}]{internal\\+\\_\\+format }\\end{DoxyParamCaption})}\n\n\n\ncreate an empty non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em width} & width of the requested texture \\\\\n\\hline\n{\\em height} & height of the requested texture \\\\\n\\hline\n{\\em internal\\+\\_\\+format} & Open\\+GL format (G\\+L\\+\\_\\+\\+R\\+G\\+BA etc.) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL texture id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a40a597d6ce20e0bbcd1009ae9fe7328e}\\label{fbg__opengl__es2_8h_a40a597d6ce20e0bbcd1009ae9fe7328e}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image@{fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image@{fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image()}{fbg\\_gles2CreateTextureFromImage()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+Texture\\+From\\+Image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img }\\end{DoxyParamCaption})}\n\n\n\ncreate a non-\\/interpolated (N\\+E\\+A\\+R\\+E\\+ST) GL texture from a F\\+BG image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL texture id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_ab7c677445f8e1853931f0d58bd53a9c0}\\label{fbg__opengl__es2_8h_ab7c677445f8e1853931f0d58bd53a9c0}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+V\\+BO@{fbg\\+\\_\\+gles2\\+Create\\+V\\+BO}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+V\\+BO@{fbg\\+\\_\\+gles2\\+Create\\+V\\+BO}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+O()}{fbg\\_gles2CreateVBO()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data}$\\ast$ fbg\\+\\_\\+gles2\\+Create\\+V\\+BO (\\begin{DoxyParamCaption}\\item[{G\\+Lsizeiptr}]{indices\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{indices\\+\\_\\+data,  }\\item[{size\\+\\_\\+t}]{sizeof\\+\\_\\+indice\\+\\_\\+type,  }\\item[{G\\+Lsizeiptr}]{vertices\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{vertices\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{texcoords\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{texcoords\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{normals\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{normals\\+\\_\\+data,  }\\item[{G\\+Lsizeiptr}]{colors\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{colors\\+\\_\\+data }\\end{DoxyParamCaption})}\n\n\n\ncreate a V\\+BO from indexed data, support for vertices, U\\+Vs, normals and colors \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em indices\\+\\_\\+count} & indices count \\\\\n\\hline\n{\\em indices\\+\\_\\+data} & data containing indices \\\\\n\\hline\n{\\em sizeof\\+\\_\\+indice\\+\\_\\+type} & sizeof indice type \\\\\n\\hline\n{\\em vertices\\+\\_\\+count} & vertices count \\\\\n\\hline\n{\\em vertices\\+\\_\\+data} & data containing vertices \\\\\n\\hline\n{\\em texcoords\\+\\_\\+count} & uv count \\\\\n\\hline\n{\\em texcoords\\+\\_\\+data} & data containing uv \\\\\n\\hline\n{\\em normals\\+\\_\\+count} & normals count \\\\\n\\hline\n{\\em normals\\+\\_\\+data} & data containing normals \\\\\n\\hline\n{\\em colors\\+\\_\\+count} & colors count \\\\\n\\hline\n{\\em colors\\+\\_\\+data} & data containing colors \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data} data structure containing the V\\+B\\+Os \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_ad5ee72a7f71de24bdee26e09816c51a9}\\label{fbg__opengl__es2_8h_ad5ee72a7f71de24bdee26e09816c51a9}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu@{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu}}\n\\index{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu@{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu()}{fbg\\_gles2CreateVBOvu()}}\n{\\footnotesize\\ttfamily G\\+Luint fbg\\+\\_\\+gles2\\+Create\\+V\\+B\\+Ovu (\\begin{DoxyParamCaption}\\item[{G\\+Lsizeiptr}]{data\\+\\_\\+count,  }\\item[{const G\\+Lvoid $\\ast$}]{data }\\end{DoxyParamCaption})}\n\n\n\ncreate a V\\+BO from vertices + UV data packed into a single array \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em data\\+\\_\\+count} & vertices data count \\\\\n\\hline\n{\\em data} & data containing all vertices (set of 3 x float) then all associated U\\+Vs (set of 2 x float) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nGL V\\+BO id \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a3ac6ebf34ab696d79368321eb231336e}\\label{fbg__opengl__es2_8h_a3ac6ebf34ab696d79368321eb231336e}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data@{fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data}}\n\\index{fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data@{fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data()}{fbg\\_gles2FreeVBOData()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+gles2\\+Free\\+V\\+B\\+O\\+Data (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbg__opengl__es2_8h_struct__fbg__vbo__data}{\\+\\_\\+fbg\\+\\_\\+vbo\\+\\_\\+data} $\\ast$}]{vbo\\+\\_\\+data }\\end{DoxyParamCaption})}\n\n\n\nfree V\\+BO data (created with fbg\\+\\_\\+gles2\\+Create\\+V\\+BO) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em vbo\\+\\_\\+data} & data structure containing the V\\+B\\+Os \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_aa6d3bab630c17f240843c2872b05d18a}\\label{fbg__opengl__es2_8h_aa6d3bab630c17f240843c2872b05d18a}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Setup@{fbg\\+\\_\\+gles2\\+Setup}}\n\\index{fbg\\+\\_\\+gles2\\+Setup@{fbg\\+\\_\\+gles2\\+Setup}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Setup()}{fbg\\_gles2Setup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+gles2\\+Setup (\\begin{DoxyParamCaption}\\item[{const char $\\ast$}]{fb\\+\\_\\+device,  }\\item[{int}]{components }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics Open\\+GL ES 2 (fbdev or R\\+PI direct) context \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fb\\+\\_\\+device} & framebuffer device; example \\+: /dev/fb0 \\\\\n\\hline\n{\\em components} & fbg context color components (4 for R\\+G\\+BA or 3 for R\\+GB) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nF\\+BG data structure pointer \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a182413439943678ce07ca310ccfded33}\\label{fbg__opengl__es2_8h_a182413439943678ce07ca310ccfded33}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Should\\+Close@{fbg\\+\\_\\+gles2\\+Should\\+Close}}\n\\index{fbg\\+\\_\\+gles2\\+Should\\+Close@{fbg\\+\\_\\+gles2\\+Should\\+Close}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Should\\+Close()}{fbg\\_gles2ShouldClose()}}\n{\\footnotesize\\ttfamily int fbg\\+\\_\\+gles2\\+Should\\+Close (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nQuery the user requested (window close etc) close status. \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\nBoolean indicating close status \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a74b92a4aab0207a1c15d7e8fc1b723dc}\\label{fbg__opengl__es2_8h_a74b92a4aab0207a1c15d7e8fc1b723dc}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Update\\+Buffer@{fbg\\+\\_\\+gles2\\+Update\\+Buffer}}\n\\index{fbg\\+\\_\\+gles2\\+Update\\+Buffer@{fbg\\+\\_\\+gles2\\+Update\\+Buffer}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Update\\+Buffer()}{fbg\\_gles2UpdateBuffer()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+gles2\\+Update\\+Buffer (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nthis update F\\+BG disp\\+\\_\\+buffer with the actual rendered Open\\+GL content \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\n\n\\subsection{Variable Documentation}\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a9629d95895432370d9f324880289ad4d}\\label{fbg__opengl__es2_8h_a9629d95895432370d9f324880289ad4d}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Quad@{fbg\\+\\_\\+gles2\\+Quad}}\n\\index{fbg\\+\\_\\+gles2\\+Quad@{fbg\\+\\_\\+gles2\\+Quad}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Quad}{fbg\\_gles2Quad}}\n{\\footnotesize\\ttfamily const G\\+Lfloat fbg\\+\\_\\+gles2\\+Quad\\mbox{[}$\\,$\\mbox{]}}\n\n\n\nSimple quad geometry (vertices + UV) \n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a6986e3484c0e218fd9d527643b74fe54}\\label{fbg__opengl__es2_8h_a6986e3484c0e218fd9d527643b74fe54}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Simple\\+Fs@{fbg\\+\\_\\+gles2\\+Simple\\+Fs}}\n\\index{fbg\\+\\_\\+gles2\\+Simple\\+Fs@{fbg\\+\\_\\+gles2\\+Simple\\+Fs}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Simple\\+Fs}{fbg\\_gles2SimpleFs}}\n{\\footnotesize\\ttfamily const char$\\ast$ fbg\\+\\_\\+gles2\\+Simple\\+Fs}\n\n\n\nSimple textured fragment shader. \n\n\\mbox{\\Hypertarget{fbg__opengl__es2_8h_a03be1f1cb0a92af8c8c6dc6fcd990b68}\\label{fbg__opengl__es2_8h_a03be1f1cb0a92af8c8c6dc6fcd990b68}} \n\\index{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}!fbg\\+\\_\\+gles2\\+Simple\\+Vs@{fbg\\+\\_\\+gles2\\+Simple\\+Vs}}\n\\index{fbg\\+\\_\\+gles2\\+Simple\\+Vs@{fbg\\+\\_\\+gles2\\+Simple\\+Vs}!fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h@{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+gles2\\+Simple\\+Vs}{fbg\\_gles2SimpleVs}}\n{\\footnotesize\\ttfamily const char$\\ast$ fbg\\+\\_\\+gles2\\+Simple\\+Vs}\n\n\n\nSimple vertex shader (screen quad, vertices + UV) \n\n"
  },
  {
    "path": "documentation/latex/fbgraphics_8h.tex",
    "content": "\\hypertarget{fbgraphics_8h}{}\\section{fbgraphics.\\+h File Reference}\n\\label{fbgraphics_8h}\\index{fbgraphics.\\+h@{fbgraphics.\\+h}}\n{\\ttfamily \\#include $<$time.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$sys/time.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$stdint.\\+h$>$}\\newline\n{\\ttfamily \\#include $<$math.\\+h$>$}\\newline\n\\subsection*{Data Structures}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb}\n\\begin{DoxyCompactList}\\small\\item\\em R\\+G\\+BA color data structure.  \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{More...}\\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__hsl}{\\+\\_\\+fbg\\+\\_\\+hsl}\n\\begin{DoxyCompactList}\\small\\item\\em H\\+SL color data structure.  \\hyperlink{fbgraphics_8h_struct__fbg__hsl}{More...}\\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img}\n\\begin{DoxyCompactList}\\small\\item\\em Image data structure.  \\hyperlink{fbgraphics_8h_struct__fbg__img}{More...}\\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font}\n\\begin{DoxyCompactList}\\small\\item\\em Bitmap font data structure.  \\hyperlink{fbgraphics_8h_struct__fbg__font}{More...}\\end{DoxyCompactList}\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}\n\\begin{DoxyCompactList}\\small\\item\\em FB Graphics context data structure. \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\\subsection*{Macros}\n\\begin{DoxyCompactItemize}\n\\item \n\\#define \\hyperlink{fbgraphics_8h_a4f15c1c2215c201e644c4c3de812f16f}{fbg\\+\\_\\+fade}(fbg,  fade\\+\\_\\+amount)~\\hyperlink{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}{fbg\\+\\_\\+fade\\+Down}(fbg, fade\\+\\_\\+amount)\n\\begin{DoxyCompactList}\\small\\item\\em background fade to black with controllable factor \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write}(fbg,  text,  x,  y)~\\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text}(fbg, \\&fbg-\\/$>$current\\+\\_\\+font, text, x, y, fbg-\\/$>$text\\+\\_\\+color.\\+r, fbg-\\/$>$text\\+\\_\\+color.\\+g, fbg-\\/$>$text\\+\\_\\+color.\\+b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a text by using the current font and the current color \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale}(fbg,  img,  x,  y,  sx,  sy)~\\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex}(fbg, img, x, y, sx, sy, 0, 0, img-\\/$>$width, img-\\/$>$height)\n\\begin{DoxyCompactList}\\small\\item\\em draw a scaled image (Nearest-\\/neighbor algorithm) \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_af424bd0f275b38651aabf1a7e3e34de3}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX}(a,  b)~((a) $>$ (b) ? a \\+: b)\n\\begin{DoxyCompactList}\\small\\item\\em integer M\\+AX Math function \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_add101b7a583f64094141ce1de49f92a7}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN}(a,  b)~((a) $<$ (b) ? a \\+: b)\n\\begin{DoxyCompactList}\\small\\item\\em integer M\\+IN Math function \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_a1e3a69cf9aa6b9d50ac0dad1abb42390}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN}(x)~((x$<$0)?-\\/1\\+:((x$>$0)?1\\+:0))\n\\begin{DoxyCompactList}\\small\\item\\em integer S\\+I\\+GN function \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_aee61fffe4a48a3b1e5697eff6f5bbaf1}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD}(angle\\+\\_\\+degree)~((angle\\+\\_\\+degree) $\\ast$ M\\+\\_\\+\\+PI / 180.\\+0)\n\\begin{DoxyCompactList}\\small\\item\\em convert a degree angle to radians \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_ab377dd49e23e56f2325559991ac85347}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG}(angle\\+\\_\\+radians)~((angle\\+\\_\\+radians) $\\ast$ 180.\\+0 / M\\+\\_\\+\\+PI)\n\\begin{DoxyCompactList}\\small\\item\\em convert a radian angle to degree \\end{DoxyCompactList}\\item \n\\#define \\hyperlink{fbgraphics_8h_a17b79968958984d51750cae2ac7bea8f}{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER}(a,  b,  c)~(c $\\ast$ a + b $\\ast$ (1.f -\\/ a))\n\\end{DoxyCompactItemize}\n\\subsection*{Functions}\n\\begin{DoxyCompactItemize}\n\\item \nstruct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$ \\hyperlink{fbgraphics_8h_a8c36c8bfbfa3e589ea445d3197923823}{fbg\\+\\_\\+custom\\+Setup} (int width, int height, int components, int initialize\\+\\_\\+buffers, int allow\\+\\_\\+resizing, void $\\ast$user\\+\\_\\+context, void($\\ast$user\\+\\_\\+draw)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg), void($\\ast$user\\+\\_\\+flip)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg), void($\\ast$backend\\+\\_\\+resize)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int new\\+\\_\\+width, unsigned int new\\+\\_\\+height), void($\\ast$user\\+\\_\\+free)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg))\n\\begin{DoxyCompactList}\\small\\item\\em initialize a FB Graphics context (typically used by a custom rendering backend) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}{fbg\\+\\_\\+close} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em free up the memory associated with a FB Graphics context and close the framebuffer device \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a70e747dee4eda4a434b746e2bbd14386}{fbg\\+\\_\\+set\\+Resize\\+Callback} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, void($\\ast$user\\+\\_\\+resize)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int new\\+\\_\\+width, unsigned int new\\+\\_\\+height))\n\\begin{DoxyCompactList}\\small\\item\\em register a user resize callback \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}{fbg\\+\\_\\+resize} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int new\\+\\_\\+width, int new\\+\\_\\+height)\n\\item \nvoid \\hyperlink{fbgraphics_8h_a3604f59f02b47730a47a2fc15644d61e}{fbg\\+\\_\\+push\\+Resize} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int new\\+\\_\\+width, int new\\+\\_\\+height)\n\\item \nvoid \\hyperlink{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}{fbg\\+\\_\\+fade\\+Down} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char rgb\\+\\_\\+fade\\+\\_\\+amount)\n\\begin{DoxyCompactList}\\small\\item\\em background fade to black with controllable factor \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a19d56a111248b7f7d52f4bc6392d3743}{fbg\\+\\_\\+fade\\+Up} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char rgb\\+\\_\\+fade\\+\\_\\+amount)\n\\begin{DoxyCompactList}\\small\\item\\em background fade to white with controllable factor \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}{fbg\\+\\_\\+clear} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char brightness)\n\\begin{DoxyCompactList}\\small\\item\\em fast grayscale background clearing \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em set the filling color for fast drawing operations \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a416971e772c114423b6c037f81d6f5ea}{fbg\\+\\_\\+get\\+Pixel} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} $\\ast$color)\n\\begin{DoxyCompactList}\\small\\item\\em get the R\\+GB value of a pixel \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\+\\_\\+pixel} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a pixel \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}{fbg\\+\\_\\+pixela} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n\\begin{DoxyCompactList}\\small\\item\\em draw a pixel with alpha component (alpha blending) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}{fbg\\+\\_\\+fpixel} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y)\n\\begin{DoxyCompactList}\\small\\item\\em fast pixel drawing which use the fill color set by \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()} \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a990acac7dcc899656dc87c98404af777}{fbg\\+\\_\\+plot} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int index, unsigned char value)\n\\begin{DoxyCompactList}\\small\\item\\em direct pixel access from index value \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\+\\_\\+rect} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a rectangle \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a83a99e5c8d44e2acf52cad38519ececf}{fbg\\+\\_\\+recta} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n\\begin{DoxyCompactList}\\small\\item\\em draw a rectangle with alpha transparency \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}{fbg\\+\\_\\+frect} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, int w, int h)\n\\begin{DoxyCompactList}\\small\\item\\em fast rectangle drawing which use the fill color set by \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()} \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a0558e4513da1d844526d54afea4d1531}{fbg\\+\\_\\+hline} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, int w, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a horizontal line \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a3c4fb5fa694646ec66b50a32eaf38557}{fbg\\+\\_\\+vline} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x, int y, int h, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a vertical line \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a46f7354a04a7bfb7467d25394ce38303}{fbg\\+\\_\\+line} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int x1, int y1, int x2, int y2, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a line from two points (Bresenham algorithm) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a2a5a2ef48f5b26794473c51082fb75ab}{fbg\\+\\_\\+polygon} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int num\\+\\_\\+vertices, int $\\ast$vertices, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a polygon \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a1622b4cd13f223d161cd234ea1fe6125}{fbg\\+\\_\\+background} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em clear the background with a color \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_ac037925696a8bfab4163e011731a76a4}{fbg\\+\\_\\+hsl\\+To\\+R\\+GB} (struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} $\\ast$color, float h, float s, float l)\n\\begin{DoxyCompactList}\\small\\item\\em convert H\\+SL values to R\\+GB color \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_aaf344cf56286931ee7a4a0e5fce920fc}{fbg\\+\\_\\+rgb\\+To\\+Hsl} (struct \\hyperlink{fbgraphics_8h_struct__fbg__hsl}{\\+\\_\\+fbg\\+\\_\\+hsl} $\\ast$color, float r, float g, float b)\n\\begin{DoxyCompactList}\\small\\item\\em convert R\\+GB values to H\\+SL color \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\+\\_\\+draw} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em draw to the screen \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}{fbg\\+\\_\\+flip} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em flip the buffers \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$ \\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int width, unsigned int height)\n\\begin{DoxyCompactList}\\small\\item\\em create an empty image \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$ \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+NG} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, const char $\\ast$filename)\n\\begin{DoxyCompactList}\\small\\item\\em load a P\\+NG image from a file (lode\\+P\\+NG library) \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$ \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+EG} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, const char $\\ast$filename)\n\\begin{DoxyCompactList}\\small\\item\\em load a J\\+P\\+EG image from a file (Nano\\+J\\+P\\+EG library) \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$ \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, const char $\\ast$filename)\n\\begin{DoxyCompactList}\\small\\item\\em load an image (P\\+NG or J\\+P\\+EG) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img, int x, int y)\n\\begin{DoxyCompactList}\\small\\item\\em draw an image \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img, int x, int y, int cr, int cg, int cb)\n\\begin{DoxyCompactList}\\small\\item\\em draw an image with colorkeying support (image colorkey value will be ignored) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img, int x, int y, int cx, int cy, int cw, int ch)\n\\begin{DoxyCompactList}\\small\\item\\em draw a clipped image \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip} (struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img)\n\\begin{DoxyCompactList}\\small\\item\\em flip an image vertically \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img, int x, int y, float sx, float sy, int cx, int cy, int cw, int ch)\n\\begin{DoxyCompactList}\\small\\item\\em draw an image with support for clipping and scaling (Nearest-\\/neighbor algorithm) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image} (struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img)\n\\begin{DoxyCompactList}\\small\\item\\em free the memory associated with an image \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$ \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$img, int glyph\\+\\_\\+width, int glyph\\+\\_\\+height, unsigned char first\\+\\_\\+char)\n\\begin{DoxyCompactList}\\small\\item\\em create a bitmap font from an image \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_ac1ccfb0069d4567313391dc819ada76b}{fbg\\+\\_\\+text\\+Font} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$font)\n\\begin{DoxyCompactList}\\small\\item\\em set the current font \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}{fbg\\+\\_\\+text\\+Color} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char r, unsigned char g, unsigned char b)\n\\begin{DoxyCompactList}\\small\\item\\em set the current text color \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}{fbg\\+\\_\\+text\\+Background} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int r, int g, int b, int a)\n\\begin{DoxyCompactList}\\small\\item\\em set the current text background color (based on colorkey value!) \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a7165bceebbbe11332256d1bd4e179489}{fbg\\+\\_\\+text\\+Color\\+Key} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char v)\n\\begin{DoxyCompactList}\\small\\item\\em set the current text color key \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$fnt, char $\\ast$text, int x, int y, int r, int g, int b)\n\\begin{DoxyCompactList}\\small\\item\\em draw a text \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_aae823fe76a206cbc1fdd405c13d26830}{fbg\\+\\_\\+free\\+Font} (struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$font)\n\\begin{DoxyCompactList}\\small\\item\\em free the memory associated with a font \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_a112e427410882007fbcea78b0657c5f1}{fbg\\+\\_\\+draw\\+Framerate} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$fnt, int task, int x, int y, int r, int g, int b)\n\\begin{DoxyCompactList}\\small\\item\\em draw the framerate of a particular parallel task \\end{DoxyCompactList}\\item \nint \\hyperlink{fbgraphics_8h_a8125b5b37979f803c4640d9864fadbab}{fbg\\+\\_\\+get\\+Framerate} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, int task)\n\\begin{DoxyCompactList}\\small\\item\\em get the framerate of a particular task \\end{DoxyCompactList}\\item \nvoid \\hyperlink{fbgraphics_8h_adda2a3ebc3a63cc275c78c61e62ce437}{fbg\\+\\_\\+draw\\+Into} (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned char $\\ast$buffer)\n\\begin{DoxyCompactList}\\small\\item\\em set an offscreen target for all subsequent fbg context draw calls, it is important to reset back to display target once done by calling fbg\\+\\_\\+draw\\+Into(\\+N\\+U\\+L\\+L) otherwise you may have segfaults / memory leaks upon resizing and other actions \\end{DoxyCompactList}\\item \nfloat \\hyperlink{fbgraphics_8h_aedca9d7bf294d143f860d2f0ddcd528c}{fbg\\+\\_\\+randf} (float min, float max)\n\\begin{DoxyCompactList}\\small\\item\\em pseudo random number between min / max \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Data Structure Documentation}\n\\index{\\+\\_\\+fbg\\+\\_\\+rgb@{\\+\\_\\+fbg\\+\\_\\+rgb}}\\label{struct__fbg__rgb}\n\\Hypertarget{fbgraphics_8h_struct__fbg__rgb}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+rgb}\nR\\+G\\+BA color data structure. \n\nHold R\\+G\\+BA components \\mbox{[}0,255\\mbox{]} \n\nDefinition at line 74 of file fbgraphics.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbgraphics_8h_a683be8ec38b9931754fe8501c4df3019}\\label{fbgraphics_8h_a683be8ec38b9931754fe8501c4df3019}} \nunsigned char&\na&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a5eb0caaedd56ed29a1ef1f7941f414d7}\\label{fbgraphics_8h_a5eb0caaedd56ed29a1ef1f7941f414d7}} \nunsigned char&\nb&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a73d04c86a962adfeac115c18c231eae1}\\label{fbgraphics_8h_a73d04c86a962adfeac115c18c231eae1}} \nunsigned char&\ng&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a3974f2dce77af4058a1ae585f55c5bb8}\\label{fbgraphics_8h_a3974f2dce77af4058a1ae585f55c5bb8}} \nunsigned char&\nr&\n\\\\\n\\hline\n\n\\end{DoxyFields}\n\\index{\\+\\_\\+fbg\\+\\_\\+hsl@{\\+\\_\\+fbg\\+\\_\\+hsl}}\\label{struct__fbg__hsl}\n\\Hypertarget{fbgraphics_8h_struct__fbg__hsl}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+hsl}\nH\\+SL color data structure. \n\nHold H\\+SL components S/L \\mbox{[}0,1\\mbox{]}, H\\+UE \\mbox{[}0, 360\\mbox{]} \n\nDefinition at line 83 of file fbgraphics.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbgraphics_8h_a7246517249c3b27ed57f82a11da3c7d3}\\label{fbgraphics_8h_a7246517249c3b27ed57f82a11da3c7d3}} \nint&\nh&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a405724441abc0190dea559bf11b8b174}\\label{fbgraphics_8h_a405724441abc0190dea559bf11b8b174}} \nfloat&\nl&\n\\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a22a62f07da21ac2ef92365718104348f}\\label{fbgraphics_8h_a22a62f07da21ac2ef92365718104348f}} \nfloat&\ns&\n\\\\\n\\hline\n\n\\end{DoxyFields}\n\\index{\\+\\_\\+fbg\\+\\_\\+img@{\\+\\_\\+fbg\\+\\_\\+img}}\\label{struct__fbg__img}\n\\Hypertarget{fbgraphics_8h_struct__fbg__img}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+img}\nImage data structure. \n\nHold images informations and data \n\nDefinition at line 91 of file fbgraphics.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbgraphics_8h_ab996d65bce285a78c8a8f3ac99b40658}\\label{fbgraphics_8h_ab996d65bce285a78c8a8f3ac99b40658}} \nunsigned char $\\ast$&\ndata&\nR\\+GB image data (bpp depend on framebuffer settings) \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_ac6293cb3d118f0ccdde38c13cbefa9db}\\label{fbgraphics_8h_ac6293cb3d118f0ccdde38c13cbefa9db}} \nunsigned int&\nheight&\nImage height in pixels. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a6e666c23aea3d07ee2c8c9f83f25eed2}\\label{fbgraphics_8h_a6e666c23aea3d07ee2c8c9f83f25eed2}} \nunsigned int&\nwidth&\nImage width in pixels. \\\\\n\\hline\n\n\\end{DoxyFields}\n\\index{\\+\\_\\+fbg\\+\\_\\+font@{\\+\\_\\+fbg\\+\\_\\+font}}\\label{struct__fbg__font}\n\\Hypertarget{fbgraphics_8h_struct__fbg__font}\n\\subsubsection{struct \\+\\_\\+fbg\\+\\_\\+font}\nBitmap font data structure. \n\nHold bitmap font informations and associated image \n\nDefinition at line 103 of file fbgraphics.\\+h.\n\n\\begin{DoxyFields}{Data Fields}\n\\mbox{\\Hypertarget{fbgraphics_8h_a0e7995b285b04f41d883165b0e7e387f}\\label{fbgraphics_8h_a0e7995b285b04f41d883165b0e7e387f}} \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\_fbg\\_img} $\\ast$&\nbitmap&\nAssociated font image data structure. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a05730637b297339a1fe39db736335cff}\\label{fbgraphics_8h_a05730637b297339a1fe39db736335cff}} \nunsigned char&\nfirst\\_char&\nFirst A\\+S\\+C\\+II character of the bitmap font file. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a1a9dc1b888e744c8e8d69f1a39d7a0b3}\\label{fbgraphics_8h_a1a9dc1b888e744c8e8d69f1a39d7a0b3}} \nint $\\ast$&\nglyph\\_coord\\_x&\nPre-\\/computed X glyphs coordinates. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a929f320fae39630e84bd1c949b9d845d}\\label{fbgraphics_8h_a929f320fae39630e84bd1c949b9d845d}} \nint $\\ast$&\nglyph\\_coord\\_y&\nPre-\\/computed Y glyphs coordinates. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a3b11d9dc4724e8b789509882d4cff87e}\\label{fbgraphics_8h_a3b11d9dc4724e8b789509882d4cff87e}} \nint&\nglyph\\_height&\nHeight of a glyph. \\\\\n\\hline\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a279be685895357ebda19f155ed405efc}\\label{fbgraphics_8h_a279be685895357ebda19f155ed405efc}} \nint&\nglyph\\_width&\nWidth of a glyph. \\\\\n\\hline\n\n\\end{DoxyFields}\n\n\n\\subsection{Macro Definition Documentation}\n\\mbox{\\Hypertarget{fbgraphics_8h_aee61fffe4a48a3b1e5697eff6f5bbaf1}\\label{fbgraphics_8h_aee61fffe4a48a3b1e5697eff6f5bbaf1}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD}{\\_FBG\\_DEGTORAD}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+D\\+E\\+G\\+T\\+O\\+R\\+AD(\\begin{DoxyParamCaption}\\item[{}]{angle\\+\\_\\+degree }\\end{DoxyParamCaption})~((angle\\+\\_\\+degree) $\\ast$ M\\+\\_\\+\\+PI / 180.\\+0)}\n\n\n\nconvert a degree angle to radians \n\n\n\nDefinition at line 851 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_af424bd0f275b38651aabf1a7e3e34de3}\\label{fbgraphics_8h_af424bd0f275b38651aabf1a7e3e34de3}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX}{\\_FBG\\_MAX}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+AX(\\begin{DoxyParamCaption}\\item[{}]{a,  }\\item[{}]{b }\\end{DoxyParamCaption})~((a) $>$ (b) ? a \\+: b)}\n\n\n\ninteger M\\+AX Math function \n\n\n\nDefinition at line 844 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_add101b7a583f64094141ce1de49f92a7}\\label{fbgraphics_8h_add101b7a583f64094141ce1de49f92a7}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN}{\\_FBG\\_MIN}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+M\\+IN(\\begin{DoxyParamCaption}\\item[{}]{a,  }\\item[{}]{b }\\end{DoxyParamCaption})~((a) $<$ (b) ? a \\+: b)}\n\n\n\ninteger M\\+IN Math function \n\n\n\nDefinition at line 846 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_ab377dd49e23e56f2325559991ac85347}\\label{fbgraphics_8h_ab377dd49e23e56f2325559991ac85347}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG}{\\_FBG\\_RADTODEG}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+R\\+A\\+D\\+T\\+O\\+D\\+EG(\\begin{DoxyParamCaption}\\item[{}]{angle\\+\\_\\+radians }\\end{DoxyParamCaption})~((angle\\+\\_\\+radians) $\\ast$ 180.\\+0 / M\\+\\_\\+\\+PI)}\n\n\n\nconvert a radian angle to degree \n\n\n\nDefinition at line 853 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a1e3a69cf9aa6b9d50ac0dad1abb42390}\\label{fbgraphics_8h_a1e3a69cf9aa6b9d50ac0dad1abb42390}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN}{\\_FBG\\_SGN}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+GN(\\begin{DoxyParamCaption}\\item[{}]{x }\\end{DoxyParamCaption})~((x$<$0)?-\\/1\\+:((x$>$0)?1\\+:0))}\n\n\n\ninteger S\\+I\\+GN function \n\n\n\nDefinition at line 848 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a17b79968958984d51750cae2ac7bea8f}\\label{fbgraphics_8h_a17b79968958984d51750cae2ac7bea8f}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER}}\n\\index{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER@{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{\\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER}{\\_FBG\\_SOURCE\\_OVER}}\n{\\footnotesize\\ttfamily \\#define \\+\\_\\+\\+F\\+B\\+G\\+\\_\\+\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+O\\+V\\+ER(\\begin{DoxyParamCaption}\\item[{}]{a,  }\\item[{}]{b,  }\\item[{}]{c }\\end{DoxyParamCaption})~(c $\\ast$ a + b $\\ast$ (1.f -\\/ a))}\n\n\n\nDefinition at line 855 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a4f15c1c2215c201e644c4c3de812f16f}\\label{fbgraphics_8h_a4f15c1c2215c201e644c4c3de812f16f}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+fade@{fbg\\+\\_\\+fade}}\n\\index{fbg\\+\\_\\+fade@{fbg\\+\\_\\+fade}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fade}{fbg\\_fade}}\n{\\footnotesize\\ttfamily \\#define fbg\\+\\_\\+fade(\\begin{DoxyParamCaption}\\item[{}]{fbg,  }\\item[{}]{fade\\+\\_\\+amount }\\end{DoxyParamCaption})~\\hyperlink{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}{fbg\\+\\_\\+fade\\+Down}(fbg, fade\\+\\_\\+amount)}\n\n\n\nbackground fade to black with controllable factor \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em fade\\+\\_\\+amount} & fade amount \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a19d56a111248b7f7d52f4bc6392d3743}{fbg\\+\\_\\+fade\\+Up()}, \\hyperlink{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}{fbg\\+\\_\\+fade\\+Down()} \n\\end{DoxySeeAlso}\n\n\nDefinition at line 819 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}\\label{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image\\+Scale@{fbg\\+\\_\\+image\\+Scale}}\n\\index{fbg\\+\\_\\+image\\+Scale@{fbg\\+\\_\\+image\\+Scale}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image\\+Scale}{fbg\\_imageScale}}\n{\\footnotesize\\ttfamily \\#define fbg\\+\\_\\+image\\+Scale(\\begin{DoxyParamCaption}\\item[{}]{fbg,  }\\item[{}]{img,  }\\item[{}]{x,  }\\item[{}]{y,  }\\item[{}]{sx,  }\\item[{}]{sy }\\end{DoxyParamCaption})~\\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex}(fbg, img, x, y, sx, sy, 0, 0, img-\\/$>$width, img-\\/$>$height)}\n\n\n\ndraw a scaled image (Nearest-\\/neighbor algorithm) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em x} & image X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & image Y position (upper left coordinate) \\\\\n\\hline\n{\\em sx} & The X scale factor \\\\\n\\hline\n{\\em sy} & The Y scale factor \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()} \n\\end{DoxySeeAlso}\n\n\nDefinition at line 841 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}\\label{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+write@{fbg\\+\\_\\+write}}\n\\index{fbg\\+\\_\\+write@{fbg\\+\\_\\+write}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+write}{fbg\\_write}}\n{\\footnotesize\\ttfamily \\#define fbg\\+\\_\\+write(\\begin{DoxyParamCaption}\\item[{}]{fbg,  }\\item[{}]{text,  }\\item[{}]{x,  }\\item[{}]{y }\\end{DoxyParamCaption})~\\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text}(fbg, \\&fbg-\\/$>$current\\+\\_\\+font, text, x, y, fbg-\\/$>$text\\+\\_\\+color.\\+r, fbg-\\/$>$text\\+\\_\\+color.\\+g, fbg-\\/$>$text\\+\\_\\+color.\\+b)}\n\n\n\ndraw a text by using the current font and the current color \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em text} & the text to draw (\\textquotesingle{}~\\newline\n\\textquotesingle{} and \\textquotesingle{} \\textquotesingle{} are treated automatically) \\\\\n\\hline\n{\\em x} & \\\\\n\\hline\n{\\em y} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_ac1ccfb0069d4567313391dc819ada76b}{fbg\\+\\_\\+text\\+Font()}, \\hyperlink{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}{fbg\\+\\_\\+text\\+Color()}, \\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text()}, fbg\\+\\_\\+text\\+Colorkey(), \\hyperlink{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}{fbg\\+\\_\\+text\\+Background()} \n\\end{DoxySeeAlso}\n\n\nDefinition at line 829 of file fbgraphics.\\+h.\n\n\n\n\\subsection{Function Documentation}\n\\mbox{\\Hypertarget{fbgraphics_8h_a1622b4cd13f223d161cd234ea1fe6125}\\label{fbgraphics_8h_a1622b4cd13f223d161cd234ea1fe6125}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+background@{fbg\\+\\_\\+background}}\n\\index{fbg\\+\\_\\+background@{fbg\\+\\_\\+background}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+background()}{fbg\\_background()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+background (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\nclear the background with a color \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}{fbg\\+\\_\\+clear()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}\\label{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+clear@{fbg\\+\\_\\+clear}}\n\\index{fbg\\+\\_\\+clear@{fbg\\+\\_\\+clear}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+clear()}{fbg\\_clear()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+clear (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{brightness }\\end{DoxyParamCaption})}\n\n\n\nfast grayscale background clearing \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em brightness} & pixel brightness (grayscale) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1622b4cd13f223d161cd234ea1fe6125}{fbg\\+\\_\\+background()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}\\label{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+close@{fbg\\+\\_\\+close}}\n\\index{fbg\\+\\_\\+close@{fbg\\+\\_\\+close}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+close()}{fbg\\_close()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+close (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nfree up the memory associated with a FB Graphics context and close the framebuffer device \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a8c36c8bfbfa3e589ea445d3197923823}{fbg\\+\\_\\+custom\\+Setup()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}\\label{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+create\\+Font@{fbg\\+\\_\\+create\\+Font}}\n\\index{fbg\\+\\_\\+create\\+Font@{fbg\\+\\_\\+create\\+Font}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+create\\+Font()}{fbg\\_createFont()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font}$\\ast$ fbg\\+\\_\\+create\\+Font (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img,  }\\item[{int}]{glyph\\+\\_\\+width,  }\\item[{int}]{glyph\\+\\_\\+height,  }\\item[{unsigned char}]{first\\+\\_\\+char }\\end{DoxyParamCaption})}\n\n\n\ncreate a bitmap font from an image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em glyph\\+\\_\\+width} & glyph / character width \\\\\n\\hline\n{\\em glyph\\+\\_\\+height} & glyph / character height \\\\\n\\hline\n{\\em first\\+\\_\\+char} & the first character of the bitmap font \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} structure pointer \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_aae823fe76a206cbc1fdd405c13d26830}{fbg\\+\\_\\+free\\+Font()}, \\hyperlink{fbgraphics_8h_ac1ccfb0069d4567313391dc819ada76b}{fbg\\+\\_\\+text\\+Font()}, \\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, \\hyperlink{fbgraphics_8h_a112e427410882007fbcea78b0657c5f1}{fbg\\+\\_\\+draw\\+Framerate()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}\\label{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+create\\+Image@{fbg\\+\\_\\+create\\+Image}}\n\\index{fbg\\+\\_\\+create\\+Image@{fbg\\+\\_\\+create\\+Image}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+create\\+Image()}{fbg\\_createImage()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img}$\\ast$ fbg\\+\\_\\+create\\+Image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned int}]{width,  }\\item[{unsigned int}]{height }\\end{DoxyParamCaption})}\n\n\n\ncreate an empty image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em width} & image width \\\\\n\\hline\n{\\em height} & image height \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} data structure pointer \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a8c36c8bfbfa3e589ea445d3197923823}\\label{fbgraphics_8h_a8c36c8bfbfa3e589ea445d3197923823}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+custom\\+Setup@{fbg\\+\\_\\+custom\\+Setup}}\n\\index{fbg\\+\\_\\+custom\\+Setup@{fbg\\+\\_\\+custom\\+Setup}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+custom\\+Setup()}{fbg\\_customSetup()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg}$\\ast$ fbg\\+\\_\\+custom\\+Setup (\\begin{DoxyParamCaption}\\item[{int}]{width,  }\\item[{int}]{height,  }\\item[{int}]{components,  }\\item[{int}]{initialize\\+\\_\\+buffers,  }\\item[{int}]{allow\\+\\_\\+resizing,  }\\item[{void $\\ast$}]{user\\+\\_\\+context,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}]{user\\+\\_\\+draw,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}]{user\\+\\_\\+flip,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int new\\+\\_\\+width, unsigned int new\\+\\_\\+height)}]{backend\\+\\_\\+resize,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}]{user\\+\\_\\+free }\\end{DoxyParamCaption})}\n\n\n\ninitialize a FB Graphics context (typically used by a custom rendering backend) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em width} & render width \\\\\n\\hline\n{\\em height} & render height \\\\\n\\hline\n{\\em components} & image components (3 = R\\+GB, 4 = R\\+G\\+BA etc.) \\\\\n\\hline\n{\\em initialize\\+\\_\\+buffers} & wether internal buffers should be allocated / freed \\\\\n\\hline\n{\\em allow\\+\\_\\+resizing} & wether to allow internal context resize (any registered callbacks will still be called) \\\\\n\\hline\n{\\em user\\+\\_\\+context} & user rendering data storage (things like window context etc.) \\\\\n\\hline\n{\\em user\\+\\_\\+draw} & function to call upon \\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\+\\_\\+draw()} \\\\\n\\hline\n{\\em user\\+\\_\\+flip} & function to call upon \\hyperlink{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}{fbg\\+\\_\\+flip()} \\\\\n\\hline\n{\\em backend\\+\\_\\+resize} & function to call upon \\hyperlink{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}{fbg\\+\\_\\+resize()} \\\\\n\\hline\n{\\em user\\+\\_\\+free} & function to call upon \\hyperlink{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}{fbg\\+\\_\\+close()} \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{struct__fbg}{\\+\\_\\+fbg} structure pointer to pass to any F\\+BG library functions \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}{fbg\\+\\_\\+close()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}\\label{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+draw@{fbg\\+\\_\\+draw}}\n\\index{fbg\\+\\_\\+draw@{fbg\\+\\_\\+draw}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+draw()}{fbg\\_draw()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+draw (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\ndraw to the screen \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_a112e427410882007fbcea78b0657c5f1}\\label{fbgraphics_8h_a112e427410882007fbcea78b0657c5f1}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+draw\\+Framerate@{fbg\\+\\_\\+draw\\+Framerate}}\n\\index{fbg\\+\\_\\+draw\\+Framerate@{fbg\\+\\_\\+draw\\+Framerate}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+draw\\+Framerate()}{fbg\\_drawFramerate()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+draw\\+Framerate (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$}]{fnt,  }\\item[{int}]{task,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{r,  }\\item[{int}]{g,  }\\item[{int}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw the framerate of a particular parallel task \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em fnt} & \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} structure pointer \\\\\n\\hline\n{\\em task} & the task id \\\\\n\\hline\n{\\em x} & \\\\\n\\hline\n{\\em y} & \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_adda2a3ebc3a63cc275c78c61e62ce437}\\label{fbgraphics_8h_adda2a3ebc3a63cc275c78c61e62ce437}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+draw\\+Into@{fbg\\+\\_\\+draw\\+Into}}\n\\index{fbg\\+\\_\\+draw\\+Into@{fbg\\+\\_\\+draw\\+Into}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+draw\\+Into()}{fbg\\_drawInto()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+draw\\+Into (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char $\\ast$}]{buffer }\\end{DoxyParamCaption})}\n\n\n\nset an offscreen target for all subsequent fbg context draw calls, it is important to reset back to display target once done by calling fbg\\+\\_\\+draw\\+Into(\\+N\\+U\\+L\\+L) otherwise you may have segfaults / memory leaks upon resizing and other actions \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em buffer} & a buffer to render to, it should be the format of the display, target is the display if N\\+U\\+LL \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}\\label{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+fade\\+Down@{fbg\\+\\_\\+fade\\+Down}}\n\\index{fbg\\+\\_\\+fade\\+Down@{fbg\\+\\_\\+fade\\+Down}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fade\\+Down()}{fbg\\_fadeDown()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+fade\\+Down (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{rgb\\+\\_\\+fade\\+\\_\\+amount }\\end{DoxyParamCaption})}\n\n\n\nbackground fade to black with controllable factor \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em rgb\\+\\_\\+fade\\+\\_\\+amount} & fade amount \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a4f15c1c2215c201e644c4c3de812f16f}{fbg\\+\\_\\+fade()}, \\hyperlink{fbgraphics_8h_a19d56a111248b7f7d52f4bc6392d3743}{fbg\\+\\_\\+fade\\+Up()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a19d56a111248b7f7d52f4bc6392d3743}\\label{fbgraphics_8h_a19d56a111248b7f7d52f4bc6392d3743}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+fade\\+Up@{fbg\\+\\_\\+fade\\+Up}}\n\\index{fbg\\+\\_\\+fade\\+Up@{fbg\\+\\_\\+fade\\+Up}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fade\\+Up()}{fbg\\_fadeUp()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+fade\\+Up (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{rgb\\+\\_\\+fade\\+\\_\\+amount }\\end{DoxyParamCaption})}\n\n\n\nbackground fade to white with controllable factor \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em rgb\\+\\_\\+fade\\+\\_\\+amount} & fade amount \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_ab18823ca0e95ca51c5d6c69a48af8d0e}{fbg\\+\\_\\+fade\\+Down()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}\\label{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+fill@{fbg\\+\\_\\+fill}}\n\\index{fbg\\+\\_\\+fill@{fbg\\+\\_\\+fill}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fill()}{fbg\\_fill()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+fill (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\nset the filling color for fast drawing operations \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}{fbg\\+\\_\\+fpixel()}, \\hyperlink{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}{fbg\\+\\_\\+frect()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}\\label{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+flip@{fbg\\+\\_\\+flip}}\n\\index{fbg\\+\\_\\+flip@{fbg\\+\\_\\+flip}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+flip()}{fbg\\_flip()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+flip (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg }\\end{DoxyParamCaption})}\n\n\n\nflip the buffers \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}\\label{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+fpixel@{fbg\\+\\_\\+fpixel}}\n\\index{fbg\\+\\_\\+fpixel@{fbg\\+\\_\\+fpixel}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+fpixel()}{fbg\\_fpixel()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+fpixel (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y }\\end{DoxyParamCaption})}\n\n\n\nfast pixel drawing which use the fill color set by \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()} \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & pixel X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & pixel Y position (upper left coordinate) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\+\\_\\+pixel()}, \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()}, \\hyperlink{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}{fbg\\+\\_\\+pixela()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}\\label{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+frect@{fbg\\+\\_\\+frect}}\n\\index{fbg\\+\\_\\+frect@{fbg\\+\\_\\+frect}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+frect()}{fbg\\_frect()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+frect (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{w,  }\\item[{int}]{h }\\end{DoxyParamCaption})}\n\n\n\nfast rectangle drawing which use the fill color set by \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()} \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & rectangle X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & rectangle Y position (upper left coordinate) \\\\\n\\hline\n{\\em w} & rectangle width \\\\\n\\hline\n{\\em h} & rectangle height \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill}, \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\+\\_\\+rect()}, \\hyperlink{fbgraphics_8h_a83a99e5c8d44e2acf52cad38519ececf}{fbg\\+\\_\\+recta()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_aae823fe76a206cbc1fdd405c13d26830}\\label{fbgraphics_8h_aae823fe76a206cbc1fdd405c13d26830}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+free\\+Font@{fbg\\+\\_\\+free\\+Font}}\n\\index{fbg\\+\\_\\+free\\+Font@{fbg\\+\\_\\+free\\+Font}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+free\\+Font()}{fbg\\_freeFont()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+free\\+Font (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$}]{font }\\end{DoxyParamCaption})}\n\n\n\nfree the memory associated with a font \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em font} & \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}\\label{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+free\\+Image@{fbg\\+\\_\\+free\\+Image}}\n\\index{fbg\\+\\_\\+free\\+Image@{fbg\\+\\_\\+free\\+Image}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+free\\+Image()}{fbg\\_freeImage()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+free\\+Image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img }\\end{DoxyParamCaption})}\n\n\n\nfree the memory associated with an image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em img} & image structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a8125b5b37979f803c4640d9864fadbab}\\label{fbgraphics_8h_a8125b5b37979f803c4640d9864fadbab}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+get\\+Framerate@{fbg\\+\\_\\+get\\+Framerate}}\n\\index{fbg\\+\\_\\+get\\+Framerate@{fbg\\+\\_\\+get\\+Framerate}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+get\\+Framerate()}{fbg\\_getFramerate()}}\n{\\footnotesize\\ttfamily int fbg\\+\\_\\+get\\+Framerate (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{task }\\end{DoxyParamCaption})}\n\n\n\nget the framerate of a particular task \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em task} & the task id \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\ntask framerate \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbgraphics_8h_a416971e772c114423b6c037f81d6f5ea}\\label{fbgraphics_8h_a416971e772c114423b6c037f81d6f5ea}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+get\\+Pixel@{fbg\\+\\_\\+get\\+Pixel}}\n\\index{fbg\\+\\_\\+get\\+Pixel@{fbg\\+\\_\\+get\\+Pixel}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+get\\+Pixel()}{fbg\\_getPixel()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+get\\+Pixel (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} $\\ast$}]{color }\\end{DoxyParamCaption})}\n\n\n\nget the R\\+GB value of a pixel \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & \\\\\n\\hline\n{\\em y} & \\\\\n\\hline\n{\\em color} & a pointer to a \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} data structure \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_a0558e4513da1d844526d54afea4d1531}\\label{fbgraphics_8h_a0558e4513da1d844526d54afea4d1531}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+hline@{fbg\\+\\_\\+hline}}\n\\index{fbg\\+\\_\\+hline@{fbg\\+\\_\\+hline}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+hline()}{fbg\\_hline()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+hline (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{w,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a horizontal line \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & line X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & line Y position (upper left coordinate) \\\\\n\\hline\n{\\em w} & line width \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a3c4fb5fa694646ec66b50a32eaf38557}{fbg\\+\\_\\+vline}, \\hyperlink{fbgraphics_8h_a46f7354a04a7bfb7467d25394ce38303}{fbg\\+\\_\\+line()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_ac037925696a8bfab4163e011731a76a4}\\label{fbgraphics_8h_ac037925696a8bfab4163e011731a76a4}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+hsl\\+To\\+R\\+GB@{fbg\\+\\_\\+hsl\\+To\\+R\\+GB}}\n\\index{fbg\\+\\_\\+hsl\\+To\\+R\\+GB@{fbg\\+\\_\\+hsl\\+To\\+R\\+GB}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+hsl\\+To\\+R\\+G\\+B()}{fbg\\_hslToRGB()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+hsl\\+To\\+R\\+GB (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} $\\ast$}]{color,  }\\item[{float}]{h,  }\\item[{float}]{s,  }\\item[{float}]{l }\\end{DoxyParamCaption})}\n\n\n\nconvert H\\+SL values to R\\+GB color \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em color} & pointer to a \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} data structure \\\\\n\\hline\n{\\em h} & the hue \\\\\n\\hline\n{\\em s} & the saturation \\\\\n\\hline\n{\\em l} & the lightness \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\nrgb\\+To\\+Hsl() \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}\\label{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image@{fbg\\+\\_\\+image}}\n\\index{fbg\\+\\_\\+image@{fbg\\+\\_\\+image}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image()}{fbg\\_image()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img,  }\\item[{int}]{x,  }\\item[{int}]{y }\\end{DoxyParamCaption})}\n\n\n\ndraw an image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em x} & image X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & image Y position (upper left coordinate) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a3610bf730319af99045283ea66955741}\\label{fbgraphics_8h_a3610bf730319af99045283ea66955741}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image\\+Clip@{fbg\\+\\_\\+image\\+Clip}}\n\\index{fbg\\+\\_\\+image\\+Clip@{fbg\\+\\_\\+image\\+Clip}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image\\+Clip()}{fbg\\_imageClip()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+image\\+Clip (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{cx,  }\\item[{int}]{cy,  }\\item[{int}]{cw,  }\\item[{int}]{ch }\\end{DoxyParamCaption})}\n\n\n\ndraw a clipped image \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em x} & image X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & image Y position (upper left coordinate) \\\\\n\\hline\n{\\em cx} & The X coordinate where to start clipping \\\\\n\\hline\n{\\em cy} & The Y coordinate where to start clipping \\\\\n\\hline\n{\\em cw} & The width of the clipped image (from cx) \\\\\n\\hline\n{\\em ch} & The height of the clipped image (from cy) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}\\label{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image\\+Colorkey@{fbg\\+\\_\\+image\\+Colorkey}}\n\\index{fbg\\+\\_\\+image\\+Colorkey@{fbg\\+\\_\\+image\\+Colorkey}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image\\+Colorkey()}{fbg\\_imageColorkey()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+image\\+Colorkey (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{cr,  }\\item[{int}]{cg,  }\\item[{int}]{cb }\\end{DoxyParamCaption})}\n\n\n\ndraw an image with colorkeying support (image colorkey value will be ignored) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em x} & image X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & image Y position (upper left coordinate) \\\\\n\\hline\n{\\em cr} & colorkey red component \\\\\n\\hline\n{\\em cg} & colorkey green component \\\\\n\\hline\n{\\em cb} & colorkey blue component \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}\\label{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image\\+Ex@{fbg\\+\\_\\+image\\+Ex}}\n\\index{fbg\\+\\_\\+image\\+Ex@{fbg\\+\\_\\+image\\+Ex}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image\\+Ex()}{fbg\\_imageEx()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+image\\+Ex (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{float}]{sx,  }\\item[{float}]{sy,  }\\item[{int}]{cx,  }\\item[{int}]{cy,  }\\item[{int}]{cw,  }\\item[{int}]{ch }\\end{DoxyParamCaption})}\n\n\n\ndraw an image with support for clipping and scaling (Nearest-\\/neighbor algorithm) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em img} & image structure pointer \\\\\n\\hline\n{\\em x} & image X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & image Y position (upper left coordinate) \\\\\n\\hline\n{\\em sx} & The X scale factor \\\\\n\\hline\n{\\em sy} & The Y scale factor \\\\\n\\hline\n{\\em cx} & The X coordinate where to start clipping \\\\\n\\hline\n{\\em cy} & The Y coordinate where to start clipping \\\\\n\\hline\n{\\em cw} & The width of the clipped image (from cx) \\\\\n\\hline\n{\\em ch} & The height of the clipped image (from cy) \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}\\label{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+image\\+Flip@{fbg\\+\\_\\+image\\+Flip}}\n\\index{fbg\\+\\_\\+image\\+Flip@{fbg\\+\\_\\+image\\+Flip}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+image\\+Flip()}{fbg\\_imageFlip()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+image\\+Flip (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} $\\ast$}]{img }\\end{DoxyParamCaption})}\n\n\n\nflip an image vertically \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em img} & image structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a1e3ebfcc75e055a24f1a0f5765936d16}{fbg\\+\\_\\+create\\+Image()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a46f7354a04a7bfb7467d25394ce38303}\\label{fbgraphics_8h_a46f7354a04a7bfb7467d25394ce38303}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+line@{fbg\\+\\_\\+line}}\n\\index{fbg\\+\\_\\+line@{fbg\\+\\_\\+line}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+line()}{fbg\\_line()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+line (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x1,  }\\item[{int}]{y1,  }\\item[{int}]{x2,  }\\item[{int}]{y2,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a line from two points (Bresenham algorithm) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x1} & point 1 X position (upper left coordinate) \\\\\n\\hline\n{\\em y1} & point 1 Y position (upper left coordinate) \\\\\n\\hline\n{\\em x2} & point 2 X position (upper left coordinate) \\\\\n\\hline\n{\\em y2} & point 2 Y position (upper left coordinate) \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a0558e4513da1d844526d54afea4d1531}{fbg\\+\\_\\+hline()}, \\hyperlink{fbgraphics_8h_a3c4fb5fa694646ec66b50a32eaf38557}{fbg\\+\\_\\+vline()}, \\hyperlink{fbgraphics_8h_a2a5a2ef48f5b26794473c51082fb75ab}{fbg\\+\\_\\+polygon()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}\\label{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+load\\+Image@{fbg\\+\\_\\+load\\+Image}}\n\\index{fbg\\+\\_\\+load\\+Image@{fbg\\+\\_\\+load\\+Image}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+load\\+Image()}{fbg\\_loadImage()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img}$\\ast$ fbg\\+\\_\\+load\\+Image (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{const char $\\ast$}]{filename }\\end{DoxyParamCaption})}\n\n\n\nload an image (P\\+NG or J\\+P\\+EG) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em filename} & J\\+P\\+E\\+G/\\+P\\+NG image filename \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} data structure pointer \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}\\label{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+load\\+J\\+P\\+EG@{fbg\\+\\_\\+load\\+J\\+P\\+EG}}\n\\index{fbg\\+\\_\\+load\\+J\\+P\\+EG@{fbg\\+\\_\\+load\\+J\\+P\\+EG}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}{fbg\\_loadJPEG()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img}$\\ast$ fbg\\+\\_\\+load\\+J\\+P\\+EG (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{const char $\\ast$}]{filename }\\end{DoxyParamCaption})}\n\n\n\nload a J\\+P\\+EG image from a file (Nano\\+J\\+P\\+EG library) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em filename} & J\\+P\\+EG image filename \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} data structure pointer \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}{fbg\\+\\_\\+load\\+P\\+N\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}\\label{fbgraphics_8h_a4be92c5b1376fb7f06de1529b0a43f7f}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+load\\+P\\+NG@{fbg\\+\\_\\+load\\+P\\+NG}}\n\\index{fbg\\+\\_\\+load\\+P\\+NG@{fbg\\+\\_\\+load\\+P\\+NG}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+load\\+P\\+N\\+G()}{fbg\\_loadPNG()}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img}$\\ast$ fbg\\+\\_\\+load\\+P\\+NG (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{const char $\\ast$}]{filename }\\end{DoxyParamCaption})}\n\n\n\nload a P\\+NG image from a file (lode\\+P\\+NG library) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em filename} & P\\+NG image filename \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\n\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\+\\_\\+fbg\\+\\_\\+img} data structure pointer \n\\end{DoxyReturn}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\+\\_\\+free\\+Image()}, \\hyperlink{fbgraphics_8h_a600d896c04feec33d001662ca23e50ad}{fbg\\+\\_\\+image()}, \\hyperlink{fbgraphics_8h_a728d5bc6d1ee11e127db8722fe3cbc18}{fbg\\+\\_\\+image\\+Flip()}, \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\+\\_\\+image\\+Clip()}, \\hyperlink{fbgraphics_8h_ad05affc24eed0b9f906d6926b8f02fec}{fbg\\+\\_\\+load\\+J\\+P\\+E\\+G()}, \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\+\\_\\+load\\+Image()}, \\hyperlink{fbgraphics_8h_ad0c3a773dcab62f514726b03e54ad692}{fbg\\+\\_\\+image\\+Ex()}, \\hyperlink{fbgraphics_8h_a110e7e4228a6350bebc68b6bdfd6d24a}{fbg\\+\\_\\+image\\+Scale()}, \\hyperlink{fbgraphics_8h_a8ba2088b60304afa9ee7ce1b39bff114}{fbg\\+\\_\\+image\\+Colorkey()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}\\label{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+pixel@{fbg\\+\\_\\+pixel}}\n\\index{fbg\\+\\_\\+pixel@{fbg\\+\\_\\+pixel}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+pixel()}{fbg\\_pixel()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+pixel (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a pixel \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & pixel X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & pixel Y position (upper left coordinate) \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}{fbg\\+\\_\\+fpixel()}, \\hyperlink{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}{fbg\\+\\_\\+pixela()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}\\label{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+pixela@{fbg\\+\\_\\+pixela}}\n\\index{fbg\\+\\_\\+pixela@{fbg\\+\\_\\+pixela}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+pixela()}{fbg\\_pixela()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+pixela (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b,  }\\item[{unsigned char}]{a }\\end{DoxyParamCaption})}\n\n\n\ndraw a pixel with alpha component (alpha blending) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & pixel X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & pixel Y position (upper left coordinate) \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n{\\em a} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a5f656e76477d51b8faf039dd5baea65c}{fbg\\+\\_\\+fpixel()}, \\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\+\\_\\+pixel()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a990acac7dcc899656dc87c98404af777}\\label{fbgraphics_8h_a990acac7dcc899656dc87c98404af777}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+plot@{fbg\\+\\_\\+plot}}\n\\index{fbg\\+\\_\\+plot@{fbg\\+\\_\\+plot}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+plot()}{fbg\\_plot()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+plot (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{index,  }\\item[{unsigned char}]{value }\\end{DoxyParamCaption})}\n\n\n\ndirect pixel access from index value \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em index} & pixel index in the buffer \\\\\n\\hline\n{\\em value} & color value \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\+\\_\\+pixel()}, \\hyperlink{fbgraphics_8h_a224b9ae07cc8fcd8c497b1d5f7007b66}{fbg\\+\\_\\+fill()}, \\hyperlink{fbgraphics_8h_a08c6a08afcb5bd07793801554b8f0bfe}{fbg\\+\\_\\+pixela()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a2a5a2ef48f5b26794473c51082fb75ab}\\label{fbgraphics_8h_a2a5a2ef48f5b26794473c51082fb75ab}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+polygon@{fbg\\+\\_\\+polygon}}\n\\index{fbg\\+\\_\\+polygon@{fbg\\+\\_\\+polygon}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+polygon()}{fbg\\_polygon()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+polygon (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{num\\+\\_\\+vertices,  }\\item[{int $\\ast$}]{vertices,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a polygon \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em num\\+\\_\\+vertices} & the number of vertices \\\\\n\\hline\n{\\em vertices} & pointer to a list of vertices (a list of X/Y points) \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\mbox{\\Hypertarget{fbgraphics_8h_a3604f59f02b47730a47a2fc15644d61e}\\label{fbgraphics_8h_a3604f59f02b47730a47a2fc15644d61e}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+push\\+Resize@{fbg\\+\\_\\+push\\+Resize}}\n\\index{fbg\\+\\_\\+push\\+Resize@{fbg\\+\\_\\+push\\+Resize}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+push\\+Resize()}{fbg\\_pushResize()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+push\\+Resize (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{new\\+\\_\\+width,  }\\item[{int}]{new\\+\\_\\+height }\\end{DoxyParamCaption})}\n\npush a resize event for the FB Graphics context note \\+: the resize event is processed into the fbg\\+\\_\\+draw function note \\+: resizing is not yet allowed in framebuffer mode note \\+: if you want to immediately resize the context, see fbg\\+\\_\\+resize\n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em new\\+\\_\\+width} & new render width \\\\\n\\hline\n{\\em new\\+\\_\\+height} & new render height \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}{fbg\\+\\_\\+resize()}, \\hyperlink{fbgraphics_8h_a70e747dee4eda4a434b746e2bbd14386}{fbg\\+\\_\\+set\\+Resize\\+Callback()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_aedca9d7bf294d143f860d2f0ddcd528c}\\label{fbgraphics_8h_aedca9d7bf294d143f860d2f0ddcd528c}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+randf@{fbg\\+\\_\\+randf}}\n\\index{fbg\\+\\_\\+randf@{fbg\\+\\_\\+randf}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+randf()}{fbg\\_randf()}}\n{\\footnotesize\\ttfamily float fbg\\+\\_\\+randf (\\begin{DoxyParamCaption}\\item[{float}]{min,  }\\item[{float}]{max }\\end{DoxyParamCaption})}\n\n\n\npseudo random number between min / max \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em min} & \\\\\n\\hline\n{\\em max} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxyReturn}{Returns}\npseudo random number between min / max \n\\end{DoxyReturn}\n\\mbox{\\Hypertarget{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}\\label{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+rect@{fbg\\+\\_\\+rect}}\n\\index{fbg\\+\\_\\+rect@{fbg\\+\\_\\+rect}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+rect()}{fbg\\_rect()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+rect (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{w,  }\\item[{int}]{h,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a rectangle \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & rectangle X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & rectangle Y position (upper left coordinate) \\\\\n\\hline\n{\\em w} & rectangle width \\\\\n\\hline\n{\\em h} & rectangle height \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}{fbg\\+\\_\\+frect()}, \\hyperlink{fbgraphics_8h_a83a99e5c8d44e2acf52cad38519ececf}{fbg\\+\\_\\+recta()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a83a99e5c8d44e2acf52cad38519ececf}\\label{fbgraphics_8h_a83a99e5c8d44e2acf52cad38519ececf}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+recta@{fbg\\+\\_\\+recta}}\n\\index{fbg\\+\\_\\+recta@{fbg\\+\\_\\+recta}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+recta()}{fbg\\_recta()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+recta (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{w,  }\\item[{int}]{h,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b,  }\\item[{unsigned char}]{a }\\end{DoxyParamCaption})}\n\n\n\ndraw a rectangle with alpha transparency \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & rectangle X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & rectangle Y position (upper left coordinate) \\\\\n\\hline\n{\\em w} & rectangle width \\\\\n\\hline\n{\\em h} & rectangle height \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n{\\em a} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a543755814e43b77b0beebea7a08457db}{fbg\\+\\_\\+frect()}, \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\+\\_\\+rect()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}\\label{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+resize@{fbg\\+\\_\\+resize}}\n\\index{fbg\\+\\_\\+resize@{fbg\\+\\_\\+resize}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+resize()}{fbg\\_resize()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+resize (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{new\\+\\_\\+width,  }\\item[{int}]{new\\+\\_\\+height }\\end{DoxyParamCaption})}\n\nresize the FB Graphics context immediately note \\+: prefer the usage of fbg\\+\\_\\+push\\+Resize when integrating the resize event of a custom backend (fbg\\+\\_\\+push\\+Resize is thread safe all the time) note \\+: resizing is not yet allowed in framebuffer mode\n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em new\\+\\_\\+width} & new render width \\\\\n\\hline\n{\\em new\\+\\_\\+height} & new render height \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a3604f59f02b47730a47a2fc15644d61e}{fbg\\+\\_\\+push\\+Resize()}, \\hyperlink{fbgraphics_8h_a70e747dee4eda4a434b746e2bbd14386}{fbg\\+\\_\\+set\\+Resize\\+Callback()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_aaf344cf56286931ee7a4a0e5fce920fc}\\label{fbgraphics_8h_aaf344cf56286931ee7a4a0e5fce920fc}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+rgb\\+To\\+Hsl@{fbg\\+\\_\\+rgb\\+To\\+Hsl}}\n\\index{fbg\\+\\_\\+rgb\\+To\\+Hsl@{fbg\\+\\_\\+rgb\\+To\\+Hsl}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+rgb\\+To\\+Hsl()}{fbg\\_rgbToHsl()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+rgb\\+To\\+Hsl (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__hsl}{\\+\\_\\+fbg\\+\\_\\+hsl} $\\ast$}]{color,  }\\item[{float}]{r,  }\\item[{float}]{g,  }\\item[{float}]{b }\\end{DoxyParamCaption})}\n\n\n\nconvert R\\+GB values to H\\+SL color \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em color} & pointer to a \\hyperlink{fbgraphics_8h_struct__fbg__hsl}{\\+\\_\\+fbg\\+\\_\\+hsl} data structure \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_ac037925696a8bfab4163e011731a76a4}{fbg\\+\\_\\+hsl\\+To\\+R\\+G\\+B()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a70e747dee4eda4a434b746e2bbd14386}\\label{fbgraphics_8h_a70e747dee4eda4a434b746e2bbd14386}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+set\\+Resize\\+Callback@{fbg\\+\\_\\+set\\+Resize\\+Callback}}\n\\index{fbg\\+\\_\\+set\\+Resize\\+Callback@{fbg\\+\\_\\+set\\+Resize\\+Callback}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+set\\+Resize\\+Callback()}{fbg\\_setResizeCallback()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+set\\+Resize\\+Callback (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{void($\\ast$)(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int new\\+\\_\\+width, unsigned int new\\+\\_\\+height)}]{user\\+\\_\\+resize }\\end{DoxyParamCaption})}\n\n\n\nregister a user resize callback \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em user\\+\\_\\+resize} & resize function \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a00509b4956e358ae3f9135151c1e524a}{fbg\\+\\_\\+resize()}, \\hyperlink{fbgraphics_8h_a3604f59f02b47730a47a2fc15644d61e}{fbg\\+\\_\\+push\\+Resize()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}\\label{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+text@{fbg\\+\\_\\+text}}\n\\index{fbg\\+\\_\\+text@{fbg\\+\\_\\+text}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+text()}{fbg\\_text()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+text (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$}]{fnt,  }\\item[{char $\\ast$}]{text,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{r,  }\\item[{int}]{g,  }\\item[{int}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a text \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em fnt} & \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} structure pointer \\\\\n\\hline\n{\\em text} & the text to draw (\\textquotesingle{}~\\newline\n\\textquotesingle{} and \\textquotesingle{} \\textquotesingle{} are treated automatically) \\\\\n\\hline\n{\\em x} & \\\\\n\\hline\n{\\em y} & \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, fbg\\+\\_\\+text\\+Colorkey(), \\hyperlink{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}{fbg\\+\\_\\+text\\+Background()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}\\label{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+text\\+Background@{fbg\\+\\_\\+text\\+Background}}\n\\index{fbg\\+\\_\\+text\\+Background@{fbg\\+\\_\\+text\\+Background}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+text\\+Background()}{fbg\\_textBackground()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+text\\+Background (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{r,  }\\item[{int}]{g,  }\\item[{int}]{b,  }\\item[{int}]{a }\\end{DoxyParamCaption})}\n\n\n\nset the current text background color (based on colorkey value!) \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n{\\em a} & 0 = transparent background (based on colorkey), 255 = full text background \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, \\hyperlink{fbgraphics_8h_a7165bceebbbe11332256d1bd4e179489}{fbg\\+\\_\\+text\\+Color\\+Key()}, \\hyperlink{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}{fbg\\+\\_\\+text\\+Color()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}\\label{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+text\\+Color@{fbg\\+\\_\\+text\\+Color}}\n\\index{fbg\\+\\_\\+text\\+Color@{fbg\\+\\_\\+text\\+Color}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+text\\+Color()}{fbg\\_textColor()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+text\\+Color (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\nset the current text color \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, \\hyperlink{fbgraphics_8h_a7165bceebbbe11332256d1bd4e179489}{fbg\\+\\_\\+text\\+Color\\+Key()}, \\hyperlink{fbgraphics_8h_a2e82acd949a5c12a1fa494fb4c028ff1}{fbg\\+\\_\\+text\\+Background()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a7165bceebbbe11332256d1bd4e179489}\\label{fbgraphics_8h_a7165bceebbbe11332256d1bd4e179489}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+text\\+Color\\+Key@{fbg\\+\\_\\+text\\+Color\\+Key}}\n\\index{fbg\\+\\_\\+text\\+Color\\+Key@{fbg\\+\\_\\+text\\+Color\\+Key}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+text\\+Color\\+Key()}{fbg\\_textColorKey()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+text\\+Color\\+Key (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{unsigned char}]{v }\\end{DoxyParamCaption})}\n\n\n\nset the current text color key \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em v} & grayscale value \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, \\hyperlink{fbgraphics_8h_acae7a4ff39407371a52ebf9ae4c260c1}{fbg\\+\\_\\+text\\+Color()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_ac1ccfb0069d4567313391dc819ada76b}\\label{fbgraphics_8h_ac1ccfb0069d4567313391dc819ada76b}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+text\\+Font@{fbg\\+\\_\\+text\\+Font}}\n\\index{fbg\\+\\_\\+text\\+Font@{fbg\\+\\_\\+text\\+Font}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+text\\+Font()}{fbg\\_textFont()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+text\\+Font (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} $\\ast$}]{font }\\end{DoxyParamCaption})}\n\n\n\nset the current font \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em font} & \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} structure pointer \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\+\\_\\+create\\+Font()}, \\hyperlink{fbgraphics_8h_a3233e3de8fc3ad06391641241c77a1ea}{fbg\\+\\_\\+text()}, \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\+\\_\\+write()}, \\hyperlink{fbgraphics_8h_a112e427410882007fbcea78b0657c5f1}{fbg\\+\\_\\+draw\\+Framerate()} \n\\end{DoxySeeAlso}\n\\mbox{\\Hypertarget{fbgraphics_8h_a3c4fb5fa694646ec66b50a32eaf38557}\\label{fbgraphics_8h_a3c4fb5fa694646ec66b50a32eaf38557}} \n\\index{fbgraphics.\\+h@{fbgraphics.\\+h}!fbg\\+\\_\\+vline@{fbg\\+\\_\\+vline}}\n\\index{fbg\\+\\_\\+vline@{fbg\\+\\_\\+vline}!fbgraphics.\\+h@{fbgraphics.\\+h}}\n\\subsubsection{\\texorpdfstring{fbg\\+\\_\\+vline()}{fbg\\_vline()}}\n{\\footnotesize\\ttfamily void fbg\\+\\_\\+vline (\\begin{DoxyParamCaption}\\item[{struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$}]{fbg,  }\\item[{int}]{x,  }\\item[{int}]{y,  }\\item[{int}]{h,  }\\item[{unsigned char}]{r,  }\\item[{unsigned char}]{g,  }\\item[{unsigned char}]{b }\\end{DoxyParamCaption})}\n\n\n\ndraw a vertical line \n\n\n\\begin{DoxyParams}{Parameters}\n{\\em fbg} & pointer to a F\\+BG context / data structure \\\\\n\\hline\n{\\em x} & line X position (upper left coordinate) \\\\\n\\hline\n{\\em y} & line Y position (upper left coordinate) \\\\\n\\hline\n{\\em h} & line height \\\\\n\\hline\n{\\em r} & \\\\\n\\hline\n{\\em g} & \\\\\n\\hline\n{\\em b} & \\\\\n\\hline\n\\end{DoxyParams}\n\\begin{DoxySeeAlso}{See also}\n\\hyperlink{fbgraphics_8h_a0558e4513da1d844526d54afea4d1531}{fbg\\+\\_\\+hline}, \\hyperlink{fbgraphics_8h_a46f7354a04a7bfb7467d25394ce38303}{fbg\\+\\_\\+line()} \n\\end{DoxySeeAlso}\n"
  },
  {
    "path": "documentation/latex/files.tex",
    "content": "\\section{File List}\nHere is a list of all files with brief descriptions\\+:\\begin{DoxyCompactList}\n\\item\\contentsline{section}{\\hyperlink{fbg__dispmanx_8h}{fbg\\+\\_\\+dispmanx.\\+h} }{\\pageref{fbg__dispmanx_8h}}{}\n\\item\\contentsline{section}{\\hyperlink{fbg__fbdev_8h}{fbg\\+\\_\\+fbdev.\\+h} }{\\pageref{fbg__fbdev_8h}}{}\n\\item\\contentsline{section}{\\hyperlink{fbg__gba_8h}{fbg\\+\\_\\+gba.\\+h} }{\\pageref{fbg__gba_8h}}{}\n\\item\\contentsline{section}{\\hyperlink{fbg__glfw_8h}{fbg\\+\\_\\+glfw.\\+h} }{\\pageref{fbg__glfw_8h}}{}\n\\item\\contentsline{section}{\\hyperlink{fbg__opengl__es2_8h}{fbg\\+\\_\\+opengl\\+\\_\\+es2.\\+h} }{\\pageref{fbg__opengl__es2_8h}}{}\n\\item\\contentsline{section}{\\hyperlink{fbgraphics_8h}{fbgraphics.\\+h} }{\\pageref{fbgraphics_8h}}{}\n\\end{DoxyCompactList}\n"
  },
  {
    "path": "documentation/latex/index.tex",
    "content": "F\\+B\\+Graphics (F\\+BG) is a simple C 24, 32 bpp (internal format) graphics library with parallelism and custom rendering backend support (graphics A\\+PI agnostic).\n\nThe library is only two .c files on most use cases, the renderer agnostic library {\\ttfamily fbgraphics.\\+c} and one of the rendering backend found in {\\ttfamily custom\\+\\_\\+backend} directory.\n\nThe library come with five backend (see {\\ttfamily custom\\+\\_\\+backend} folder) \\+:\n\\begin{DoxyItemize}\n\\item a Linux framebuffer rendering backend (with 16 bpp support through 24/32 bpp conversion)\n\\item Open\\+GL backend which use the \\href{http://www.glfw.org/}{\\tt G\\+L\\+FW} library\n\\item Open\\+GL ES 2.\\+0 backend for fbdev or Raspberry PI\n\\item fast dispmanx backend (Video Core IV; Raspberry PI)\n\\item G\\+BA backend (slow due to 24/32 bpp -\\/$>$ 16 bpp support, mostly done as a proof of concept for portability on low memory hardware)\n\\end{DoxyItemize}\n\nFeatures \\+:\n\n\n\\begin{DoxyItemize}\n\\item Easy to write / use custom rendering backend support flexible enough to target low memory hardware!\n\\item Cross-\\/platform with the G\\+L\\+FW backend (some examples may need to be adapted to the target OS)\n\\item Linux framebuffer (fbdev) rendering backend support\n\\begin{DoxyItemize}\n\\item Double buffering (with optional page flipping mechanism)\n\\item 16, 24 (B\\+G\\+R/\\+R\\+GB), 32 bpp support\n\\end{DoxyItemize}\n\\item G\\+BA rendering backend\n\\item Open\\+GL rendering backend through G\\+L\\+FW\n\\item Open\\+GL ES 2.\\+0 rendering backend for Raspberry PI or through fbdev (tested on Nano PI Fire 3 board)\n\\item dispmanx rendering backend (Video Core IV; Raspberry PI)\n\\item Optional \\+: Full parallelism, execute graphics code on multiple C\\+PU cores {\\bfseries with a single function}\n\\item P\\+N\\+G/\\+J\\+P\\+EG images loading (provided by \\href{https://lodev.org/lodepng/}{\\tt Lode\\+P\\+NG} and \\href{http://keyj.emphy.de/nanojpeg/}{\\tt Nano\\+J\\+P\\+EG})\n\\item Bitmap fonts for drawing texts\n\\item Bare-\\/metal graphics primitive (pixels, rectangles, lines, polygon)\n\\item Easy to do fading, clipping and screen-\\/clearing related effects (motion blur etc.)\n\\item Drawing calls can be used to render into a specified target buffer such as fbg\\+\\_\\+image etc.\n\\item Framerate tracking \\& display for all cores\n\\item Lightweight enough to be hackable; adapt to all kinds of needs (and still support parallelism easily)\n\\end{DoxyItemize}\n\nThe library is generic, most functions (including parallel ones) only manipulate buffers and you can build a custom rendering backend pretty easily with few functions call, see the {\\ttfamily custom\\+\\_\\+backend} folder.\n\n\\section*{Table of Contents }\n\n\n\\begin{DoxyItemize}\n\\item F\\+B\\+Graphics\n\\begin{DoxyItemize}\n\\item \\href{#about}{\\tt About}\n\\begin{DoxyItemize}\n\\item \\href{#quickstart}{\\tt Quickstart}\n\\item \\href{#parallelism}{\\tt Parallelism}\n\\item \\href{#technical-implementation}{\\tt Technical implementation}\n\\end{DoxyItemize}\n\\item \\href{#benchmark}{\\tt Benchmark}\n\\item \\href{#documentation}{\\tt Documentation}\n\\item \\href{#building}{\\tt Building}\n\\item \\href{#Rendering-backend}{\\tt Rendering backend}\n\\item \\href{#GLFW-backend}{\\tt G\\+L\\+FW backend}\n\\item \\href{#OpenGL-ES-2-backend}{\\tt Open\\+GL ES 2.\\+0 backend}\n\\item \\href{#screenshots}{\\tt Screenshots}\n\\item \\href{#license}{\\tt License}\n\\end{DoxyItemize}\n\\end{DoxyItemize}\n\n\\subsection*{About}\n\nF\\+B\\+Graphics was built to produce fullscreen pixels effects easily (think of Processing-\\/like creative coding etc.) with non-\\/accelerated framebuffer by leveraging multi-\\/core processors, it is a bit like a software G\\+PU but much less complex and featured, the initial target platform was a Raspberry PI 3B / Nano\\+PI.\n\nF\\+B\\+Graphics was extended to support any numbers of custom rendering backend; all graphics calls manipulate internal buffers and a simple interface allow to draw the result the way you want to.\n\nF\\+B\\+Graphics can support low memory hardware such as G\\+BA. It should be noted that all internal buffers are manipulated in 24/32 bpp so it has to convert to 16bpp on G\\+BA.\n\nAn Open\\+GL rendering backend which use the \\href{http://www.glfw.org/}{\\tt G\\+L\\+FW library} was created to demonstrate the custom backend feature, it allow to draw the non-\\/accelerated FB Graphics buffer into an Open\\+GL context through a texture and thus allow to interwine 3D or 2D graphics produced with standard Open\\+GL calls with C\\+P\\+U-\\/only graphics produced by F\\+B\\+Graphics draw calls.\n\nAn Open\\+GL ES 2.\\+0 backend is also available with similar features, it target platforms with support for Open\\+GL ES 2.\\+0 through fbdev (tested on Nano PI Fire 3 S\\+BC) or Raspberry PI dispmanx and similar platforms, it wouldn\\textquotesingle{}t be hard to extend this for more Open\\+GL ES 2.\\+0 platforms...\n\nThere is also a dispmanx backend targeting Raspberry PI, it have better performances than the Open\\+GL ES 2 backend on this platform and is recommended if you don\\textquotesingle{}t need 3D stuff.\n\nF\\+B\\+Graphics was built so that it is possible to create any number of rendering context using different backend running at the same time while exploiting multi-\\/core processors... the content of any rendering context can be transfered into other context through images when calling {\\ttfamily fbg\\+\\_\\+draw\\+Into}\n\nF\\+B\\+Graphics framebuffer settings support 16, 24 (B\\+G\\+R/\\+R\\+GB), 32 bpp, 16 bpp mode is handled by converting from 24 bpp to 16 bpp upon drawing, page flipping mechanism is disabled in 16 bpp mode, {\\bfseries 24 bpp is the fastest mode}.\n\nF\\+B\\+Graphics is lightweight and does not intend to be a fully featured graphics library, it provide a limited set of graphics primitive and a small set of useful functions to start doing computer graphics anywhere right away with or without multi-\\/core support.\n\nIf you want to use the parallelism features with advanced graphics primitives, take a look at great libraries such as \\href{http://libgd.github.io/}{\\tt libgd}, \\href{https://github.com/adafruit/Adafruit-GFX-Library}{\\tt Adafruit G\\+FX library} or even \\href{https://imagemagick.org}{\\tt Image\\+Magick} which should be easy to integrate.\n\nF\\+B\\+Graphics is fast but should be used with caution, display bounds checking is not implemented on most primitives, this allow raw performances at the cost of crashs if not careful.\n\nMulti-\\/core support is optional and is only enabled when {\\ttfamily F\\+B\\+G\\+\\_\\+\\+P\\+A\\+R\\+A\\+L\\+L\\+EL} C definition is present.\n\nF\\+B\\+Graphics framebuffer backend support a mechanism known as page flipping, it allow fast double buffering by doubling the framebuffer virtual area, it is disabled by default because it is actually slower on some devices. You can enable it with a {\\ttfamily fbg\\+\\_\\+fbdev\\+Setup} call.\n\nV\\+Sync is automatically enabled if supported.\n\n{\\bfseries Note} \\+: F\\+B\\+Graphics framebuffer backend does not let you setup the framebuffer, it expect the framebuffer to be configured prior launch with a command such as \\+:\n\n\n\\begin{DoxyCode}\nfbset -fb /dev/fb0 -g 512 240 512 240 24 -vsync high\nsetterm -cursor off > /dev/tty0\n\\end{DoxyCode}\n\n\n{\\ttfamily fbset} should be available in your package manager.\n\n\\subsubsection*{Framebuffer Quickstart}\n\nThe simplest example (no parallelism, without texts and images) \\+:\n\n\n\\begin{DoxyCode}\n\\textcolor{preprocessor}{#include <sys/stat.h>}\n\\textcolor{preprocessor}{#include <signal.h>}\n\n\\textcolor{preprocessor}{#include \"\\hyperlink{fbg__fbdev_8h}{fbg\\_fbdev.h}\"}\n\\textcolor{preprocessor}{#include \"\\hyperlink{fbgraphics_8h}{fbgraphics.h}\"}\n\n\\textcolor{keywordtype}{int} keep\\_running = 1;\n\n\\textcolor{keywordtype}{void} int\\_handler(\\textcolor{keywordtype}{int} dummy) \\{\n    keep\\_running = 0;\n\\}\n\n\\textcolor{keywordtype}{int} main(\\textcolor{keywordtype}{int} argc, \\textcolor{keywordtype}{char}* argv[]) \\{\n    signal(SIGINT, int\\_handler);\n\n    \\textcolor{keyword}{struct }\\hyperlink{struct__fbg}{\\_fbg} *fbg = \\hyperlink{fbg__fbdev_8h_a038c291213ab0fa68de9fadd0fb2d31e}{fbg\\_fbdevSetup}(\\textcolor{stringliteral}{\"/dev/fb0\"}, 0); \\textcolor{comment}{// you can also directly use\n       fbg\\_fbdevInit(); for \"/dev/fb0\", last argument mean that will not use page flipping mechanism  for double\n       buffering (it is actually slower on some devices!)}\n\n    \\textcolor{keywordflow}{do} \\{\n        \\hyperlink{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}{fbg\\_clear}(fbg, 0); \\textcolor{comment}{// can also be replaced by fbg\\_fill(fbg, 0, 0, 0);}\n\n        \\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\_draw}(fbg);\n\n        \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\_rect}(fbg, fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width} / 2 - 32, fbg->\\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height} / 2 - 32, 16, 16, 0, 255, 0);\n\n        \\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\_pixel}(fbg, fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width} / 2, fbg->\\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height} / 2, 255, 0, 0);\n\n        \\hyperlink{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}{fbg\\_flip}(fbg);\n\n    \\} \\textcolor{keywordflow}{while} (keep\\_running);\n\n    \\hyperlink{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}{fbg\\_close}(fbg);\n\n    \\textcolor{keywordflow}{return} 0;\n\\}\n\\end{DoxyCode}\n\n\nA simple quickstart example with most features (but no parallelism, see below) \\+:\n\n\n\\begin{DoxyCode}\n\\textcolor{preprocessor}{#include <sys/stat.h>}\n\\textcolor{preprocessor}{#include <signal.h>}\n\n\\textcolor{preprocessor}{#include \"\\hyperlink{fbg__fbdev_8h}{fbg\\_fbdev.h}\"}\n\\textcolor{preprocessor}{#include \"\\hyperlink{fbgraphics_8h}{fbgraphics.h}\"}\n\n\\textcolor{keywordtype}{int} keep\\_running = 1;\n\n\\textcolor{keywordtype}{void} int\\_handler(\\textcolor{keywordtype}{int} dummy) \\{\n    keep\\_running = 0;\n\\}\n\n\\textcolor{keywordtype}{int} main(\\textcolor{keywordtype}{int} argc, \\textcolor{keywordtype}{char}* argv[]) \\{\n    signal(SIGINT, int\\_handler);\n\n    \\textcolor{keyword}{struct }\\hyperlink{struct__fbg}{\\_fbg} *fbg = \\hyperlink{fbg__fbdev_8h_a8ebf35a2c6451e36bd33e3e985f418dc}{fbg\\_fbdevInit}();\n\n    \\textcolor{keyword}{struct }\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\_fbg\\_img} *texture = \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\_loadImage}(fbg, \\textcolor{stringliteral}{\"texture.png\"});\n    \\textcolor{keyword}{struct }\\hyperlink{fbgraphics_8h_struct__fbg__img}{\\_fbg\\_img} *bb\\_font\\_img = \\hyperlink{fbgraphics_8h_a731ce4c5439d16555aa6ec48751ecea6}{fbg\\_loadImage}(fbg, \\textcolor{stringliteral}{\"bbmode1\\_8x8.png\"});\n\n    \\textcolor{keyword}{struct }\\hyperlink{fbgraphics_8h_struct__fbg__font}{\\_fbg\\_font} *bbfont = \\hyperlink{fbgraphics_8h_afdcb72ae08437471569c4880fb43f20c}{fbg\\_createFont}(fbg, bb\\_font\\_img, 8, 8, 33);\n\n    \\textcolor{keywordflow}{do} \\{\n        \\hyperlink{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}{fbg\\_clear}(fbg, 0);\n\n        \\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\_draw}(fbg);\n\n        \\textcolor{comment}{// you can also use fbg\\_image(fbg, texture, 0, 0)}\n        \\textcolor{comment}{// but you must be sure that your image size fit on the display}\n        \\hyperlink{fbgraphics_8h_a3610bf730319af99045283ea66955741}{fbg\\_imageClip}(fbg, texture, 0, 0, 0, 0, fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width}, fbg->\n      \\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height});\n\n        \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\_write}(fbg, \\textcolor{stringliteral}{\"Quickstart example\\(\\backslash\\)nFPS:\"}, 4, 2);\n        \\hyperlink{fbgraphics_8h_a45d1d295d53d80013ca6d55487c02fa0}{fbg\\_write}(fbg, fbg->\\hyperlink{struct__fbg_af447e6ed58d893989c8dad075807a79b}{fps\\_char}, 32 + 8, 2 + 8);\n\n        \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\_rect}(fbg, fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width} / 2 - 32, fbg->\\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height} / 2 - 32, 16, 16, 0, 255, 0);\n\n        \\hyperlink{fbgraphics_8h_a7d81b1ddf54b0d4da0f30e36d7e2f3bb}{fbg\\_pixel}(fbg, fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width} / 2, fbg->\\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height} / 2, 255, 0, 0);\n\n        \\hyperlink{fbgraphics_8h_aedfec23bc4c51ff5ffb843bb289d448b}{fbg\\_flip}(fbg);\n\n    \\} \\textcolor{keywordflow}{while} (keep\\_running);\n\n    \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\_freeImage}(texture);\n    \\hyperlink{fbgraphics_8h_a737482b6170ea3273d6679fdca63a27c}{fbg\\_freeImage}(bb\\_font\\_img);\n    \\hyperlink{fbgraphics_8h_aae823fe76a206cbc1fdd405c13d26830}{fbg\\_freeFont}(bbfont);\n\n    \\hyperlink{fbgraphics_8h_a390cd3fb535cbad76856700a035ed401}{fbg\\_close}(fbg);\n\n    \\textcolor{keywordflow}{return} 0;\n\\}\n\\end{DoxyCode}\n\n\n{\\bfseries Note} \\+: Functions like {\\ttfamily fbg\\+\\_\\+clear} or {\\ttfamily fbg\\+\\_\\+fpixel} are fast functions, there is slower equivalent (but more parametrable) such as {\\ttfamily fbg\\+\\_\\+background} or {\\ttfamily fbg\\+\\_\\+pixel}, some functions variant also support transparency such as `{\\ttfamily fbg\\+\\_\\+pixela} or {\\ttfamily fbg\\+\\_\\+recta}.\n\n{\\bfseries Note} \\+: You can generate monospace bitmap fonts to be used with {\\ttfamily fbg\\+\\_\\+create\\+Font} function by using my \\href{https://github.com/grz0zrg/monoBitmapFontCreator}{\\tt mono\\+Bitmap\\+Font\\+Creator} tool available \\href{https://fbg-bitmap-font-creator.netlify.com/}{\\tt here}\n\n\\subsubsection*{Parallelism}\n\nExploiting multiple cores with F\\+B\\+Graphics is really easy, first you have to prepare 3 functions (of which two are optional if you don\\textquotesingle{}t have any allocations to do) of the following definition \\+:\n\n\n\\begin{DoxyCode}\n\\textcolor{comment}{// optional function}\n\\textcolor{keywordtype}{void} *fragmentStart(\\textcolor{keyword}{struct} \\hyperlink{struct__fbg}{\\_fbg} *fbg) \\{\n    \\textcolor{comment}{// typically used to allocate your per-thread data}\n    \\textcolor{comment}{// see full\\_example.c for more informations}\n\n    \\textcolor{keywordflow}{return} NULL; \\textcolor{comment}{// return your user data here}\n\\}\n\\end{DoxyCode}\n\n\n\n\\begin{DoxyCode}\n\\textcolor{keywordtype}{void} fragment(\\textcolor{keyword}{struct} \\hyperlink{struct__fbg}{\\_fbg} *fbg, \\textcolor{keyword}{struct} \\_fragment\\_user\\_data *user\\_data) \\{\n    \\textcolor{comment}{// this function will be executed by each threads}\n    \\textcolor{comment}{// you are free to call any FBG graphics primitive here}\n\n    \\hyperlink{fbgraphics_8h_aab50cccf3eceac81bda220a0c09e38e0}{fbg\\_clear}(fbg, 0);\n\n    \\textcolor{comment}{// you are also free to fill each threads back buffer the way you want to}\n    \\textcolor{comment}{// fbg->task\\_id : thread identifier (starting at 1, 0 is reserved for the main thread)}\n    \\textcolor{comment}{// each threads will draw an horizontal line, the shade of the blue color will change based on the\n       thread it is drawn from}\n    \\textcolor{keywordtype}{int} x = 0, y = 0;\n    \\textcolor{keywordflow}{for} (y = fbg->task\\_id; y < fbg->height; y += 4) \\{\n        \\textcolor{keywordflow}{for} (x = 0; x < fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width}; x += 1) \\{\n            \\textcolor{keywordtype}{int} i = (x + y * fbg->\\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width}) * 3;\n            fbg->\\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[i] = fbg->task\\_id * 85; \\textcolor{comment}{// note : BGR format}\n            fbg->\\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[i + 1] = 0;\n            fbg->\\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[i + 2] = 0;\n        \\}\n    \\}\n\n    \\textcolor{comment}{// simple graphics primitive (4 blue rectangle which will be handled by different threads in parallel)}\n    \\hyperlink{fbgraphics_8h_ad208d61ec4f50a5fd13f2cc8dd2ee0e5}{fbg\\_rect}(fbg, fbg->task\\_id * 32, 0, 32, 32, 0, 0, 255);\n\\}\n\\end{DoxyCode}\n\n\n\n\\begin{DoxyCode}\n\\textcolor{comment}{// optional function}\n\\textcolor{keywordtype}{void} fragmentStop(\\textcolor{keyword}{struct} \\hyperlink{struct__fbg}{\\_fbg} *fbg, \\textcolor{keyword}{struct} \\_fragment\\_user\\_data *data) \\{\n    \\textcolor{comment}{// typically used to free your per-thread data}\n    \\textcolor{comment}{// see full\\_example.c for more informations}\n\\}\n\\end{DoxyCode}\n\n\nThen you have to create a \\textquotesingle{}Fragment\\textquotesingle{} which is a F\\+BG multi-\\/core task \\+:\n\n\n\\begin{DoxyCode}\nfbg\\_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\\end{DoxyCode}\n\n\nWhere \\+:\n\n\n\\begin{DoxyItemize}\n\\item {\\ttfamily fbg} is the main library data structure returned by {\\ttfamily fbg\\+\\_\\+custom\\+Setup} and any backend {\\ttfamily fbg\\+\\_\\+backendname\\+Setup} calls (see available backends in {\\ttfamily custom\\+\\_\\+backend} directory)\n\\item {\\ttfamily fragment\\+Start}is a C function which will be executed when the thread start (can be N\\+U\\+LL)\n\\item {\\ttfamily fragment}is a C function which will be executed indefinitly for each threads and where all the draw code will happen\n\\item {\\ttfamily fragment\\+Stop} is a C function which will be executed when the thread end (can be N\\+U\\+LL)\n\\item {\\ttfamily 3}is the number of parallel tasks (this will launch 3 threads)\n\\end{DoxyItemize}\n\nAnd finally you just have to make a call to your fragment function in your drawing loop and call {\\ttfamily fbg\\+\\_\\+draw}!\n\n\n\\begin{DoxyCode}\nfragment(fbg, NULL);\n\\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\_draw}(fbg, NULL);\n\\end{DoxyCode}\n\n\n{\\ttfamily fbg\\+\\_\\+draw} will wait until all the data are received from all the threads then draw to screen\n\n{\\bfseries Note} \\+: This example will use 4 threads (including your app one) for drawing things on the screen but calling the fragment function in your drawing loop is totally optional, you could for example make use of threads for intensive drawing tasks and just use the main thread to draw the G\\+UI or the inverse etc. it is up to you!\n\nAnd that is all you have to do!\n\nSee {\\ttfamily simple\\+\\_\\+parallel\\+\\_\\+example.\\+c} and {\\ttfamily full\\+\\_\\+example.\\+c} for more informations.\n\n{\\bfseries Note} \\+: By default, the resulting buffer of each tasks are additively mixed into the main back buffer, you can override this behavior by specifying a mixing function as the last argument of {\\ttfamily fbg\\+\\_\\+draw} such as \\+:\n\n\n\\begin{DoxyCode}\n\\textcolor{comment}{// function called for each tasks in the fbg\\_draw function}\n\\textcolor{keywordtype}{void} selectiveMixing(\\textcolor{keyword}{struct} \\hyperlink{struct__fbg}{\\_fbg} *fbg, \\textcolor{keywordtype}{unsigned} \\textcolor{keywordtype}{char} *buffer, \\textcolor{keywordtype}{int} task\\_id) \\{\n    \\textcolor{comment}{// fbg is the main fbg structure returned by fbg\\_customSetup calls and any backend setup calls}\n    \\textcolor{comment}{// buffer is the current task buffer}\n    \\textcolor{comment}{// task\\_id is the current task id}\n    \\textcolor{keywordtype}{int} j = 0;\n    \\textcolor{keywordflow}{for} (j = 0; j < fbg->\\hyperlink{struct__fbg_a84fb220d4804cba22176997898e75b73}{size}; j += 1) \\{\n        fbg->\\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[j] = (fbg->\\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[j] > buffer[j]) ? fbg->\n      \\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\_buffer}[j] : buffer[j];\n    \\}\n\\}\n\\end{DoxyCode}\n\n\nThen you just have to specify it to the {\\ttfamily fbg\\+\\_\\+draw} function \\+:\n\n\n\\begin{DoxyCode}\n\\hyperlink{fbgraphics_8h_a2dfb2f17bc31e161868e6baf1c391816}{fbg\\_draw}(fbg, additiveMixing);\n\\end{DoxyCode}\n\n\nBy using the mixing function, you can have different layers handled by different cores with different compositing rule, see {\\ttfamily compositing.\\+c} for an example of alpha blending compositing 2 layers running on their own cores.\n\n{\\bfseries Note} \\+: You can only create one Fragment per fbg instance, another call to {\\ttfamily fbg\\+\\_\\+create\\+Fragment} will stop all tasks for the passed fbg context and will create a new set of tasks.\n\n{\\bfseries Note} \\+: On low performances platforms you may encounter performance issues at high resolution and with a high number of fragments, this is because all the threads buffer need to be mixed back onto the main thread before being displayed and at high resolution / threads count that is alot of pixels to process! You can see an alternative implementation using pure pthread in the {\\ttfamily custom\\+\\_\\+backend} folder and {\\ttfamily dispmanx\\+\\_\\+pure\\+\\_\\+parallel.\\+c} but it doesn\\textquotesingle{}t have compositing. If your platform support some sort of S\\+I\\+MD instructions you could also do all the compositing using S\\+I\\+MD which should result in a 5x or more speed increase!\n\n\\subsubsection*{Technical implementation}\n\nF\\+B\\+Graphics threads come with their own fbg context data which is essentialy a copy of the actual fbg context, they make use of C atomic types.\n\nInitially parallelism was implemented using \\href{http://liblfds.org/}{\\tt liblfds} library for its Ringbuffer and Freelist data structure.\n\nNow parallelism has two implementation, liblfds and a custom synchronization mechanism which has the advantage to not require additional libraries and thus execute on more platforms.\n\nYou can still use the liblfds implementation using the {\\ttfamily F\\+B\\+G\\+\\_\\+\\+L\\+F\\+DS} define, it may be faster.\n\n\\paragraph*{With liblfds}\n\nEach threads begin by fetching a pre-\\/allocated buffer from a freelist, then the fragment function is called to fill that buffer, the thread then place the buffer into a ringbuffer data structure which will be fetched upon calling {\\ttfamily fbg\\+\\_\\+draw}, the buffers are then mixed into the main back buffer and put back into the freelist.\n\n\\paragraph*{Without liblfds}\n\nEach threads fragment function is called to fill the local buffer, each threads then wait till that buffer is consumed by the main thread upon calling {\\ttfamily fbg\\+\\_\\+draw}, the buffers are then mixed into the main back buffer and {\\ttfamily fbg\\+\\_\\+draw} wake up all threads.\n\n\\subsection*{Benchmark (framebuffer)}\n\nA simple unoptimized per pixels screen clearing with 4 cores on a Raspberry PI 3B \\+: 30 F\\+PS @ 1280x768 and 370 F\\+PS @ 320x240\n\nNote \\+: Using the dispmanx backend a screen clearing + rectangle moving on a Raspberry PI 3B \\+: 60 F\\+PS @ 1920x1080\n\n\\subsubsection*{Full example}\n\nFullscreen per pixels perlin noise with texture mapping and scrolling (unoptimized)\n\n{\\bfseries Device} \\+: Raspberry PI 3B ( Quad Core 1.\\+2\\+G\\+Hz )\n\n{\\bfseries Settings} \\+: 320x240\n\n\\tabulinesep=1mm\n\\begin{longtabu} spread 0pt [c]{*{2}{|X[-1]}|}\n\\hline\n\\rowcolor{\\tableheadbgcolor}\\textbf{ Cores used to draw graphics }&\\textbf{ F\\+PS  }\\\\\\cline{1-2}\n\\endfirsthead\n\\hline\n\\endfoot\n\\hline\n\\rowcolor{\\tableheadbgcolor}\\textbf{ Cores used to draw graphics }&\\textbf{ F\\+PS  }\\\\\\cline{1-2}\n\\endhead\n1 &42 F\\+PS \\\\\\cline{1-2}\n2 &81 F\\+PS \\\\\\cline{1-2}\n3 &120 F\\+PS \\\\\\cline{1-2}\n\\end{longtabu}\nSee screenshots below.\n\n\\subsubsection*{Tunnel example}\n\nFullscreen texture-\\/mapped and animated tunnel made of 40800 2px rectangles with motion blur (unoptimized)\n\n{\\bfseries Device} \\+: Raspberry PI 3B ( Quad Core 1.\\+2\\+G\\+Hz )\n\n{\\bfseries Settings} \\+: 320x240\n\n\\tabulinesep=1mm\n\\begin{longtabu} spread 0pt [c]{*{2}{|X[-1]}|}\n\\hline\n\\rowcolor{\\tableheadbgcolor}\\textbf{ Cores used to draw graphics }&\\textbf{ F\\+PS  }\\\\\\cline{1-2}\n\\endfirsthead\n\\hline\n\\endfoot\n\\hline\n\\rowcolor{\\tableheadbgcolor}\\textbf{ Cores used to draw graphics }&\\textbf{ F\\+PS  }\\\\\\cline{1-2}\n\\endhead\n1 &36 F\\+PS \\\\\\cline{1-2}\n2 &69 F\\+PS \\\\\\cline{1-2}\n3 &99 F\\+PS \\\\\\cline{1-2}\n4 &66 F\\+PS \\\\\\cline{1-2}\n\\end{longtabu}\nNote \\+: The framerate drop with 4 cores is due to the main thread being too busy which make all the other threads follow due to the synchronization.\n\nSee screenshots below.\n\n\\subsection*{Documentation}\n\nAll usable functions and structures are documented in the {\\ttfamily \\hyperlink{fbgraphics_8h}{fbgraphics.\\+h}} file with \\href{http://www.stack.nl/~dimitri/doxygen/}{\\tt Doxygen}\n\nThe H\\+T\\+ML documentation can be found in the {\\ttfamily docs} directory.\n\nExamples demonstrating all features are available in the {\\ttfamily examples} directory.\n\nSome effects come from \\href{https://www.openprocessing.org/user/130883#sketches}{\\tt my Open Processing sketches}\n\n\\subsection*{Building}\n\nC11 standard should be supported by the C compiler.\n\nAll examples found in {\\ttfamily examples} directory make use of the framebuffer device {\\ttfamily /dev/fb0} and can be built by typing {\\ttfamily make} into the examples directory then run them by typing {\\ttfamily ./run\\+\\_\\+quickstart} for example (this handle the framebuffer setup prior launch), you will need to compile liblfds for the parallelism features. (see below)\n\nAll examples were tested on a Raspberry PI 3B with framebuffer settings \\+: 320x240 24 bpp\n\nFor the default build (no parallelism), F\\+B\\+Graphics come with a header file {\\ttfamily \\hyperlink{fbgraphics_8h}{fbgraphics.\\+h}} and a C file {\\ttfamily fbgraphics.\\+c} to be included / compiled / linked with your program plus one of the rendering backend found in {\\ttfamily custom\\+\\_\\+backend} directory, you will also need to compile the {\\ttfamily lodepng.\\+c} library and {\\ttfamily nanojpeg.\\+c} library, see the examples directory for examples of Makefile.\n\nFor parallelism support, {\\ttfamily F\\+B\\+G\\+\\_\\+\\+P\\+A\\+R\\+A\\+L\\+L\\+EL} need to be defined.\n\nIf you need to use the slightly different parallelism implementation (see technical implementation section) you will need the \\href{http://liblfds.org/}{\\tt liblfds} library \\+:\n\n\n\\begin{DoxyItemize}\n\\item Get latest liblfds 7.\\+1.\\+1 package on the official website\n\\item uncompress, go into the directory {\\ttfamily liblfds711}\n\\item go into the directory {\\ttfamily build/gcc\\+\\_\\+gnumake}\n\\item type {\\ttfamily make} in a terminal\n\\item {\\ttfamily liblfds711.\\+a} can now be found in the {\\ttfamily bin} directory, you need to link against it when compiling (see examples)\n\\end{DoxyItemize}\n\nTo compile liblfds parallel examples, just copy {\\ttfamily liblfds711.\\+a} / {\\ttfamily liblfds711.\\+h} file and {\\ttfamily liblfds711} directory into the {\\ttfamily examples} directory then type {\\ttfamily make lfds711}.\n\n{\\bfseries Note} \\+: F\\+B\\+Graphics with liblfds work on A\\+R\\+M64 platforms but you will need liblfds720 which is not yet released.\n\n\\subsubsection*{Executable size optimization}\n\nThis library may be used for size optimized executable for things like \\href{https://en.wikipedia.org/wiki/Demoscene}{\\tt demos}\n\nP\\+NG and J\\+P\\+EG support can be disabled with the {\\ttfamily W\\+I\\+T\\+H\\+O\\+U\\+T\\+\\_\\+\\+J\\+P\\+EG} and {\\ttfamily W\\+I\\+T\\+H\\+O\\+U\\+T\\+\\_\\+\\+P\\+NG} define.\n\nSee {\\ttfamily tiny} makefile rule inside the {\\ttfamily custom\\+\\_\\+backend} or {\\ttfamily examples} folder for some compiler optimizations related to executable size.\n\nUnder Linux \\href{https://github.com/BR903/ELFkickers/tree/master/sstrip}{\\tt sstrip} and \\href{https://upx.github.io/}{\\tt U\\+PX} can be used to bring the size down even futher.\n\n\\subsection*{Rendering backend}\n\nSee {\\ttfamily R\\+E\\+A\\+D\\+ME} into {\\ttfamily custom\\+\\_\\+backend} folder\n\n\\subsection*{G\\+L\\+FW backend}\n\nSee {\\ttfamily R\\+E\\+A\\+D\\+ME} into {\\ttfamily custom\\+\\_\\+backend} folder\n\nThe G\\+L\\+FW backend was made to demonstrate how to write a backend but it is complete enough to be used by default.\n\nThe G\\+L\\+FW backend has a cool lightweight Lua example which setup a Processing-\\/like environment making use of the parallelism feature of the library, allowing the user to prototype multithreaded graphical stuff without C code compilation through the Lua language.\n\n\\subsection*{Open\\+GL ES 2 backend}\n\nSee {\\ttfamily R\\+E\\+A\\+D\\+ME} into {\\ttfamily custom\\+\\_\\+backend} folder\n\n\\subsection*{G\\+BA backend}\n\nSee {\\ttfamily R\\+E\\+A\\+D\\+ME} into {\\ttfamily custom\\+\\_\\+backend} folder\n\n\\subsection*{Screenshots}\n\n\n\n\n\n\n\n\n\n\n\n\\subsection*{License}\n\nB\\+SD, see L\\+I\\+C\\+E\\+N\\+SE file "
  },
  {
    "path": "documentation/latex/refman.tex",
    "content": "\\documentclass[twoside]{book}\n\n% Packages required by doxygen\n\\usepackage{fixltx2e}\n\\usepackage{calc}\n\\usepackage{doxygen}\n\\usepackage[export]{adjustbox} % also loads graphicx\n\\usepackage{graphicx}\n\\usepackage[utf8]{inputenc}\n\\usepackage{makeidx}\n\\usepackage{multicol}\n\\usepackage{multirow}\n\\PassOptionsToPackage{warn}{textcomp}\n\\usepackage{textcomp}\n\\usepackage[nointegrals]{wasysym}\n\\usepackage[table]{xcolor}\n\n% Font selection\n\\usepackage[T1]{fontenc}\n\\usepackage[scaled=.90]{helvet}\n\\usepackage{courier}\n\\usepackage{amssymb}\n\\usepackage{sectsty}\n\\renewcommand{\\familydefault}{\\sfdefault}\n\\allsectionsfont{%\n  \\fontseries{bc}\\selectfont%\n  \\color{darkgray}%\n}\n\\renewcommand{\\DoxyLabelFont}{%\n  \\fontseries{bc}\\selectfont%\n  \\color{darkgray}%\n}\n\\newcommand{\\+}{\\discretionary{\\mbox{\\scriptsize$\\hookleftarrow$}}{}{}}\n\n% Page & text layout\n\\usepackage{geometry}\n\\geometry{%\n  a4paper,%\n  top=2.5cm,%\n  bottom=2.5cm,%\n  left=2.5cm,%\n  right=2.5cm%\n}\n\\tolerance=750\n\\hfuzz=15pt\n\\hbadness=750\n\\setlength{\\emergencystretch}{15pt}\n\\setlength{\\parindent}{0cm}\n\\setlength{\\parskip}{3ex plus 2ex minus 2ex}\n\\makeatletter\n\\renewcommand{\\paragraph}{%\n  \\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%\n    \\normalfont\\normalsize\\bfseries\\SS@parafont%\n  }%\n}\n\\renewcommand{\\subparagraph}{%\n  \\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%\n    \\normalfont\\normalsize\\bfseries\\SS@subparafont%\n  }%\n}\n\\makeatother\n\n% Headers & footers\n\\usepackage{fancyhdr}\n\\pagestyle{fancyplain}\n\\fancyhead[LE]{\\fancyplain{}{\\bfseries\\thepage}}\n\\fancyhead[CE]{\\fancyplain{}{}}\n\\fancyhead[RE]{\\fancyplain{}{\\bfseries\\leftmark}}\n\\fancyhead[LO]{\\fancyplain{}{\\bfseries\\rightmark}}\n\\fancyhead[CO]{\\fancyplain{}{}}\n\\fancyhead[RO]{\\fancyplain{}{\\bfseries\\thepage}}\n\\fancyfoot[LE]{\\fancyplain{}{}}\n\\fancyfoot[CE]{\\fancyplain{}{}}\n\\fancyfoot[RE]{\\fancyplain{}{\\bfseries\\scriptsize Generated by Doxygen }}\n\\fancyfoot[LO]{\\fancyplain{}{\\bfseries\\scriptsize Generated by Doxygen }}\n\\fancyfoot[CO]{\\fancyplain{}{}}\n\\fancyfoot[RO]{\\fancyplain{}{}}\n\\renewcommand{\\footrulewidth}{0.4pt}\n\\renewcommand{\\chaptermark}[1]{%\n  \\markboth{#1}{}%\n}\n\\renewcommand{\\sectionmark}[1]{%\n  \\markright{\\thesection\\ #1}%\n}\n\n% Indices & bibliography\n\\usepackage{natbib}\n\\usepackage[titles]{tocloft}\n\\setcounter{tocdepth}{3}\n\\setcounter{secnumdepth}{5}\n\\makeindex\n\n% Hyperlinks (required, but should be loaded last)\n\\usepackage{ifpdf}\n\\ifpdf\n  \\usepackage[pdftex,pagebackref=true]{hyperref}\n\\else\n  \\usepackage[ps2pdf,pagebackref=true]{hyperref}\n\\fi\n\\hypersetup{%\n  colorlinks=true,%\n  linkcolor=blue,%\n  citecolor=blue,%\n  unicode%\n}\n\n% Custom commands\n\\newcommand{\\clearemptydoublepage}{%\n  \\newpage{\\pagestyle{empty}\\cleardoublepage}%\n}\n\n\\usepackage{caption}\n\\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}\n\n%===== C O N T E N T S =====\n\n\\begin{document}\n\n% Titlepage & ToC\n\\hypersetup{pageanchor=false,\n             bookmarksnumbered=true,\n             pdfencoding=unicode\n            }\n\\pagenumbering{alph}\n\\begin{titlepage}\n\\vspace*{7cm}\n\\begin{center}%\n{\\Large FB Graphics }\\\\\n\\vspace*{1cm}\n{\\large Generated by Doxygen 1.8.13}\\\\\n\\end{center}\n\\end{titlepage}\n\\clearemptydoublepage\n\\pagenumbering{roman}\n\\tableofcontents\n\\clearemptydoublepage\n\\pagenumbering{arabic}\n\\hypersetup{pageanchor=true}\n\n%--- Begin generated contents ---\n\\chapter{F\\+B\\+Graphics \\+: Lightweight C 2D graphics A\\+PI agnostic library with parallelism support}\n\\label{index}\\hypertarget{index}{}\\input{index}\n\\chapter{Data Structure Index}\n\\input{annotated}\n\\chapter{File Index}\n\\input{files}\n\\chapter{Data Structure Documentation}\n\\input{struct__fbg}\n\\input{struct__fbg__dispmanx__context}\n\\chapter{File Documentation}\n\\input{fbg__dispmanx_8h}\n\\input{fbg__fbdev_8h}\n\\input{fbg__gba_8h}\n\\input{fbg__glfw_8h}\n\\input{fbg__opengl__es2_8h}\n\\input{fbgraphics_8h}\n\\input{README_8md}\n%--- End generated contents ---\n\n% Index\n\\backmatter\n\\newpage\n\\phantomsection\n\\clearemptydoublepage\n\\addcontentsline{toc}{chapter}{Index}\n\\printindex\n\n\\end{document}\n"
  },
  {
    "path": "documentation/latex/struct__fbg.tex",
    "content": "\\hypertarget{struct__fbg}{}\\section{\\+\\_\\+fbg Struct Reference}\n\\label{struct__fbg}\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\n\nFB Graphics context data structure.  \n\n\n\n\n{\\ttfamily \\#include $<$fbgraphics.\\+h$>$}\n\n\\subsection*{Data Fields}\n\\begin{DoxyCompactItemize}\n\\item \nint \\hyperlink{struct__fbg_a84fb220d4804cba22176997898e75b73}{size}\n\\begin{DoxyCompactList}\\small\\item\\em Framebuffer real data length (with B\\+PP) \\end{DoxyCompactList}\\item \nunsigned char $\\ast$ \\hyperlink{struct__fbg_aa20614c94c7235bc5bc105b6e71e1be8}{disp\\+\\_\\+buffer}\n\\begin{DoxyCompactList}\\small\\item\\em Front / display buffer. \\end{DoxyCompactList}\\item \nunsigned char $\\ast$ \\hyperlink{struct__fbg_a907e7fc97965b972c17114c885e53735}{back\\+\\_\\+buffer}\n\\begin{DoxyCompactList}\\small\\item\\em Back buffer. \\end{DoxyCompactList}\\item \nunsigned char $\\ast$ \\hyperlink{struct__fbg_a0463af9bf583afe770b822c1fbb9a24d}{temp\\+\\_\\+buffer}\n\\begin{DoxyCompactList}\\small\\item\\em Temporary buffer. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_ad7796d799a4ad67405101b8548d99ad8}{allow\\+\\_\\+resizing}\n\\begin{DoxyCompactList}\\small\\item\\em Wether to allow context resize. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_ac9a25b7b2700bee151d8f9dc3e586487}{initialize\\+\\_\\+buffers}\n\\begin{DoxyCompactList}\\small\\item\\em Wether to allow F\\+BG to allocate its internal buffers. \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\hyperlink{struct__fbg_ad3cac82bd9448a4020a4e08621f5269a}{fill\\+\\_\\+color}\n\\begin{DoxyCompactList}\\small\\item\\em Current fill color. \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\hyperlink{struct__fbg_a4abb858439598b09790ec6d5d8326bb2}{text\\+\\_\\+color}\n\\begin{DoxyCompactList}\\small\\item\\em Current text color. \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\hyperlink{struct__fbg_afd34a8de5a853e915bd101f11d44cf67}{text\\+\\_\\+background}\n\\begin{DoxyCompactList}\\small\\item\\em Current text background color (based on colorkey value) \\end{DoxyCompactList}\\item \nunsigned char \\hyperlink{struct__fbg_a06e65293cf0b48e70d76d63f5de453e6}{text\\+\\_\\+colorkey}\n\\begin{DoxyCompactList}\\small\\item\\em Current text color key. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a870987786121c51135f20b630d731abd}{text\\+\\_\\+alpha}\n\\begin{DoxyCompactList}\\small\\item\\em Text background alpha value. \\end{DoxyCompactList}\\item \nstruct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} \\hyperlink{struct__fbg_a72868d703236aaabb7a5031703a6bbd8}{current\\+\\_\\+font}\n\\begin{DoxyCompactList}\\small\\item\\em Current font. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a7090d672982fe465f2186dbfea384d32}{compositing}\n\\begin{DoxyCompactList}\\small\\item\\em Compositing method (only used with fbg\\+\\_\\+draw\\+Image for now) \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}{width}\n\\begin{DoxyCompactList}\\small\\item\\em Display width in pixels. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}{height}\n\\begin{DoxyCompactList}\\small\\item\\em Display height in pixels. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a1ab3f10e8c3483d7286db9850511d46d}{width\\+\\_\\+n\\+\\_\\+height}\n\\begin{DoxyCompactList}\\small\\item\\em Display lenght in pixels (width $\\ast$ height) \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a1db77a2ef506723a575644dbc1cfb747}{components}\n\\begin{DoxyCompactList}\\small\\item\\em Display components amount (3 = 24 B\\+PP / 4 = 32 B\\+PP) \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a7c2e64d2f40575c8a989c759c30acb0e}{comp\\+\\_\\+offset}\n\\begin{DoxyCompactList}\\small\\item\\em Offset to add in case of 32 B\\+PP. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_af8a1ee8d7004e6f2193f2a3ed98f8ce8}{line\\+\\_\\+length}\n\\begin{DoxyCompactList}\\small\\item\\em Internal buffers line length. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}{new\\+\\_\\+width}\n\\begin{DoxyCompactList}\\small\\item\\em Requested new display width (resize event) \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}{new\\+\\_\\+height}\n\\begin{DoxyCompactList}\\small\\item\\em Requested new display height (resize event) \\end{DoxyCompactList}\\item \nint16\\+\\_\\+t \\hyperlink{struct__fbg_a64b16363bc48d1e19141df2e242930a9}{fps}\n\\begin{DoxyCompactList}\\small\\item\\em Current F\\+PS. \\end{DoxyCompactList}\\item \nchar \\hyperlink{struct__fbg_af447e6ed58d893989c8dad075807a79b}{fps\\+\\_\\+char} \\mbox{[}10\\mbox{]}\n\\begin{DoxyCompactList}\\small\\item\\em Current F\\+PS as a string. \\end{DoxyCompactList}\\item \nstruct timeval \\hyperlink{struct__fbg_a07d7bb827a7595c956fe22c2d65bba33}{fps\\+\\_\\+start}\n\\begin{DoxyCompactList}\\small\\item\\em First frame time for the current second. \\end{DoxyCompactList}\\item \nstruct timeval \\hyperlink{struct__fbg_ade17a45bbc82bef326857c2837cdf66c}{fps\\+\\_\\+stop}\n\\begin{DoxyCompactList}\\small\\item\\em Last frame time for the current second. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_aa3ef83f919d12e680f8c64006b441454}{frame}\n\\begin{DoxyCompactList}\\small\\item\\em Frame counter for the current second. \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg_a5844c5bf4789117cbc0c972ff160b338}{bgr}\n\\begin{DoxyCompactList}\\small\\item\\em Flag indicating a B\\+GR framebuffer. \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg_aef07a92ae059ea2a43653f4d0c5d928e}{backend\\+\\_\\+resize} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int \\hyperlink{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}{new\\+\\_\\+width}, unsigned int \\hyperlink{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}{new\\+\\_\\+height})\n\\begin{DoxyCompactList}\\small\\item\\em Backend resize function. \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg_a68add70dac4b055809c1bcab1e65b18d}{user\\+\\_\\+resize} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int \\hyperlink{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}{new\\+\\_\\+width}, unsigned int \\hyperlink{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}{new\\+\\_\\+height})\n\\begin{DoxyCompactList}\\small\\item\\em User-\\/defined resize function. \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg_a3f2ad2eb06555cdbe2d18f541231cb37}{user\\+\\_\\+flip} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em User-\\/defined flip function. \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg_ac66a762877982c6f381a7cfd54a8f17e}{user\\+\\_\\+draw} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em User-\\/defined draw function. \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg_a88d48b502672cfb8bd2c94ea3feac8d0}{user\\+\\_\\+free} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em User-\\/defined free function. \\end{DoxyCompactList}\\item \nvoid $\\ast$ \\hyperlink{struct__fbg_ae3ecac18abee9dedabacaca9bb063bde}{user\\+\\_\\+context}\n\\begin{DoxyCompactList}\\small\\item\\em User-\\/defined context structure. \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Detailed Description}\nFB Graphics context data structure. \n\nHold all data related to a F\\+BG context \n\nDefinition at line 123 of file fbgraphics.\\+h.\n\n\n\n\\subsection{Field Documentation}\n\\mbox{\\Hypertarget{struct__fbg_ad7796d799a4ad67405101b8548d99ad8}\\label{struct__fbg_ad7796d799a4ad67405101b8548d99ad8}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!allow\\+\\_\\+resizing@{allow\\+\\_\\+resizing}}\n\\index{allow\\+\\_\\+resizing@{allow\\+\\_\\+resizing}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{allow\\+\\_\\+resizing}{allow\\_resizing}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::allow\\+\\_\\+resizing}\n\n\n\nWether to allow context resize. \n\n\n\nDefinition at line 136 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a907e7fc97965b972c17114c885e53735}\\label{struct__fbg_a907e7fc97965b972c17114c885e53735}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!back\\+\\_\\+buffer@{back\\+\\_\\+buffer}}\n\\index{back\\+\\_\\+buffer@{back\\+\\_\\+buffer}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{back\\+\\_\\+buffer}{back\\_buffer}}\n{\\footnotesize\\ttfamily unsigned char$\\ast$ \\+\\_\\+fbg\\+::back\\+\\_\\+buffer}\n\n\n\nBack buffer. \n\nAll FB Graphics functions draw into this buffer. \n\nDefinition at line 131 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_aef07a92ae059ea2a43653f4d0c5d928e}\\label{struct__fbg_aef07a92ae059ea2a43653f4d0c5d928e}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!backend\\+\\_\\+resize@{backend\\+\\_\\+resize}}\n\\index{backend\\+\\_\\+resize@{backend\\+\\_\\+resize}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{backend\\+\\_\\+resize}{backend\\_resize}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+::backend\\+\\_\\+resize) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int \\hyperlink{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}{new\\+\\_\\+width}, unsigned int \\hyperlink{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}{new\\+\\_\\+height})}\n\n\n\nBackend resize function. \n\n\n\nDefinition at line 209 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a5844c5bf4789117cbc0c972ff160b338}\\label{struct__fbg_a5844c5bf4789117cbc0c972ff160b338}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!bgr@{bgr}}\n\\index{bgr@{bgr}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{bgr}{bgr}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::bgr}\n\n\n\nFlag indicating a B\\+GR framebuffer. \n\n\n\nDefinition at line 206 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a7c2e64d2f40575c8a989c759c30acb0e}\\label{struct__fbg_a7c2e64d2f40575c8a989c759c30acb0e}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!comp\\+\\_\\+offset@{comp\\+\\_\\+offset}}\n\\index{comp\\+\\_\\+offset@{comp\\+\\_\\+offset}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{comp\\+\\_\\+offset}{comp\\_offset}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::comp\\+\\_\\+offset}\n\n\n\nOffset to add in case of 32 B\\+PP. \n\n\n\nDefinition at line 178 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a1db77a2ef506723a575644dbc1cfb747}\\label{struct__fbg_a1db77a2ef506723a575644dbc1cfb747}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!components@{components}}\n\\index{components@{components}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{components}{components}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::components}\n\n\n\nDisplay components amount (3 = 24 B\\+PP / 4 = 32 B\\+PP) \n\n\n\nDefinition at line 176 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a7090d672982fe465f2186dbfea384d32}\\label{struct__fbg_a7090d672982fe465f2186dbfea384d32}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!compositing@{compositing}}\n\\index{compositing@{compositing}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{compositing}{compositing}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::compositing}\n\n\n\nCompositing method (only used with fbg\\+\\_\\+draw\\+Image for now) \n\nDefault to source-\\/over compositing. \n\nDefinition at line 167 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a72868d703236aaabb7a5031703a6bbd8}\\label{struct__fbg_a72868d703236aaabb7a5031703a6bbd8}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!current\\+\\_\\+font@{current\\+\\_\\+font}}\n\\index{current\\+\\_\\+font@{current\\+\\_\\+font}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{current\\+\\_\\+font}{current\\_font}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__font}{\\+\\_\\+fbg\\+\\_\\+font} \\+\\_\\+fbg\\+::current\\+\\_\\+font}\n\n\n\nCurrent font. \n\nNo fonts is loaded by default and the first loaded font will be assigned automatically as the current font. \n\nDefinition at line 163 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_aa20614c94c7235bc5bc105b6e71e1be8}\\label{struct__fbg_aa20614c94c7235bc5bc105b6e71e1be8}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!disp\\+\\_\\+buffer@{disp\\+\\_\\+buffer}}\n\\index{disp\\+\\_\\+buffer@{disp\\+\\_\\+buffer}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{disp\\+\\_\\+buffer}{disp\\_buffer}}\n{\\footnotesize\\ttfamily unsigned char$\\ast$ \\+\\_\\+fbg\\+::disp\\+\\_\\+buffer}\n\n\n\nFront / display buffer. \n\n\n\nDefinition at line 128 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_ad3cac82bd9448a4020a4e08621f5269a}\\label{struct__fbg_ad3cac82bd9448a4020a4e08621f5269a}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!fill\\+\\_\\+color@{fill\\+\\_\\+color}}\n\\index{fill\\+\\_\\+color@{fill\\+\\_\\+color}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{fill\\+\\_\\+color}{fill\\_color}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\+\\_\\+fbg\\+::fill\\+\\_\\+color}\n\n\n\nCurrent fill color. \n\nDefault to black. \n\nDefinition at line 143 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a64b16363bc48d1e19141df2e242930a9}\\label{struct__fbg_a64b16363bc48d1e19141df2e242930a9}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!fps@{fps}}\n\\index{fps@{fps}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{fps}{fps}}\n{\\footnotesize\\ttfamily int16\\+\\_\\+t \\+\\_\\+fbg\\+::fps}\n\n\n\nCurrent F\\+PS. \n\n\n\nDefinition at line 191 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_af447e6ed58d893989c8dad075807a79b}\\label{struct__fbg_af447e6ed58d893989c8dad075807a79b}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!fps\\+\\_\\+char@{fps\\+\\_\\+char}}\n\\index{fps\\+\\_\\+char@{fps\\+\\_\\+char}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{fps\\+\\_\\+char}{fps\\_char}}\n{\\footnotesize\\ttfamily char \\+\\_\\+fbg\\+::fps\\+\\_\\+char\\mbox{[}10\\mbox{]}}\n\n\n\nCurrent F\\+PS as a string. \n\n\n\nDefinition at line 195 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a07d7bb827a7595c956fe22c2d65bba33}\\label{struct__fbg_a07d7bb827a7595c956fe22c2d65bba33}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!fps\\+\\_\\+start@{fps\\+\\_\\+start}}\n\\index{fps\\+\\_\\+start@{fps\\+\\_\\+start}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{fps\\+\\_\\+start}{fps\\_start}}\n{\\footnotesize\\ttfamily struct timeval \\+\\_\\+fbg\\+::fps\\+\\_\\+start}\n\n\n\nFirst frame time for the current second. \n\n\n\nDefinition at line 198 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_ade17a45bbc82bef326857c2837cdf66c}\\label{struct__fbg_ade17a45bbc82bef326857c2837cdf66c}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!fps\\+\\_\\+stop@{fps\\+\\_\\+stop}}\n\\index{fps\\+\\_\\+stop@{fps\\+\\_\\+stop}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{fps\\+\\_\\+stop}{fps\\_stop}}\n{\\footnotesize\\ttfamily struct timeval \\+\\_\\+fbg\\+::fps\\+\\_\\+stop}\n\n\n\nLast frame time for the current second. \n\n\n\nDefinition at line 200 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_aa3ef83f919d12e680f8c64006b441454}\\label{struct__fbg_aa3ef83f919d12e680f8c64006b441454}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!frame@{frame}}\n\\index{frame@{frame}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{frame}{frame}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::frame}\n\n\n\nFrame counter for the current second. \n\n\n\nDefinition at line 203 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}\\label{struct__fbg_a3a3bd409e71d020fa77f69a541d832f8}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!height@{height}}\n\\index{height@{height}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{height}{height}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::height}\n\n\n\nDisplay height in pixels. \n\n\n\nDefinition at line 172 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_ac9a25b7b2700bee151d8f9dc3e586487}\\label{struct__fbg_ac9a25b7b2700bee151d8f9dc3e586487}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!initialize\\+\\_\\+buffers@{initialize\\+\\_\\+buffers}}\n\\index{initialize\\+\\_\\+buffers@{initialize\\+\\_\\+buffers}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{initialize\\+\\_\\+buffers}{initialize\\_buffers}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::initialize\\+\\_\\+buffers}\n\n\n\nWether to allow F\\+BG to allocate its internal buffers. \n\n\n\nDefinition at line 139 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_af8a1ee8d7004e6f2193f2a3ed98f8ce8}\\label{struct__fbg_af8a1ee8d7004e6f2193f2a3ed98f8ce8}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!line\\+\\_\\+length@{line\\+\\_\\+length}}\n\\index{line\\+\\_\\+length@{line\\+\\_\\+length}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{line\\+\\_\\+length}{line\\_length}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::line\\+\\_\\+length}\n\n\n\nInternal buffers line length. \n\n\n\nDefinition at line 180 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}\\label{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!new\\+\\_\\+height@{new\\+\\_\\+height}}\n\\index{new\\+\\_\\+height@{new\\+\\_\\+height}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{new\\+\\_\\+height}{new\\_height}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::new\\+\\_\\+height}\n\n\n\nRequested new display height (resize event) \n\n\n\nDefinition at line 185 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}\\label{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!new\\+\\_\\+width@{new\\+\\_\\+width}}\n\\index{new\\+\\_\\+width@{new\\+\\_\\+width}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{new\\+\\_\\+width}{new\\_width}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::new\\+\\_\\+width}\n\n\n\nRequested new display width (resize event) \n\n\n\nDefinition at line 183 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a84fb220d4804cba22176997898e75b73}\\label{struct__fbg_a84fb220d4804cba22176997898e75b73}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!size@{size}}\n\\index{size@{size}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{size}{size}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::size}\n\n\n\nFramebuffer real data length (with B\\+PP) \n\n\n\nDefinition at line 125 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a0463af9bf583afe770b822c1fbb9a24d}\\label{struct__fbg_a0463af9bf583afe770b822c1fbb9a24d}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!temp\\+\\_\\+buffer@{temp\\+\\_\\+buffer}}\n\\index{temp\\+\\_\\+buffer@{temp\\+\\_\\+buffer}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{temp\\+\\_\\+buffer}{temp\\_buffer}}\n{\\footnotesize\\ttfamily unsigned char$\\ast$ \\+\\_\\+fbg\\+::temp\\+\\_\\+buffer}\n\n\n\nTemporary buffer. \n\n\n\nDefinition at line 133 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a870987786121c51135f20b630d731abd}\\label{struct__fbg_a870987786121c51135f20b630d731abd}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!text\\+\\_\\+alpha@{text\\+\\_\\+alpha}}\n\\index{text\\+\\_\\+alpha@{text\\+\\_\\+alpha}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{text\\+\\_\\+alpha}{text\\_alpha}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::text\\+\\_\\+alpha}\n\n\n\nText background alpha value. \n\nDefault to transparent. \n\nDefinition at line 159 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_afd34a8de5a853e915bd101f11d44cf67}\\label{struct__fbg_afd34a8de5a853e915bd101f11d44cf67}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!text\\+\\_\\+background@{text\\+\\_\\+background}}\n\\index{text\\+\\_\\+background@{text\\+\\_\\+background}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{text\\+\\_\\+background}{text\\_background}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\+\\_\\+fbg\\+::text\\+\\_\\+background}\n\n\n\nCurrent text background color (based on colorkey value) \n\nDefault to black. \n\nDefinition at line 151 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a4abb858439598b09790ec6d5d8326bb2}\\label{struct__fbg_a4abb858439598b09790ec6d5d8326bb2}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!text\\+\\_\\+color@{text\\+\\_\\+color}}\n\\index{text\\+\\_\\+color@{text\\+\\_\\+color}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{text\\+\\_\\+color}{text\\_color}}\n{\\footnotesize\\ttfamily struct \\hyperlink{fbgraphics_8h_struct__fbg__rgb}{\\+\\_\\+fbg\\+\\_\\+rgb} \\+\\_\\+fbg\\+::text\\+\\_\\+color}\n\n\n\nCurrent text color. \n\nDefault to white. \n\nDefinition at line 147 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a06e65293cf0b48e70d76d63f5de453e6}\\label{struct__fbg_a06e65293cf0b48e70d76d63f5de453e6}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!text\\+\\_\\+colorkey@{text\\+\\_\\+colorkey}}\n\\index{text\\+\\_\\+colorkey@{text\\+\\_\\+colorkey}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{text\\+\\_\\+colorkey}{text\\_colorkey}}\n{\\footnotesize\\ttfamily unsigned char \\+\\_\\+fbg\\+::text\\+\\_\\+colorkey}\n\n\n\nCurrent text color key. \n\nDefault to black. \n\nDefinition at line 155 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_ae3ecac18abee9dedabacaca9bb063bde}\\label{struct__fbg_ae3ecac18abee9dedabacaca9bb063bde}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!user\\+\\_\\+context@{user\\+\\_\\+context}}\n\\index{user\\+\\_\\+context@{user\\+\\_\\+context}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{user\\+\\_\\+context}{user\\_context}}\n{\\footnotesize\\ttfamily void$\\ast$ \\+\\_\\+fbg\\+::user\\+\\_\\+context}\n\n\n\nUser-\\/defined context structure. \n\n\n\nDefinition at line 219 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_ac66a762877982c6f381a7cfd54a8f17e}\\label{struct__fbg_ac66a762877982c6f381a7cfd54a8f17e}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!user\\+\\_\\+draw@{user\\+\\_\\+draw}}\n\\index{user\\+\\_\\+draw@{user\\+\\_\\+draw}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{user\\+\\_\\+draw}{user\\_draw}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+::user\\+\\_\\+draw) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}\n\n\n\nUser-\\/defined draw function. \n\n\n\nDefinition at line 215 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a3f2ad2eb06555cdbe2d18f541231cb37}\\label{struct__fbg_a3f2ad2eb06555cdbe2d18f541231cb37}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!user\\+\\_\\+flip@{user\\+\\_\\+flip}}\n\\index{user\\+\\_\\+flip@{user\\+\\_\\+flip}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{user\\+\\_\\+flip}{user\\_flip}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+::user\\+\\_\\+flip) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}\n\n\n\nUser-\\/defined flip function. \n\n\n\nDefinition at line 213 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a88d48b502672cfb8bd2c94ea3feac8d0}\\label{struct__fbg_a88d48b502672cfb8bd2c94ea3feac8d0}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!user\\+\\_\\+free@{user\\+\\_\\+free}}\n\\index{user\\+\\_\\+free@{user\\+\\_\\+free}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{user\\+\\_\\+free}{user\\_free}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+::user\\+\\_\\+free) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}\n\n\n\nUser-\\/defined free function. \n\n\n\nDefinition at line 217 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a68add70dac4b055809c1bcab1e65b18d}\\label{struct__fbg_a68add70dac4b055809c1bcab1e65b18d}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!user\\+\\_\\+resize@{user\\+\\_\\+resize}}\n\\index{user\\+\\_\\+resize@{user\\+\\_\\+resize}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{user\\+\\_\\+resize}{user\\_resize}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+::user\\+\\_\\+resize) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg, unsigned int \\hyperlink{struct__fbg_a95859bd418a5cfff155cdb1421d295ef}{new\\+\\_\\+width}, unsigned int \\hyperlink{struct__fbg_a509aa5f8f0a94d8313bb4da777aa64bc}{new\\+\\_\\+height})}\n\n\n\nUser-\\/defined resize function. \n\n\n\nDefinition at line 211 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}\\label{struct__fbg_a1d3c76643e4ee424f4d17e27991d5e2e}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!width@{width}}\n\\index{width@{width}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{width}{width}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::width}\n\n\n\nDisplay width in pixels. \n\n\n\nDefinition at line 170 of file fbgraphics.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg_a1ab3f10e8c3483d7286db9850511d46d}\\label{struct__fbg_a1ab3f10e8c3483d7286db9850511d46d}} \n\\index{\\+\\_\\+fbg@{\\+\\_\\+fbg}!width\\+\\_\\+n\\+\\_\\+height@{width\\+\\_\\+n\\+\\_\\+height}}\n\\index{width\\+\\_\\+n\\+\\_\\+height@{width\\+\\_\\+n\\+\\_\\+height}!\\+\\_\\+fbg@{\\+\\_\\+fbg}}\n\\subsubsection{\\texorpdfstring{width\\+\\_\\+n\\+\\_\\+height}{width\\_n\\_height}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+::width\\+\\_\\+n\\+\\_\\+height}\n\n\n\nDisplay lenght in pixels (width $\\ast$ height) \n\n\n\nDefinition at line 174 of file fbgraphics.\\+h.\n\n\n\nThe documentation for this struct was generated from the following file\\+:\\begin{DoxyCompactItemize}\n\\item \n\\hyperlink{fbgraphics_8h}{fbgraphics.\\+h}\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "documentation/latex/struct__fbg__dispmanx__context.tex",
    "content": "\\hypertarget{struct__fbg__dispmanx__context}{}\\section{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context Struct Reference}\n\\label{struct__fbg__dispmanx__context}\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\n\ndispmanx wrapper data structure  \n\n\n\n\n{\\ttfamily \\#include $<$fbg\\+\\_\\+dispmanx.\\+h$>$}\n\n\\subsection*{Data Fields}\n\\begin{DoxyCompactItemize}\n\\item \nD\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+D\\+I\\+S\\+P\\+L\\+A\\+Y\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_a9263fa3b9088feba4becb5488f3a27ee}{display}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx display \\end{DoxyCompactList}\\item \nD\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+R\\+E\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_a4e5395ea92a73ef0db5048824c7df710}{back\\+\\_\\+resource}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx back resource \\end{DoxyCompactList}\\item \nD\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+R\\+E\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_acfd61d15e712eb715bb99ff4c6ec1dc7}{front\\+\\_\\+resource}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx front resource \\end{DoxyCompactList}\\item \nD\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+E\\+L\\+E\\+M\\+E\\+N\\+T\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_ab18b7173ed0ff6e670068041cf0779e9}{elem}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx elem \\end{DoxyCompactList}\\item \nV\\+C\\+\\_\\+\\+I\\+M\\+A\\+G\\+E\\+\\_\\+\\+T\\+Y\\+P\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_a88cb809e4e2653c6925824ebd5a66149}{resource\\+\\_\\+type}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx image type (R\\+G\\+B888) \\end{DoxyCompactList}\\item \nD\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+U\\+P\\+D\\+A\\+T\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\hyperlink{struct__fbg__dispmanx__context_a583202df9f959780bc21e9e5ce824f34}{update}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx update \\end{DoxyCompactList}\\item \nV\\+C\\+\\_\\+\\+R\\+E\\+C\\+T\\+\\_\\+T $\\ast$ \\hyperlink{struct__fbg__dispmanx__context_aef1016d77620bbfd67bf090fd2f08e19}{src\\+\\_\\+rect}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx src rect \\end{DoxyCompactList}\\item \nV\\+C\\+\\_\\+\\+R\\+E\\+C\\+T\\+\\_\\+T $\\ast$ \\hyperlink{struct__fbg__dispmanx__context_ae1857220a611fd3e288cd76c6b8a5985}{dst\\+\\_\\+rect}\n\\begin{DoxyCompactList}\\small\\item\\em dispmanx src rect \\end{DoxyCompactList}\\item \nvoid($\\ast$ \\hyperlink{struct__fbg__dispmanx__context_a39f7c0bacaedd656908c5e2378610477}{opt\\+\\_\\+flip} )(struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)\n\\begin{DoxyCompactList}\\small\\item\\em optional flip content (will be executed between dispmanx start / sync) \\end{DoxyCompactList}\\item \nint \\hyperlink{struct__fbg__dispmanx__context_a7847ad38fd083df3b2a513a43f7d82b2}{pitch}\n\\begin{DoxyCompactList}\\small\\item\\em fbg-\\/$>$width $\\ast$ 3 \\end{DoxyCompactList}\\end{DoxyCompactItemize}\n\n\n\\subsection{Detailed Description}\ndispmanx wrapper data structure \n\nDefinition at line 52 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\n\n\\subsection{Field Documentation}\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a4e5395ea92a73ef0db5048824c7df710}\\label{struct__fbg__dispmanx__context_a4e5395ea92a73ef0db5048824c7df710}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!back\\+\\_\\+resource@{back\\+\\_\\+resource}}\n\\index{back\\+\\_\\+resource@{back\\+\\_\\+resource}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{back\\+\\_\\+resource}{back\\_resource}}\n{\\footnotesize\\ttfamily D\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+R\\+E\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::back\\+\\_\\+resource}\n\n\n\ndispmanx back resource \n\n\n\nDefinition at line 64 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a9263fa3b9088feba4becb5488f3a27ee}\\label{struct__fbg__dispmanx__context_a9263fa3b9088feba4becb5488f3a27ee}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!display@{display}}\n\\index{display@{display}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{display}{display}}\n{\\footnotesize\\ttfamily D\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+D\\+I\\+S\\+P\\+L\\+A\\+Y\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::display}\n\n\n\ndispmanx display \n\n\n\nDefinition at line 62 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_ae1857220a611fd3e288cd76c6b8a5985}\\label{struct__fbg__dispmanx__context_ae1857220a611fd3e288cd76c6b8a5985}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!dst\\+\\_\\+rect@{dst\\+\\_\\+rect}}\n\\index{dst\\+\\_\\+rect@{dst\\+\\_\\+rect}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{dst\\+\\_\\+rect}{dst\\_rect}}\n{\\footnotesize\\ttfamily V\\+C\\+\\_\\+\\+R\\+E\\+C\\+T\\+\\_\\+T$\\ast$ \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::dst\\+\\_\\+rect}\n\n\n\ndispmanx src rect \n\n\n\nDefinition at line 76 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_ab18b7173ed0ff6e670068041cf0779e9}\\label{struct__fbg__dispmanx__context_ab18b7173ed0ff6e670068041cf0779e9}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!elem@{elem}}\n\\index{elem@{elem}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{elem}{elem}}\n{\\footnotesize\\ttfamily D\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+E\\+L\\+E\\+M\\+E\\+N\\+T\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::elem}\n\n\n\ndispmanx elem \n\n\n\nDefinition at line 68 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_acfd61d15e712eb715bb99ff4c6ec1dc7}\\label{struct__fbg__dispmanx__context_acfd61d15e712eb715bb99ff4c6ec1dc7}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!front\\+\\_\\+resource@{front\\+\\_\\+resource}}\n\\index{front\\+\\_\\+resource@{front\\+\\_\\+resource}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{front\\+\\_\\+resource}{front\\_resource}}\n{\\footnotesize\\ttfamily D\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+R\\+E\\+S\\+O\\+U\\+R\\+C\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::front\\+\\_\\+resource}\n\n\n\ndispmanx front resource \n\n\n\nDefinition at line 66 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a39f7c0bacaedd656908c5e2378610477}\\label{struct__fbg__dispmanx__context_a39f7c0bacaedd656908c5e2378610477}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!opt\\+\\_\\+flip@{opt\\+\\_\\+flip}}\n\\index{opt\\+\\_\\+flip@{opt\\+\\_\\+flip}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{opt\\+\\_\\+flip}{opt\\_flip}}\n{\\footnotesize\\ttfamily void($\\ast$ \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::opt\\+\\_\\+flip) (struct \\hyperlink{struct__fbg}{\\+\\_\\+fbg} $\\ast$fbg)}\n\n\n\noptional flip content (will be executed between dispmanx start / sync) \n\n\n\nDefinition at line 79 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a7847ad38fd083df3b2a513a43f7d82b2}\\label{struct__fbg__dispmanx__context_a7847ad38fd083df3b2a513a43f7d82b2}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!pitch@{pitch}}\n\\index{pitch@{pitch}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{pitch}{pitch}}\n{\\footnotesize\\ttfamily int \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::pitch}\n\n\n\nfbg-\\/$>$width $\\ast$ 3 \n\n\n\nDefinition at line 82 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a88cb809e4e2653c6925824ebd5a66149}\\label{struct__fbg__dispmanx__context_a88cb809e4e2653c6925824ebd5a66149}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!resource\\+\\_\\+type@{resource\\+\\_\\+type}}\n\\index{resource\\+\\_\\+type@{resource\\+\\_\\+type}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{resource\\+\\_\\+type}{resource\\_type}}\n{\\footnotesize\\ttfamily V\\+C\\+\\_\\+\\+I\\+M\\+A\\+G\\+E\\+\\_\\+\\+T\\+Y\\+P\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::resource\\+\\_\\+type}\n\n\n\ndispmanx image type (R\\+G\\+B888) \n\n\n\nDefinition at line 70 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_aef1016d77620bbfd67bf090fd2f08e19}\\label{struct__fbg__dispmanx__context_aef1016d77620bbfd67bf090fd2f08e19}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!src\\+\\_\\+rect@{src\\+\\_\\+rect}}\n\\index{src\\+\\_\\+rect@{src\\+\\_\\+rect}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{src\\+\\_\\+rect}{src\\_rect}}\n{\\footnotesize\\ttfamily V\\+C\\+\\_\\+\\+R\\+E\\+C\\+T\\+\\_\\+T$\\ast$ \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::src\\+\\_\\+rect}\n\n\n\ndispmanx src rect \n\n\n\nDefinition at line 74 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\\mbox{\\Hypertarget{struct__fbg__dispmanx__context_a583202df9f959780bc21e9e5ce824f34}\\label{struct__fbg__dispmanx__context_a583202df9f959780bc21e9e5ce824f34}} \n\\index{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}!update@{update}}\n\\index{update@{update}!\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context@{\\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context}}\n\\subsubsection{\\texorpdfstring{update}{update}}\n{\\footnotesize\\ttfamily D\\+I\\+S\\+P\\+M\\+A\\+N\\+X\\+\\_\\+\\+U\\+P\\+D\\+A\\+T\\+E\\+\\_\\+\\+H\\+A\\+N\\+D\\+L\\+E\\+\\_\\+T \\+\\_\\+fbg\\+\\_\\+dispmanx\\+\\_\\+context\\+::update}\n\n\n\ndispmanx update \n\n\n\nDefinition at line 72 of file fbg\\+\\_\\+dispmanx.\\+h.\n\n\n\nThe documentation for this struct was generated from the following file\\+:\\begin{DoxyCompactItemize}\n\\item \n\\hyperlink{fbg__dispmanx_8h}{fbg\\+\\_\\+dispmanx.\\+h}\\end{DoxyCompactItemize}\n"
  },
  {
    "path": "examples/Makefile",
    "content": "CC=gcc\nSTANDARD_FLAGS=-Werror -std=c11 -pedantic -D_GNU_SOURCE -D_POSIX_SOURCE\nDEBUG_FLAGS=-DDEBUG -g -Wall\nRELEASE_FLAGS=-O2 -Wall\nDEFP=-DFBG_PARALLEL\nSRC_LIBS=../src/lodepng/lodepng.c ../src/nanojpeg/nanojpeg.c ../src/fbgraphics.c ../custom_backend/fbdev/fbg_fbdev.c\nSRC1=$(SRC_LIBS) quickstart.c\nSRC2=$(SRC_LIBS) simple_parallel_example.c\nSRC3=$(SRC_LIBS) perlin.c full_example.c\nSRC4=$(SRC_LIBS) tunnel.c\nSRC5=$(SRC_LIBS) earth.c\nSRC6=$(SRC_LIBS) flags.c\nSRC7=$(SRC_LIBS) compositing.c\nOUT1=quickstart\nOUT2=simple_parallel_example\nOUT3=full_example\nOUT4=tunnel\nOUT5=earth\nOUT6=flags\nOUT7=compositing\nLIBS1=-lm\nLIBS2=-lm -lpthread\nLIBS3=-lm -lpthread\nLIBS_LFDS_711=liblfds711.a\nLIBS_LFDS_720=liblfds720.a\nINCS=-I ../src/ -I. -I ../custom_backend/fbdev\nINCS3=-I ../src/ -I. -I ../custom_backend/fbdev\nINCS_LFDS_711=-Iliblfds711\nINCS_LFDS_720=-Iliblfds720\n\nall:\n\t$(CC) $(SRC1) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -o $(OUT1)\n\t$(CC) $(SRC2) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT4)\n\t$(CC) $(SRC5) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT5)\n\t$(CC) $(SRC6) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT6)\n\t$(CC) $(SRC7) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT7)\n\ntiny:\n\t$(CC) ../custom_backend/fbdev/fbg_fbdev.c ../src/fbgraphics.c tiny.c $(INCS) $(STANDARD_FLAGS) -fdata-sections -ffunction-sections -flto -DWITHOUT_STB_IMAGE -DWITHOUT_JPEG -DWITHOUT_PNG -Os -o tiny -Wl,--gc-sections,-flto\n\ndebug:\n\t$(CC) $(SRC1) $(INCS) $(STANDARD_FLAGS) $(DEBUG_FLAGS) $(LIBS1) -o $(OUT1)\n\t$(CC) $(SRC2) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT4)\n\t$(CC) $(SRC5) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT5)\n\t$(CC) $(SRC6) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT6)\n\t$(CC) $(SRC7) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(DEBUG_FLAGS) $(LIBS2) -o $(OUT7)\n\nlfds711:\n\t$(CC) $(SRC2) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT2)\n\t$(CC) $(SRC3) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT3)\n\t$(CC) $(SRC4) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT4)\n\t$(CC) $(SRC5) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT5)\n\t$(CC) $(SRC6) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT6)\n\t$(CC) $(SRC7) $(INCS3) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS3) -DLFDS711 -o $(OUT7)\n\nquickstart: $(SRC1)\n\t$(CC) $(SRC1) $(INCS) $(STANDARD_FLAGS) $(RELEASE_FLAGS) $(LIBS1) -o $(OUT1)\n\nsimple: $(SRC2)\n\t$(CC) $(SRC2) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT2)\n\nfull: $(SRC3)\n\t$(CC) $(SRC3) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT3)\n\ntunnel: $(SRC4)\n\t$(CC) $(SRC4) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT4)\n\nearth: $(SRC5)\n\t$(CC) $(SRC5) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT5)\n\nflags: $(SRC6)\n\t$(CC) $(SRC6) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT6)\n\ncompositing: $(SRC7)\n\t$(CC) $(SRC7) $(INCS) $(STANDARD_FLAGS) $(DEFP) $(RELEASE_FLAGS) $(LIBS2) -o $(OUT7)\n\nclean:\n\trm -f *.o $(OUT)\n\trm $(OUT1) $(OUT2) $(OUT3) $(OUT4) $(OUT5) $(OUT6) $(OUT7)\n"
  },
  {
    "path": "examples/compositing.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// utility function to draw a rectangle with borders\nvoid border_rectangle(struct _fbg *fbg, int x, int y, int w, int h, int br, int bg, int bb, int r, int g, int b) {\n    // set the fill color for frect function\n    fbg_fill(fbg, r, g, b);\n\n    fbg_hline(fbg, x - 1, y - 1, w + 2, br, bg, bb);\n    fbg_vline(fbg, x - 1, y, h, br, bg, bb);\n    fbg_hline(fbg, x - 1, y + h, w + 2, br, bg, bb);\n    fbg_vline(fbg, x + w, y, h, br, bg, bb);\n    fbg_frect(fbg, x, y, w, h);\n}\n\nvoid fragment(struct _fbg *fbg, void *data) {\n    fbg_clear(fbg, 0);\n\n    if (fbg->task_id == 1) {\n        // rectangle for the framerate infos\n        fbg_rect(fbg, 2, 2, 8 * 24 - 4, 8 * 8 - 6, 32, 32, 32);\n    } else if (fbg->task_id == 2) {\n        // draw a rectangle with colored borders\n        border_rectangle(fbg, 16, 16, fbg->width - 16 * 2, fbg->height - 16 * 2, 0, 0, 255, 8, 8, 8);\n\n        // draw a diagonal line\n        fbg_line(fbg, 16, 16, fbg->width - 16, fbg->height - 16, 0, 0, 255);\n\n        // draw a polygon\n        int vertices[6] = {100, 100, 200, 100, 100, 200};\n        fbg_polygon(fbg, 3, &vertices[0], 255, 0, 0);\n    }\n}\n\nvoid alphaBlending(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    int alpha = 164; // the layers alpha blend amount\n\n    if (task_id == 1) {\n        alpha = 128;\n    }\n\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = (buffer[j] > 0) ? ((alpha * buffer[j] + (255 - alpha) * fbg->back_buffer[j]) >> 8) : fbg->back_buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    signal(SIGINT, int_handler);\n\n    struct _fbg_img *texture = fbg_loadPNG(fbg, \"texture.png\");\n    struct _fbg_img *bbimg = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bbimg, 8, 8, 33);\n\n    fbg_createFragment(fbg, NULL, fragment, NULL, 2);\n\n    do {\n        fbg_clear(fbg, 0);\n\n        fbg_imageClip(fbg, texture, 0, 0, 0, 0, _FBG_MIN(fbg->width, texture->width), _FBG_MIN(fbg->height, texture->height));\n\n        // we draw with alpha blending function to mix our layer with the background\n        fbg_draw(fbg, alphaBlending);\n\n        // draw fps\n        fbg_write(fbg, \"FBGraphics: Compositing\", 4, 2);\n\n        fbg_write(fbg, \"FPS\", 4, 12+8);\n        fbg_write(fbg, \"#0 (Main): \", 4, 22+8);\n        fbg_write(fbg, \"#1: \", 4, 32+8);\n        fbg_write(fbg, \"#2: \", 4, 32+8+8);\n        fbg_drawFramerate(fbg, NULL, 0, 4 + 32 + 48 + 8, 22 + 8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 1, 4+32, 32+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 2, 4+32, 32+8+8, 255, 255, 255);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fbg_close(fbg);\n\n    fbg_freeImage(texture);\n    fbg_freeImage(bbimg);\n    fbg_freeFont(bbfont);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/earth.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nstruct _fbg_img *earth_texture;\nstruct _fbg_img *earth_night_texture;\nstruct _fbg_img *earth_text_texture;\nstruct _fbg_img *earth_cycle_texture;\n\nstruct _fragment_user_data {\n    float xmotion;\n    float ymotion;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->xmotion = 0.0f;\n    user_data->ymotion = 0.0f;\n\n    return user_data;\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n    \n    if (fbg->task_id > 0) {\n        fbg_clear(fbg, 0);\n    }\n    \n    // https://www.openprocessing.org/sketch/561193\n    int dots_step = 1;\n\n    int elems = 300;\n    int rect_size = 1;\n\n    float xoff = fbg->width / 2.0f;\n    \n    float sphere_radius = fbg->height / 2.5;\n    float yoff = fbg->height / 2.0f - sphere_radius;\n\n    for (int s = fbg->task_id; s < elems; s += (fbg->parallel_tasks + 1)) {\n        float de = (float)s / elems;\n        \n        float bd = fminf(fmaxf((0.5f-fabsf(de - 0.5f)) * 4.0f, 0.05f), 1.0f);\n        \n        float yrepeat = 1;\n        int yyd = (((int)(de * (earth_texture->height * yrepeat))%earth_texture->height)) * earth_texture->width;\n        \n        float tyrepeat = 4.0f;\n        int yyd2 = (((int)(de * (earth_text_texture->height * tyrepeat) + ud->xmotion)%earth_text_texture->height)) * earth_text_texture->width;\n        \n        int yydc = (((int)(de * (earth_cycle_texture->height * yrepeat))%earth_cycle_texture->height)) * earth_cycle_texture->width;\n        \n        // cartesian circle equation\n        float sphere_radius_squared = sphere_radius * sphere_radius;\n        float sh_radius = de * (sphere_radius * 2) - sphere_radius;\n        float xc_off = sqrtf(sphere_radius_squared - sh_radius*sh_radius);\n        \n        float final_x;\n        float final_y = yoff + de * (sphere_radius * 2); // flabby planet bonus : + sin((de * 360 + 180) * (PI / 180) + ud->ymotion / 24.) * 4;\n        \n        for (int e = 0; e <= (int)xc_off / 2; e += dots_step) {\n            float dd = (float)e / xc_off;\n\n            rect_size = 1 + (1.0f - dd) * 4;\n\n            // / (dd+0.5) : shrinking near the center (otherwise : equal distribution of the dots)\n            final_x = xoff - (xc_off) + (xc_off / (dd+0.5f)) * fabsf(0.5f-(dd+0.5f)) * 2 ;\n            \n            float yc_off;\n            \n            // compute UV texels for the colormap\n            float dd2 = 1.0f - dd;\n                \n            yc_off = 1.0f-sqrtf(1.0f - dd2*dd2);\n            \n            // apply colormaps\n            float xrepeat = 0.5f;\n            int xxd = ((earth_texture->width - 1) - (int)(yc_off * (earth_texture->width * xrepeat) + ud->xmotion)%earth_texture->width);\n        \n            int cl = (int)(xxd + yyd) * fbg->components;\n            \n            int r = (int)((float)earth_texture->data[cl] * bd);\n            int g = (int)((float)earth_texture->data[cl + 1] * bd);\n            int b = (int)((float)earth_texture->data[cl + 2] * bd);\n            \n            // second texture (text mask)\n            float txrepeat = 1.;\n            \n            int xxd2 = fmaxf(0, ((earth_text_texture->width - 1) - (int)(yc_off * (earth_text_texture->width * txrepeat) + ud->xmotion)%earth_text_texture->width));\n        \n            int cl2 = (int)(xxd2 + yyd2) * fbg->components;\n            \n            int r2 = (int)((float)earth_text_texture->data[cl2] * bd);\n            int g2 = (int)((float)earth_text_texture->data[cl2 + 1] * bd);\n            int b2 = (int)((float)earth_text_texture->data[cl2 + 2] * bd);\n            \n            // third texture (night version), reuse the first texture UV since they are the same width/height\n            int rn = (int)((float)earth_night_texture->data[cl]);\n            int gn = (int)((float)earth_night_texture->data[cl + 1]);\n            int bn = (int)((float)earth_night_texture->data[cl + 2]);\n            \n            // fourth texture (cycle mask), only use single component since it is black/white\n            int xxdc = ((earth_cycle_texture->width - 1) - (int)(yc_off * (earth_cycle_texture->width * xrepeat) + ud->xmotion * 4)%earth_cycle_texture->width);\n            int clc = (int)(xxdc + yydc) * fbg->components;\n            float rc = (float)earth_cycle_texture->data[clc] / 255.0f;\n            \n            float final_r = r * rc + rn * (1.0f - rc);\n            float final_g = g * rc + gn * (1.0f - rc);\n            float final_b = b * rc + bn * (1.0f - rc);\n            \n            // some compositing \n            fbg_rect(fbg, final_x, final_y, rect_size, rect_size, fminf(255, r * (r2 / 255.0f) + final_r), fminf(255, g * (g2 / 255.0f) + final_g), fminf(255, b * (b2 / 255.0f) + final_b));\n        }\n        \n        for (int e = 0; e <= (int)xc_off / 2; e += dots_step) {\n            float dd = (float)e / xc_off;\n\n            rect_size = 1 + (1.0f - dd) * 4;\n\n            final_x = xoff - (xc_off) + (xc_off-(xc_off / (dd+0.5)) * fabsf(0.5f-(dd+0.5f))) * 2;\n            \n            float yc_off;\n            \n            // compute UV texels for the colormap\n            float dd2 = 1.0f - dd;\n                \n            yc_off = sqrtf(1.0f - dd2*dd2) + 1.270f;\n            \n            // apply colormaps\n            float xrepeat = 0.5;\n            int xxd = ((earth_texture->width - 1) - (int)(yc_off * (earth_texture->width * xrepeat) + ud->xmotion)%earth_texture->width);\n        \n            int cl = (int)(xxd + yyd) * fbg->components;\n            \n            int r = (int)((float)earth_texture->data[cl] * bd);\n            int g = (int)((float)earth_texture->data[cl + 1] * bd);\n            int b = (int)((float)earth_texture->data[cl + 2] * bd);\n            \n            // second texture (text mask)\n            float txrepeat = 1.;\n            \n            int xxd2 = fmaxf(0, ((earth_text_texture->width - 1) - (int)(yc_off * (earth_text_texture->width * txrepeat) + ud->xmotion)%earth_text_texture->width));\n        \n            int cl2 = (int)(xxd2 + yyd2) * fbg->components;\n            \n            int r2 = (int)((float)earth_text_texture->data[cl2] * bd);\n            int g2 = (int)((float)earth_text_texture->data[cl2 + 1] * bd);\n            int b2 = (int)((float)earth_text_texture->data[cl2 + 2] * bd);\n            \n            // third texture (night version), reuse the first texture UV since they are the same width/height\n            int rn = (int)((float)earth_night_texture->data[cl]);\n            int gn = (int)((float)earth_night_texture->data[cl + 1]);\n            int bn = (int)((float)earth_night_texture->data[cl + 2]);\n            \n            // fourth texture (cycle mask), only use single component since it is black/white\n            int xxdc = ((earth_cycle_texture->width - 1) - (int)(yc_off * (earth_cycle_texture->width * xrepeat) + ud->xmotion * 4)%earth_cycle_texture->width);\n            int clc = (int)(xxdc + yydc) * fbg->components;\n            float rc = (float)earth_cycle_texture->data[clc] / 255.0f;\n            \n            float final_r = r * rc + rn * (1.0f - rc);\n            float final_g = g * rc + gn * (1.0f - rc);\n            float final_b = b * rc + bn * (1.0f - rc);\n            \n            // some compositing \n            fbg_rect(fbg, final_x, final_y, rect_size, rect_size, fminf(255, r * (r2 / 255.0f) + final_r), fminf(255, g * (g2 / 255.0f) + final_g), fminf(255, b * (b2 / 255.0f) + final_b));\n        }\n    }\n    \n    ud->xmotion += 0.5;\n    ud->ymotion -= 0.25;\n}\n\nvoid selectiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = (fbg->back_buffer[j] > buffer[j]) ? fbg->back_buffer[j] : buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    signal(SIGINT, int_handler);\n\n    earth_texture = fbg_loadPNG(fbg, \"earth.png\");\n    earth_night_texture = fbg_loadPNG(fbg, \"earth_night.png\");\n    earth_cycle_texture = fbg_loadPNG(fbg, \"earth_cycle.png\");\n    earth_text_texture = fbg_loadPNG(fbg, \"earth_text.png\");\n\n    struct _fbg_img *bbimg = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bbimg, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    struct _fragment_user_data *user_data = fragmentStart(fbg);\n\n    do {\n        fbg_fadeDown(fbg, 8);\n\n        fragment(fbg, user_data);\n\n        fbg_draw(fbg, selectiveMixing);\n\n        fbg_rect(fbg, 0, 2, 8 * 19, 8 * 9 - 4, 0, 0, 0);\n        fbg_write(fbg, \"FBGraphics: Earth\", 4, 2);\n\n        fbg_write(fbg, \"FPS\", 4, 12+8);\n        fbg_write(fbg, \"#0 (Main): \", 4, 22+8);\n        fbg_write(fbg, \"#1: \", 4, 32+8);\n        fbg_write(fbg, \"#2: \", 4, 32+8+2+8);\n        fbg_write(fbg, \"#3: \", 4, 32+16+4+8);\n        fbg_drawFramerate(fbg, NULL, 0, 4 + 32 + 48 + 8, 22 + 8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 1, 4+32, 32+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 2, 4+32, 32+8+2+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 3, 4+32, 32+16+4+8, 255, 255, 255);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fragmentStop(fbg, user_data);\n\n    fbg_close(fbg);\n\n    fbg_freeImage(earth_night_texture);\n    fbg_freeImage(earth_text_texture);\n    fbg_freeImage(earth_cycle_texture);\n    fbg_freeImage(earth_texture);\n    fbg_freeImage(bbimg);\n    fbg_freeFont(bbfont);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/flags.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nstruct _fbg_img *flags_texture;\n\nstruct _fragment_user_data {\n    float xmotion;\n    float ymotion;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->xmotion = 0.0f;\n    user_data->ymotion = 0.0f;\n\n    return user_data;\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    fbg_clear(fbg, 0);\n    \n    // https://www.openprocessing.org/sketch/560394\n\n    int xoff = 64;\n    int yoff = 128;\n\n    int rect_size = 1;\n    float x_step_size = 2;\n\n    float x_end = fbg->width - xoff;\n    float y_end = fbg->height - yoff;\n\n    for (int y = fbg->task_id + 1; y < y_end; y += (fbg->parallel_tasks + 1)) {\n        float ys = (y_end - yoff);\n        float yo = (y - yoff);\n        float yy = yo / ys;\n        int yyd = ((int)(yy * flags_texture->height) % flags_texture->height) * flags_texture->width;\n        float yyy = yy - 0.5;\n        \n        for (int x = xoff; x < x_end; x += x_step_size) {\n            float xs = (x_end - xoff);\n            float xo = (x - xoff);\n            float xx = xo / xs;\n            \n            float xxd = xx * flags_texture->width;\n            \n            int cl = (int)(xxd + yyd) * fbg->components;\n            \n            int r = flags_texture->data[cl];\n            int g = flags_texture->data[cl + 1];\n            int b = flags_texture->data[cl + 2];\n            \n            float xxx = xx - 0.5;\n\n            fbg_rect(fbg, _FBG_MAX(_FBG_MIN(x + cosf(xxx*yyy * M_PI * 4 + ud->xmotion) * 24, fbg->width - rect_size), 0), _FBG_MAX(_FBG_MIN(y + yoff / 2 + sinf(xxx*yyy * M_PI * 7 + ud->ymotion) * 24, fbg->height - rect_size), 0), rect_size, rect_size, r, g, b);\n        }\n    }\n    \n    ud->xmotion += 0.0075;\n    ud->ymotion += 0.05;\n}\n\nvoid selectiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = (fbg->back_buffer[j] > buffer[j]) ? fbg->back_buffer[j] : buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    signal(SIGINT, int_handler);\n\n    flags_texture = fbg_loadPNG(fbg, \"flags.png\");\n    struct _fbg_img *bbimg = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bbimg, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    struct _fragment_user_data *user_data = fragmentStart(fbg);\n\n    do {\n        fragment(fbg, user_data);\n\n        fbg_draw(fbg, selectiveMixing);\n\n        fbg_write(fbg, \"FBGraphics: Flags of the world\", 4, 2);\n\n        fbg_write(fbg, \"FPS\", 4, 12+8);\n        fbg_write(fbg, \"#0 (Main): \", 4, 22+8);\n        fbg_write(fbg, \"#1: \", 4, 32+8);\n        fbg_write(fbg, \"#2: \", 4, 32+8+2+8);\n        fbg_write(fbg, \"#3: \", 4, 32+16+4+8);\n        fbg_drawFramerate(fbg, NULL, 0, 4 + 32 + 48 + 8, 22 + 8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 1, 4+32, 32+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 2, 4+32, 32+8+2+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 3, 4+32, 32+16+4+8, 255, 255, 255);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fragmentStop(fbg, user_data);\n\n    fbg_close(fbg);\n\n    fbg_freeImage(flags_texture);\n    fbg_freeImage(bbimg);\n    fbg_freeFont(bbfont);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/full_example.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\n#include \"perlin.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nstruct _fbg_img *texture;\n\nstruct _fragment_user_data {\n    float pr;\n    float xxm;\n    float motion;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->xxm = 0;\n    user_data->motion = 0;\n    user_data->pr = 8.0f;\n\n    return user_data;\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    fbg_clear(fbg, 0);\n\n    // what we do here is use the perlin noise function and draw it fullscreen\n    // we also mix in a fullscreen texture (which can be repeated along x/y axis if needed)\n\n    float perlin_freq = 0.03 + abs(sin(ud->motion * 8.)) * 8.;\n\n    int x, y;\n    for (y = fbg->task_id - 1; y < fbg->height; y += fbg->parallel_tasks) {\n        float perlin_x = ud->xxm * fbg->height;\n\n        int rep = 4;\n\n        for (x = 0; x < fbg->width; x += 1) {\n            float p = perlin2d(x + perlin_x, y, perlin_freq, 2);\n\n            int r = p*255;\n            int g = p*255;\n            int b = p*255;\n\n            int yy = fminf(fmaxf(y + ud->pr * p, 0), fbg->height - 1);\n            int xx = x;\n\n            int ytl = (((yy * rep - (int)(ud->motion * 4)) % texture->height) * fbg->components) * texture->width;\n            int xtl = ytl + (((x * rep + (int)(ud->motion * 4)) % texture->width) * fbg->components);\n\n            r = texture->data[xtl] * (1. - p);\n            g = texture->data[xtl + 1] * (1. - p);\n            b = texture->data[xtl + 2] * (1. - p);\n\n            fbg_pixel(fbg, xx, yy, r, g, b);\n        }\n    }\n\n    ud->xxm += 0.001;\n    ud->motion += 0.001;\n}\n\nint main(int argc, char* argv[]) {\n    srand(time(NULL));\n\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    signal(SIGINT, int_handler);\n\n    texture = fbg_loadPNG(fbg, \"texture.png\");\n    struct _fbg_img *bbimg = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bbimg, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    do {\n        fbg_clear(fbg, 0);\n\n        //fbg_fadeDown(fbg, 2);\n\n        fbg_draw(fbg, NULL);\n\n        // we just draw texts from this thread\n        fbg_write(fbg, \"FBGraphics\", 4, 2);\n\n        fbg_write(fbg, \"FPS\", 4, 12+8);\n        fbg_write(fbg, \"#0 (Main): \", 4, 22+8);\n        fbg_write(fbg, \"#1: \", 4, 32+8);\n        fbg_write(fbg, \"#2: \", 4, 32+8+2+8);\n        fbg_write(fbg, \"#3: \", 4, 32+16+4+8);\n        fbg_drawFramerate(fbg, NULL, 0, 4+32+48+8, 22+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 1, 4+32, 32+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 2, 4+32, 32+8+2+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 3, 4+32, 32+16+4+8, 255, 255, 255);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fbg_close(fbg);\n\n    fbg_freeImage(texture);\n    fbg_freeImage(bbimg);\n    fbg_freeFont(bbfont);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/perlin.c",
    "content": "#include \"perlin.h\"\n\nint SEED = 0;\n\nint phash[] = {208,34,231,213,32,248,233,56,161,78,24,140,71,48,140,254,245,255,247,247,40,\n                     185,248,251,245,28,124,204,204,76,36,1,107,28,234,163,202,224,245,128,167,204,\n                     9,92,217,54,239,174,173,102,193,189,190,121,100,108,167,44,43,77,180,204,8,81,\n                     70,223,11,38,24,254,210,210,177,32,81,195,243,125,8,169,112,32,97,53,195,13,\n                     203,9,47,104,125,117,114,124,165,203,181,235,193,206,70,180,174,0,167,181,41,\n                     164,30,116,127,198,245,146,87,224,149,206,57,4,192,210,65,210,129,240,178,105,\n                     228,108,245,148,140,40,35,195,38,58,65,207,215,253,65,85,208,76,62,3,237,55,89,\n                     232,50,217,64,244,157,199,121,252,90,17,212,203,149,152,140,187,234,177,73,174,\n                     193,100,192,143,97,53,145,135,19,103,13,90,135,151,199,91,239,247,33,39,145,\n                     101,120,99,3,186,86,99,41,237,203,111,79,220,135,158,42,30,154,120,67,87,167,\n                     135,176,183,191,253,115,184,21,233,58,129,233,142,39,128,211,118,137,139,255,\n                     114,20,218,113,154,27,127,246,250,1,8,198,250,209,92,222,173,21,88,102,219};\n\nint noise2(int x, int y)\n{\n    int tmp = phash[(y + SEED) % 256];\n    return phash[(tmp + x) % 256];\n}\n\nfloat lin_inter(float x, float y, float s)\n{\n    return x + s * (y-x);\n}\n\nfloat smooth_inter(float x, float y, float s)\n{\n    return lin_inter(x, y, s * s * (3-2*s));\n}\n\nfloat noise2d(float x, float y)\n{\n    int x_int = x;\n    int y_int = y;\n    float x_frac = x - x_int;\n    float y_frac = y - y_int;\n    int s = noise2(x_int, y_int);\n    int t = noise2(x_int+1, y_int);\n    int u = noise2(x_int, y_int+1);\n    int v = noise2(x_int+1, y_int+1);\n    float low = smooth_inter(s, t, x_frac);\n    float high = smooth_inter(u, v, x_frac);\n    return smooth_inter(low, high, y_frac);\n}\n\ninline float perlin2d(float x, float y, float freq, int depth)\n{\n    float xa = x*freq;\n    float ya = y*freq;\n    float amp = 1.0;\n    float fin = 0;\n    float div = 0.0;\n\n    int i;\n    for(i=0; i<depth; i++)\n    {\n        div += 256 * amp;\n        fin += noise2d(xa, ya) * amp;\n        amp /= 2;\n        xa *= 2;\n        ya *= 2;\n    }\n\n    return fin/div;\n}"
  },
  {
    "path": "examples/perlin.h",
    "content": "#ifndef _PERLIN_H_\n#define _PERLIN_H_\n\n    extern float perlin2d(float x, float y, float freq, int depth);\n\n#endif"
  },
  {
    "path": "examples/quickstart.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n\n#include \"fbgraphics.h\"\n#include \"fbg_fbdev.h\" // insert any backends from ../custom_backend/backend_name folder\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    signal(SIGINT, int_handler);\n\n    // open \"/dev/fb0\" by default, use fbg_fbdevSetup(\"/dev/fb1\", 0) if you want to use another framebuffer\n    // note : fbg_fbdevInit is the linux framebuffer backend, you can use a different backend easily by including the proper header and compiling with the appropriate backend file found in ../custom_backend/backend_name\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n    \n    struct _fbg_img *texture = fbg_loadPNG(fbg, \"texture.png\");\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n\n    do {\n        fbg_clear(fbg, 0); // can also be replaced by fbg_background(fbg, 0, 0, 0);\n\n        fbg_draw(fbg);\n\n        // you can also use fbg_image(fbg, texture, 0, 0)\n        // but you must be sure that your image size fit on the display\n        fbg_imageClip(fbg, texture, 0, 0, 0, 0, fbg->width, fbg->height);\n\n        fbg_write(fbg, \"Quickstart example\\nFPS:\", 4, 2);\n        fbg_write(fbg, fbg->fps_char, 32 + 8, 2 + 8);\n\n        fbg_rect(fbg, fbg->width / 2 - 32, fbg->height / 2 - 32, 16, 16, 0, 255, 0);\n\n        fbg_pixel(fbg, fbg->width / 2, fbg->height / 2, 255, 0, 0);\n\n        fbg_flip(fbg);\n\n    } while (keep_running);\n\n    fbg_freeImage(texture);\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n\n    fbg_close(fbg);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/run_compositing.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 640 480 640 480 24 -vsync high\n./compositing"
  },
  {
    "path": "examples/run_earth.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 320 240 320 240 24 -vsync high\n./earth"
  },
  {
    "path": "examples/run_flags.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 640 480 640 480 24 -vsync high\n./flags"
  },
  {
    "path": "examples/run_full_example.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 320 240 320 240 24 -vsync high\n./full_example"
  },
  {
    "path": "examples/run_quickstart.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 320 240 320 240 24 -vsync high\n./quickstart"
  },
  {
    "path": "examples/run_simple_parallel_example.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 320 240 320 240 24 -vsync high\n./simple_parallel_example"
  },
  {
    "path": "examples/run_tunnel.sh",
    "content": "#!/bin/sh\nfbset -fb /dev/fb0 -g 320 240 320 240 24 -vsync high\n./tunnel"
  },
  {
    "path": "examples/simple_parallel_example.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\n// user data example\nstruct _fragment_user_data {\n    float offset_x;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->offset_x = fbg->task_id * 2.0f;\n\n    return user_data;\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    //float offset_x = 8.f;//abs(sin(ud->offset_x * 8.f)) * 8.f;\n\n    // this function will be executed by each threads\n    // you are free to call any FBG graphics primitive here\n    \n    //fbg_clear(fbg, 0);\n    \n    // you are also free to fill each threads back buffer the way you want to\n    // fbg->task_id : thread identifier (starting at 1, 0 is reserved for the main thread)\n    // each threads will draw an horizontal line, the shade of the blue color will change based on the thread it is drawn from\n    int x = 0, y = 0;\n    for (y = fbg->task_id; y < fbg->height; y += (fbg->parallel_tasks + 1)) {\n        for (x = 0; x < fbg->width; x += 1) {\n            int i = (x + y * fbg->width) * fbg->components;\n            fbg->back_buffer[i] = fbg->task_id * 85; // note : BGR format\n            fbg->back_buffer[i + 1] = 0;\n            fbg->back_buffer[i + 2] = 0;\n        }\n    }\n    \n    // simple graphics primitive (4 blue rectangle which will be handled by different threads)\n    //fbg_rect(fbg, fbg->width / 2 - 32 + fbg->task_id * 32 + offset_x, 0, 32, 32, 255, 0, 0);\n\n    ud->offset_x += 0.01f;\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nint main() {\n    signal(SIGINT, int_handler);\n\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n/*\n    struct _fbg_img *bb_font_img = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bb_font_img, 8, 8, 33);\n*/\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    // we will make a call to fragment function in our main drawing loop here so we\n    // also need to call fragmentStart and fragmentStop for this thread\n    struct _fragment_user_data *user_data = fragmentStart(fbg);\n\n    //int i = 0;\n    do {\n        //fbg_clear(fbg, 0);\n\n        fragment(fbg, user_data);\n        fbg_draw(fbg, NULL);\n\n        // we use a utility function to draw the framerate of each cores (including main app #0)\n        /*fbg_write(fbg, \"FPS:\\n#0:\\n#1:\\n#2:\\n#3:\", 4, 2);\n        for (i = 0; i <= fbg->parallel_tasks; i += 1) {\n            fbg_drawFramerate(fbg, bbfont, i, 4 + 8 + 8 + 8 + 8, 2 + 8 + 8 * i, 255, 255, 255);\n        }*/\n\n        fbg_flip(fbg);\n\n    } while (keep_running);\n\n    fragmentStop(fbg, user_data);\n/*\n    fbg_freeImage(bb_font_img);\n    fbg_freeFont(bbfont);\n*/\n    fbg_close(fbg);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/tiny.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n\n#include \"fbgraphics.h\"\n#include \"fbg_fbdev.h\" // insert any backends from ../custom_backend/backend_name folder\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nint main(int argc, char* argv[]) {\n    signal(SIGINT, int_handler);\n\n    // open \"/dev/fb0\" by default, use fbg_fbdevSetup(\"/dev/fb1\", 0) if you want to use another framebuffer\n    // note : fbg_fbdevInit is the linux framebuffer backend, you can use a different backend easily by including the proper header and compiling with the appropriate backend file found in ../custom_backend/backend_name\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n    \n    do {\n        fbg_clear(fbg, 0); // can also be replaced by fbg_background(fbg, 0, 0, 0);\n\n        fbg_draw(fbg);\n\n        fbg_rect(fbg, fbg->width / 2 - 8, fbg->height / 2 - 8, 16, 16, 0, 255, 0);\n\n        fbg_pixel(fbg, fbg->width / 2, fbg->height / 2, 255, 0, 0);\n\n        fbg_flip(fbg);\n\n    } while (keep_running);\n\n    fbg_close(fbg);\n\n    return 0;\n}\n"
  },
  {
    "path": "examples/tunnel.c",
    "content": "#include <sys/stat.h>\n#include <signal.h>\n#include <stdlib.h>\n#include <math.h>\n\n#include \"fbg_fbdev.h\"\n\nint keep_running = 1;\n\nvoid int_handler(int dummy) {\n    keep_running = 0;\n}\n\nstruct _fbg_img *tunnel_texture;\n\nstruct _fragment_user_data {\n    float xmotion;\n    float ymotion;\n    float rmotion;\n};\n\nvoid *fragmentStart(struct _fbg *fbg) {\n    struct _fragment_user_data *user_data = (struct _fragment_user_data *)calloc(1, sizeof(struct _fragment_user_data));\n\n    user_data->xmotion = 0.0f;\n    user_data->ymotion = 0.0f;\n    user_data->rmotion = 0.0f;\n\n    return user_data;\n}\n\nvoid fragmentStop(struct _fbg *fbg, void *data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)data;\n\n    free(ud);\n}\n\nvoid fragment(struct _fbg *fbg, void *user_data) {\n    struct _fragment_user_data *ud = (struct _fragment_user_data *)user_data;\n\n    if (fbg->task_id > 0) {\n        fbg_clear(fbg, 0);\n    }\n    \n    // https://www.openprocessing.org/sketch/560781\n\n    int rect_size = 2;\n\n    int elems = 240;\n    int dots = 170;\n\n    int bsize = 12;\n    \n    int xoff = fbg->width / 2;\n    int yoff = fbg->height / 2;\n    \n    int xrad_step = 1;\n    int yrad_step = 1;\n    \n    int xdeform = 34;\n    int ydeform = 34;\n    \n    float xrmotion_size = 8;\n    float yrmotion_size = 8;\n    \n    for (int e = 0; e < elems; e += 1) {\n        float de = (float)e / elems;\n        \n        float bd = fminf(de * 4, 1.);\n        \n        float ex = sin(de * 360.0f * (M_PI / 180.0f) + ud->xmotion);\n        float ey = cos(de * 360.0f * (M_PI / 180.0f) + ud->ymotion);\n        \n        float xrad = e * xrad_step + bsize + sin(de * 360.0f * (M_PI / 180.0f) + ud->xmotion) * xrmotion_size;\n        float yrad = e * yrad_step + bsize + cos(de * 360.0f * (M_PI / 180.0f) + ud->xmotion) * yrmotion_size;\n        \n        float final_ex = xoff + ex * xdeform;\n        \n        float xpp = (de * 360.0f * (M_PI / 180.0f)) / 2;\n\n        float fy = yoff + ey * ydeform;\n\n        int xxd = ((int)(de * tunnel_texture->width));\n        \n        for (int d = fbg->task_id; d < dots; d += (fbg->parallel_tasks + 1)) {\n            float dd = (float)d / dots;\n            \n            float xp = dd * 360.0f * (M_PI / 180.0f);\n            float yp = xp;\n            \n            xp += xpp + ud->rmotion;\n            yp += xpp + ud->rmotion;\n            \n            float final_x = final_ex + sin(xp) * xrad;\n            float final_y = fy + cos(yp) * yrad;\n            \n            if (final_x >= (fbg->width-rect_size) || final_x <= rect_size || final_y >= (fbg->height-rect_size) || final_y <= rect_size) {\n                continue;\n            }\n            \n            // apply colormap / texture\n            int yyd = (((int)(dd * tunnel_texture->height))) * tunnel_texture->width;\n        \n            int cl = (int)(xxd + yyd) * fbg->components;\n            \n            int r = (int)((float)tunnel_texture->data[cl] * bd);\n            int g = (int)((float)tunnel_texture->data[cl + 1] * bd);\n            int b = (int)((float)tunnel_texture->data[cl + 2] * bd);\n            \n            fbg_rect(fbg, final_x, final_y, rect_size, rect_size, r, g, b);\n        }\n    }\n    \n    ud->xmotion += 0.011;\n    ud->ymotion += 0.008;\n    ud->rmotion += 0.006;\n}\n\nvoid selectiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = (fbg->back_buffer[j] > buffer[j]) ? fbg->back_buffer[j] : buffer[j];\n    }\n}\n\nint main(int argc, char* argv[]) {\n    struct _fbg *fbg = fbg_fbdevInit();\n    if (fbg == NULL) {\n        return 0;\n    }\n\n    signal(SIGINT, int_handler);\n\n    tunnel_texture = fbg_loadPNG(fbg, \"tunnel.png\");\n    struct _fbg_img *bbimg = fbg_loadPNG(fbg, \"bbmode1_8x8.png\");\n\n    struct _fbg_font *bbfont = fbg_createFont(fbg, bbimg, 8, 8, 33);\n\n    fbg_createFragment(fbg, fragmentStart, fragment, fragmentStop, 3);\n\n    struct _fragment_user_data *user_data = fragmentStart(fbg);\n\n    do {\n        fbg_fadeDown(fbg, 16);\n\n        fragment(fbg, user_data);\n\n        fbg_draw(fbg, selectiveMixing);\n\n        fbg_rect(fbg, 0, 2, 8 * 19, 8 * 9 - 4, 0, 0, 0);\n        fbg_write(fbg, \"FBGraphics: Tunnel\", 4, 2);\n\n        fbg_write(fbg, \"FPS\", 4, 12+8);\n        fbg_write(fbg, \"#0 (Main): \", 4, 22+8);\n        fbg_write(fbg, \"#1: \", 4, 32+8);\n        fbg_write(fbg, \"#2: \", 4, 32+8+2+8);\n        fbg_write(fbg, \"#3: \", 4, 32+16+4+8);\n        fbg_drawFramerate(fbg, NULL, 0, 4 + 32 + 48 + 8, 22 + 8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 1, 4+32, 32+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 2, 4+32, 32+8+2+8, 255, 255, 255);\n        fbg_drawFramerate(fbg, NULL, 3, 4+32, 32+16+4+8, 255, 255, 255);\n\n        fbg_flip(fbg);\n    } while (keep_running);\n\n    fragmentStop(fbg, user_data);\n\n    fbg_close(fbg);\n\n    fbg_freeImage(tunnel_texture);\n    fbg_freeImage(bbimg);\n    fbg_freeFont(bbfont);\n\n    return 0;\n}\n"
  },
  {
    "path": "src/fbgraphics.c",
    "content": "/*\n    Copyright (c) 2018, 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#include <string.h>\n#include <stdlib.h>\n// TODO: Allow implementation of our own error reporting through WITHOUT_STDIO\n#include <stdio.h>\n\n#ifndef WITHOUT_PNG\n#include \"lodepng/lodepng.h\"\n#endif\n\n#ifndef WITHOUT_JPEG\n#define _NJ_INCLUDE_HEADER_ONLY\n#include \"nanojpeg/nanojpeg.c\"\n#endif\n\n#ifndef WITHOUT_STB_IMAGE\n#define STB_IMAGE_IMPLEMENTATION\n#include \"stb/stb_image.h\"\n#endif\n\n#include \"fbgraphics.h\"\n\n#ifdef FBG_PARALLEL\n    void fbg_terminateFragments(struct _fbg *fbg);\n    void fbg_freeTasks(struct _fbg *fbg);\n\n    #ifdef FBG_LFDS\n    void fbg_freelistCleanup(struct lfds720_freelist_n_state *fs, struct lfds720_freelist_n_element *fe) {\n        struct _fbg_freelist_data *freelist_data;\n        freelist_data = LFDS720_FREELIST_N_GET_VALUE_FROM_ELEMENT(*fe);\n\n        free(freelist_data->buffer);\n\n        freelist_data->buffer = NULL;\n    }\n\n    void fbg_ringbufferCleanup(struct lfds720_ringbuffer_n_state *rs, void *key, void *value, enum lfds720_misc_flag unread_flag) {\n\n    }\n    #endif\n#endif\n\nstruct _fbg *fbg_customSetup(\n        int width, int height,\n        int components,\n        int initialize_buffers,\n        int allow_resizing,\n        void *user_context,\n        void (*user_draw)(struct _fbg *fbg),\n        void (*user_flip)(struct _fbg *fbg),\n        void (*backend_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height),\n        void (*user_free)(struct _fbg *fbg)) {\n    struct _fbg *fbg = (struct _fbg *)calloc(1, sizeof(struct _fbg));\n    if (!fbg) {\n        fprintf(stderr, \"fbg_customSetup: fbg calloc failed!\\n\");\n\n        return NULL;\n    }\n\n    fbg->user_flip = user_flip;\n    fbg->user_draw = user_draw;\n    fbg->user_free = user_free;\n    fbg->backend_resize = backend_resize;\n\n    fbg->width = width;\n    fbg->height = height;\n\n    fbg->components = components;\n    fbg->comp_offset = components - 3;\n\n    fbg->line_length = fbg->width * fbg->components;\n\n    fbg->width_n_height = fbg->width * fbg->height;\n\n    fbg->size = fbg->width * fbg->height * fbg->components;\n\n    fbg->user_context = user_context;\n\n    if (initialize_buffers) {\n        fbg->back_buffer = calloc(1, fbg->size * sizeof(char));\n        if (!fbg->back_buffer) {\n            fprintf(stderr, \"fbg_customSetup: back_buffer calloc failed!\\n\");\n\n            user_free(fbg);\n\n            free(fbg);\n\n            return NULL;\n        }\n\n        fbg->disp_buffer = calloc(1, fbg->size * sizeof(char));\n        if (!fbg->disp_buffer) {\n            fprintf(stderr, \"fbg_customSetup: disp_buffer calloc failed!\\n\");\n\n            user_free(fbg);\n\n            free(fbg->back_buffer);\n            free(fbg);\n\n            return NULL;\n        }\n    }\n\n    fbg->initialize_buffers = initialize_buffers;\n\n    gettimeofday(&fbg->fps_start, NULL);\n\n    fbg_textColor(fbg, 255, 255, 255);\n\n    fbg->allow_resizing = allow_resizing;\n\n#ifdef FBG_PARALLEL\n    fbg->state = 1;\n    fbg->frame = 0;\n    fbg->fps = 0;\n\n    fbg->tasks = 0;\n\n    fbg->fragment_queue_size = 7;\n#endif\n\n    fbg->new_width = 0;\n    fbg->new_height = 0;\n\n    return fbg;\n}\n\nvoid fbg_setResizeCallback(struct _fbg *fbg, void (*user_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height)) {\n    fbg->user_resize = user_resize;\n}\n\nvoid fbg_resize(struct _fbg *fbg, int new_width, int new_height) {\n    if (fbg->backend_resize) {\n        fbg->backend_resize(fbg, new_width, new_height);\n    }\n\n    if (fbg->allow_resizing) {\n#ifdef FBG_PARALLEL\n        int create_fragments = 0;\n        int parallel_tasks = fbg->parallel_tasks;\n\n        void *(*user_fragment_start)(struct _fbg *fbg) = NULL;\n        void (*user_fragment)(struct _fbg *fbg, void *user_data) = NULL;\n        void (*user_fragment_stop)(struct _fbg *fbg, void *user_data) = NULL;\n#endif\n\n        int new_size = new_width * new_height * fbg->components;\n\n        if (fbg->initialize_buffers) {\n            unsigned char *back_buffer = calloc(1, new_size * sizeof(char));\n            if (!back_buffer) {\n                fprintf(stderr, \"fbg_resize: back_buffer realloc failed!\\n\");\n\n                return;\n            }\n\n            unsigned char *disp_buffer = calloc(1, new_size * sizeof(char));\n            if (!disp_buffer) {\n                fprintf(stderr, \"fbg_resize: disp_buffer realloc failed!\\n\");\n\n                free(back_buffer);\n\n                return;\n            }\n\n#ifdef FBG_PARALLEL\n            if (fbg->tasks) {\n                parallel_tasks = fbg->parallel_tasks;\n\n                // save user fragments function to restore them later\n                user_fragment_start = fbg->fragments[0]->user_fragment_start;\n                user_fragment = fbg->fragments[0]->user_fragment;\n                user_fragment_stop = fbg->fragments[0]->user_fragment_stop;\n\n                fbg_terminateFragments(fbg);\n                \n                fbg_freeTasks(fbg);\n\n                create_fragments = 1;\n            }\n#endif\n\n            unsigned char *old_back_buffer = fbg->back_buffer;\n            unsigned char *old_disp_buffer = fbg->disp_buffer;\n\n            fbg->back_buffer = back_buffer;\n            fbg->disp_buffer = disp_buffer;\n\n            free(old_back_buffer);\n            free(old_disp_buffer);\n        }\n\n        fbg->width = new_width;\n        fbg->height = new_height;\n\n        fbg->line_length = fbg->width * fbg->components;\n\n        fbg->width_n_height = fbg->width * fbg->height;\n\n        fbg->size = new_size;\n\n        if (fbg->user_resize) {\n            fbg->user_resize(fbg, new_width, new_height);\n        }\n\n#ifdef FBG_PARALLEL\n        if (fbg->tasks || create_fragments) {\n            if (!user_fragment_start) {\n                user_fragment_start = fbg->fragments[0]->user_fragment_start;\n            }\n\n            if (!user_fragment) {\n                user_fragment = fbg->fragments[0]->user_fragment;\n            }\n\n            if (!user_fragment_stop) {\n                user_fragment_stop = fbg->fragments[0]->user_fragment_stop;\n            }\n\n            fbg_createFragment(fbg, user_fragment_start, user_fragment, user_fragment_stop, parallel_tasks);\n        }\n#endif\n    } else {\n        if (fbg->user_resize) {\n            fbg->user_resize(fbg, new_width, new_height);\n        }\n    }\n}\n\nvoid fbg_pushResize(struct _fbg *fbg, int new_width, int new_height) {\n    if (new_width > 0 && new_height > 0) {\n        fbg->new_width = new_width;\n        fbg->new_height = new_height;\n    }\n}\n\n#ifdef FBG_PARALLEL\n// basically tell all threads/fragments that they should stop\nvoid fbg_terminateFragments(struct _fbg *fbg) {\n    int i = 0;\n    for (i = 0; i < fbg->parallel_tasks; i += 1) {\n        struct _fbg_fragment *frag = fbg->fragments[i];\n\n        frag->state = 0;\n    }\n}\n\n#ifdef FBG_LFDS\nvoid fbg_clearQueue(struct lfds720_ringbuffer_n_state *rs, struct lfds720_freelist_n_state *fs) {\n    void *key;\n    struct _fbg_freelist_data *freelist_data;\n    while (lfds720_ringbuffer_n_read(rs, &key, NULL)) {\n        freelist_data = (struct _fbg_freelist_data *)key;\n\n        LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT(freelist_data->freelist_element, freelist_data);\n#ifdef LFDS711\n        lfds720_freelist_n_threadsafe_push(fs, &freelist_data->freelist_element, NULL);\n#else\n        lfds720_freelist_n_threadsafe_push(fs, NULL, &freelist_data->freelist_element);\n#endif\n    }\n}\n#endif\n\nvoid fbg_freeTasks(struct _fbg *fbg) {\n    int i = 0;\n    for (i = 0; i < fbg->parallel_tasks; i += 1) {\n        pthread_join(fbg->tasks[i], NULL);\n\n        struct _fbg_fragment *frag = fbg->fragments[i];\n\n#ifndef FBG_LFDS\n        free(frag->fbg->back_buffer);\n#endif\n        free(frag->fbg);\n\n#ifdef FBG_LFDS\n        fbg_clearQueue(frag->ringbuffer_state, frag->freelist_state);\n\n        lfds720_ringbuffer_n_cleanup(frag->ringbuffer_state, fbg_ringbufferCleanup);\n        lfds720_freelist_n_cleanup(frag->freelist_state, fbg_freelistCleanup);\n        free(frag->ringbuffer_element);\n        free(frag->ringbuffer_state);\n        free(frag->freelist_state);\n        free(frag->fbg_freelist_data);\n#endif\n\n        free(frag);\n    }\n\n    if (fbg->parallel_tasks > 0) {\n        pthread_barrier_destroy(fbg->sync_barrier);\n\n        free(fbg->sync_barrier);\n\n        fbg->sync_barrier = NULL;\n    }\n\n    free(fbg->tasks);\n    free(fbg->fragments);\n\n    fbg->tasks = NULL;\n    fbg->fragments = NULL;\n\n    fbg->parallel_tasks = 0;\n}\n#endif\n\nvoid fbg_close(struct _fbg *fbg) {\n#ifdef FBG_PARALLEL\n    fbg_terminateFragments(fbg);\n\n    fbg_freeTasks(fbg);\n#endif\n\n    if (fbg->user_free) {\n        fbg->user_free(fbg);\n    }\n\n    if (fbg->initialize_buffers) {\n        free(fbg->back_buffer);\n        free(fbg->disp_buffer);\n    }\n\n    free(fbg);\n}\n\nvoid fbg_computeFramerate(struct _fbg *fbg, int to_string) {\n    gettimeofday(&fbg->fps_stop, NULL);\n\n    double ms = (fbg->fps_stop.tv_sec - fbg->fps_start.tv_sec) * 1000000.0 - (fbg->fps_stop.tv_usec - fbg->fps_start.tv_usec);\n    if (ms >= 1000.0) {\n        gettimeofday(&fbg->fps_start, NULL);\n\n#ifdef FBG_PARALLEL\n        atomic_exchange_explicit(&fbg->fps, fbg->frame, memory_order_relaxed);\n#else\n        fbg->fps = fbg->frame;\n#endif\n        fbg->frame = 0;\n\n        if (to_string) {\n            sprintf(fbg->fps_char, \"%lu\", (long unsigned int)fbg->fps);\n        }\n    }\n\n    fbg->frame += 1;\n}\n\n\nvoid fbg_drawFramerate(struct _fbg *fbg, struct _fbg_font *fnt, int task, int x, int y, int r, int g, int b) {\n#ifdef FBG_PARALLEL\n    if (task > fbg->parallel_tasks) {\n        return;\n    }\n#endif\n\n    if (!fnt) {\n        fnt = &fbg->current_font;\n    }\n\n#ifdef FBG_PARALLEL\n    if (task > 0) {\n        task -= 1;\n\n        static char fps_char[10];\n\n        atomic_uint_fast16_t fps = atomic_load_explicit(&fbg->fragments[task]->fbg->fps, memory_order_relaxed);\n\n        sprintf(fps_char, \"%i\", (int)fps);\n\n        fbg_text(fbg, fnt, fps_char, x, y, r, g, b);\n\n        return;\n    }\n#endif\n\n    fbg_text(fbg, fnt, fbg->fps_char, x, y, r, g, b);\n}\n\nint fbg_getFramerate(struct _fbg *fbg, int task) {\n#ifdef FBG_PARALLEL\n    if (task > fbg->parallel_tasks) {\n        return -1;\n    }\n\n    if (task > 0) {\n        task -= 1;\n\n        atomic_uint_fast16_t fps = atomic_load_explicit(&fbg->fragments[task]->fbg->fps, memory_order_relaxed);\n\n        return (int)fps;\n    }\n#endif\n\n    return fbg->fps;\n}\n\n#ifdef FBG_PARALLEL\natomic_int fbg_fragmentState(struct _fbg_fragment *fbg_fragment) {\n    return fbg_fragment->state;\n}\n\nvoid fbg_fragmentPull(struct _fbg_fragment *fbg_fragment) {\n#ifdef FBG_LFDS\n    struct lfds720_freelist_n_element *freelist_element;\n\n#ifdef LFDS711\n    int pop_result = lfds720_freelist_n_threadsafe_pop(fbg_fragment->freelist_state, &freelist_element, NULL);\n#else\n    int pop_result = lfds720_freelist_n_threadsafe_pop(fbg_fragment->freelist_state, NULL, &freelist_element);\n#endif\n\n    if (pop_result == 0) {\n        fbg_fragment->fbg->back_buffer = NULL;\n\n        return;\n    }\n\n    fbg_fragment->tmp_fbg_freelist_data = LFDS720_FREELIST_N_GET_VALUE_FROM_ELEMENT(*freelist_element);\n\n    fbg_fragment->fbg->back_buffer = fbg_fragment->tmp_fbg_freelist_data->buffer;\n#endif\n}\n\nvoid fbg_fragmentPush(struct _fbg_fragment *fbg_fragment) {\n#ifdef FBG_LFDS\n    enum lfds720_misc_flag overwrite_occurred_flag;\n\n    struct _fbg_freelist_data *overwritten_data = NULL;\n    lfds720_ringbuffer_n_write(fbg_fragment->ringbuffer_state, (void *) (lfds720_pal_uint_t) fbg_fragment->tmp_fbg_freelist_data, NULL, &overwrite_occurred_flag, (void *)&overwritten_data, NULL);\n    if (overwrite_occurred_flag == LFDS720_MISC_FLAG_RAISED) {\n#ifdef DEBUG\n        fprintf(stderr, \"fbg_fragmentPush: Overwrite occured.\\n\");\n        fflush(stdout);\n#endif\n\n        // okay, push it back!\n        LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT(overwritten_data->freelist_element, overwritten_data);\n\n#ifdef LFDS711\n        lfds720_freelist_n_threadsafe_push(fbg_fragment->freelist_state, &overwritten_data->freelist_element, NULL);\n#else\n        lfds720_freelist_n_threadsafe_push(fbg_fragment->freelist_state, NULL, &overwritten_data->freelist_element);\n#endif\n    }\n#endif\n}\n\nvoid fbg_fragment(struct _fbg_fragment *fbg_fragment) {\n#ifdef FBG_LFDS\n    LFDS720_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_PHYSICAL_CORE;\n#endif\n\n    struct _fbg *fbg = fbg_fragment->fbg;\n\n    //fprintf(stdout, \"fbg_fragment: Task started\\n\");\n\n    if (fbg_fragment->user_fragment_start) {\n        fbg_fragment->user_data = fbg_fragment->user_fragment_start(fbg);\n    } else {\n        fbg_fragment->user_data = NULL;\n    }\n\n    while (fbg_fragment->state) {\n        fbg_fragmentPull(fbg_fragment);\n\n        if (fbg->back_buffer) {\n            // execute user fragment\n            fbg_fragment->user_fragment(fbg, fbg_fragment->user_data);\n\n            // wait till all fragments are completed\n            pthread_barrier_wait(fbg->sync_barrier);\n\n            // push to main thread\n            fbg_fragmentPush(fbg_fragment);\n\n#ifndef FBG_LFDS\n            // wait till back buffer is consumed (synchronization mechanism; dumb busy wait for now)\n            fbg_fragment->sync_wait = 1;\n            while (fbg_fragment->sync_wait == 1 && fbg_fragment->state);\n#endif\n            fbg_computeFramerate(fbg, 0);\n        }\n    }\n\n    if (fbg_fragment->user_fragment_stop) {\n        fbg_fragment->user_fragment_stop(fbg, fbg_fragment->user_data);\n    }\n\n    //fprintf(stdout, \"fbg_fragment: Task ended successfully.\\n\");\n}\n\nvoid fbg_createFragment(struct _fbg *fbg,\n        void *(*user_fragment_start)(struct _fbg *fbg),\n        void (*user_fragment)(struct _fbg *fbg, void *user_data),\n        void (*user_fragment_stop)(struct _fbg *fbg, void *user_data),\n        unsigned int parallel_tasks) {\n    if (parallel_tasks < 1) {\n        return;\n    }\n\n    if (fbg->tasks) {\n        fbg_terminateFragments(fbg);\n        \n        fbg_freeTasks(fbg);\n    }\n\n    fbg->parallel_tasks = parallel_tasks;\n\n    fbg->tasks = (pthread_t *)malloc(sizeof(pthread_t) * fbg->parallel_tasks);\n    if (!fbg->tasks) {\n        fprintf(stderr, \"fbg_createFragment: tasks malloc failed!\\n\");\n        return;\n    }\n\n    fbg->fragments = (struct _fbg_fragment **)malloc(sizeof(struct _fbg_fragment *) * fbg->parallel_tasks);\n    if (!fbg->fragments) {\n        fprintf(stderr, \"fbg_createFragment: fragments malloc failed!\\n\");\n\n        free(fbg->tasks);\n\n        return;\n    }\n\n    pthread_barrier_t *sync_barrier = (pthread_barrier_t *)malloc(sizeof(pthread_barrier_t));\n\n    int err = pthread_barrier_init(sync_barrier, NULL, fbg->parallel_tasks);\n    if (err) {\n        fprintf(stderr, \"fbg_createFragment: pthread_barrier_init failed!\\n\");\n\n        free(fbg->tasks);\n        free(fbg->fragments);\n\n        return;\n    }\n\n    fbg->sync_barrier = sync_barrier;\n\n    int i = 0;\n    int created_tasks = 0;\n    for (i = 0; i < fbg->parallel_tasks; i += 1) {\n        // create a task fbg structure for each threads\n        struct _fbg *task_fbg = (struct _fbg *)calloc(1, sizeof(struct _fbg));\n        if (!task_fbg) {\n            fprintf(stderr, \"fbg_createFragment: task_fbg calloc failed!\\n\");\n            continue;\n        }\n\n        //memcpy(&task_fbg->vinfo, &fbg->vinfo, sizeof(struct fb_var_screeninfo));\n        //memcpy(&task_fbg->finfo, &fbg->finfo, sizeof(struct fb_fix_screeninfo));\n\n        task_fbg->components = fbg->components;\n        task_fbg->comp_offset = fbg->comp_offset;\n        task_fbg->line_length = fbg->line_length;\n\n        task_fbg->width = fbg->width;\n        task_fbg->height = fbg->height;\n\n        task_fbg->parallel_tasks = fbg->parallel_tasks;\n\n        task_fbg->width_n_height = task_fbg->width * task_fbg->height;\n\n        task_fbg->size = task_fbg->width * task_fbg->height * task_fbg->components;\n\n        struct _fbg_fragment *frag = (struct _fbg_fragment *)calloc(1, sizeof(struct _fbg_fragment));\n        if (!frag) {\n            fprintf(stderr, \"fbg_createFragment: frag calloc failed!\\n\");\n\n            free(task_fbg);\n\n            continue;\n        }\n\n        // liblfds\n#ifdef FBG_LFDS\n        frag->ringbuffer_element = aligned_alloc(LFDS720_PAL_ATOMIC_ISOLATION_LENGTH_IN_BYTES, sizeof(struct lfds720_ringbuffer_n_element) * (fbg->fragment_queue_size + 1));\n        if (frag->ringbuffer_element == NULL) {\n            fprintf(stderr, \"fbg_createFragment: liblfds ringbuffer data structures aligned_alloc error.\\n\");\n\n            free(task_fbg);\n            free(frag);\n\n            continue;\n        }\n\n        frag->ringbuffer_state = aligned_alloc(LFDS720_PAL_ATOMIC_ISOLATION_LENGTH_IN_BYTES, sizeof(struct lfds720_ringbuffer_n_state));\n        if (frag->ringbuffer_state == NULL) {\n            fprintf(stderr, \"fbg_createFragment: liblfds ringbuffer state aligned_alloc error.\\n\");\n\n            free(task_fbg);\n            free(frag);\n            free(frag->ringbuffer_element);\n\n            continue;\n        }\n\n        frag->freelist_state = aligned_alloc(LFDS720_PAL_ATOMIC_ISOLATION_LENGTH_IN_BYTES, sizeof(struct lfds720_freelist_n_state));\n        if (frag->freelist_state == NULL) {\n            fprintf(stderr, \"fbg_createFragment: liblfds freelist state aligned_alloc error.\\n\");\n\n            free(task_fbg);\n            free(frag);\n            free(frag->ringbuffer_element);\n            free(frag->ringbuffer_state);\n\n            continue;\n        }\n\n        lfds720_ringbuffer_n_init_valid_on_current_logical_core(frag->ringbuffer_state, frag->ringbuffer_element, (fbg->fragment_queue_size + 1), NULL);\n#ifdef LFDS711\n        lfds720_freelist_n_init_valid_on_current_logical_core(frag->freelist_state, NULL, 0, NULL);\n#else\n        lfds720_freelist_n_init_valid_on_current_logical_core(frag->freelist_state, NULL);\n#endif\n\n        frag->fbg_freelist_data = malloc(sizeof(struct _fbg_freelist_data) * fbg->fragment_queue_size);\n        if (frag->fbg_freelist_data == NULL) {\n            fprintf(stderr, \"fbg_createFragment: fbg_freelist_data malloc error.\\n\");\n\n            free(task_fbg);\n            free(frag->ringbuffer_element);\n            free(frag->ringbuffer_state);\n            free(frag->freelist_state);\n            free(frag);\n\n            continue;\n        }\n\n        // allocate buffers\n        int j = 0;\n        for (j = 0; j < fbg->fragment_queue_size; j += 1) {\n            frag->fbg_freelist_data[j].buffer = calloc(1, sizeof(unsigned char) * task_fbg->size);\n\n            LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT(frag->fbg_freelist_data[j].freelist_element, &frag->fbg_freelist_data[j]);\n#ifdef LFDS711\n            lfds720_freelist_n_threadsafe_push(frag->freelist_state, &frag->fbg_freelist_data[j].freelist_element, NULL);\n#else\n            lfds720_freelist_n_threadsafe_push(frag->freelist_state, NULL, &frag->fbg_freelist_data[j].freelist_element);\n#endif\n        }\n        //\n#else\n        task_fbg->back_buffer = calloc(1, sizeof(unsigned char) * task_fbg->size);\n        if (!task_fbg->back_buffer) {\n            fprintf(stderr, \"fbg_createFragment: frag back. buffer calloc failed!\\n\");\n\n            free(task_fbg);\n            free(frag);\n\n            continue;\n        }\n#endif\n\n        task_fbg->sync_barrier = fbg->sync_barrier;\n        task_fbg->task_id = created_tasks + 1;\n\n        //frag->queue_size = fbg->fragment_queue_size;\n        frag->fbg = task_fbg;\n        frag->state = 1;\n\n        frag->user_fragment_start = user_fragment_start;\n        frag->user_fragment = user_fragment;\n        frag->user_fragment_stop = user_fragment_stop;\n\n        fbg->fragments[created_tasks] = frag;\n\n        int err = pthread_create(&fbg->tasks[created_tasks], NULL, (void * (*)(void *))fbg_fragment, frag);\n        if (err) {\n            fprintf(stderr, \"fbg_createFragment: pthread_create error '%i'!\\n\", err);\n\n            free(task_fbg);\n#ifdef FBG_LFDS\n            lfds720_ringbuffer_n_cleanup(frag->ringbuffer_state, fbg_ringbufferCleanup);\n            lfds720_freelist_n_cleanup(frag->freelist_state, fbg_freelistCleanup);\n            free(frag->ringbuffer_element);\n            free(frag->ringbuffer_state);\n            free(frag->freelist_state);\n            free(frag->fbg_freelist_data);\n#endif\n            free(frag);\n\n            continue;\n        }\n\n        created_tasks += 1;\n    }\n\n    if (fbg->parallel_tasks != created_tasks) {\n        fprintf(stderr, \"fbg_createFragment: Some of the specified number of tasks failed to initialize, as such no tasks were created.\\n\");\n\n        fbg_freeTasks(fbg);\n\n        fbg->parallel_tasks = 0;\n    }\n}\n#endif\n\nvoid fbg_fill(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b) {\n    fbg->fill_color.r = r;\n    fbg->fill_color.g = g;\n    fbg->fill_color.b = b;\n}\n\nvoid fbg_pixel(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b) {\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    *pix_pointer++ = r;\n    *pix_pointer++ = g;\n    *pix_pointer++ = b;\n    pix_pointer += fbg->comp_offset;\n}\n\nvoid fbg_pixela(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b, unsigned char a) {\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    *pix_pointer = ((a * r + (255 - a) * (*pix_pointer)) >> 8);\n    pix_pointer += 1;\n    *pix_pointer = ((a * g + (255 - a) * (*pix_pointer)) >> 8);\n    pix_pointer += 1;\n    *pix_pointer = ((a * b + (255 - a) * (*pix_pointer)) >> 8);\n    pix_pointer += 1;\n    pix_pointer += fbg->comp_offset;\n}\n\nvoid fbg_fpixel(struct _fbg *fbg, int x, int y) {\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length));\n\n    memcpy(pix_pointer, &fbg->fill_color, fbg->components);\n}\n\nvoid fbg_plot(struct _fbg *fbg, int index, unsigned char value) {\n    fbg->back_buffer[index] = value;\n}\n\nvoid fbg_hline(struct _fbg *fbg, int x, int y, int w, unsigned char r, unsigned char g, unsigned char b) {\n    int xx;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (xx = 0; xx < w; xx += 1) {\n        *pix_pointer++ = r;\n        *pix_pointer++ = g;\n        *pix_pointer++ = b;\n        pix_pointer += fbg->comp_offset;\n    }\n}\n\nvoid fbg_vline(struct _fbg *fbg, int x, int y, int h, unsigned char r, unsigned char g, unsigned char b) {\n    int yy;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (yy = 0; yy < h; yy += 1) {\n        *pix_pointer++ = r;\n        *pix_pointer++ = g;\n        *pix_pointer++ = b;\n\n        pix_pointer += fbg->line_length - 3;\n    }\n}\n\n// source : http://www.brackeen.com/vga/shapes.html\nvoid fbg_line(struct _fbg *fbg, int x1, int y1, int x2, int y2, unsigned char r, unsigned char g, unsigned char b) {\n    int i, dx, dy, sdx, sdy, dxabs, dyabs, x, y, px, py;\n\n    dx = x2 - x1;\n    dy = y2 - y1;\n    dxabs = abs(dx);\n    dyabs = abs(dy);\n    sdx = _FBG_SGN(dx);\n    sdy = _FBG_SGN(dy);\n    x = dyabs >> 1;\n    y = dxabs >> 1;\n    px = x1;\n    py = y1;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (py * fbg->line_length + px * fbg->components));\n\n    *pix_pointer++ = r;\n    *pix_pointer++ = g;\n    *pix_pointer++ = b;\n    pix_pointer += fbg->comp_offset;\n\n    if (dxabs >= dyabs) {\n        for (i = 0; i < dxabs; i += 1) {\n            y += dyabs;\n            if (y >= dxabs)\n            {\n                y -= dxabs;\n                py += sdy;\n            }\n            px += sdx;\n\n            fbg_pixel(fbg, px, py, r, g, b);\n        }\n    } else {\n        for (i = 0; i < dyabs; i += 1) {\n            x += dxabs;\n            if (x >= dyabs)\n            {\n                x -= dyabs;\n                px += sdx;\n            }\n            py += sdy;\n\n            fbg_pixel(fbg, px, py, r, g, b);\n        }\n    }\n}\n\nvoid fbg_polygon(struct _fbg *fbg, int num_vertices, int *vertices, unsigned char r, unsigned char g, unsigned char b) {\n    int i;\n\n    for (i = 0; i < num_vertices - 1; i += 1) {\n        fbg_line(fbg, vertices[(i << 1) + 0],\n            vertices[(i << 1) + 1],\n            vertices[(i << 1) + 2],\n            vertices[(i << 1) + 3],\n            r, g, b);\n    }\n\n    fbg_line(fbg, vertices[0],\n         vertices[1],\n         vertices[(num_vertices << 1) - 2],\n         vertices[(num_vertices << 1) - 1],\n         r, g, b);\n}\n\nvoid fbg_recta(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a) {\n    int xx = 0, yy = 0, w3 = w * fbg->components;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (yy = 0; yy < h; yy += 1) {\n        for (xx = 0; xx < w; xx += 1) {\n            *pix_pointer = ((a * r + (255 - a) * (*pix_pointer)) >> 8);\n            pix_pointer += 1;\n            *pix_pointer = ((a * g + (255 - a) * (*pix_pointer)) >> 8);\n            pix_pointer += 1;\n            *pix_pointer = ((a * b + (255 - a) * (*pix_pointer)) >> 8);\n            pix_pointer += 1;\n            pix_pointer += fbg->comp_offset;\n        }\n\n        pix_pointer += (fbg->line_length - w3);\n    }\n}\n\nvoid fbg_rect(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b) {\n    int xx = 0, yy = 0, w3 = w * fbg->components;\n\n    char *pix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (yy = 0; yy < h; yy += 1) {\n        for (xx = 0; xx < w; xx += 1) {\n            *pix_pointer++ = r;\n            *pix_pointer++ = g;\n            *pix_pointer++ = b;\n            pix_pointer += fbg->comp_offset;\n        }\n\n        pix_pointer += (fbg->line_length - w3);\n    }\n}\n\nvoid fbg_frect(struct _fbg *fbg, int x, int y, int w, int h) {\n    int xx, yy, w3 = w * fbg->components;\n\n    char *fpix_pointer = (char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    char *org_pointer = fpix_pointer;\n    char *pix_pointer = fpix_pointer;\n\n    for (xx = 0; xx < w; xx += 1) {\n        *pix_pointer++ = fbg->fill_color.r;\n        *pix_pointer++ = fbg->fill_color.g;\n        *pix_pointer++ = fbg->fill_color.b;\n        pix_pointer += fbg->comp_offset;\n    }\n\n    for (yy = 1; yy < h; yy += 1) {\n        fpix_pointer += fbg->line_length;\n\n        memcpy(fpix_pointer, org_pointer, w3);\n    }\n}\n\nvoid fbg_getPixel(struct _fbg *fbg, int x, int y, struct _fbg_rgb *color) {\n    int ofs = y * fbg->line_length + x * fbg->components;\n\n    memcpy(color, (char *)(fbg->back_buffer + ofs), fbg->components);\n}\n\n#ifdef FBG_PARALLEL\nvoid fbg_additiveMixing(struct _fbg *fbg, unsigned char *buffer, int task_id) {\n    int j = 0;\n    for (j = 0; j < fbg->size; j += 1) {\n        fbg->back_buffer[j] = _FBG_MIN(fbg->back_buffer[j] + buffer[j], 255);\n    }\n}\n\nvoid fbg_draw(struct _fbg *fbg, void (*user_mixing)(struct _fbg *fbg, unsigned char *buffer, int task_id)) {\n    int i = 0;\n\n    if (user_mixing == NULL) {\n        user_mixing = fbg_additiveMixing;\n    }\n\n#ifdef FBG_LFDS\n    void *key;\n    int ringbuffer_read_status = 0;\n#endif\n\n    for (i = 0; i < fbg->parallel_tasks; i += 1) {\n        struct _fbg_fragment *fragment = fbg->fragments[i];\n#ifdef FBG_LFDS\n        struct _fbg_freelist_data *freelist_data;\n        unsigned char *task_buffer = NULL;\n\n        //if (sync_with_tasks) {\n            while ((ringbuffer_read_status = lfds720_ringbuffer_n_read(fragment->ringbuffer_state, &key, NULL)) != 1) {\n\n            }\n        /*} else {\n            ringbuffer_read_status = lfds720_ringbuffer_n_read(fragment->ringbuffer_state, &key, NULL);\n        }*/\n\n        if (ringbuffer_read_status == 1) {\n            freelist_data = (struct _fbg_freelist_data *)key;\n\n            task_buffer = freelist_data->buffer;\n\n            //fbg->curr_task_buffer = task_buffer;\n\n            user_mixing(fbg, task_buffer, i + 1);\n\n            LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT(freelist_data->freelist_element, freelist_data);\n#ifdef LFDS711\n            lfds720_freelist_n_threadsafe_push(fragment->freelist_state, &freelist_data->freelist_element, NULL);\n#else\n            lfds720_freelist_n_threadsafe_push(fragment->freelist_state, NULL, &freelist_data->freelist_element);\n#endif\n            \n        }\n#else\n        while (fragment->sync_wait == 0 && fragment->state != 0);\n\n        user_mixing(fbg, fragment->fbg->back_buffer, i + 1);\n        \n        fragment->sync_wait = 0;\n#endif\n    }\n#else\nvoid fbg_draw(struct _fbg *fbg) {\n#endif\n    if (fbg->user_draw) {\n        fbg->user_draw(fbg);\n    }\n\n    // resize the context (registered) by fbg_pushResize if needed\n    // note : we process the resize event here to be sure that a single resize is processed in the main thread, avoiding potential issues with fragments / caller thread\n    if (fbg->new_width > 0 && fbg->new_height > 0) {\n        fbg_resize(fbg, fbg->new_width, fbg->new_height);\n\n        fbg->new_width = 0;\n        fbg->new_height = 0;\n    }\n}\n\nvoid fbg_flip(struct _fbg *fbg) {\n    if (fbg->user_flip) {\n        fbg->user_flip(fbg);\n    } else {\n        unsigned char *tmp_buffer = fbg->disp_buffer;\n        fbg->disp_buffer = fbg->back_buffer;\n        fbg->back_buffer = tmp_buffer;\n    }\n\n    fbg_computeFramerate(fbg, 1);\n}\n\nvoid fbg_clear(struct _fbg *fbg, unsigned char color) {\n    memset(fbg->back_buffer, color, fbg->size);\n}\n\nvoid fbg_fadeDown(struct _fbg *fbg, unsigned char rgb_fade_amount) {\n    int i = 0;\n\n    char *pix_pointer = (char *)(fbg->back_buffer);\n\n    for (i = 0; i < fbg->width_n_height; i += 1) {\n        *pix_pointer = _FBG_MAX(*pix_pointer - rgb_fade_amount, 0);\n        pix_pointer++;\n        *pix_pointer = _FBG_MAX(*pix_pointer - rgb_fade_amount, 0);\n        pix_pointer++;\n        *pix_pointer = _FBG_MAX(*pix_pointer - rgb_fade_amount, 0);\n        pix_pointer++;\n        pix_pointer += fbg->comp_offset;\n    }\n}\n\nvoid fbg_fadeUp(struct _fbg *fbg, unsigned char rgb_fade_amount) {\n    int i = 0;\n\n    char *pix_pointer = (char *)(fbg->back_buffer);\n\n    for (i = 0; i < fbg->width_n_height; i += 1) {\n        *pix_pointer = _FBG_MIN(*pix_pointer + rgb_fade_amount, 255);\n        pix_pointer++;\n        *pix_pointer = _FBG_MIN(*pix_pointer + rgb_fade_amount, 255);\n        pix_pointer++;\n        *pix_pointer = _FBG_MIN(*pix_pointer + rgb_fade_amount, 255);\n        pix_pointer++;\n        pix_pointer += fbg->comp_offset;\n    }\n}\n\nvoid fbg_background(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b) {\n    int i = 0;\n\n    char *pix_pointer = (char *)(fbg->back_buffer);\n\n    for (i = 0; i < fbg->width_n_height; i += 1) {\n        *pix_pointer = r;\n        pix_pointer++;\n        *pix_pointer = g;\n        pix_pointer++;\n        *pix_pointer = b;\n        pix_pointer++;\n        pix_pointer += fbg->comp_offset;\n    }\n}\n\nfloat fbg_hue2rgb(float v1, float v2, float vH) {\n    if (vH < 0)\n        vH += 1;\n\n    if (vH > 1)\n        vH -= 1;\n\n    if ((6 * vH) < 1)\n        return (v1 + (v2 - v1) * 6 * vH);\n\n    if ((2 * vH) < 1)\n        return v2;\n\n    if ((3 * vH) < 2)\n        return (v1 + (v2 - v1) * ((2.0f / 3) - vH) * 6);\n\n    return v1;\n}\n\nvoid fbg_hslToRGB(struct _fbg_rgb *color, float h, float s, float l) {\n    if (s == 0) {\n        color->r = color->g = color->b = (unsigned char)(l * 255);\n    } else {\n        float v1, v2;\n        float hue = (float)h / 360;\n\n        v2 = (l < 0.5) ? (l * (1 + s)) : ((l + s) - (l * s));\n        v1 = 2 * l - v2;\n\n        color->r = (unsigned char)(255 * fbg_hue2rgb(v1, v2, hue + (1.0f / 3)));\n        color->g = (unsigned char)(255 * fbg_hue2rgb(v1, v2, hue));\n        color->b = (unsigned char)(255 * fbg_hue2rgb(v1, v2, hue - (1.0f / 3)));\n    }\n}\n\nvoid fbg_rgbToHsl(struct _fbg_hsl *color, float r, float g, float b) {\n    r /= 255.0f, g /= 255.0f, b /= 255.0f;\n    int max = fmaxf(fmaxf(r, g), b), min = fminf(fminf(r, g), b);\n    float h = 0, s, l = (max + min) / 2.0f;\n\n    int ri = r, gi = g, bi = b;\n\n    if (max == min){\n        h = s = 0; // achromatic\n    } else {\n        float d = max - min;\n        s = l > 0.5f ? d / (2.0f - max - min) : d / (max + min);\n\n        if (max == ri)\n            h = (g - b) / d + (g < b ? 6.0f : 0);\n        else if (max == gi)\n            h = (b - r) / d + 2.0f;\n        else if (max == bi)\n            h = (r - g) / d + 4.0f;\n\n        h /= 6.0f;\n    }\n\n    color->h = h;\n    color->s = s;\n    color->l = l;\n}\n\nstruct _fbg_font *fbg_createFont(struct _fbg *fbg, struct _fbg_img *img, int glyph_width, int glyph_height, unsigned char first_char) {\n    struct _fbg_font *fnt = (struct _fbg_font *)calloc(1, sizeof(struct _fbg_font));\n    if (!fnt) {\n        fprintf(stderr, \"fbg_createFont : calloc failed!\\n\");\n    }\n\n    int glyph_count = (img->width / glyph_width) * (img->height / glyph_height);\n\n    fnt->glyph_coord_x = calloc(1, glyph_count * sizeof(int));\n    if (!fnt->glyph_coord_x) {\n        fprintf(stderr, \"fbg_createFont (%ix%i '%c'): glyph_coord_x calloc failed!\\n\", glyph_width, glyph_height, first_char);\n\n        free(fnt);\n\n        return NULL;\n    }\n\n    fnt->glyph_coord_y = calloc(1, glyph_count * sizeof(int));\n    if (!fnt->glyph_coord_y) {\n        fprintf(stderr, \"fbg_createFont (%ix%i '%c'): glyph_coord_y calloc failed!\\n\", glyph_width, glyph_height, first_char);\n\n        free(fnt->glyph_coord_x);\n        free(fnt);\n\n        return NULL;\n    }\n\n    fnt->glyph_width = glyph_width;\n    fnt->glyph_height = glyph_height;\n    fnt->first_char = first_char;\n\n    int i = 0;\n\n    for (i = 0; i < glyph_count; i += 1) {\n        int gcoord = i * glyph_width;\n        int gcoordx = gcoord % img->width;\n        int gcoordy = (gcoord / img->width) * glyph_height;\n\n        fnt->glyph_coord_x[i] = gcoordx;\n        fnt->glyph_coord_y[i] = gcoordy;\n    }\n\n    fnt->bitmap = img;\n\n    // assign it by default if there is no default fonts\n    if (fbg->current_font.bitmap == 0) {\n        fbg_textFont(fbg, fnt);\n    }\n\n    return fnt;\n}\n\nvoid fbg_textFont(struct _fbg *fbg, struct _fbg_font *fnt) {\n    fbg->current_font = *fnt;\n}\n\nvoid fbg_textColor(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b) {\n    fbg->text_color.r = r;\n    fbg->text_color.g = g;\n    fbg->text_color.b = b;\n}\n\nvoid fbg_textColorKey(struct _fbg *fbg, unsigned char v) {\n    fbg->text_colorkey = v;\n}\n\nvoid fbg_textBackground(struct _fbg *fbg, int r, int g, int b, int a) {\n    fbg->text_background.r = r;\n    fbg->text_background.g = g;\n    fbg->text_background.b = b;\n    fbg->text_alpha = a;\n}\n\nvoid fbg_text(struct _fbg *fbg, struct _fbg_font *fnt, char *text, int x, int y, int r, int g, int b) {\n    int i = 0, c = 0, gx, gy;\n\n    if (!fnt) {\n        fnt = &fbg->current_font;\n    }\n\n    for (i = 0; i < strlen(text); i += 1) {\n        char glyph = text[i];\n\n        if (glyph == ' ') {\n            fbg_recta(fbg, x + c * fnt->glyph_width, y, fnt->glyph_width, fnt->glyph_height, fbg->text_background.r, fbg->text_background.g, fbg->text_background.b, fbg->text_alpha);\n            \n            c += 1;\n\n            continue;\n        }\n\n        if (glyph == '\\n') {\n            c = 0;\n            y += fnt->glyph_height;\n\n            continue;\n        }\n\n        unsigned char font_glyph = glyph - fnt->first_char;\n\n        int gcoordx = fnt->glyph_coord_x[font_glyph];\n        int gcoordy = fnt->glyph_coord_y[font_glyph];\n\n        for (gy = 0; gy < fnt->glyph_height; gy += 1) {\n            int ly = gcoordy + gy;\n            int fly = ly * fnt->bitmap->width;\n            int py = y + gy;\n\n            for (gx = 0; gx < fnt->glyph_width; gx += 1) {\n                int lx = gcoordx + gx;\n                unsigned char fl = fnt->bitmap->data[(fly + lx) * fbg->components];\n\n                if (fl == fbg->text_colorkey) {\n                    fbg_pixela(fbg, x + gx + c * fnt->glyph_width, py, fbg->text_background.r, fbg->text_background.g, fbg->text_background.b, fbg->text_alpha);\n                } else {\n                    fbg_pixel(fbg, x + gx + c * fnt->glyph_width, py, r, g, b);\n                }\n            }\n        }\n\n        c += 1;\n    }\n}\n\nvoid fbg_freeFont(struct _fbg_font *font) {\n    free(font->glyph_coord_x);\n    free(font->glyph_coord_y);\n\n    free(font);\n}\n\nstruct _fbg_img *fbg_createImage(struct _fbg *fbg, unsigned int width, unsigned int height) {\n    struct _fbg_img *img = (struct _fbg_img *)calloc(1, sizeof(struct _fbg_img));\n    if (!img) {\n        fprintf(stderr, \"fbg_createImage : calloc failed!\\n\");\n    }\n\n    img->data = calloc(1, (width * height * fbg->components) * sizeof(char));\n    if (!img->data) {\n        fprintf(stderr, \"fbg_createImage (%ix%i): calloc failed!\\n\", width, height);\n\n        free(img);\n\n        return NULL;\n    }\n\n    img->width = width;\n    img->height = height;\n\n    return img;\n}\n\n#ifndef WITHOUT_STDIO\n#ifndef WITHOUT_JPEG\nstruct _fbg_img *fbg_loadJPEG(struct _fbg *fbg, const char *filename) {\n    unsigned char *data;\n    unsigned int width;\n    unsigned int height;\n\n    size_t size;\n\n    FILE *f = fopen(filename, \"rb\");\n\n    if (!f) {\n        fprintf(stderr, \"fbg_loadJPEG '%s' : fopen failed.\\n\", filename);\n\n        return NULL;\n    }\n\n    fseek(f, 0, SEEK_END);\n    size = (int)ftell(f);\n    data = (unsigned char*) malloc(size);\n\n    if (!data) {\n        fprintf(stderr, \"fbg_loadJPEG '%s' : malloc failed.\\n\", filename);\n\n        fclose(f);\n\n        return NULL;\n    }\n\n    fseek(f, 0, SEEK_SET);\n    size = (int)fread(data, 1, size, f);\n    fclose(f);\n\n    njInit();\n\n    nj_result_t nj_err = njDecode(data, size);\n    if (nj_err != NJ_OK) {\n        free(data);\n\n        fprintf(stderr, \"fbg_loadJPEG '%s' : njDecode failed with error code '%i'.\\n\", filename, nj_err);\n\n        return NULL;\n    }\n\n    width = njGetWidth();\n    height = njGetHeight();\n\n    free(data);\n\n    struct _fbg_img *img = fbg_createImage(fbg, width, height);\n    if (!img) {\n        fprintf(stderr, \"fbg_loadJPEG '%s' : Image data allocation failed\\n\", filename);\n\n        njDone();\n\n        return NULL;\n    }\n\n    data = njGetImage();\n\n    unsigned char *pix_pointer = data;\n    unsigned char *pix_pointer2 = data;\n\n    if (fbg->bgr) {\n        int y, x;\n        for (y = 0; y < height; y += 1) {\n            for (x = 0; x < width; x += 1) {\n                int b = *pix_pointer2++;\n                pix_pointer2++;\n                int r = *pix_pointer2++;\n\n                *pix_pointer++ = r;\n                pix_pointer++;\n                *pix_pointer++ = b;\n            }\n        }\n    }\n\n    pix_pointer = data;\n    pix_pointer2 = img->data;\n\n    int i;\n    for (i = 0; i < njGetImageSize(); i += 1) {\n        *pix_pointer2++ = *pix_pointer++;\n        *pix_pointer2++ = *pix_pointer++;\n        *pix_pointer2++ = *pix_pointer++;\n        pix_pointer2 += fbg->comp_offset;\n    }\n\n    njDone();\n\n    return img;\n}\n#endif\n\n#ifndef WITHOUT_PNG\nstruct _fbg_img *fbg_loadPNG(struct _fbg *fbg, const char *filename) {\n    unsigned char *data;\n    unsigned int width;\n    unsigned int height;\n    unsigned int error;\n\n    if (fbg->components == 3) {\n        error = lodepng_decode24_file(&data, &width, &height, filename);\n    } else {\n        error = lodepng_decode32_file(&data, &width, &height, filename);\n    }\n\n    if (error) {\n        fprintf(stderr, \"fbg_loadPNG %u: %s\\n\", error, lodepng_error_text(error));\n\n        return NULL;\n    }\n\n    struct _fbg_img *img = fbg_createImage(fbg, width, height);\n    if (!img) {\n        fprintf(stderr, \"fbg_loadPNG : Image '%s' data allocation failed\\n\", filename);\n\n        free(data);\n\n        return NULL;\n    }\n\n    if (fbg->bgr) {\n        unsigned char *pix_pointer = data;\n        unsigned char *pix_pointer2 = data;\n\n        int y, x;\n        for (y = 0; y < height; y += 1) {\n            for (x = 0; x < width; x += 1) {\n                int b = *pix_pointer2++;\n                pix_pointer2++;\n                int r = *pix_pointer2++;\n                pix_pointer2 += fbg->comp_offset;\n\n                *pix_pointer++ = r;\n                pix_pointer++;\n                *pix_pointer++ = b;\n                pix_pointer += fbg->comp_offset;\n            }\n        }\n    }\n\n    memcpy(img->data, data, width * height * fbg->components);\n\n    free(data);\n\n    return img;\n}\n#endif\n\n#ifndef WITHOUT_STB_IMAGE\nstruct _fbg_img *fbg_loadSTBImage(struct _fbg *fbg, const char *filename) {\n    unsigned char *data;\n    int width;\n    int height;\n    int components;\n\n    data = stbi_load(filename, &width, &height, &components, fbg->components);\n    if (!data) {\n        fprintf(stderr, \"fbg_loadSTBImage: %s\\n\", stbi_failure_reason());\n\n        return NULL;\n    }\n\n    struct _fbg_img *img = fbg_createImage(fbg, width, height);\n    if (!img) {\n        fprintf(stderr, \"fbg_loadSTBImage: Image '%s' data allocation failed\\n\", filename);\n\n        stbi_image_free(data);\n\n        return NULL;\n    }\n\n    free(img->data);\n    img->data = data;\n\n    return img;\n}\n#endif\n\nstruct _fbg_img *fbg_loadImage(struct _fbg *fbg, const char *filename) {\n    struct _fbg_img *img = NULL;\n    \n#ifndef WITHOUT_PNG\n    img = fbg_loadPNG(fbg, filename);\n#endif\n\n#ifndef WITHOUT_JPEG\n    if (img == NULL) {\n        img = fbg_loadJPEG(fbg, filename);\n    }\n#endif\n\n#ifndef WITHOUT_STB_IMAGE\n    if (img == NULL) {\n        img = fbg_loadSTBImage(fbg, filename);\n    }\n#endif\n\n    return img;\n}\n#endif // WITHOUT_STDIO\n\n#ifndef WITHOUT_STB_IMAGE\nstruct _fbg_img *fbg_loadSTBImageFromMemory(struct _fbg *fbg, const unsigned char *buffer, int size) {\n    unsigned char *output;\n    int width;\n    int height;\n    int components;\n    output = stbi_load_from_memory(buffer, size, &width, &height, &components, fbg->components);\n    if (!output) {\n        fprintf(stderr, \"fbg_loadSTBImage: %s\\n\", stbi_failure_reason());\n\n        return NULL;\n    }\n\n    struct _fbg_img *img = fbg_createImage(fbg, width, height);\n    if (!img) {\n        fprintf(stderr, \"fbg_loadSTBImageFromMemory: Image of %ix%i data allocation failed\\n\", width, height);\n\n        stbi_image_free(output);\n\n        return NULL;\n    }\n\n    free(img->data);\n    img->data = output;\n\n    return img;\n}\n#endif\n\nstruct _fbg_img *fbg_loadImageFromMemory(struct _fbg *fbg, const unsigned char *data, int size) {\n    struct _fbg_img *img = NULL;\n\n    // TODO: Implement fbg_loadPNGFromMemory()\n    // TODO: Implement fbg_loadJPEGFromMemory()\n\n#ifndef WITHOUT_STB_IMAGE\n    if (img == NULL) {\n        img = fbg_loadSTBImageFromMemory(fbg, data, size);\n    }\n#endif\n\n    return img;\n}\n\nvoid fbg_image(struct _fbg *fbg, struct _fbg_img *img, int x, int y) {\n    unsigned char *pix_pointer = (unsigned char *)(fbg->back_buffer + (y * fbg->line_length) + x * fbg->components);\n    unsigned char *img_pointer = img->data;\n\n    int i = 0;\n    int w3 = img->width * fbg->components;\n\n    for (i = 0; i < img->height; i += 1) {\n        memcpy(pix_pointer, img_pointer, w3);\n        pix_pointer += fbg->line_length;\n        img_pointer += w3;\n    }\n}\n\nvoid fbg_imageColorkey(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cr, int cg, int cb) {\n    unsigned char *img_pointer = img->data;\n\n    int i = 0, j = 0;\n    \n    for (i = 0; i < img->height; i += 1) {\n        unsigned char *pix_pointer = (unsigned char *)(fbg->back_buffer + ((y + i) * fbg->line_length) + x * fbg->components);\n        for (j = 0; j < img->width; j += 1) {\n            int ir = *img_pointer++,\n                ig = *img_pointer++,\n                ib = *img_pointer++;\n\n            img_pointer += fbg->comp_offset;\n\n            if (ir == cr && ig == cg && ib == cb) {\n                pix_pointer += fbg->components;\n                continue;\n            }\n\n            *pix_pointer++ = ir;\n            *pix_pointer++ = ig;\n            *pix_pointer++ = ib;\n            pix_pointer += fbg->comp_offset;\n        }\n    }\n}\n\nvoid fbg_imageClip(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cx, int cy, int cw, int ch) {\n    unsigned char *pix_pointer = (unsigned char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n    unsigned char *img_pointer = (unsigned char *)(img->data + (cy * img->width * fbg->components));\n\n    img_pointer += cx * fbg->components;\n\n    int i = 0;\n    int w3 = _FBG_MIN((cw - cx) * fbg->components, (fbg->width - x) * fbg->components);\n    int h = ch - cy;\n\n    for (i = 0; i < h; i += 1) {\n        memcpy(pix_pointer, img_pointer, w3);\n        pix_pointer += fbg->line_length;\n        img_pointer += img->width * fbg->components;\n    }\n}\n\nvoid fbg_imageFlip(struct _fbg_img *img) {\n    int height_m1 = img->height - 1;\n    int height_d2 = img->height >> 1;\n\n    int i, j;\n    for (i = 0; i < height_d2; i += 1) {\n        int fy = (height_m1 - i) * img->width;\n        int y = i * img->width;\n\n        for (j = 0; j < img->width; j += 1) {\n            img->data[y + j] = img->data[fy + j];\n        }\n    }\n}\n\nvoid fbg_imageEx(struct _fbg *fbg, struct _fbg_img *img, int x, int y, float sx, float sy, int cx, int cy, int cw, int ch) {\n    float x_ratio_inv = 1.0f / sx;\n    float y_ratio_inv = 1.0f / sy;\n\n    int px, py;\n    int cx2 = (float)cx * sx;\n    int cy2 = (float)cy * sy;\n    int w2 = (float)(cw + cx) * sx;\n    int h2 = (float)(ch + cy) * sy;\n    int i, j;\n\n    int d = w2 - cx2;\n\n    if (d >= (fbg->width - x)) {\n        w2 -= (d - (fbg->width - x));\n    }\n\n    unsigned char *pix_pointer = (unsigned char *)(fbg->back_buffer + (y * fbg->line_length + x * fbg->components));\n\n    for (i = cy2; i < h2; i += 1) {\n        py = floorf(x_ratio_inv * (float)i);\n\n        for (j = cx2; j < w2; j += 1) {\n            px = floorf(y_ratio_inv * (float)j);\n            \n            unsigned char *img_pointer = (unsigned char *)(img->data + ((px + py * img->width) * fbg->components));\n\n            memcpy(pix_pointer, img_pointer, fbg->components);\n\n            pix_pointer += fbg->components;\n        }\n\n        pix_pointer += fbg->line_length - (w2 - cx2) * fbg->components;\n    }\n}\n\nvoid fbg_freeImage(struct _fbg_img *img) {\n    free(img->data);\n\n    free(img);\n}\n\nvoid fbg_drawInto(struct _fbg *fbg, unsigned char *buffer) {\n    if (buffer == NULL) {\n        fbg->back_buffer = fbg->temp_buffer;\n        fbg->temp_buffer = NULL;\n    } else {\n        fbg->temp_buffer = fbg->back_buffer;\n        fbg->back_buffer = buffer;\n    }\n}\n\nfloat fbg_randf(float a, float b) {\n    float random = ((float) rand()) / (float) RAND_MAX;\n    float diff = b - a;\n    float r = random * diff;\n    return a + r;\n}\n"
  },
  {
    "path": "src/fbgraphics.h",
    "content": "/*\n    Copyright (c) 2018, 2019, 2020 Julien Verneuil\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n        * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n        * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in the\n        documentation and/or other materials provided with the distribution.\n        * Neither the name of the organization nor the\n        names of its contributors may be used to endorse or promote products\n        derived from this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n    DISCLAIMED. IN NO EVENT SHALL Julien Verneuil BE LIABLE FOR ANY\n    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FB_GRAPHICS_H\n#define FB_GRAPHICS_H\n\n    #include <time.h>\n    #include <sys/time.h>\n    #include <stdint.h>\n    #include <math.h>\n\n#ifdef FBG_PARALLEL\n    #include <stdatomic.h>\n    #include <pthread.h>\n\n// compatibility layer for liblfds 711 version (because 720 was unreleased at the time of writing this)\n#ifdef FBG_LFDS\n#ifdef LFDS711\n    #include \"liblfds711.h\"\n\n    #define lfds720_freelist_n_element lfds711_freelist_element\n    #define lfds720_ringbuffer_n_element lfds711_ringbuffer_element\n    #define lfds720_ringbuffer_n_state lfds711_ringbuffer_state\n    #define lfds720_freelist_n_state lfds711_freelist_state\n    #define LFDS720_PAL_ATOMIC_ISOLATION_LENGTH_IN_BYTES LFDS711_PAL_ATOMIC_ISOLATION_IN_BYTES\n    #define lfds720_ringbuffer_n_init_valid_on_current_logical_core lfds711_ringbuffer_init_valid_on_current_logical_core\n    #define lfds720_freelist_n_init_valid_on_current_logical_core lfds711_freelist_init_valid_on_current_logical_core\n    #define LFDS720_FREELIST_N_SET_VALUE_IN_ELEMENT LFDS711_FREELIST_SET_VALUE_IN_ELEMENT\n    #define LFDS720_FREELIST_N_GET_VALUE_FROM_ELEMENT LFDS711_FREELIST_GET_VALUE_FROM_ELEMENT\n    #define lfds720_freelist_n_threadsafe_push lfds711_freelist_push\n    #define lfds720_freelist_n_threadsafe_pop lfds711_freelist_pop\n    #define lfds720_ringbuffer_n_cleanup lfds711_ringbuffer_cleanup\n    #define lfds720_freelist_n_cleanup lfds711_freelist_cleanup\n    #define lfds720_ringbuffer_n_read lfds711_ringbuffer_read\n    #define lfds720_ringbuffer_n_write lfds711_ringbuffer_write\n    #define lfds720_misc_flag lfds711_misc_flag\n    #define LFDS720_MISC_FLAG_RAISED LFDS711_MISC_FLAG_RAISED\n    #define LFDS720_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_PHYSICAL_CORE LFDS711_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE\n    #define lfds720_pal_uint_t lfds711_pal_uint_t\n#else\n    #include \"liblfds720.h\"\n#endif\n#endif\n#endif\n\n// ### Library structures\n\n    //! RGBA color data structure\n    /*! Hold RGBA components [0,255]*/\n    struct _fbg_rgb {\n        unsigned char r;\n        unsigned char g;\n        unsigned char b;\n        unsigned char a;\n    };\n\n    //! HSL color data structure\n    /*! Hold HSL components S/L [0,1], HUE [0, 360]*/\n    struct _fbg_hsl {\n        int h;\n        float s;\n        float l;\n    };\n\n    //! Image data structure\n    /*! Hold images informations and data */\n    struct _fbg_img {\n        //! RGB image data (bpp depend on framebuffer settings)\n        unsigned char *data;\n\n        //! Image width in pixels\n        unsigned int width;\n        //! Image height in pixels\n        unsigned int height;\n    };\n\n    //! Bitmap font data structure\n    /*! Hold bitmap font informations and associated image */\n    struct _fbg_font {\n        //! Pre-computed X glyphs coordinates\n        int *glyph_coord_x;\n        //! Pre-computed Y glyphs coordinates\n        int *glyph_coord_y;\n\n        //! Width of a glyph\n        int glyph_width;\n        //! Height of a glyph\n        int glyph_height;\n\n        //! First ASCII character of the bitmap font file\n        unsigned char first_char;\n\n        //! Associated font image data structure\n        struct _fbg_img *bitmap;\n    };\n\n    //! FB Graphics context data structure\n    /*! Hold all data related to a FBG context */\n    struct _fbg {\n        //! Framebuffer real data length (with BPP)\n        int size;\n\n        //! Front / display buffer\n        unsigned char *disp_buffer;\n        //! Back buffer\n        /*! All FB Graphics functions draw into this buffer. */\n        unsigned char *back_buffer;\n        //! Temporary buffer\n        unsigned char *temp_buffer;\n\n        //! Wether to allow context resize.\n        int allow_resizing;\n\n        //! Wether to allow FBG to allocate its internal buffers\n        int initialize_buffers;\n\n        //! Current fill color\n        /*! Default to black. */\n        struct _fbg_rgb fill_color;\n\n        //! Current text color\n        /*! Default to white. */\n        struct _fbg_rgb text_color;\n\n        //! Current text background color (based on colorkey value)\n        /*! Default to black. */\n        struct _fbg_rgb text_background;\n\n        //! Current text color key\n        /*! Default to black. */\n        unsigned char text_colorkey;\n\n        //! Text background alpha value\n        /*! Default to transparent. */\n        int text_alpha;\n\n        //! Current font\n        /*! No fonts is loaded by default and the first loaded font will be assigned automatically as the current font. */\n        struct _fbg_font current_font;\n\n        //! Display width in pixels\n        int width;\n        //! Display height in pixels\n        int height;\n        //! Display lenght in pixels (width * height)\n        int width_n_height;\n        //! Display components amount (3 = 24 BPP / 4 = 32 BPP)\n        int components;\n        //! Offset to add in case of 32 BPP\n        int comp_offset;\n        //! Internal buffers line length\n        int line_length;\n\n        //! Requested new display width (resize event)\n        int new_width;\n        //! Requested new display height (resize event)\n        int new_height;\n\n        //! Current FPS\n#ifdef FBG_PARALLEL\n        atomic_uint_fast16_t fps;\n#else\n        int16_t fps;\n#endif\n\n        //! Current FPS as a string\n        char fps_char[10];\n\n        //! First frame time for the current second\n        struct timeval fps_start;\n        //! Last frame time for the current second\n        struct timeval fps_stop;\n\n        //! Frame counter for the current second\n        int frame;\n\n        //! Flag indicating a BGR framebuffer\n        int bgr;\n\n        //! Backend resize function\n        void (*backend_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height);\n        //! User-defined resize function\n        void (*user_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height);\n        //! User-defined flip function\n        void (*user_flip)(struct _fbg *fbg);\n        //! User-defined draw function\n        void (*user_draw)(struct _fbg *fbg);\n        //! User-defined free function\n        void (*user_free)(struct _fbg *fbg);\n        //! User-defined context structure\n        void *user_context;\n\n        //! currently processed task buffer (assigned before compositing function is called in fbg_draw)\n        //unsigned char *curr_task_buffer;\n\n#ifdef FBG_PARALLEL\n        //! Total number of actual parallel tasks\n        unsigned int parallel_tasks;\n\n        //! pthread array of tasks\n        pthread_t *tasks;\n\n        //! Array of tasks data structure\n        struct _fbg_fragment **fragments;\n\n        //! FBG synchronization barrier\n        pthread_barrier_t *sync_barrier;\n\n        //! Task id associated to that FBG context\n        int task_id;\n\n        //! FBG context running state\n        atomic_int state;\n\n        //! Ringbuffer queue length (1 by default, best settings with sync. since we just wait till all threads finish)\n        //! Note : This settings may have an impact on feedback effects (since it will pick sequentially buffers from the list, thus allowing a number of \"past\" rendered frame which may not be what you want with regular feedback effects but also may be what you want for other effects like unlimited blobs...)\n        unsigned int fragment_queue_size;\n#endif\n    };\n\n#ifdef FBG_PARALLEL\n#ifdef FBG_LFDS\n    //! Freelist data structure\n    /*! Hold pre-allocated data associated with a task */\n    struct _fbg_freelist_data {\n        struct lfds720_freelist_n_element freelist_element;\n\n        unsigned char *buffer;\n    };\n  #endif\n\n    //! Task (fragment) data structure\n    /*! Hold a task data */\n    struct _fbg_fragment {\n        //! Fragment running state\n        atomic_int state;\n\n        //! Task own FBG context\n        struct _fbg *fbg;\n\n#ifdef FBG_LFDS\n        //! Ringbuffer element\n        struct lfds720_ringbuffer_n_element *ringbuffer_element;\n        //! Ringbuffer state\n        struct lfds720_ringbuffer_n_state *ringbuffer_state;\n\n        //! Freelist state\n        struct lfds720_freelist_n_state *freelist_state;\n\n        //! Pre-allocated tasks data\n        struct _fbg_freelist_data *fbg_freelist_data;\n\n        //! Temporary task data\n        struct _fbg_freelist_data *tmp_fbg_freelist_data; \n#endif\n\n        //! thread <> main thread synchronization\n        atomic_int sync_wait;\n\n        //! User-defined task start function\n        void *(*user_fragment_start)(struct _fbg *fbg);\n        //! User-defined task function\n        void (*user_fragment)(struct _fbg *fbg, void *user_data);\n        //! User-defined task end function\n        void (*user_fragment_stop)(struct _fbg *fbg, void *user_data);\n\n        //! User-defined data\n        void *user_data;\n    };\n#endif\n\n// ### Library functions\n\n    //! initialize a FB Graphics context (typically used by a custom rendering backend)\n    /*!\n      \\param width render width\n      \\param height render height\n      \\param components image components (3 = RGB, 4 = RGBA etc.)\n      \\param initialize_buffers wether internal buffers should be allocated / freed\n      \\param allow_resizing wether to allow internal context resize (any registered callbacks will still be called)\n      \\param user_context user rendering data storage (things like window context etc.)\n      \\param user_draw function to call upon fbg_draw()\n      \\param user_flip function to call upon fbg_flip()\n      \\param backend_resize function to call upon fbg_resize()\n      \\param user_free function to call upon fbg_close()\n      \\return _fbg structure pointer to pass to any FBG library functions\n      \\sa fbg_close()\n    */\n    extern struct _fbg *fbg_customSetup(int width, int height, int components, int initialize_buffers, int allow_resizing, void *user_context, void (*user_draw)(struct _fbg *fbg), void (*user_flip)(struct _fbg *fbg), void (*backend_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height), void (*user_free)(struct _fbg *fbg));\n\n    //! free up the memory associated with a FB Graphics context and close the framebuffer device\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\sa fbg_customSetup()\n    */\n    extern void fbg_close(struct _fbg *fbg);\n\n    //! register a user resize callback\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param user_resize resize function\n      \\sa fbg_resize(), fbg_pushResize()\n    */\n    void fbg_setResizeCallback(struct _fbg *fbg, void (*user_resize)(struct _fbg *fbg, unsigned int new_width, unsigned int new_height));\n\n    //! resize the FB Graphics context immediately\n    //! note : prefer the usage of fbg_pushResize when integrating the resize event of a custom backend (fbg_pushResize is thread safe all the time)\n    //! note : resizing is not yet allowed in framebuffer mode\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param new_width new render width\n      \\param new_height new render height\n      \\sa fbg_pushResize(), fbg_setResizeCallback()\n    */\n    extern void fbg_resize(struct _fbg *fbg, int new_width, int new_height);\n\n    //! push a resize event for the FB Graphics context\n    //! note : the resize event is processed into the fbg_draw function\n    //! note : resizing is not yet allowed in framebuffer mode\n    //! note : if you want to immediately resize the context, see fbg_resize\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param new_width new render width\n      \\param new_height new render height\n      \\sa fbg_resize(), fbg_setResizeCallback()\n    */\n    extern void fbg_pushResize(struct _fbg *fbg, int new_width, int new_height);\n\n    //! background fade to black with controllable factor\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param rgb_fade_amount fade amount\n      \\sa fbg_fade(), fbg_fadeUp()\n    */\n    extern void fbg_fadeDown(struct _fbg *fbg, unsigned char rgb_fade_amount);\n\n    //! background fade to white with controllable factor\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param rgb_fade_amount fade amount\n      \\sa fbg_fadeDown()\n    */\n    extern void fbg_fadeUp(struct _fbg *fbg, unsigned char rgb_fade_amount);\n\n    //! fast grayscale background clearing\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param brightness pixel brightness (grayscale)\n      \\sa fbg_background()\n    */\n    extern void fbg_clear(struct _fbg *fbg, unsigned char brightness);\n\n    //! set the filling color for fast drawing operations\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_fpixel(), fbg_frect()\n    */\n    extern void fbg_fill(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b);\n\n    //! get the RGB value of a pixel\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x\n      \\param y\n      \\param color a pointer to a _fbg_rgb data structure\n    */\n    extern void fbg_getPixel(struct _fbg *fbg, int x, int y, struct _fbg_rgb *color);\n\n    //! draw a pixel\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x pixel X position (upper left coordinate)\n      \\param y pixel Y position (upper left coordinate)\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_fpixel(), fbg_pixela()\n    */\n    extern void fbg_pixel(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b);\n\n    //! draw a pixel with alpha component (alpha blending)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x pixel X position (upper left coordinate)\n      \\param y pixel Y position (upper left coordinate)\n      \\param r\n      \\param g\n      \\param b\n      \\param a\n      \\sa fbg_fpixel(), fbg_pixel()\n    */\n    extern void fbg_pixela(struct _fbg *fbg, int x, int y, unsigned char r, unsigned char g, unsigned char b, unsigned char a);\n\n    //! fast pixel drawing which use the fill color set by fbg_fill()\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x pixel X position (upper left coordinate)\n      \\param y pixel Y position (upper left coordinate)\n      \\sa fbg_pixel(), fbg_fill(), fbg_pixela()\n    */\n    extern void fbg_fpixel(struct _fbg *fbg, int x, int y);\n\n    //! direct pixel access from index value\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param index pixel index in the buffer\n      \\param value color value\n      \\sa fbg_pixel(), fbg_fill(), fbg_pixela()\n    */\n    extern void fbg_plot(struct _fbg *fbg, int index, unsigned char value);\n\n    //! draw a rectangle\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x rectangle X position (upper left coordinate)\n      \\param y rectangle Y position (upper left coordinate)\n      \\param w rectangle width\n      \\param h rectangle height\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_frect(), fbg_recta()\n    */\n    extern void fbg_rect(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b);\n\n    //! draw a rectangle with alpha transparency\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x rectangle X position (upper left coordinate)\n      \\param y rectangle Y position (upper left coordinate)\n      \\param w rectangle width\n      \\param h rectangle height\n      \\param r\n      \\param g\n      \\param b\n      \\param a\n      \\sa fbg_frect(), fbg_rect()\n    */\n    extern void fbg_recta(struct _fbg *fbg, int x, int y, int w, int h, unsigned char r, unsigned char g, unsigned char b, unsigned char a);\n\n    //! fast rectangle drawing which use the fill color set by fbg_fill()\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x rectangle X position (upper left coordinate)\n      \\param y rectangle Y position (upper left coordinate)\n      \\param w rectangle width\n      \\param h rectangle height\n      \\sa fbg_fill, fbg_rect(), fbg_recta()\n    */\n    extern void fbg_frect(struct _fbg *fbg, int x, int y, int w, int h);\n\n    //! draw a horizontal line\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x line X position (upper left coordinate)\n      \\param y line Y position (upper left coordinate)\n      \\param w line width\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_vline, fbg_line()\n    */\n    extern void fbg_hline(struct _fbg *fbg, int x, int y, int w, unsigned char r, unsigned char g, unsigned char b);\n\n    //! draw a vertical line\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x line X position (upper left coordinate)\n      \\param y line Y position (upper left coordinate)\n      \\param h line height\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_hline, fbg_line()\n    */\n    extern void fbg_vline(struct _fbg *fbg, int x, int y, int h, unsigned char r, unsigned char g, unsigned char b);\n\n    //! draw a line from two points (Bresenham algorithm)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param x1 point 1 X position (upper left coordinate)\n      \\param y1 point 1 Y position (upper left coordinate)\n      \\param x2 point 2 X position (upper left coordinate)\n      \\param y2 point 2 Y position (upper left coordinate)\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_hline(), fbg_vline(), fbg_polygon()\n    */\n    extern void fbg_line(struct _fbg *fbg, int x1, int y1, int x2, int y2, unsigned char r, unsigned char g, unsigned char b);\n\n    //! draw a polygon\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param num_vertices the number of vertices\n      \\param vertices pointer to a list of vertices (a list of X/Y points)\n      \\param r\n      \\param g\n      \\param b\n    */\n    extern void fbg_polygon(struct _fbg *fbg, int num_vertices, int *vertices, unsigned char r, unsigned char g, unsigned char b);\n\n    //! clear the background with a color\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_clear()\n    */\n    extern void fbg_background(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b);\n\n    //! convert HSL values to RGB color\n    /*!\n      \\param color pointer to a _fbg_rgb data structure\n      \\param h the hue\n      \\param s the saturation\n      \\param l the lightness\n      \\sa rgbToHsl()\n    */\n    extern void fbg_hslToRGB(struct _fbg_rgb *color, float h, float s, float l);\n\n    //! convert RGB values to HSL color\n    /*!\n      \\param color pointer to a _fbg_hsl data structure\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_hslToRGB()\n    */\n    extern void fbg_rgbToHsl(struct _fbg_hsl *color, float r, float g, float b);\n\n#ifdef FBG_PARALLEL\n    //! draw to the screen\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param sync_with_task 1 = wait for all fragment tasks to be finished before rendering\n      \\param user_mixing a function used to mix the result of fragment tasks\n    */\n    extern void fbg_draw(struct _fbg *fbg, void (*user_mixing)(struct _fbg *fbg, unsigned char *buffer, int task_id));\n#else\n    //! draw to the screen\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n    */\n    extern void fbg_draw(struct _fbg *fbg);\n#endif\n\n    //! flip the buffers\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n    */\n    extern void fbg_flip(struct _fbg *fbg);\n\n    //! create an empty image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param width image width\n      \\param height image height\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont()\n    */\n    extern struct _fbg_img *fbg_createImage(struct _fbg *fbg, unsigned int width, unsigned int height);\n\n#ifndef WITHOUT_STDIO\n    //! load a PNG image from a file (lodePNG library)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param filename PNG image filename\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadJPEG(), fbg_loadImage(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n#ifndef WITHOUT_PNG\n    extern struct _fbg_img *fbg_loadPNG(struct _fbg *fbg, const char *filename);\n#endif\n\n    //! load a JPEG image from a file (NanoJPEG library)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param filename JPEG image filename\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadPNG(), fbg_loadImage(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n#ifndef WITHOUT_JPEG\n    extern struct _fbg_img *fbg_loadJPEG(struct _fbg *fbg, const char *filename);\n#endif\n\n    //! load an image from a file (STB Image library)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param filename image filename\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadImage(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n#ifndef WITHOUT_STB_IMAGE\n    extern struct _fbg_img *fbg_loadSTBImage(struct _fbg *fbg, const char *filename);\n#endif\n\n    //! load an image (PNG or JPEG)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param filename JPEG/PNG image filename\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadPNG(), fbg_loadJPEG(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n    extern struct _fbg_img *fbg_loadImage(struct _fbg *fbg, const char *filename);\n#endif // WITHOUT_STDIO\n\n    //! load an image from memory (STB Image library)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param data The image data from memory.\n      \\param size The size of the image in bytes.\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadPNG(), fbg_loadJPEG(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n#ifndef WITHOUT_STB_IMAGE\n    extern struct _fbg_img *fbg_loadSTBImageFromMemory(struct _fbg *fbg, const unsigned char *data, int size);\n#endif\n\n    //! load an image from memory\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param data The image data from memory.\n      \\param size The size of the image in bytes.\n      \\return _fbg_img data structure pointer\n      \\sa fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_createFont(), fbg_imageClip(), fbg_loadPNG(), fbg_loadJPEG(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n    extern struct _fbg_img *fbg_loadImageFromMemory(struct _fbg *fbg, const unsigned char *data, int size);\n\n    //! draw an image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param x image X position (upper left coordinate)\n      \\param y image Y position (upper left coordinate)\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage(), fbg_imageClip(), fbg_freeImage(), fbg_imageFlip(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n    extern void fbg_image(struct _fbg *fbg, struct _fbg_img *img, int x, int y);\n\n    //! draw an image with colorkeying support (image colorkey value will be ignored)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param x image X position (upper left coordinate)\n      \\param y image Y position (upper left coordinate)\n      \\param cr colorkey red component\n      \\param cg colorkey green component\n      \\param cb colorkey blue component\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage(), fbg_imageClip(), fbg_freeImage(), fbg_imageFlip(), fbg_imageEx(), fbg_imageScale(), fbg_image()\n    */\n    extern void fbg_imageColorkey(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cr, int cg, int cb);\n\n    //! draw a clipped image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param x image X position (upper left coordinate)\n      \\param y image Y position (upper left coordinate)\n      \\param cx The X coordinate where to start clipping\n      \\param cy The Y coordinate where to start clipping\n      \\param cw The width of the clipped image (from cx)\n      \\param ch The height of the clipped image (from cy)\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage(), fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_imageEx(), fbg_imageScale(), fbg_imageColorkey()\n    */\n    extern void fbg_imageClip(struct _fbg *fbg, struct _fbg_img *img, int x, int y, int cx, int cy, int cw, int ch);\n\n    //! flip an image vertically\n    /*!\n      \\param img image structure pointer\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage()\n    */\n    extern void fbg_imageFlip(struct _fbg_img *img);\n\n    //! draw an image with support for clipping and scaling (Nearest-neighbor algorithm)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param x image X position (upper left coordinate)\n      \\param y image Y position (upper left coordinate)\n      \\param sx The X scale factor\n      \\param sy The Y scale factor\n      \\param cx The X coordinate where to start clipping\n      \\param cy The Y coordinate where to start clipping\n      \\param cw The width of the clipped image (from cx)\n      \\param ch The height of the clipped image (from cy)\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage(), fbg_imageClip(), fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_imageScale(), fbg_imageColorkey()\n    */\n    extern void fbg_imageEx(struct _fbg *fbg, struct _fbg_img *img, int x, int y, float sx, float sy, int cx, int cy, int cw, int ch);\n\n    //! free the memory associated with an image\n    /*!\n      \\param img image structure pointer\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage()\n    */\n    extern void fbg_freeImage(struct _fbg_img *img);\n\n    //! create a bitmap font from an image\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param glyph_width glyph / character width\n      \\param glyph_height glyph / character height\n      \\param first_char the first character of the bitmap font\n      \\return _fbg_font structure pointer\n      \\sa fbg_freeFont(), fbg_textFont(), fbg_text(), fbg_write(), fbg_drawFramerate()\n    */\n    extern struct _fbg_font *fbg_createFont(struct _fbg *fbg, struct _fbg_img *img, int glyph_width, int glyph_height, unsigned char first_char);\n\n    //! set the current font\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param font _fbg_font structure pointer\n      \\sa fbg_createFont(), fbg_text(), fbg_write(), fbg_drawFramerate()\n    */\n    extern void fbg_textFont(struct _fbg *fbg, struct _fbg_font *font);\n\n    //! set the current text color\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_createFont(), fbg_write(), fbg_textColorKey(), fbg_textBackground()\n    */\n    extern void fbg_textColor(struct _fbg *fbg, unsigned char r, unsigned char g, unsigned char b);\n\n    //! set the current text background color (based on colorkey value!)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param r\n      \\param g\n      \\param b\n      \\param a 0 = transparent background (based on colorkey), 255 = full text background\n      \\sa fbg_createFont(), fbg_write(), fbg_textColorKey(), fbg_textColor()\n    */\n    extern void fbg_textBackground(struct _fbg *fbg, int r, int g, int b, int a);\n\n    //! set the current text color key\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param v grayscale value\n      \\sa fbg_createFont(), fbg_write(), fbg_textColor()\n    */\n    extern void fbg_textColorKey(struct _fbg *fbg, unsigned char v);\n\n    //! draw a text\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param fnt _fbg_font structure pointer\n      \\param text the text to draw ('\\n' and ' ' are treated automatically)\n      \\param x\n      \\param y\n      \\param r\n      \\param g\n      \\param b\n      \\sa fbg_createFont(), fbg_write(), fbg_textColorkey(), fbg_textBackground()\n    */\n    extern void fbg_text(struct _fbg *fbg, struct _fbg_font *fnt, char *text, int x, int y, int r, int g, int b);\n\n    //! free the memory associated with a font\n    /*!\n      \\param font _fbg_font structure pointer\n      \\sa fbg_createFont()\n    */\n    extern void fbg_freeFont(struct _fbg_font *font);\n\n    //! draw the framerate of a particular parallel task\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param fnt _fbg_font structure pointer\n      \\param task the task id\n      \\param x\n      \\param y\n      \\param r\n      \\param g\n      \\param b\n    */\n    extern void fbg_drawFramerate(struct _fbg *fbg, struct _fbg_font *fnt, int task, int x, int y, int r, int g, int b);\n\n    //! get the framerate of a particular task\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param task the task id\n      \\return task framerate\n    */\n    extern int fbg_getFramerate(struct _fbg *fbg, int task);\n\n    //! set an offscreen target for all subsequent fbg context draw calls, it is important to reset back to display target once done by calling fbg_drawInto(NULL) otherwise you may have segfaults / memory leaks upon resizing and other actions\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param buffer a buffer to render to, it should be the format of the display, target is the display if NULL\n    */\n    extern void fbg_drawInto(struct _fbg *fbg, unsigned char *buffer);\n\n    //! pseudo random number between min / max\n    /*!\n      \\param min\n      \\param max\n      \\return pseudo random number between min / max\n    */\n    extern float fbg_randf(float min, float max);\n\n#ifdef FBG_PARALLEL\n    //! create a FB Graphics parallel task (also called a 'fragment')\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param fragment_start a function taking a _fbg structure as argument\n      \\param fragment a function taking a _fbg structure as argument and user_data pointer\n      \\param fragment_stop a function taking user_data pointer as argument\n      \\param parallel_tasks the number of parallel tasks to register\n    */\n    extern void fbg_createFragment(struct _fbg *fbg, void *(*fragment_start)(struct _fbg *fbg), void (*fragment)(struct _fbg *fbg, void *user_data), void (*fragment_stop)(struct _fbg *fbg, void *user_data), unsigned int parallel_tasks);\n#endif\n\n// ### Helper functions\n    //! background fade to black with controllable factor\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param fade_amount fade amount\n      \\sa fbg_fadeUp(), fbg_fadeDown()\n    */\n    #define fbg_fade(fbg, fade_amount) fbg_fadeDown(fbg, fade_amount)\n\n    //! draw a text by using the current font and the current color\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param text the text to draw ('\\n' and ' ' are treated automatically)\n      \\param x\n      \\param y\n      \\sa fbg_textFont(), fbg_textColor(), fbg_text(), fbg_textColorkey(), fbg_textBackground()\n    */\n    #define fbg_write(fbg, text, x, y) fbg_text(fbg, &fbg->current_font, text, x, y, fbg->text_color.r, fbg->text_color.g, fbg->text_color.b)\n\n    //! draw a scaled image (Nearest-neighbor algorithm)\n    /*!\n      \\param fbg pointer to a FBG context / data structure\n      \\param img image structure pointer\n      \\param x image X position (upper left coordinate)\n      \\param y image Y position (upper left coordinate)\n      \\param sx The X scale factor\n      \\param sy The Y scale factor\n      \\sa fbg_createImage(), fbg_loadPNG(), fbg_loadJPEG(), fbg_loadImage(), fbg_imageClip(), fbg_freeImage(), fbg_image(), fbg_imageFlip(), fbg_imageEx()\n    */\n    #define fbg_imageScale(fbg, img, x, y, sx, sy) fbg_imageEx(fbg, img, x, y, sx, sy, 0, 0, img->width, img->height)\n\n    //! integer MAX Math function\n    #define _FBG_MAX(a,b) ((a) > (b) ? a : b)\n    //! integer MIN Math function\n    #define _FBG_MIN(a,b) ((a) < (b) ? a : b)\n    //! integer SIGN function\n    #define _FBG_SGN(x) ((x<0)?-1:((x>0)?1:0))\n\n    //! convert a degree angle to radians\n    #define _FBG_DEGTORAD(angle_degree) ((angle_degree) * M_PI / 180.0)\n    //! convert a radian angle to degree\n    #define _FBG_RADTODEG(angle_radians) ((angle_radians) * 180.0 / M_PI)\n#endif\n"
  },
  {
    "path": "src/lodepng/lodepng.c",
    "content": "/*\nLodePNG version 20180611\n\nCopyright (c) 2005-2018 Lode Vandevenne\n\nThis software is provided 'as-is', without any express or implied\nwarranty. In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n    1. The origin of this software must not be misrepresented; you must not\n    claim that you wrote the original software. If you use this software\n    in a product, an acknowledgment in the product documentation would be\n    appreciated but is not required.\n\n    2. Altered source versions must be plainly marked as such, and must not be\n    misrepresented as being the original software.\n\n    3. This notice may not be removed or altered from any source\n    distribution.\n*/\n\n/*\nThe manual and changelog are in the header file \"lodepng.h\"\nRename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for C.\n*/\n\n#include \"lodepng.h\"\n\n#include <limits.h>\n#include <stdio.h>\n#include <stdlib.h>\n\n#if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/\n#pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/\n#pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/\n#endif /*_MSC_VER */\n\nconst char* LODEPNG_VERSION_STRING = \"20180611\";\n\n/*\nThis source file is built up in the following large parts. The code sections\nwith the \"LODEPNG_COMPILE_\" #defines divide this up further in an intermixed way.\n-Tools for C and common code for PNG and Zlib\n-C Code for Zlib (huffman, deflate, ...)\n-C Code for PNG (file format chunks, adam7, PNG filters, color conversions, ...)\n-The C++ wrapper around all of the above\n*/\n\n/*The malloc, realloc and free functions defined here with \"lodepng_\" in front\nof the name, so that you can easily change them to others related to your\nplatform if needed. Everything else in the code calls these. Pass\n-DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out\n#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and\ndefine them in your own project's source files without needing to change\nlodepng source code. Don't forget to remove \"static\" if you copypaste them\nfrom here.*/\n\n#ifdef LODEPNG_COMPILE_ALLOCATORS\nstatic void* lodepng_malloc(size_t size)\n{\n#ifdef LODEPNG_MAX_ALLOC\n  if(size > LODEPNG_MAX_ALLOC) return 0;\n#endif\n  return malloc(size);\n}\n\nstatic void* lodepng_realloc(void* ptr, size_t new_size)\n{\n#ifdef LODEPNG_MAX_ALLOC\n  if(new_size > LODEPNG_MAX_ALLOC) return 0;\n#endif\n  return realloc(ptr, new_size);\n}\n\nstatic void lodepng_free(void* ptr)\n{\n  free(ptr);\n}\n#else /*LODEPNG_COMPILE_ALLOCATORS*/\nvoid* lodepng_malloc(size_t size);\nvoid* lodepng_realloc(void* ptr, size_t new_size);\nvoid lodepng_free(void* ptr);\n#endif /*LODEPNG_COMPILE_ALLOCATORS*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* // Tools for C, and common code for PNG and Zlib.                       // */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b))\n\n/*\nOften in case of an error a value is assigned to a variable and then it breaks\nout of a loop (to go to the cleanup phase of a function). This macro does that.\nIt makes the error handling code shorter and more readable.\n\nExample: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83);\n*/\n#define CERROR_BREAK(errorvar, code)\\\n{\\\n  errorvar = code;\\\n  break;\\\n}\n\n/*version of CERROR_BREAK that assumes the common case where the error variable is named \"error\"*/\n#define ERROR_BREAK(code) CERROR_BREAK(error, code)\n\n/*Set error var to the error code, and return it.*/\n#define CERROR_RETURN_ERROR(errorvar, code)\\\n{\\\n  errorvar = code;\\\n  return code;\\\n}\n\n/*Try the code, if it returns error, also return the error.*/\n#define CERROR_TRY_RETURN(call)\\\n{\\\n  unsigned error = call;\\\n  if(error) return error;\\\n}\n\n/*Set error var to the error code, and return from the void function.*/\n#define CERROR_RETURN(errorvar, code)\\\n{\\\n  errorvar = code;\\\n  return;\\\n}\n\n/*\nAbout uivector, ucvector and string:\n-All of them wrap dynamic arrays or text strings in a similar way.\n-LodePNG was originally written in C++. The vectors replace the std::vectors that were used in the C++ version.\n-The string tools are made to avoid problems with compilers that declare things like strncat as deprecated.\n-They're not used in the interface, only internally in this file as static functions.\n-As with many other structs in this file, the init and cleanup functions serve as ctor and dtor.\n*/\n\n#ifdef LODEPNG_COMPILE_ZLIB\n/*dynamic vector of unsigned ints*/\ntypedef struct uivector\n{\n  unsigned* data;\n  size_t size; /*size in number of unsigned longs*/\n  size_t allocsize; /*allocated size in bytes*/\n} uivector;\n\nstatic void uivector_cleanup(void* p)\n{\n  ((uivector*)p)->size = ((uivector*)p)->allocsize = 0;\n  lodepng_free(((uivector*)p)->data);\n  ((uivector*)p)->data = NULL;\n}\n\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned uivector_reserve(uivector* p, size_t allocsize)\n{\n  if(allocsize > p->allocsize)\n  {\n    size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2);\n    void* data = lodepng_realloc(p->data, newsize);\n    if(data)\n    {\n      p->allocsize = newsize;\n      p->data = (unsigned*)data;\n    }\n    else return 0; /*error: not enough memory*/\n  }\n  return 1;\n}\n\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned uivector_resize(uivector* p, size_t size)\n{\n  if(!uivector_reserve(p, size * sizeof(unsigned))) return 0;\n  p->size = size;\n  return 1; /*success*/\n}\n\n/*resize and give all new elements the value*/\nstatic unsigned uivector_resizev(uivector* p, size_t size, unsigned value)\n{\n  size_t oldsize = p->size, i;\n  if(!uivector_resize(p, size)) return 0;\n  for(i = oldsize; i < size; ++i) p->data[i] = value;\n  return 1;\n}\n\nstatic void uivector_init(uivector* p)\n{\n  p->data = NULL;\n  p->size = p->allocsize = 0;\n}\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned uivector_push_back(uivector* p, unsigned c)\n{\n  if(!uivector_resize(p, p->size + 1)) return 0;\n  p->data[p->size - 1] = c;\n  return 1;\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n#endif /*LODEPNG_COMPILE_ZLIB*/\n\n/* /////////////////////////////////////////////////////////////////////////// */\n\n/*dynamic vector of unsigned chars*/\ntypedef struct ucvector\n{\n  unsigned char* data;\n  size_t size; /*used size*/\n  size_t allocsize; /*allocated size*/\n} ucvector;\n\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned ucvector_reserve(ucvector* p, size_t allocsize)\n{\n  if(allocsize > p->allocsize)\n  {\n    size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2);\n    void* data = lodepng_realloc(p->data, newsize);\n    if(data)\n    {\n      p->allocsize = newsize;\n      p->data = (unsigned char*)data;\n    }\n    else return 0; /*error: not enough memory*/\n  }\n  return 1;\n}\n\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned ucvector_resize(ucvector* p, size_t size)\n{\n  if(!ucvector_reserve(p, size * sizeof(unsigned char))) return 0;\n  p->size = size;\n  return 1; /*success*/\n}\n\n#ifdef LODEPNG_COMPILE_PNG\n\nstatic void ucvector_cleanup(void* p)\n{\n  ((ucvector*)p)->size = ((ucvector*)p)->allocsize = 0;\n  lodepng_free(((ucvector*)p)->data);\n  ((ucvector*)p)->data = NULL;\n}\n\nstatic void ucvector_init(ucvector* p)\n{\n  p->data = NULL;\n  p->size = p->allocsize = 0;\n}\n#endif /*LODEPNG_COMPILE_PNG*/\n\n#ifdef LODEPNG_COMPILE_ZLIB\n/*you can both convert from vector to buffer&size and vica versa. If you use\ninit_buffer to take over a buffer and size, it is not needed to use cleanup*/\nstatic void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size)\n{\n  p->data = buffer;\n  p->allocsize = p->size = size;\n}\n#endif /*LODEPNG_COMPILE_ZLIB*/\n\n#if (defined(LODEPNG_COMPILE_PNG) && defined(LODEPNG_COMPILE_ANCILLARY_CHUNKS)) || defined(LODEPNG_COMPILE_ENCODER)\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned ucvector_push_back(ucvector* p, unsigned char c)\n{\n  if(!ucvector_resize(p, p->size + 1)) return 0;\n  p->data[p->size - 1] = c;\n  return 1;\n}\n#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/\n\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_PNG\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n/*returns 1 if success, 0 if failure ==> nothing done*/\nstatic unsigned string_resize(char** out, size_t size)\n{\n  char* data = (char*)lodepng_realloc(*out, size + 1);\n  if(data)\n  {\n    data[size] = 0; /*null termination char*/\n    *out = data;\n  }\n  return data != 0;\n}\n\n/*init a {char*, size_t} pair for use as string*/\nstatic void string_init(char** out)\n{\n  *out = NULL;\n  string_resize(out, 0);\n}\n\n/*free the above pair again*/\nstatic void string_cleanup(char** out)\n{\n  lodepng_free(*out);\n  *out = NULL;\n}\n\nstatic void string_set(char** out, const char* in)\n{\n  size_t insize = strlen(in), i;\n  if(string_resize(out, insize))\n  {\n    for(i = 0; i != insize; ++i)\n    {\n      (*out)[i] = in[i];\n    }\n  }\n}\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n#endif /*LODEPNG_COMPILE_PNG*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\nunsigned lodepng_read32bitInt(const unsigned char* buffer)\n{\n  return (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]);\n}\n\n#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)\n/*buffer must have at least 4 allocated bytes available*/\nstatic void lodepng_set32bitInt(unsigned char* buffer, unsigned value)\n{\n  buffer[0] = (unsigned char)((value >> 24) & 0xff);\n  buffer[1] = (unsigned char)((value >> 16) & 0xff);\n  buffer[2] = (unsigned char)((value >>  8) & 0xff);\n  buffer[3] = (unsigned char)((value      ) & 0xff);\n}\n#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\nstatic void lodepng_add32bitInt(ucvector* buffer, unsigned value)\n{\n  ucvector_resize(buffer, buffer->size + 4); /*todo: give error if resize failed*/\n  lodepng_set32bitInt(&buffer->data[buffer->size - 4], value);\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / File IO                                                                / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_DISK\n\n/* returns negative value on error. This should be pure C compatible, so no fstat. */\nstatic long lodepng_filesize(const char* filename)\n{\n  FILE* file;\n  long size;\n  file = fopen(filename, \"rb\");\n  if(!file) return -1;\n\n  if(fseek(file, 0, SEEK_END) != 0)\n  {\n    fclose(file);\n    return -1;\n  }\n\n  size = ftell(file);\n  /* It may give LONG_MAX as directory size, this is invalid for us. */\n  if(size == LONG_MAX) size = -1;\n\n  fclose(file);\n  return size;\n}\n\n/* load file into buffer that already has the correct allocated size. Returns error code.*/\nstatic unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename)\n{\n  FILE* file;\n  size_t readsize;\n  file = fopen(filename, \"rb\");\n  if(!file) return 78;\n\n  readsize = fread(out, 1, size, file);\n  fclose(file);\n\n  if (readsize != size) return 78;\n  return 0;\n}\n\nunsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename)\n{\n  long size = lodepng_filesize(filename);\n  if (size < 0) return 78;\n  *outsize = (size_t)size;\n\n  *out = (unsigned char*)lodepng_malloc((size_t)size);\n  if(!(*out) && size > 0) return 83; /*the above malloc failed*/\n\n  return lodepng_buffer_file(*out, (size_t)size, filename);\n}\n\n/*write given buffer to the file, overwriting the file, it doesn't append to it.*/\nunsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename)\n{\n  FILE* file;\n  file = fopen(filename, \"wb\" );\n  if(!file) return 79;\n  fwrite((char*)buffer , 1 , buffersize, file);\n  fclose(file);\n  return 0;\n}\n\n#endif /*LODEPNG_COMPILE_DISK*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* // End of common code and tools. Begin of Zlib related code.            // */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_ZLIB\n#ifdef LODEPNG_COMPILE_ENCODER\n/*TODO: this ignores potential out of memory errors*/\n#define addBitToStream(/*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit)\\\n{\\\n  /*add a new byte at the end*/\\\n  if(((*bitpointer) & 7) == 0) ucvector_push_back(bitstream, (unsigned char)0);\\\n  /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/\\\n  (bitstream->data[bitstream->size - 1]) |= (bit << ((*bitpointer) & 0x7));\\\n  ++(*bitpointer);\\\n}\n\nstatic void addBitsToStream(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits)\n{\n  size_t i;\n  for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> i) & 1));\n}\n\nstatic void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits)\n{\n  size_t i;\n  for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> (nbits - 1 - i)) & 1));\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#ifdef LODEPNG_COMPILE_DECODER\n\n#define READBIT(bitpointer, bitstream) ((bitstream[bitpointer >> 3] >> (bitpointer & 0x7)) & (unsigned char)1)\n\nstatic unsigned char readBitFromStream(size_t* bitpointer, const unsigned char* bitstream)\n{\n  unsigned char result = (unsigned char)(READBIT(*bitpointer, bitstream));\n  ++(*bitpointer);\n  return result;\n}\n\nstatic unsigned readBitsFromStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits)\n{\n  unsigned result = 0, i;\n  for(i = 0; i != nbits; ++i)\n  {\n    result += ((unsigned)READBIT(*bitpointer, bitstream)) << i;\n    ++(*bitpointer);\n  }\n  return result;\n}\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Deflate - Huffman                                                      / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#define FIRST_LENGTH_CODE_INDEX 257\n#define LAST_LENGTH_CODE_INDEX 285\n/*256 literals, the end code, some length codes, and 2 unused codes*/\n#define NUM_DEFLATE_CODE_SYMBOLS 288\n/*the distance codes have their own symbols, 30 used, 2 unused*/\n#define NUM_DISTANCE_SYMBOLS 32\n/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: 3-10 zeros, 18: 11-138 zeros*/\n#define NUM_CODE_LENGTH_CODES 19\n\n/*the base lengths represented by codes 257-285*/\nstatic const unsigned LENGTHBASE[29]\n  = {3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59,\n     67, 83, 99, 115, 131, 163, 195, 227, 258};\n\n/*the extra bits used by codes 257-285 (added to base length)*/\nstatic const unsigned LENGTHEXTRA[29]\n  = {0, 0, 0, 0, 0, 0, 0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,\n      4,  4,  4,   4,   5,   5,   5,   5,   0};\n\n/*the base backwards distances (the bits of distance codes appear after length codes and use their own huffman tree)*/\nstatic const unsigned DISTANCEBASE[30]\n  = {1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513,\n     769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577};\n\n/*the extra bits of backwards distances (added to base)*/\nstatic const unsigned DISTANCEEXTRA[30]\n  = {0, 0, 0, 0, 1, 1, 2,  2,  3,  3,  4,  4,  5,  5,   6,   6,   7,   7,   8,\n       8,    9,    9,   10,   10,   11,   11,   12,    12,    13,    13};\n\n/*the order in which \"code length alphabet code lengths\" are stored, out of this\nthe huffman tree of the dynamic huffman tree lengths is generated*/\nstatic const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES]\n  = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*\nHuffman tree struct, containing multiple representations of the tree\n*/\ntypedef struct HuffmanTree\n{\n  unsigned* tree2d;\n  unsigned* tree1d;\n  unsigned* lengths; /*the lengths of the codes of the 1d-tree*/\n  unsigned maxbitlen; /*maximum number of bits a single code can get*/\n  unsigned numcodes; /*number of symbols in the alphabet = number of codes*/\n} HuffmanTree;\n\n/*function used for debug purposes to draw the tree in ascii art with C++*/\n/*\nstatic void HuffmanTree_draw(HuffmanTree* tree)\n{\n  std::cout << \"tree. length: \" << tree->numcodes << \" maxbitlen: \" << tree->maxbitlen << std::endl;\n  for(size_t i = 0; i != tree->tree1d.size; ++i)\n  {\n    if(tree->lengths.data[i])\n      std::cout << i << \" \" << tree->tree1d.data[i] << \" \" << tree->lengths.data[i] << std::endl;\n  }\n  std::cout << std::endl;\n}*/\n\nstatic void HuffmanTree_init(HuffmanTree* tree)\n{\n  tree->tree2d = 0;\n  tree->tree1d = 0;\n  tree->lengths = 0;\n}\n\nstatic void HuffmanTree_cleanup(HuffmanTree* tree)\n{\n  lodepng_free(tree->tree2d);\n  lodepng_free(tree->tree1d);\n  lodepng_free(tree->lengths);\n}\n\n/*the tree representation used by the decoder. return value is error*/\nstatic unsigned HuffmanTree_make2DTree(HuffmanTree* tree)\n{\n  unsigned nodefilled = 0; /*up to which node it is filled*/\n  unsigned treepos = 0; /*position in the tree (1 of the numcodes columns)*/\n  unsigned n, i;\n\n  tree->tree2d = (unsigned*)lodepng_malloc(tree->numcodes * 2 * sizeof(unsigned));\n  if(!tree->tree2d) return 83; /*alloc fail*/\n\n  /*\n  convert tree1d[] to tree2d[][]. In the 2D array, a value of 32767 means\n  uninited, a value >= numcodes is an address to another bit, a value < numcodes\n  is a code. The 2 rows are the 2 possible bit values (0 or 1), there are as\n  many columns as codes - 1.\n  A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes.\n  Here, the internal nodes are stored (what their 0 and 1 option point to).\n  There is only memory for such good tree currently, if there are more nodes\n  (due to too long length codes), error 55 will happen\n  */\n  for(n = 0; n < tree->numcodes * 2; ++n)\n  {\n    tree->tree2d[n] = 32767; /*32767 here means the tree2d isn't filled there yet*/\n  }\n\n  for(n = 0; n < tree->numcodes; ++n) /*the codes*/\n  {\n    for(i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/\n    {\n      unsigned char bit = (unsigned char)((tree->tree1d[n] >> (tree->lengths[n] - i - 1)) & 1);\n      /*oversubscribed, see comment in lodepng_error_text*/\n      if(treepos > 2147483647 || treepos + 2 > tree->numcodes) return 55;\n      if(tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/\n      {\n        if(i + 1 == tree->lengths[n]) /*last bit*/\n        {\n          tree->tree2d[2 * treepos + bit] = n; /*put the current code in it*/\n          treepos = 0;\n        }\n        else\n        {\n          /*put address of the next step in here, first that address has to be found of course\n          (it's just nodefilled + 1)...*/\n          ++nodefilled;\n          /*addresses encoded with numcodes added to it*/\n          tree->tree2d[2 * treepos + bit] = nodefilled + tree->numcodes;\n          treepos = nodefilled;\n        }\n      }\n      else treepos = tree->tree2d[2 * treepos + bit] - tree->numcodes;\n    }\n  }\n\n  for(n = 0; n < tree->numcodes * 2; ++n)\n  {\n    if(tree->tree2d[n] == 32767) tree->tree2d[n] = 0; /*remove possible remaining 32767's*/\n  }\n\n  return 0;\n}\n\n/*\nSecond step for the ...makeFromLengths and ...makeFromFrequencies functions.\nnumcodes, lengths and maxbitlen must already be filled in correctly. return\nvalue is error.\n*/\nstatic unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree)\n{\n  uivector blcount;\n  uivector nextcode;\n  unsigned error = 0;\n  unsigned bits, n;\n\n  uivector_init(&blcount);\n  uivector_init(&nextcode);\n\n  tree->tree1d = (unsigned*)lodepng_malloc(tree->numcodes * sizeof(unsigned));\n  if(!tree->tree1d) error = 83; /*alloc fail*/\n\n  if(!uivector_resizev(&blcount, tree->maxbitlen + 1, 0)\n  || !uivector_resizev(&nextcode, tree->maxbitlen + 1, 0))\n    error = 83; /*alloc fail*/\n\n  if(!error)\n  {\n    /*step 1: count number of instances of each code length*/\n    for(bits = 0; bits != tree->numcodes; ++bits) ++blcount.data[tree->lengths[bits]];\n    /*step 2: generate the nextcode values*/\n    for(bits = 1; bits <= tree->maxbitlen; ++bits)\n    {\n      nextcode.data[bits] = (nextcode.data[bits - 1] + blcount.data[bits - 1]) << 1;\n    }\n    /*step 3: generate all the codes*/\n    for(n = 0; n != tree->numcodes; ++n)\n    {\n      if(tree->lengths[n] != 0) tree->tree1d[n] = nextcode.data[tree->lengths[n]]++;\n    }\n  }\n\n  uivector_cleanup(&blcount);\n  uivector_cleanup(&nextcode);\n\n  if(!error) return HuffmanTree_make2DTree(tree);\n  else return error;\n}\n\n/*\ngiven the code lengths (as stored in the PNG file), generate the tree as defined\nby Deflate. maxbitlen is the maximum bits that a code in the tree can have.\nreturn value is error.\n*/\nstatic unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen,\n                                            size_t numcodes, unsigned maxbitlen)\n{\n  unsigned i;\n  tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned));\n  if(!tree->lengths) return 83; /*alloc fail*/\n  for(i = 0; i != numcodes; ++i) tree->lengths[i] = bitlen[i];\n  tree->numcodes = (unsigned)numcodes; /*number of symbols*/\n  tree->maxbitlen = maxbitlen;\n  return HuffmanTree_makeFromLengths2(tree);\n}\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\n/*BPM: Boundary Package Merge, see \"A Fast and Space-Economical Algorithm for Length-Limited Coding\",\nJyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/\n\n/*chain node for boundary package merge*/\ntypedef struct BPMNode\n{\n  int weight; /*the sum of all weights in this chain*/\n  unsigned index; /*index of this leaf node (called \"count\" in the paper)*/\n  struct BPMNode* tail; /*the next nodes in this chain (null if last)*/\n  int in_use;\n} BPMNode;\n\n/*lists of chains*/\ntypedef struct BPMLists\n{\n  /*memory pool*/\n  unsigned memsize;\n  BPMNode* memory;\n  unsigned numfree;\n  unsigned nextfree;\n  BPMNode** freelist;\n  /*two heads of lookahead chains per list*/\n  unsigned listsize;\n  BPMNode** chains0;\n  BPMNode** chains1;\n} BPMLists;\n\n/*creates a new chain node with the given parameters, from the memory in the lists */\nstatic BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail)\n{\n  unsigned i;\n  BPMNode* result;\n\n  /*memory full, so garbage collect*/\n  if(lists->nextfree >= lists->numfree)\n  {\n    /*mark only those that are in use*/\n    for(i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0;\n    for(i = 0; i != lists->listsize; ++i)\n    {\n      BPMNode* node;\n      for(node = lists->chains0[i]; node != 0; node = node->tail) node->in_use = 1;\n      for(node = lists->chains1[i]; node != 0; node = node->tail) node->in_use = 1;\n    }\n    /*collect those that are free*/\n    lists->numfree = 0;\n    for(i = 0; i != lists->memsize; ++i)\n    {\n      if(!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i];\n    }\n    lists->nextfree = 0;\n  }\n\n  result = lists->freelist[lists->nextfree++];\n  result->weight = weight;\n  result->index = index;\n  result->tail = tail;\n  return result;\n}\n\n/*sort the leaves with stable mergesort*/\nstatic void bpmnode_sort(BPMNode* leaves, size_t num)\n{\n  BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num);\n  size_t width, counter = 0;\n  for(width = 1; width < num; width *= 2)\n  {\n    BPMNode* a = (counter & 1) ? mem : leaves;\n    BPMNode* b = (counter & 1) ? leaves : mem;\n    size_t p;\n    for(p = 0; p < num; p += 2 * width)\n    {\n      size_t q = (p + width > num) ? num : (p + width);\n      size_t r = (p + 2 * width > num) ? num : (p + 2 * width);\n      size_t i = p, j = q, k;\n      for(k = p; k < r; k++)\n      {\n        if(i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++];\n        else b[k] = a[j++];\n      }\n    }\n    counter++;\n  }\n  if(counter & 1) memcpy(leaves, mem, sizeof(*leaves) * num);\n  lodepng_free(mem);\n}\n\n/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/\nstatic void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num)\n{\n  unsigned lastindex = lists->chains1[c]->index;\n\n  if(c == 0)\n  {\n    if(lastindex >= numpresent) return;\n    lists->chains0[c] = lists->chains1[c];\n    lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0);\n  }\n  else\n  {\n    /*sum of the weights of the head nodes of the previous lookahead chains.*/\n    int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight;\n    lists->chains0[c] = lists->chains1[c];\n    if(lastindex < numpresent && sum > leaves[lastindex].weight)\n    {\n      lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail);\n      return;\n    }\n    lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]);\n    /*in the end we are only interested in the chain of the last list, so no\n    need to recurse if we're at the last one (this gives measurable speedup)*/\n    if(num + 1 < (int)(2 * numpresent - 2))\n    {\n      boundaryPM(lists, leaves, numpresent, c - 1, num);\n      boundaryPM(lists, leaves, numpresent, c - 1, num);\n    }\n  }\n}\n\nunsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies,\n                                      size_t numcodes, unsigned maxbitlen)\n{\n  unsigned error = 0;\n  unsigned i;\n  size_t numpresent = 0; /*number of symbols with non-zero frequency*/\n  BPMNode* leaves; /*the symbols, only those with > 0 frequency*/\n\n  if(numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/\n  if((1u << maxbitlen) < (unsigned)numcodes) return 80; /*error: represent all symbols*/\n\n  leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves));\n  if(!leaves) return 83; /*alloc fail*/\n\n  for(i = 0; i != numcodes; ++i)\n  {\n    if(frequencies[i] > 0)\n    {\n      leaves[numpresent].weight = (int)frequencies[i];\n      leaves[numpresent].index = i;\n      ++numpresent;\n    }\n  }\n\n  for(i = 0; i != numcodes; ++i) lengths[i] = 0;\n\n  /*ensure at least two present symbols. There should be at least one symbol\n  according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To\n  make these work as well ensure there are at least two symbols. The\n  Package-Merge code below also doesn't work correctly if there's only one\n  symbol, it'd give it the theoritical 0 bits but in practice zlib wants 1 bit*/\n  if(numpresent == 0)\n  {\n    lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/\n  }\n  else if(numpresent == 1)\n  {\n    lengths[leaves[0].index] = 1;\n    lengths[leaves[0].index == 0 ? 1 : 0] = 1;\n  }\n  else\n  {\n    BPMLists lists;\n    BPMNode* node;\n\n    bpmnode_sort(leaves, numpresent);\n\n    lists.listsize = maxbitlen;\n    lists.memsize = 2 * maxbitlen * (maxbitlen + 1);\n    lists.nextfree = 0;\n    lists.numfree = lists.memsize;\n    lists.memory = (BPMNode*)lodepng_malloc(lists.memsize * sizeof(*lists.memory));\n    lists.freelist = (BPMNode**)lodepng_malloc(lists.memsize * sizeof(BPMNode*));\n    lists.chains0 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*));\n    lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*));\n    if(!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/\n\n    if(!error)\n    {\n      for(i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i];\n\n      bpmnode_create(&lists, leaves[0].weight, 1, 0);\n      bpmnode_create(&lists, leaves[1].weight, 2, 0);\n\n      for(i = 0; i != lists.listsize; ++i)\n      {\n        lists.chains0[i] = &lists.memory[0];\n        lists.chains1[i] = &lists.memory[1];\n      }\n\n      /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/\n      for(i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i);\n\n      for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail)\n      {\n        for(i = 0; i != node->index; ++i) ++lengths[leaves[i].index];\n      }\n    }\n\n    lodepng_free(lists.memory);\n    lodepng_free(lists.freelist);\n    lodepng_free(lists.chains0);\n    lodepng_free(lists.chains1);\n  }\n\n  lodepng_free(leaves);\n  return error;\n}\n\n/*Create the Huffman tree given the symbol frequencies*/\nstatic unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies,\n                                                size_t mincodes, size_t numcodes, unsigned maxbitlen)\n{\n  unsigned error = 0;\n  while(!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/\n  tree->maxbitlen = maxbitlen;\n  tree->numcodes = (unsigned)numcodes; /*number of symbols*/\n  tree->lengths = (unsigned*)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned));\n  if(!tree->lengths) return 83; /*alloc fail*/\n  /*initialize all lengths to 0*/\n  memset(tree->lengths, 0, numcodes * sizeof(unsigned));\n\n  error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen);\n  if(!error) error = HuffmanTree_makeFromLengths2(tree);\n  return error;\n}\n\nstatic unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index)\n{\n  return tree->tree1d[index];\n}\n\nstatic unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned index)\n{\n  return tree->lengths[index];\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n/*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/\nstatic unsigned generateFixedLitLenTree(HuffmanTree* tree)\n{\n  unsigned i, error = 0;\n  unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned));\n  if(!bitlen) return 83; /*alloc fail*/\n\n  /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, 286-287=unused*/\n  for(i =   0; i <= 143; ++i) bitlen[i] = 8;\n  for(i = 144; i <= 255; ++i) bitlen[i] = 9;\n  for(i = 256; i <= 279; ++i) bitlen[i] = 7;\n  for(i = 280; i <= 287; ++i) bitlen[i] = 8;\n\n  error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15);\n\n  lodepng_free(bitlen);\n  return error;\n}\n\n/*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/\nstatic unsigned generateFixedDistanceTree(HuffmanTree* tree)\n{\n  unsigned i, error = 0;\n  unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned));\n  if(!bitlen) return 83; /*alloc fail*/\n\n  /*there are 32 distance codes, but 30-31 are unused*/\n  for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen[i] = 5;\n  error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15);\n\n  lodepng_free(bitlen);\n  return error;\n}\n\n#ifdef LODEPNG_COMPILE_DECODER\n\n/*\nreturns the code, or (unsigned)(-1) if error happened\ninbitlength is the length of the complete buffer, in bits (so its byte length times 8)\n*/\nstatic unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp,\n                                    const HuffmanTree* codetree, size_t inbitlength)\n{\n  unsigned treepos = 0, ct;\n  for(;;)\n  {\n    if(*bp >= inbitlength) return (unsigned)(-1); /*error: end of input memory reached without endcode*/\n    /*\n    decode the symbol from the tree. The \"readBitFromStream\" code is inlined in\n    the expression below because this is the biggest bottleneck while decoding\n    */\n    ct = codetree->tree2d[(treepos << 1) + READBIT(*bp, in)];\n    ++(*bp);\n    if(ct < codetree->numcodes) return ct; /*the symbol is decoded, return it*/\n    else treepos = ct - codetree->numcodes; /*symbol not yet decoded, instead move tree position*/\n\n    if(treepos >= codetree->numcodes) return (unsigned)(-1); /*error: it appeared outside the codetree*/\n  }\n}\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_DECODER\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Inflator (Decompressor)                                                / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*get the tree of a deflated block with fixed tree, as specified in the deflate specification*/\nstatic void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d)\n{\n  /*TODO: check for out of memory errors*/\n  generateFixedLitLenTree(tree_ll);\n  generateFixedDistanceTree(tree_d);\n}\n\n/*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/\nstatic unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d,\n                                      const unsigned char* in, size_t* bp, size_t inlength)\n{\n  /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/\n  unsigned error = 0;\n  unsigned n, HLIT, HDIST, HCLEN, i;\n  size_t inbitlength = inlength * 8;\n\n  /*see comments in deflateDynamic for explanation of the context and these variables, it is analogous*/\n  unsigned* bitlen_ll = 0; /*lit,len code lengths*/\n  unsigned* bitlen_d = 0; /*dist code lengths*/\n  /*code length code lengths (\"clcl\"), the bit lengths of the huffman tree used to compress bitlen_ll and bitlen_d*/\n  unsigned* bitlen_cl = 0;\n  HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree for compressed huffman trees)*/\n\n  if((*bp) + 14 > (inlength << 3)) return 49; /*error: the bit pointer is or will go past the memory*/\n\n  /*number of literal/length codes + 257. Unlike the spec, the value 257 is added to it here already*/\n  HLIT =  readBitsFromStream(bp, in, 5) + 257;\n  /*number of distance codes. Unlike the spec, the value 1 is added to it here already*/\n  HDIST = readBitsFromStream(bp, in, 5) + 1;\n  /*number of code length codes. Unlike the spec, the value 4 is added to it here already*/\n  HCLEN = readBitsFromStream(bp, in, 4) + 4;\n\n  if((*bp) + HCLEN * 3 > (inlength << 3)) return 50; /*error: the bit pointer is or will go past the memory*/\n\n  HuffmanTree_init(&tree_cl);\n\n  while(!error)\n  {\n    /*read the code length codes out of 3 * (amount of code length codes) bits*/\n\n    bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned));\n    if(!bitlen_cl) ERROR_BREAK(83 /*alloc fail*/);\n\n    for(i = 0; i != NUM_CODE_LENGTH_CODES; ++i)\n    {\n      if(i < HCLEN) bitlen_cl[CLCL_ORDER[i]] = readBitsFromStream(bp, in, 3);\n      else bitlen_cl[CLCL_ORDER[i]] = 0; /*if not, it must stay 0*/\n    }\n\n    error = HuffmanTree_makeFromLengths(&tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7);\n    if(error) break;\n\n    /*now we can use this tree to read the lengths for the tree that this function will return*/\n    bitlen_ll = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned));\n    bitlen_d = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned));\n    if(!bitlen_ll || !bitlen_d) ERROR_BREAK(83 /*alloc fail*/);\n    for(i = 0; i != NUM_DEFLATE_CODE_SYMBOLS; ++i) bitlen_ll[i] = 0;\n    for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen_d[i] = 0;\n\n    /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/\n    i = 0;\n    while(i < HLIT + HDIST)\n    {\n      unsigned code = huffmanDecodeSymbol(in, bp, &tree_cl, inbitlength);\n      if(code <= 15) /*a length code*/\n      {\n        if(i < HLIT) bitlen_ll[i] = code;\n        else bitlen_d[i - HLIT] = code;\n        ++i;\n      }\n      else if(code == 16) /*repeat previous*/\n      {\n        unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/\n        unsigned value; /*set value to the previous code*/\n\n        if(i == 0) ERROR_BREAK(54); /*can't repeat previous if i is 0*/\n\n        if((*bp + 2) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/\n        replength += readBitsFromStream(bp, in, 2);\n\n        if(i < HLIT + 1) value = bitlen_ll[i - 1];\n        else value = bitlen_d[i - HLIT - 1];\n        /*repeat this value in the next lengths*/\n        for(n = 0; n < replength; ++n)\n        {\n          if(i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/\n          if(i < HLIT) bitlen_ll[i] = value;\n          else bitlen_d[i - HLIT] = value;\n          ++i;\n        }\n      }\n      else if(code == 17) /*repeat \"0\" 3-10 times*/\n      {\n        unsigned replength = 3; /*read in the bits that indicate repeat length*/\n        if((*bp + 3) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/\n        replength += readBitsFromStream(bp, in, 3);\n\n        /*repeat this value in the next lengths*/\n        for(n = 0; n < replength; ++n)\n        {\n          if(i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/\n\n          if(i < HLIT) bitlen_ll[i] = 0;\n          else bitlen_d[i - HLIT] = 0;\n          ++i;\n        }\n      }\n      else if(code == 18) /*repeat \"0\" 11-138 times*/\n      {\n        unsigned replength = 11; /*read in the bits that indicate repeat length*/\n        if((*bp + 7) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/\n        replength += readBitsFromStream(bp, in, 7);\n\n        /*repeat this value in the next lengths*/\n        for(n = 0; n < replength; ++n)\n        {\n          if(i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/\n\n          if(i < HLIT) bitlen_ll[i] = 0;\n          else bitlen_d[i - HLIT] = 0;\n          ++i;\n        }\n      }\n      else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/\n      {\n        if(code == (unsigned)(-1))\n        {\n          /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol\n          (10=no endcode, 11=wrong jump outside of tree)*/\n          error = (*bp) > inbitlength ? 10 : 11;\n        }\n        else error = 16; /*unexisting code, this can never happen*/\n        break;\n      }\n    }\n    if(error) break;\n\n    if(bitlen_ll[256] == 0) ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/\n\n    /*now we've finally got HLIT and HDIST, so generate the code trees, and the function is done*/\n    error = HuffmanTree_makeFromLengths(tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15);\n    if(error) break;\n    error = HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15);\n\n    break; /*end of error-while*/\n  }\n\n  lodepng_free(bitlen_cl);\n  lodepng_free(bitlen_ll);\n  lodepng_free(bitlen_d);\n  HuffmanTree_cleanup(&tree_cl);\n\n  return error;\n}\n\n/*inflate a block with dynamic of fixed Huffman tree*/\nstatic unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size_t* bp,\n                                    size_t* pos, size_t inlength, unsigned btype)\n{\n  unsigned error = 0;\n  HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/\n  HuffmanTree tree_d; /*the huffman tree for distance codes*/\n  size_t inbitlength = inlength * 8;\n\n  HuffmanTree_init(&tree_ll);\n  HuffmanTree_init(&tree_d);\n\n  if(btype == 1) getTreeInflateFixed(&tree_ll, &tree_d);\n  else if(btype == 2) error = getTreeInflateDynamic(&tree_ll, &tree_d, in, bp, inlength);\n\n  while(!error) /*decode all symbols until end reached, breaks at end code*/\n  {\n    /*code_ll is literal, length or end code*/\n    unsigned code_ll = huffmanDecodeSymbol(in, bp, &tree_ll, inbitlength);\n    if(code_ll <= 255) /*literal symbol*/\n    {\n      /*ucvector_push_back would do the same, but for some reason the two lines below run 10% faster*/\n      if(!ucvector_resize(out, (*pos) + 1)) ERROR_BREAK(83 /*alloc fail*/);\n      out->data[*pos] = (unsigned char)code_ll;\n      ++(*pos);\n    }\n    else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/\n    {\n      unsigned code_d, distance;\n      unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/\n      size_t start, forward, backward, length;\n\n      /*part 1: get length base*/\n      length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX];\n\n      /*part 2: get extra bits and add the value of that to length*/\n      numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX];\n      if((*bp + numextrabits_l) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/\n      length += readBitsFromStream(bp, in, numextrabits_l);\n\n      /*part 3: get distance code*/\n      code_d = huffmanDecodeSymbol(in, bp, &tree_d, inbitlength);\n      if(code_d > 29)\n      {\n        if(code_d == (unsigned)(-1)) /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/\n        {\n          /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol\n          (10=no endcode, 11=wrong jump outside of tree)*/\n          error = (*bp) > inlength * 8 ? 10 : 11;\n        }\n        else error = 18; /*error: invalid distance code (30-31 are never used)*/\n        break;\n      }\n      distance = DISTANCEBASE[code_d];\n\n      /*part 4: get extra bits from distance*/\n      numextrabits_d = DISTANCEEXTRA[code_d];\n      if((*bp + numextrabits_d) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/\n      distance += readBitsFromStream(bp, in, numextrabits_d);\n\n      /*part 5: fill in all the out[n] values based on the length and dist*/\n      start = (*pos);\n      if(distance > start) ERROR_BREAK(52); /*too long backward distance*/\n      backward = start - distance;\n\n      if(!ucvector_resize(out, (*pos) + length)) ERROR_BREAK(83 /*alloc fail*/);\n      if (distance < length) {\n        for(forward = 0; forward < length; ++forward)\n        {\n          out->data[(*pos)++] = out->data[backward++];\n        }\n      } else {\n        memcpy(out->data + *pos, out->data + backward, length);\n        *pos += length;\n      }\n    }\n    else if(code_ll == 256)\n    {\n      break; /*end code, break the loop*/\n    }\n    else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/\n    {\n      /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol\n      (10=no endcode, 11=wrong jump outside of tree)*/\n      error = ((*bp) > inlength * 8) ? 10 : 11;\n      break;\n    }\n  }\n\n  HuffmanTree_cleanup(&tree_ll);\n  HuffmanTree_cleanup(&tree_d);\n\n  return error;\n}\n\nstatic unsigned inflateNoCompression(ucvector* out, const unsigned char* in, size_t* bp, size_t* pos, size_t inlength)\n{\n  size_t p;\n  unsigned LEN, NLEN, n, error = 0;\n\n  /*go to first boundary of byte*/\n  while(((*bp) & 0x7) != 0) ++(*bp);\n  p = (*bp) / 8; /*byte position*/\n\n  /*read LEN (2 bytes) and NLEN (2 bytes)*/\n  if(p + 4 >= inlength) return 52; /*error, bit pointer will jump past memory*/\n  LEN = in[p] + 256u * in[p + 1]; p += 2;\n  NLEN = in[p] + 256u * in[p + 1]; p += 2;\n\n  /*check if 16-bit NLEN is really the one's complement of LEN*/\n  if(LEN + NLEN != 65535) return 21; /*error: NLEN is not one's complement of LEN*/\n\n  if(!ucvector_resize(out, (*pos) + LEN)) return 83; /*alloc fail*/\n\n  /*read the literal data: LEN bytes are now stored in the out buffer*/\n  if(p + LEN > inlength) return 23; /*error: reading outside of in buffer*/\n  for(n = 0; n < LEN; ++n) out->data[(*pos)++] = in[p++];\n\n  (*bp) = p * 8;\n\n  return error;\n}\n\nstatic unsigned lodepng_inflatev(ucvector* out,\n                                 const unsigned char* in, size_t insize,\n                                 const LodePNGDecompressSettings* settings)\n{\n  /*bit pointer in the \"in\" data, current byte is bp >> 3, current bit is bp & 0x7 (from lsb to msb of the byte)*/\n  size_t bp = 0;\n  unsigned BFINAL = 0;\n  size_t pos = 0; /*byte position in the out buffer*/\n  unsigned error = 0;\n\n  (void)settings;\n\n  while(!BFINAL)\n  {\n    unsigned BTYPE;\n    if(bp + 2 >= insize * 8) return 52; /*error, bit pointer will jump past memory*/\n    BFINAL = readBitFromStream(&bp, in);\n    BTYPE = 1u * readBitFromStream(&bp, in);\n    BTYPE += 2u * readBitFromStream(&bp, in);\n\n    if(BTYPE == 3) return 20; /*error: invalid BTYPE*/\n    else if(BTYPE == 0) error = inflateNoCompression(out, in, &bp, &pos, insize); /*no compression*/\n    else error = inflateHuffmanBlock(out, in, &bp, &pos, insize, BTYPE); /*compression, BTYPE 01 or 10*/\n\n    if(error) return error;\n  }\n\n  return error;\n}\n\nunsigned lodepng_inflate(unsigned char** out, size_t* outsize,\n                         const unsigned char* in, size_t insize,\n                         const LodePNGDecompressSettings* settings)\n{\n  unsigned error;\n  ucvector v;\n  ucvector_init_buffer(&v, *out, *outsize);\n  error = lodepng_inflatev(&v, in, insize, settings);\n  *out = v.data;\n  *outsize = v.size;\n  return error;\n}\n\nstatic unsigned inflate(unsigned char** out, size_t* outsize,\n                        const unsigned char* in, size_t insize,\n                        const LodePNGDecompressSettings* settings)\n{\n  if(settings->custom_inflate)\n  {\n    return settings->custom_inflate(out, outsize, in, insize, settings);\n  }\n  else\n  {\n    return lodepng_inflate(out, outsize, in, insize, settings);\n  }\n}\n\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Deflator (Compressor)                                                  / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\nstatic const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258;\n\n/*bitlen is the size in bits of the code*/\nstatic void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned code, unsigned bitlen)\n{\n  addBitsToStreamReversed(bp, compressed, code, bitlen);\n}\n\n/*search the index in the array, that has the largest value smaller than or equal to the given value,\ngiven array must be sorted (if no value is smaller, it returns the size of the given array)*/\nstatic size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value)\n{\n  /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/\n  size_t left = 1;\n  size_t right = array_size - 1;\n\n  while(left <= right) {\n    size_t mid = (left + right) >> 1;\n    if (array[mid] >= value) right = mid - 1;\n    else left = mid + 1;\n  }\n  if(left >= array_size || array[left] > value) left--;\n  return left;\n}\n\nstatic void addLengthDistance(uivector* values, size_t length, size_t distance)\n{\n  /*values in encoded vector are those used by deflate:\n  0-255: literal bytes\n  256: end\n  257-285: length/distance pair (length code, followed by extra length bits, distance code, extra distance bits)\n  286-287: invalid*/\n\n  unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length);\n  unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]);\n  unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance);\n  unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]);\n\n  uivector_push_back(values, length_code + FIRST_LENGTH_CODE_INDEX);\n  uivector_push_back(values, extra_length);\n  uivector_push_back(values, dist_code);\n  uivector_push_back(values, extra_distance);\n}\n\n/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3\nbytes as input because 3 is the minimum match length for deflate*/\nstatic const unsigned HASH_NUM_VALUES = 65536;\nstatic const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/\n\ntypedef struct Hash\n{\n  int* head; /*hash value to head circular pos - can be outdated if went around window*/\n  /*circular pos to prev circular pos*/\n  unsigned short* chain;\n  int* val; /*circular pos to hash value*/\n\n  /*TODO: do this not only for zeros but for any repeated byte. However for PNG\n  it's always going to be the zeros that dominate, so not important for PNG*/\n  int* headz; /*similar to head, but for chainz*/\n  unsigned short* chainz; /*those with same amount of zeros*/\n  unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/\n} Hash;\n\nstatic unsigned hash_init(Hash* hash, unsigned windowsize)\n{\n  unsigned i;\n  hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES);\n  hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize);\n  hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);\n\n  hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);\n  hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1));\n  hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);\n\n  if(!hash->head || !hash->chain || !hash->val  || !hash->headz|| !hash->chainz || !hash->zeros)\n  {\n    return 83; /*alloc fail*/\n  }\n\n  /*initialize hash table*/\n  for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1;\n  for(i = 0; i != windowsize; ++i) hash->val[i] = -1;\n  for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/\n\n  for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1;\n  for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/\n\n  return 0;\n}\n\nstatic void hash_cleanup(Hash* hash)\n{\n  lodepng_free(hash->head);\n  lodepng_free(hash->val);\n  lodepng_free(hash->chain);\n\n  lodepng_free(hash->zeros);\n  lodepng_free(hash->headz);\n  lodepng_free(hash->chainz);\n}\n\n\n\nstatic unsigned getHash(const unsigned char* data, size_t size, size_t pos)\n{\n  unsigned result = 0;\n  if(pos + 2 < size)\n  {\n    /*A simple shift and xor hash is used. Since the data of PNGs is dominated\n    by zeroes due to the filters, a better hash does not have a significant\n    effect on speed in traversing the chain, and causes more time spend on\n    calculating the hash.*/\n    result ^= (unsigned)(data[pos + 0] << 0u);\n    result ^= (unsigned)(data[pos + 1] << 4u);\n    result ^= (unsigned)(data[pos + 2] << 8u);\n  } else {\n    size_t amount, i;\n    if(pos >= size) return 0;\n    amount = size - pos;\n    for(i = 0; i != amount; ++i) result ^= (unsigned)(data[pos + i] << (i * 8u));\n  }\n  return result & HASH_BIT_MASK;\n}\n\nstatic unsigned countZeros(const unsigned char* data, size_t size, size_t pos)\n{\n  const unsigned char* start = data + pos;\n  const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH;\n  if(end > data + size) end = data + size;\n  data = start;\n  while(data != end && *data == 0) ++data;\n  /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/\n  return (unsigned)(data - start);\n}\n\n/*wpos = pos & (windowsize - 1)*/\nstatic void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros)\n{\n  hash->val[wpos] = (int)hashval;\n  if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval];\n  hash->head[hashval] = (int)wpos;\n\n  hash->zeros[wpos] = numzeros;\n  if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros];\n  hash->headz[numzeros] = (int)wpos;\n}\n\n/*\nLZ77-encode the data. Return value is error code. The input are raw bytes, the output\nis in the form of unsigned integers with codes representing for example literal bytes, or\nlength/distance pairs.\nIt uses a hash table technique to let it encode faster. When doing LZ77 encoding, a\nsliding window (of windowsize) is used, and all past bytes in that window can be used as\nthe \"dictionary\". A brute force search through all possible distances would be slow, and\nthis hash technique is one out of several ways to speed this up.\n*/\nstatic unsigned encodeLZ77(uivector* out, Hash* hash,\n                           const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize,\n                           unsigned minmatch, unsigned nicematch, unsigned lazymatching)\n{\n  size_t pos;\n  unsigned i, error = 0;\n  /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/\n  unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8;\n  unsigned maxlazymatch = windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64;\n\n  unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 is better or worse*/\n  unsigned numzeros = 0;\n\n  unsigned offset; /*the offset represents the distance in LZ77 terminology*/\n  unsigned length;\n  unsigned lazy = 0;\n  unsigned lazylength = 0, lazyoffset = 0;\n  unsigned hashval;\n  unsigned current_offset, current_length;\n  unsigned prev_offset;\n  const unsigned char *lastptr, *foreptr, *backptr;\n  unsigned hashpos;\n\n  if(windowsize == 0 || windowsize > 32768) return 60; /*error: windowsize smaller/larger than allowed*/\n  if((windowsize & (windowsize - 1)) != 0) return 90; /*error: must be power of two*/\n\n  if(nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH;\n\n  for(pos = inpos; pos < insize; ++pos)\n  {\n    size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/\n    unsigned chainlength = 0;\n\n    hashval = getHash(in, insize, pos);\n\n    if(usezeros && hashval == 0)\n    {\n      if(numzeros == 0) numzeros = countZeros(in, insize, pos);\n      else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros;\n    }\n    else\n    {\n      numzeros = 0;\n    }\n\n    updateHashChain(hash, wpos, hashval, numzeros);\n\n    /*the length and offset found for the current position*/\n    length = 0;\n    offset = 0;\n\n    hashpos = hash->chain[wpos];\n\n    lastptr = &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH ? insize : pos + MAX_SUPPORTED_DEFLATE_LENGTH];\n\n    /*search for the longest string*/\n    prev_offset = 0;\n    for(;;)\n    {\n      if(chainlength++ >= maxchainlength) break;\n      current_offset = (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize);\n\n      if(current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/\n      prev_offset = current_offset;\n      if(current_offset > 0)\n      {\n        /*test the next characters*/\n        foreptr = &in[pos];\n        backptr = &in[pos - current_offset];\n\n        /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/\n        if(numzeros >= 3)\n        {\n          unsigned skip = hash->zeros[hashpos];\n          if(skip > numzeros) skip = numzeros;\n          backptr += skip;\n          foreptr += skip;\n        }\n\n        while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/\n        {\n          ++backptr;\n          ++foreptr;\n        }\n        current_length = (unsigned)(foreptr - &in[pos]);\n\n        if(current_length > length)\n        {\n          length = current_length; /*the longest length*/\n          offset = current_offset; /*the offset that is related to this longest length*/\n          /*jump out once a length of max length is found (speed gain). This also jumps\n          out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/\n          if(current_length >= nicematch) break;\n        }\n      }\n\n      if(hashpos == hash->chain[hashpos]) break;\n\n      if(numzeros >= 3 && length > numzeros)\n      {\n        hashpos = hash->chainz[hashpos];\n        if(hash->zeros[hashpos] != numzeros) break;\n      }\n      else\n      {\n        hashpos = hash->chain[hashpos];\n        /*outdated hash value, happens if particular value was not encountered in whole last window*/\n        if(hash->val[hashpos] != (int)hashval) break;\n      }\n    }\n\n    if(lazymatching)\n    {\n      if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH)\n      {\n        lazy = 1;\n        lazylength = length;\n        lazyoffset = offset;\n        continue; /*try the next byte*/\n      }\n      if(lazy)\n      {\n        lazy = 0;\n        if(pos == 0) ERROR_BREAK(81);\n        if(length > lazylength + 1)\n        {\n          /*push the previous character as literal*/\n          if(!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/);\n        }\n        else\n        {\n          length = lazylength;\n          offset = lazyoffset;\n          hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/\n          hash->headz[numzeros] = -1; /*idem*/\n          --pos;\n        }\n      }\n    }\n    if(length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/);\n\n    /*encode it as length/distance pair or literal value*/\n    if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/\n    {\n      if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/);\n    }\n    else if(length < minmatch || (length == 3 && offset > 4096))\n    {\n      /*compensate for the fact that longer offsets have more extra bits, a\n      length of only 3 may be not worth it then*/\n      if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/);\n    }\n    else\n    {\n      addLengthDistance(out, length, offset);\n      for(i = 1; i < length; ++i)\n      {\n        ++pos;\n        wpos = pos & (windowsize - 1);\n        hashval = getHash(in, insize, pos);\n        if(usezeros && hashval == 0)\n        {\n          if(numzeros == 0) numzeros = countZeros(in, insize, pos);\n          else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros;\n        }\n        else\n        {\n          numzeros = 0;\n        }\n        updateHashChain(hash, wpos, hashval, numzeros);\n      }\n    }\n  } /*end of the loop through each character of input*/\n\n  return error;\n}\n\n/* /////////////////////////////////////////////////////////////////////////// */\n\nstatic unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize)\n{\n  /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte,\n  2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/\n\n  size_t i, j, numdeflateblocks = (datasize + 65534) / 65535;\n  unsigned datapos = 0;\n  for(i = 0; i != numdeflateblocks; ++i)\n  {\n    unsigned BFINAL, BTYPE, LEN, NLEN;\n    unsigned char firstbyte;\n\n    BFINAL = (i == numdeflateblocks - 1);\n    BTYPE = 0;\n\n    firstbyte = (unsigned char)(BFINAL + ((BTYPE & 1) << 1) + ((BTYPE & 2) << 1));\n    ucvector_push_back(out, firstbyte);\n\n    LEN = 65535;\n    if(datasize - datapos < 65535) LEN = (unsigned)datasize - datapos;\n    NLEN = 65535 - LEN;\n\n    ucvector_push_back(out, (unsigned char)(LEN & 255));\n    ucvector_push_back(out, (unsigned char)(LEN >> 8));\n    ucvector_push_back(out, (unsigned char)(NLEN & 255));\n    ucvector_push_back(out, (unsigned char)(NLEN >> 8));\n\n    /*Decompressed data*/\n    for(j = 0; j < 65535 && datapos < datasize; ++j)\n    {\n      ucvector_push_back(out, data[datapos++]);\n    }\n  }\n\n  return 0;\n}\n\n/*\nwrite the lz77-encoded data, which has lit, len and dist codes, to compressed stream using huffman trees.\ntree_ll: the tree for lit and len codes.\ntree_d: the tree for distance codes.\n*/\nstatic void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz77_encoded,\n                          const HuffmanTree* tree_ll, const HuffmanTree* tree_d)\n{\n  size_t i = 0;\n  for(i = 0; i != lz77_encoded->size; ++i)\n  {\n    unsigned val = lz77_encoded->data[i];\n    addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_ll, val), HuffmanTree_getLength(tree_ll, val));\n    if(val > 256) /*for a length code, 3 more things have to be added*/\n    {\n      unsigned length_index = val - FIRST_LENGTH_CODE_INDEX;\n      unsigned n_length_extra_bits = LENGTHEXTRA[length_index];\n      unsigned length_extra_bits = lz77_encoded->data[++i];\n\n      unsigned distance_code = lz77_encoded->data[++i];\n\n      unsigned distance_index = distance_code;\n      unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index];\n      unsigned distance_extra_bits = lz77_encoded->data[++i];\n\n      addBitsToStream(bp, out, length_extra_bits, n_length_extra_bits);\n      addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_d, distance_code),\n                       HuffmanTree_getLength(tree_d, distance_code));\n      addBitsToStream(bp, out, distance_extra_bits, n_distance_extra_bits);\n    }\n  }\n}\n\n/*Deflate for a block of type \"dynamic\", that is, with freely, optimally, created huffman trees*/\nstatic unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash,\n                               const unsigned char* data, size_t datapos, size_t dataend,\n                               const LodePNGCompressSettings* settings, unsigned final)\n{\n  unsigned error = 0;\n\n  /*\n  A block is compressed as follows: The PNG data is lz77 encoded, resulting in\n  literal bytes and length/distance pairs. This is then huffman compressed with\n  two huffman trees. One huffman tree is used for the lit and len values (\"ll\"),\n  another huffman tree is used for the dist values (\"d\"). These two trees are\n  stored using their code lengths, and to compress even more these code lengths\n  are also run-length encoded and huffman compressed. This gives a huffman tree\n  of code lengths \"cl\". The code lenghts used to describe this third tree are\n  the code length code lengths (\"clcl\").\n  */\n\n  /*The lz77 encoded data, represented with integers since there will also be length and distance codes in it*/\n  uivector lz77_encoded;\n  HuffmanTree tree_ll; /*tree for lit,len values*/\n  HuffmanTree tree_d; /*tree for distance codes*/\n  HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll and tree_d*/\n  uivector frequencies_ll; /*frequency of lit,len codes*/\n  uivector frequencies_d; /*frequency of dist codes*/\n  uivector frequencies_cl; /*frequency of code length codes*/\n  uivector bitlen_lld; /*lit,len,dist code lenghts (int bits), literally (without repeat codes).*/\n  uivector bitlen_lld_e; /*bitlen_lld encoded with repeat codes (this is a rudemtary run length compression)*/\n  /*bitlen_cl is the code length code lengths (\"clcl\"). The bit lengths of codes to represent tree_cl\n  (these are written as is in the file, it would be crazy to compress these using yet another huffman\n  tree that needs to be represented by yet another set of code lengths)*/\n  uivector bitlen_cl;\n  size_t datasize = dataend - datapos;\n\n  /*\n  Due to the huffman compression of huffman tree representations (\"two levels\"), there are some anologies:\n  bitlen_lld is to tree_cl what data is to tree_ll and tree_d.\n  bitlen_lld_e is to bitlen_lld what lz77_encoded is to data.\n  bitlen_cl is to bitlen_lld_e what bitlen_lld is to lz77_encoded.\n  */\n\n  unsigned BFINAL = final;\n  size_t numcodes_ll, numcodes_d, i;\n  unsigned HLIT, HDIST, HCLEN;\n\n  uivector_init(&lz77_encoded);\n  HuffmanTree_init(&tree_ll);\n  HuffmanTree_init(&tree_d);\n  HuffmanTree_init(&tree_cl);\n  uivector_init(&frequencies_ll);\n  uivector_init(&frequencies_d);\n  uivector_init(&frequencies_cl);\n  uivector_init(&bitlen_lld);\n  uivector_init(&bitlen_lld_e);\n  uivector_init(&bitlen_cl);\n\n  /*This while loop never loops due to a break at the end, it is here to\n  allow breaking out of it to the cleanup phase on error conditions.*/\n  while(!error)\n  {\n    if(settings->use_lz77)\n    {\n      error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,\n                         settings->minmatch, settings->nicematch, settings->lazymatching);\n      if(error) break;\n    }\n    else\n    {\n      if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/);\n      for(i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/\n    }\n\n    if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83 /*alloc fail*/);\n    if(!uivector_resizev(&frequencies_d, 30, 0)) ERROR_BREAK(83 /*alloc fail*/);\n\n    /*Count the frequencies of lit, len and dist codes*/\n    for(i = 0; i != lz77_encoded.size; ++i)\n    {\n      unsigned symbol = lz77_encoded.data[i];\n      ++frequencies_ll.data[symbol];\n      if(symbol > 256)\n      {\n        unsigned dist = lz77_encoded.data[i + 2];\n        ++frequencies_d.data[dist];\n        i += 3;\n      }\n    }\n    frequencies_ll.data[256] = 1; /*there will be exactly 1 end code, at the end of the block*/\n\n    /*Make both huffman trees, one for the lit and len codes, one for the dist codes*/\n    error = HuffmanTree_makeFromFrequencies(&tree_ll, frequencies_ll.data, 257, frequencies_ll.size, 15);\n    if(error) break;\n    /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least 2 symbols in the dist tree*/\n    error = HuffmanTree_makeFromFrequencies(&tree_d, frequencies_d.data, 2, frequencies_d.size, 15);\n    if(error) break;\n\n    numcodes_ll = tree_ll.numcodes; if(numcodes_ll > 286) numcodes_ll = 286;\n    numcodes_d = tree_d.numcodes; if(numcodes_d > 30) numcodes_d = 30;\n    /*store the code lengths of both generated trees in bitlen_lld*/\n    for(i = 0; i != numcodes_ll; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_ll, (unsigned)i));\n    for(i = 0; i != numcodes_d; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_d, (unsigned)i));\n\n    /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times),\n    17 (3-10 zeroes), 18 (11-138 zeroes)*/\n    for(i = 0; i != (unsigned)bitlen_lld.size; ++i)\n    {\n      unsigned j = 0; /*amount of repititions*/\n      while(i + j + 1 < (unsigned)bitlen_lld.size && bitlen_lld.data[i + j + 1] == bitlen_lld.data[i]) ++j;\n\n      if(bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/\n      {\n        ++j; /*include the first zero*/\n        if(j <= 10) /*repeat code 17 supports max 10 zeroes*/\n        {\n          uivector_push_back(&bitlen_lld_e, 17);\n          uivector_push_back(&bitlen_lld_e, j - 3);\n        }\n        else /*repeat code 18 supports max 138 zeroes*/\n        {\n          if(j > 138) j = 138;\n          uivector_push_back(&bitlen_lld_e, 18);\n          uivector_push_back(&bitlen_lld_e, j - 11);\n        }\n        i += (j - 1);\n      }\n      else if(j >= 3) /*repeat code for value other than zero*/\n      {\n        size_t k;\n        unsigned num = j / 6, rest = j % 6;\n        uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]);\n        for(k = 0; k < num; ++k)\n        {\n          uivector_push_back(&bitlen_lld_e, 16);\n          uivector_push_back(&bitlen_lld_e, 6 - 3);\n        }\n        if(rest >= 3)\n        {\n          uivector_push_back(&bitlen_lld_e, 16);\n          uivector_push_back(&bitlen_lld_e, rest - 3);\n        }\n        else j -= rest;\n        i += j;\n      }\n      else /*too short to benefit from repeat code*/\n      {\n        uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]);\n      }\n    }\n\n    /*generate tree_cl, the huffmantree of huffmantrees*/\n\n    if(!uivector_resizev(&frequencies_cl, NUM_CODE_LENGTH_CODES, 0)) ERROR_BREAK(83 /*alloc fail*/);\n    for(i = 0; i != bitlen_lld_e.size; ++i)\n    {\n      ++frequencies_cl.data[bitlen_lld_e.data[i]];\n      /*after a repeat code come the bits that specify the number of repetitions,\n      those don't need to be in the frequencies_cl calculation*/\n      if(bitlen_lld_e.data[i] >= 16) ++i;\n    }\n\n    error = HuffmanTree_makeFromFrequencies(&tree_cl, frequencies_cl.data,\n                                            frequencies_cl.size, frequencies_cl.size, 7);\n    if(error) break;\n\n    if(!uivector_resize(&bitlen_cl, tree_cl.numcodes)) ERROR_BREAK(83 /*alloc fail*/);\n    for(i = 0; i != tree_cl.numcodes; ++i)\n    {\n      /*lenghts of code length tree is in the order as specified by deflate*/\n      bitlen_cl.data[i] = HuffmanTree_getLength(&tree_cl, CLCL_ORDER[i]);\n    }\n    while(bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4)\n    {\n      /*remove zeros at the end, but minimum size must be 4*/\n      if(!uivector_resize(&bitlen_cl, bitlen_cl.size - 1)) ERROR_BREAK(83 /*alloc fail*/);\n    }\n    if(error) break;\n\n    /*\n    Write everything into the output\n\n    After the BFINAL and BTYPE, the dynamic block consists out of the following:\n    - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN\n    - (HCLEN+4)*3 bits code lengths of code length alphabet\n    - HLIT + 257 code lenghts of lit/length alphabet (encoded using the code length\n      alphabet, + possible repetition codes 16, 17, 18)\n    - HDIST + 1 code lengths of distance alphabet (encoded using the code length\n      alphabet, + possible repetition codes 16, 17, 18)\n    - compressed data\n    - 256 (end code)\n    */\n\n    /*Write block type*/\n    addBitToStream(bp, out, BFINAL);\n    addBitToStream(bp, out, 0); /*first bit of BTYPE \"dynamic\"*/\n    addBitToStream(bp, out, 1); /*second bit of BTYPE \"dynamic\"*/\n\n    /*write the HLIT, HDIST and HCLEN values*/\n    HLIT = (unsigned)(numcodes_ll - 257);\n    HDIST = (unsigned)(numcodes_d - 1);\n    HCLEN = (unsigned)bitlen_cl.size - 4;\n    /*trim zeroes for HCLEN. HLIT and HDIST were already trimmed at tree creation*/\n    while(!bitlen_cl.data[HCLEN + 4 - 1] && HCLEN > 0) --HCLEN;\n    addBitsToStream(bp, out, HLIT, 5);\n    addBitsToStream(bp, out, HDIST, 5);\n    addBitsToStream(bp, out, HCLEN, 4);\n\n    /*write the code lenghts of the code length alphabet*/\n    for(i = 0; i != HCLEN + 4; ++i) addBitsToStream(bp, out, bitlen_cl.data[i], 3);\n\n    /*write the lenghts of the lit/len AND the dist alphabet*/\n    for(i = 0; i != bitlen_lld_e.size; ++i)\n    {\n      addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_cl, bitlen_lld_e.data[i]),\n                       HuffmanTree_getLength(&tree_cl, bitlen_lld_e.data[i]));\n      /*extra bits of repeat codes*/\n      if(bitlen_lld_e.data[i] == 16) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 2);\n      else if(bitlen_lld_e.data[i] == 17) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 3);\n      else if(bitlen_lld_e.data[i] == 18) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 7);\n    }\n\n    /*write the compressed data symbols*/\n    writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);\n    /*error: the length of the end code 256 must be larger than 0*/\n    if(HuffmanTree_getLength(&tree_ll, 256) == 0) ERROR_BREAK(64);\n\n    /*write the end code*/\n    addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));\n\n    break; /*end of error-while*/\n  }\n\n  /*cleanup*/\n  uivector_cleanup(&lz77_encoded);\n  HuffmanTree_cleanup(&tree_ll);\n  HuffmanTree_cleanup(&tree_d);\n  HuffmanTree_cleanup(&tree_cl);\n  uivector_cleanup(&frequencies_ll);\n  uivector_cleanup(&frequencies_d);\n  uivector_cleanup(&frequencies_cl);\n  uivector_cleanup(&bitlen_lld_e);\n  uivector_cleanup(&bitlen_lld);\n  uivector_cleanup(&bitlen_cl);\n\n  return error;\n}\n\nstatic unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash,\n                             const unsigned char* data,\n                             size_t datapos, size_t dataend,\n                             const LodePNGCompressSettings* settings, unsigned final)\n{\n  HuffmanTree tree_ll; /*tree for literal values and length codes*/\n  HuffmanTree tree_d; /*tree for distance codes*/\n\n  unsigned BFINAL = final;\n  unsigned error = 0;\n  size_t i;\n\n  HuffmanTree_init(&tree_ll);\n  HuffmanTree_init(&tree_d);\n\n  generateFixedLitLenTree(&tree_ll);\n  generateFixedDistanceTree(&tree_d);\n\n  addBitToStream(bp, out, BFINAL);\n  addBitToStream(bp, out, 1); /*first bit of BTYPE*/\n  addBitToStream(bp, out, 0); /*second bit of BTYPE*/\n\n  if(settings->use_lz77) /*LZ77 encoded*/\n  {\n    uivector lz77_encoded;\n    uivector_init(&lz77_encoded);\n    error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,\n                       settings->minmatch, settings->nicematch, settings->lazymatching);\n    if(!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);\n    uivector_cleanup(&lz77_encoded);\n  }\n  else /*no LZ77, but still will be Huffman compressed*/\n  {\n    for(i = datapos; i < dataend; ++i)\n    {\n      addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i]));\n    }\n  }\n  /*add END code*/\n  if(!error) addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));\n\n  /*cleanup*/\n  HuffmanTree_cleanup(&tree_ll);\n  HuffmanTree_cleanup(&tree_d);\n\n  return error;\n}\n\nstatic unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize,\n                                 const LodePNGCompressSettings* settings)\n{\n  unsigned error = 0;\n  size_t i, blocksize, numdeflateblocks;\n  size_t bp = 0; /*the bit pointer*/\n  Hash hash;\n\n  if(settings->btype > 2) return 61;\n  else if(settings->btype == 0) return deflateNoCompression(out, in, insize);\n  else if(settings->btype == 1) blocksize = insize;\n  else /*if(settings->btype == 2)*/\n  {\n    /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/\n    blocksize = insize / 8 + 8;\n    if(blocksize < 65536) blocksize = 65536;\n    if(blocksize > 262144) blocksize = 262144;\n  }\n\n  numdeflateblocks = (insize + blocksize - 1) / blocksize;\n  if(numdeflateblocks == 0) numdeflateblocks = 1;\n\n  error = hash_init(&hash, settings->windowsize);\n  if(error) return error;\n\n  for(i = 0; i != numdeflateblocks && !error; ++i)\n  {\n    unsigned final = (i == numdeflateblocks - 1);\n    size_t start = i * blocksize;\n    size_t end = start + blocksize;\n    if(end > insize) end = insize;\n\n    if(settings->btype == 1) error = deflateFixed(out, &bp, &hash, in, start, end, settings, final);\n    else if(settings->btype == 2) error = deflateDynamic(out, &bp, &hash, in, start, end, settings, final);\n  }\n\n  hash_cleanup(&hash);\n\n  return error;\n}\n\nunsigned lodepng_deflate(unsigned char** out, size_t* outsize,\n                         const unsigned char* in, size_t insize,\n                         const LodePNGCompressSettings* settings)\n{\n  unsigned error;\n  ucvector v;\n  ucvector_init_buffer(&v, *out, *outsize);\n  error = lodepng_deflatev(&v, in, insize, settings);\n  *out = v.data;\n  *outsize = v.size;\n  return error;\n}\n\nstatic unsigned deflate(unsigned char** out, size_t* outsize,\n                        const unsigned char* in, size_t insize,\n                        const LodePNGCompressSettings* settings)\n{\n  if(settings->custom_deflate)\n  {\n    return settings->custom_deflate(out, outsize, in, insize, settings);\n  }\n  else\n  {\n    return lodepng_deflate(out, outsize, in, insize, settings);\n  }\n}\n\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Adler32                                                                  */\n/* ////////////////////////////////////////////////////////////////////////// */\n\nstatic unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len)\n{\n  unsigned s1 = adler & 0xffff;\n  unsigned s2 = (adler >> 16) & 0xffff;\n\n  while(len > 0)\n  {\n    /*at least 5552 sums can be done before the sums overflow, saving a lot of module divisions*/\n    unsigned amount = len > 5552 ? 5552 : len;\n    len -= amount;\n    while(amount > 0)\n    {\n      s1 += (*data++);\n      s2 += s1;\n      --amount;\n    }\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s2 << 16) | s1;\n}\n\n/*Return the adler32 of the bytes data[0..len-1]*/\nstatic unsigned adler32(const unsigned char* data, unsigned len)\n{\n  return update_adler32(1L, data, len);\n}\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Zlib                                                                   / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_DECODER\n\nunsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                                 size_t insize, const LodePNGDecompressSettings* settings)\n{\n  unsigned error = 0;\n  unsigned CM, CINFO, FDICT;\n\n  if(insize < 2) return 53; /*error, size of zlib data too small*/\n  /*read information from zlib header*/\n  if((in[0] * 256 + in[1]) % 31 != 0)\n  {\n    /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/\n    return 24;\n  }\n\n  CM = in[0] & 15;\n  CINFO = (in[0] >> 4) & 15;\n  /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/\n  FDICT = (in[1] >> 5) & 1;\n  /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/\n\n  if(CM != 8 || CINFO > 7)\n  {\n    /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/\n    return 25;\n  }\n  if(FDICT != 0)\n  {\n    /*error: the specification of PNG says about the zlib stream:\n      \"The additional flags shall not specify a preset dictionary.\"*/\n    return 26;\n  }\n\n  error = inflate(out, outsize, in + 2, insize - 2, settings);\n  if(error) return error;\n\n  if(!settings->ignore_adler32)\n  {\n    unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]);\n    unsigned checksum = adler32(*out, (unsigned)(*outsize));\n    if(checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/\n  }\n\n  return 0; /*no error*/\n}\n\nstatic unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                                size_t insize, const LodePNGDecompressSettings* settings)\n{\n  if(settings->custom_zlib)\n  {\n    return settings->custom_zlib(out, outsize, in, insize, settings);\n  }\n  else\n  {\n    return lodepng_zlib_decompress(out, outsize, in, insize, settings);\n  }\n}\n\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\nunsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                               size_t insize, const LodePNGCompressSettings* settings)\n{\n  /*initially, *out must be NULL and outsize 0, if you just give some random *out\n  that's pointing to a non allocated buffer, this'll crash*/\n  ucvector outv;\n  size_t i;\n  unsigned error;\n  unsigned char* deflatedata = 0;\n  size_t deflatesize = 0;\n\n  /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 checksum of the Decompressed data*/\n  unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size up to 32768 can be used.*/\n  unsigned FLEVEL = 0;\n  unsigned FDICT = 0;\n  unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64;\n  unsigned FCHECK = 31 - CMFFLG % 31;\n  CMFFLG += FCHECK;\n\n  /*ucvector-controlled version of the output buffer, for dynamic array*/\n  ucvector_init_buffer(&outv, *out, *outsize);\n\n  ucvector_push_back(&outv, (unsigned char)(CMFFLG >> 8));\n  ucvector_push_back(&outv, (unsigned char)(CMFFLG & 255));\n\n  error = deflate(&deflatedata, &deflatesize, in, insize, settings);\n\n  if(!error)\n  {\n    unsigned ADLER32 = adler32(in, (unsigned)insize);\n    for(i = 0; i != deflatesize; ++i) ucvector_push_back(&outv, deflatedata[i]);\n    lodepng_free(deflatedata);\n    lodepng_add32bitInt(&outv, ADLER32);\n  }\n\n  *out = outv.data;\n  *outsize = outv.size;\n\n  return error;\n}\n\n/* compress using the default or custom zlib function */\nstatic unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                              size_t insize, const LodePNGCompressSettings* settings)\n{\n  if(settings->custom_zlib)\n  {\n    return settings->custom_zlib(out, outsize, in, insize, settings);\n  }\n  else\n  {\n    return lodepng_zlib_compress(out, outsize, in, insize, settings);\n  }\n}\n\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#else /*no LODEPNG_COMPILE_ZLIB*/\n\n#ifdef LODEPNG_COMPILE_DECODER\nstatic unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                                size_t insize, const LodePNGDecompressSettings* settings)\n{\n  if(!settings->custom_zlib) return 87; /*no custom zlib function provided */\n  return settings->custom_zlib(out, outsize, in, insize, settings);\n}\n#endif /*LODEPNG_COMPILE_DECODER*/\n#ifdef LODEPNG_COMPILE_ENCODER\nstatic unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,\n                              size_t insize, const LodePNGCompressSettings* settings)\n{\n  if(!settings->custom_zlib) return 87; /*no custom zlib function provided */\n  return settings->custom_zlib(out, outsize, in, insize, settings);\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#endif /*LODEPNG_COMPILE_ZLIB*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\n/*this is a good tradeoff between speed and compression ratio*/\n#define DEFAULT_WINDOWSIZE 2048\n\nvoid lodepng_compress_settings_init(LodePNGCompressSettings* settings)\n{\n  /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/\n  settings->btype = 2;\n  settings->use_lz77 = 1;\n  settings->windowsize = DEFAULT_WINDOWSIZE;\n  settings->minmatch = 3;\n  settings->nicematch = 128;\n  settings->lazymatching = 1;\n\n  settings->custom_zlib = 0;\n  settings->custom_deflate = 0;\n  settings->custom_context = 0;\n}\n\nconst LodePNGCompressSettings lodepng_default_compress_settings = {2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, 0, 0, 0};\n\n\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#ifdef LODEPNG_COMPILE_DECODER\n\nvoid lodepng_decompress_settings_init(LodePNGDecompressSettings* settings)\n{\n  settings->ignore_adler32 = 0;\n\n  settings->custom_zlib = 0;\n  settings->custom_inflate = 0;\n  settings->custom_context = 0;\n}\n\nconst LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, 0};\n\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* // End of Zlib related code. Begin of PNG related code.                 // */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_PNG\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / CRC32                                                                  / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n\n#ifndef LODEPNG_NO_COMPILE_CRC\n/* CRC polynomial: 0xedb88320 */\nstatic unsigned lodepng_crc32_table[256] = {\n           0u, 1996959894u, 3993919788u, 2567524794u,  124634137u, 1886057615u, 3915621685u, 2657392035u,\n   249268274u, 2044508324u, 3772115230u, 2547177864u,  162941995u, 2125561021u, 3887607047u, 2428444049u,\n   498536548u, 1789927666u, 4089016648u, 2227061214u,  450548861u, 1843258603u, 4107580753u, 2211677639u,\n   325883990u, 1684777152u, 4251122042u, 2321926636u,  335633487u, 1661365465u, 4195302755u, 2366115317u,\n   997073096u, 1281953886u, 3579855332u, 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u,\n   901097722u, 1119000684u, 3686517206u, 2898065728u,  853044451u, 1172266101u, 3705015759u, 2882616665u,\n   651767980u, 1373503546u, 3369554304u, 3218104598u,  565507253u, 1454621731u, 3485111705u, 3099436303u,\n   671266974u, 1594198024u, 3322730930u, 2970347812u,  795835527u, 1483230225u, 3244367275u, 3060149565u,\n  1994146192u,   31158534u, 2563907772u, 4023717930u, 1907459465u,  112637215u, 2680153253u, 3904427059u,\n  2013776290u,  251722036u, 2517215374u, 3775830040u, 2137656763u,  141376813u, 2439277719u, 3865271297u,\n  1802195444u,  476864866u, 2238001368u, 4066508878u, 1812370925u,  453092731u, 2181625025u, 4111451223u,\n  1706088902u,  314042704u, 2344532202u, 4240017532u, 1658658271u,  366619977u, 2362670323u, 4224994405u,\n  1303535960u,  984961486u, 2747007092u, 3569037538u, 1256170817u, 1037604311u, 2765210733u, 3554079995u,\n  1131014506u,  879679996u, 2909243462u, 3663771856u, 1141124467u,  855842277u, 2852801631u, 3708648649u,\n  1342533948u,  654459306u, 3188396048u, 3373015174u, 1466479909u,  544179635u, 3110523913u, 3462522015u,\n  1591671054u,  702138776u, 2966460450u, 3352799412u, 1504918807u,  783551873u, 3082640443u, 3233442989u,\n  3988292384u, 2596254646u,   62317068u, 1957810842u, 3939845945u, 2647816111u,   81470997u, 1943803523u,\n  3814918930u, 2489596804u,  225274430u, 2053790376u, 3826175755u, 2466906013u,  167816743u, 2097651377u,\n  4027552580u, 2265490386u,  503444072u, 1762050814u, 4150417245u, 2154129355u,  426522225u, 1852507879u,\n  4275313526u, 2312317920u,  282753626u, 1742555852u, 4189708143u, 2394877945u,  397917763u, 1622183637u,\n  3604390888u, 2714866558u,  953729732u, 1340076626u, 3518719985u, 2797360999u, 1068828381u, 1219638859u,\n  3624741850u, 2936675148u,  906185462u, 1090812512u, 3747672003u, 2825379669u,  829329135u, 1181335161u,\n  3412177804u, 3160834842u,  628085408u, 1382605366u, 3423369109u, 3138078467u,  570562233u, 1426400815u,\n  3317316542u, 2998733608u,  733239954u, 1555261956u, 3268935591u, 3050360625u,  752459403u, 1541320221u,\n  2607071920u, 3965973030u, 1969922972u,   40735498u, 2617837225u, 3943577151u, 1913087877u,   83908371u,\n  2512341634u, 3803740692u, 2075208622u,  213261112u, 2463272603u, 3855990285u, 2094854071u,  198958881u,\n  2262029012u, 4057260610u, 1759359992u,  534414190u, 2176718541u, 4139329115u, 1873836001u,  414664567u,\n  2282248934u, 4279200368u, 1711684554u,  285281116u, 2405801727u, 4167216745u, 1634467795u,  376229701u,\n  2685067896u, 3608007406u, 1308918612u,  956543938u, 2808555105u, 3495958263u, 1231636301u, 1047427035u,\n  2932959818u, 3654703836u, 1088359270u,  936918000u, 2847714899u, 3736837829u, 1202900863u,  817233897u,\n  3183342108u, 3401237130u, 1404277552u,  615818150u, 3134207493u, 3453421203u, 1423857449u,  601450431u,\n  3009837614u, 3294710456u, 1567103746u,  711928724u, 3020668471u, 3272380065u, 1510334235u,  755167117u\n};\n\n/*Return the CRC of the bytes buf[0..len-1].*/\nunsigned lodepng_crc32(const unsigned char* data, size_t length)\n{\n  unsigned r = 0xffffffffu;\n  size_t i;\n  for(i = 0; i < length; ++i)\n  {\n    r = lodepng_crc32_table[(r ^ data[i]) & 0xff] ^ (r >> 8);\n  }\n  return r ^ 0xffffffffu;\n}\n#else /* !LODEPNG_NO_COMPILE_CRC */\nunsigned lodepng_crc32(const unsigned char* data, size_t length);\n#endif /* !LODEPNG_NO_COMPILE_CRC */\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Reading and writing single bits and bytes from/to stream for LodePNG   / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\nstatic unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream)\n{\n  unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1);\n  ++(*bitpointer);\n  return result;\n}\n\nstatic unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits)\n{\n  unsigned result = 0;\n  size_t i;\n  for(i = 0 ; i < nbits; ++i)\n  {\n    result <<= 1;\n    result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream);\n  }\n  return result;\n}\n\n#ifdef LODEPNG_COMPILE_DECODER\nstatic void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream, unsigned char bit)\n{\n  /*the current bit in bitstream must be 0 for this to work*/\n  if(bit)\n  {\n    /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/\n    bitstream[(*bitpointer) >> 3] |= (bit << (7 - ((*bitpointer) & 0x7)));\n  }\n  ++(*bitpointer);\n}\n#endif /*LODEPNG_COMPILE_DECODER*/\n\nstatic void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit)\n{\n  /*the current bit in bitstream may be 0 or 1 for this to work*/\n  if(bit == 0) bitstream[(*bitpointer) >> 3] &=  (unsigned char)(~(1 << (7 - ((*bitpointer) & 0x7))));\n  else         bitstream[(*bitpointer) >> 3] |=  (1 << (7 - ((*bitpointer) & 0x7)));\n  ++(*bitpointer);\n}\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / PNG chunks                                                             / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\nunsigned lodepng_chunk_length(const unsigned char* chunk)\n{\n  return lodepng_read32bitInt(&chunk[0]);\n}\n\nvoid lodepng_chunk_type(char type[5], const unsigned char* chunk)\n{\n  unsigned i;\n  for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i];\n  type[4] = 0; /*null termination char*/\n}\n\nunsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type)\n{\n  if(strlen(type) != 4) return 0;\n  return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]);\n}\n\nunsigned char lodepng_chunk_ancillary(const unsigned char* chunk)\n{\n  return((chunk[4] & 32) != 0);\n}\n\nunsigned char lodepng_chunk_private(const unsigned char* chunk)\n{\n  return((chunk[6] & 32) != 0);\n}\n\nunsigned char lodepng_chunk_safetocopy(const unsigned char* chunk)\n{\n  return((chunk[7] & 32) != 0);\n}\n\nunsigned char* lodepng_chunk_data(unsigned char* chunk)\n{\n  return &chunk[8];\n}\n\nconst unsigned char* lodepng_chunk_data_const(const unsigned char* chunk)\n{\n  return &chunk[8];\n}\n\nunsigned lodepng_chunk_check_crc(const unsigned char* chunk)\n{\n  unsigned length = lodepng_chunk_length(chunk);\n  unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]);\n  /*the CRC is taken of the data and the 4 chunk type letters, not the length*/\n  unsigned checksum = lodepng_crc32(&chunk[4], length + 4);\n  if(CRC != checksum) return 1;\n  else return 0;\n}\n\nvoid lodepng_chunk_generate_crc(unsigned char* chunk)\n{\n  unsigned length = lodepng_chunk_length(chunk);\n  unsigned CRC = lodepng_crc32(&chunk[4], length + 4);\n  lodepng_set32bitInt(chunk + 8 + length, CRC);\n}\n\nunsigned char* lodepng_chunk_next(unsigned char* chunk)\n{\n  unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;\n  return &chunk[total_chunk_length];\n}\n\nconst unsigned char* lodepng_chunk_next_const(const unsigned char* chunk)\n{\n  unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;\n  return &chunk[total_chunk_length];\n}\n\nunsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk)\n{\n  unsigned i;\n  unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;\n  unsigned char *chunk_start, *new_buffer;\n  size_t new_length = (*outlength) + total_chunk_length;\n  if(new_length < total_chunk_length || new_length < (*outlength)) return 77; /*integer overflow happened*/\n\n  new_buffer = (unsigned char*)lodepng_realloc(*out, new_length);\n  if(!new_buffer) return 83; /*alloc fail*/\n  (*out) = new_buffer;\n  (*outlength) = new_length;\n  chunk_start = &(*out)[new_length - total_chunk_length];\n\n  for(i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i];\n\n  return 0;\n}\n\nunsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,\n                              const char* type, const unsigned char* data)\n{\n  unsigned i;\n  unsigned char *chunk, *new_buffer;\n  size_t new_length = (*outlength) + length + 12;\n  if(new_length < length + 12 || new_length < (*outlength)) return 77; /*integer overflow happened*/\n  new_buffer = (unsigned char*)lodepng_realloc(*out, new_length);\n  if(!new_buffer) return 83; /*alloc fail*/\n  (*out) = new_buffer;\n  (*outlength) = new_length;\n  chunk = &(*out)[(*outlength) - length - 12];\n\n  /*1: length*/\n  lodepng_set32bitInt(chunk, (unsigned)length);\n\n  /*2: chunk name (4 letters)*/\n  chunk[4] = (unsigned char)type[0];\n  chunk[5] = (unsigned char)type[1];\n  chunk[6] = (unsigned char)type[2];\n  chunk[7] = (unsigned char)type[3];\n\n  /*3: the data*/\n  for(i = 0; i != length; ++i) chunk[8 + i] = data[i];\n\n  /*4: CRC (of the chunkname characters and the data)*/\n  lodepng_chunk_generate_crc(chunk);\n\n  return 0;\n}\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / Color types and such                                                   / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*return type is a LodePNG error code*/\nstatic unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/\n{\n  switch(colortype)\n  {\n    case 0: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; /*grey*/\n    case 2: if(!(                                 bd == 8 || bd == 16)) return 37; break; /*RGB*/\n    case 3: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8            )) return 37; break; /*palette*/\n    case 4: if(!(                                 bd == 8 || bd == 16)) return 37; break; /*grey + alpha*/\n    case 6: if(!(                                 bd == 8 || bd == 16)) return 37; break; /*RGBA*/\n    default: return 31;\n  }\n  return 0; /*allowed color type / bits combination*/\n}\n\nstatic unsigned getNumColorChannels(LodePNGColorType colortype)\n{\n  switch(colortype)\n  {\n    case 0: return 1; /*grey*/\n    case 2: return 3; /*RGB*/\n    case 3: return 1; /*palette*/\n    case 4: return 2; /*grey + alpha*/\n    case 6: return 4; /*RGBA*/\n  }\n  return 0; /*unexisting color type*/\n}\n\nstatic unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth)\n{\n  /*bits per pixel is amount of channels * bits per channel*/\n  return getNumColorChannels(colortype) * bitdepth;\n}\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\nvoid lodepng_color_mode_init(LodePNGColorMode* info)\n{\n  info->key_defined = 0;\n  info->key_r = info->key_g = info->key_b = 0;\n  info->colortype = LCT_RGBA;\n  info->bitdepth = 8;\n  info->palette = 0;\n  info->palettesize = 0;\n}\n\nvoid lodepng_color_mode_cleanup(LodePNGColorMode* info)\n{\n  lodepng_palette_clear(info);\n}\n\nunsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source)\n{\n  size_t i;\n  lodepng_color_mode_cleanup(dest);\n  *dest = *source;\n  if(source->palette)\n  {\n    dest->palette = (unsigned char*)lodepng_malloc(1024);\n    if(!dest->palette && source->palettesize) return 83; /*alloc fail*/\n    for(i = 0; i != source->palettesize * 4; ++i) dest->palette[i] = source->palette[i];\n  }\n  return 0;\n}\n\nstatic int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b)\n{\n  size_t i;\n  if(a->colortype != b->colortype) return 0;\n  if(a->bitdepth != b->bitdepth) return 0;\n  if(a->key_defined != b->key_defined) return 0;\n  if(a->key_defined)\n  {\n    if(a->key_r != b->key_r) return 0;\n    if(a->key_g != b->key_g) return 0;\n    if(a->key_b != b->key_b) return 0;\n  }\n  if(a->palettesize != b->palettesize) return 0;\n  for(i = 0; i != a->palettesize * 4; ++i)\n  {\n    if(a->palette[i] != b->palette[i]) return 0;\n  }\n  return 1;\n}\n\nvoid lodepng_palette_clear(LodePNGColorMode* info)\n{\n  if(info->palette) lodepng_free(info->palette);\n  info->palette = 0;\n  info->palettesize = 0;\n}\n\nunsigned lodepng_palette_add(LodePNGColorMode* info,\n                             unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n{\n  unsigned char* data;\n  /*the same resize technique as C++ std::vectors is used, and here it's made so that for a palette with\n  the max of 256 colors, it'll have the exact alloc size*/\n  if(!info->palette) /*allocate palette if empty*/\n  {\n    /*room for 256 colors with 4 bytes each*/\n    data = (unsigned char*)lodepng_realloc(info->palette, 1024);\n    if(!data) return 83; /*alloc fail*/\n    else info->palette = data;\n  }\n  info->palette[4 * info->palettesize + 0] = r;\n  info->palette[4 * info->palettesize + 1] = g;\n  info->palette[4 * info->palettesize + 2] = b;\n  info->palette[4 * info->palettesize + 3] = a;\n  ++info->palettesize;\n  return 0;\n}\n\nunsigned lodepng_get_bpp(const LodePNGColorMode* info)\n{\n  /*calculate bits per pixel out of colortype and bitdepth*/\n  return lodepng_get_bpp_lct(info->colortype, info->bitdepth);\n}\n\nunsigned lodepng_get_channels(const LodePNGColorMode* info)\n{\n  return getNumColorChannels(info->colortype);\n}\n\nunsigned lodepng_is_greyscale_type(const LodePNGColorMode* info)\n{\n  return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA;\n}\n\nunsigned lodepng_is_alpha_type(const LodePNGColorMode* info)\n{\n  return (info->colortype & 4) != 0; /*4 or 6*/\n}\n\nunsigned lodepng_is_palette_type(const LodePNGColorMode* info)\n{\n  return info->colortype == LCT_PALETTE;\n}\n\nunsigned lodepng_has_palette_alpha(const LodePNGColorMode* info)\n{\n  size_t i;\n  for(i = 0; i != info->palettesize; ++i)\n  {\n    if(info->palette[i * 4 + 3] < 255) return 1;\n  }\n  return 0;\n}\n\nunsigned lodepng_can_have_alpha(const LodePNGColorMode* info)\n{\n  return info->key_defined\n      || lodepng_is_alpha_type(info)\n      || lodepng_has_palette_alpha(info);\n}\n\nsize_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth)\n{\n  size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth);\n  size_t n = (size_t)w * (size_t)h;\n  return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8;\n}\n\nsize_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color)\n{\n  return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth);\n}\n\n\n#ifdef LODEPNG_COMPILE_PNG\n#ifdef LODEPNG_COMPILE_DECODER\n\n/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer,\nand in addition has one extra byte per line: the filter byte. So this gives a larger\nresult than lodepng_get_raw_size. */\nstatic size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color)\n{\n  size_t bpp = lodepng_get_bpp(color);\n  /* + 1 for the filter byte, and possibly plus padding bits per line */\n  size_t line = ((size_t)(w / 8) * bpp) + 1 + ((w & 7) * bpp + 7) / 8;\n  return (size_t)h * line;\n}\n\n/* Safely check if multiplying two integers will overflow (no undefined\nbehavior, compiler removing the code, etc...) and output result. */\nstatic int lodepng_mulofl(size_t a, size_t b, size_t* result)\n{\n  *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */\n  return (a != 0 && *result / a != b);\n}\n\n/* Safely check if adding two integers will overflow (no undefined\nbehavior, compiler removing the code, etc...) and output result. */\nstatic int lodepng_addofl(size_t a, size_t b, size_t* result)\n{\n  *result = a + b; /* Unsigned addition is well defined and safe in C90 */\n  return *result < a;\n}\n\n/*Safely checks whether size_t overflow can be caused due to amount of pixels.\nThis check is overcautious rather than precise. If this check indicates no overflow,\nyou can safely compute in a size_t (but not an unsigned):\n-(size_t)w * (size_t)h * 8\n-amount of bytes in IDAT (including filter, padding and Adam7 bytes)\n-amount of bytes in raw color model\nReturns 1 if overflow possible, 0 if not.\n*/\nstatic int lodepng_pixel_overflow(unsigned w, unsigned h,\n                                  const LodePNGColorMode* pngcolor, const LodePNGColorMode* rawcolor)\n{\n  size_t bpp = LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor));\n  size_t numpixels, total;\n  size_t line; /* bytes per line in worst case */\n\n  if(lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) return 1;\n  if(lodepng_mulofl(numpixels, 8, &total)) return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */\n\n  /* Bytes per scanline with the expression \"(w / 8) * bpp) + ((w & 7) * bpp + 7) / 8\" */\n  if(lodepng_mulofl((size_t)(w / 8), bpp, &line)) return 1;\n  if(lodepng_addofl(line, ((w & 7) * bpp + 7) / 8, &line)) return 1;\n\n  if(lodepng_addofl(line, 5, &line)) return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case */\n  if(lodepng_mulofl(line, h, &total)) return 1; /* Total bytes in worst case */\n\n  return 0; /* no overflow */\n}\n#endif /*LODEPNG_COMPILE_DECODER*/\n#endif /*LODEPNG_COMPILE_PNG*/\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n\nstatic void LodePNGUnknownChunks_init(LodePNGInfo* info)\n{\n  unsigned i;\n  for(i = 0; i != 3; ++i) info->unknown_chunks_data[i] = 0;\n  for(i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0;\n}\n\nstatic void LodePNGUnknownChunks_cleanup(LodePNGInfo* info)\n{\n  unsigned i;\n  for(i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]);\n}\n\nstatic unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src)\n{\n  unsigned i;\n\n  LodePNGUnknownChunks_cleanup(dest);\n\n  for(i = 0; i != 3; ++i)\n  {\n    size_t j;\n    dest->unknown_chunks_size[i] = src->unknown_chunks_size[i];\n    dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]);\n    if(!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/\n    for(j = 0; j < src->unknown_chunks_size[i]; ++j)\n    {\n      dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j];\n    }\n  }\n\n  return 0;\n}\n\n/******************************************************************************/\n\nstatic void LodePNGText_init(LodePNGInfo* info)\n{\n  info->text_num = 0;\n  info->text_keys = NULL;\n  info->text_strings = NULL;\n}\n\nstatic void LodePNGText_cleanup(LodePNGInfo* info)\n{\n  size_t i;\n  for(i = 0; i != info->text_num; ++i)\n  {\n    string_cleanup(&info->text_keys[i]);\n    string_cleanup(&info->text_strings[i]);\n  }\n  lodepng_free(info->text_keys);\n  lodepng_free(info->text_strings);\n}\n\nstatic unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source)\n{\n  size_t i = 0;\n  dest->text_keys = 0;\n  dest->text_strings = 0;\n  dest->text_num = 0;\n  for(i = 0; i != source->text_num; ++i)\n  {\n    CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i]));\n  }\n  return 0;\n}\n\nvoid lodepng_clear_text(LodePNGInfo* info)\n{\n  LodePNGText_cleanup(info);\n}\n\nunsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str)\n{\n  char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1)));\n  char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1)));\n  if(!new_keys || !new_strings)\n  {\n    lodepng_free(new_keys);\n    lodepng_free(new_strings);\n    return 83; /*alloc fail*/\n  }\n\n  ++info->text_num;\n  info->text_keys = new_keys;\n  info->text_strings = new_strings;\n\n  string_init(&info->text_keys[info->text_num - 1]);\n  string_set(&info->text_keys[info->text_num - 1], key);\n\n  string_init(&info->text_strings[info->text_num - 1]);\n  string_set(&info->text_strings[info->text_num - 1], str);\n\n  return 0;\n}\n\n/******************************************************************************/\n\nstatic void LodePNGIText_init(LodePNGInfo* info)\n{\n  info->itext_num = 0;\n  info->itext_keys = NULL;\n  info->itext_langtags = NULL;\n  info->itext_transkeys = NULL;\n  info->itext_strings = NULL;\n}\n\nstatic void LodePNGIText_cleanup(LodePNGInfo* info)\n{\n  size_t i;\n  for(i = 0; i != info->itext_num; ++i)\n  {\n    string_cleanup(&info->itext_keys[i]);\n    string_cleanup(&info->itext_langtags[i]);\n    string_cleanup(&info->itext_transkeys[i]);\n    string_cleanup(&info->itext_strings[i]);\n  }\n  lodepng_free(info->itext_keys);\n  lodepng_free(info->itext_langtags);\n  lodepng_free(info->itext_transkeys);\n  lodepng_free(info->itext_strings);\n}\n\nstatic unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source)\n{\n  size_t i = 0;\n  dest->itext_keys = 0;\n  dest->itext_langtags = 0;\n  dest->itext_transkeys = 0;\n  dest->itext_strings = 0;\n  dest->itext_num = 0;\n  for(i = 0; i != source->itext_num; ++i)\n  {\n    CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i],\n                                        source->itext_transkeys[i], source->itext_strings[i]));\n  }\n  return 0;\n}\n\nvoid lodepng_clear_itext(LodePNGInfo* info)\n{\n  LodePNGIText_cleanup(info);\n}\n\nunsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag,\n                           const char* transkey, const char* str)\n{\n  char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1)));\n  char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1)));\n  char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1)));\n  char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1)));\n  if(!new_keys || !new_langtags || !new_transkeys || !new_strings)\n  {\n    lodepng_free(new_keys);\n    lodepng_free(new_langtags);\n    lodepng_free(new_transkeys);\n    lodepng_free(new_strings);\n    return 83; /*alloc fail*/\n  }\n\n  ++info->itext_num;\n  info->itext_keys = new_keys;\n  info->itext_langtags = new_langtags;\n  info->itext_transkeys = new_transkeys;\n  info->itext_strings = new_strings;\n\n  string_init(&info->itext_keys[info->itext_num - 1]);\n  string_set(&info->itext_keys[info->itext_num - 1], key);\n\n  string_init(&info->itext_langtags[info->itext_num - 1]);\n  string_set(&info->itext_langtags[info->itext_num - 1], langtag);\n\n  string_init(&info->itext_transkeys[info->itext_num - 1]);\n  string_set(&info->itext_transkeys[info->itext_num - 1], transkey);\n\n  string_init(&info->itext_strings[info->itext_num - 1]);\n  string_set(&info->itext_strings[info->itext_num - 1], str);\n\n  return 0;\n}\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\nvoid lodepng_info_init(LodePNGInfo* info)\n{\n  lodepng_color_mode_init(&info->color);\n  info->interlace_method = 0;\n  info->compression_method = 0;\n  info->filter_method = 0;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  info->background_defined = 0;\n  info->background_r = info->background_g = info->background_b = 0;\n\n  LodePNGText_init(info);\n  LodePNGIText_init(info);\n\n  info->time_defined = 0;\n  info->phys_defined = 0;\n\n  LodePNGUnknownChunks_init(info);\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n}\n\nvoid lodepng_info_cleanup(LodePNGInfo* info)\n{\n  lodepng_color_mode_cleanup(&info->color);\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  LodePNGText_cleanup(info);\n  LodePNGIText_cleanup(info);\n\n  LodePNGUnknownChunks_cleanup(info);\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n}\n\nunsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source)\n{\n  lodepng_info_cleanup(dest);\n  *dest = *source;\n  lodepng_color_mode_init(&dest->color);\n  CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color));\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  CERROR_TRY_RETURN(LodePNGText_copy(dest, source));\n  CERROR_TRY_RETURN(LodePNGIText_copy(dest, source));\n\n  LodePNGUnknownChunks_init(dest);\n  CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source));\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n  return 0;\n}\n\nvoid lodepng_info_swap(LodePNGInfo* a, LodePNGInfo* b)\n{\n  LodePNGInfo temp = *a;\n  *a = *b;\n  *b = temp;\n}\n\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/\nstatic void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in)\n{\n  unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/\n  /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/\n  unsigned p = index & m;\n  in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/\n  in = in << (bits * (m - p));\n  if(p == 0) out[index * bits / 8] = in;\n  else out[index * bits / 8] |= in;\n}\n\ntypedef struct ColorTree ColorTree;\n\n/*\nOne node of a color tree\nThis is the data structure used to count the number of unique colors and to get a palette\nindex for a color. It's like an octree, but because the alpha channel is used too, each\nnode has 16 instead of 8 children.\n*/\nstruct ColorTree\n{\n  ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/\n  int index; /*the payload. Only has a meaningful value if this is in the last level*/\n};\n\nstatic void color_tree_init(ColorTree* tree)\n{\n  int i;\n  for(i = 0; i != 16; ++i) tree->children[i] = 0;\n  tree->index = -1;\n}\n\nstatic void color_tree_cleanup(ColorTree* tree)\n{\n  int i;\n  for(i = 0; i != 16; ++i)\n  {\n    if(tree->children[i])\n    {\n      color_tree_cleanup(tree->children[i]);\n      lodepng_free(tree->children[i]);\n    }\n  }\n}\n\n/*returns -1 if color not present, its index otherwise*/\nstatic int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n{\n  int bit = 0;\n  for(bit = 0; bit < 8; ++bit)\n  {\n    int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1);\n    if(!tree->children[i]) return -1;\n    else tree = tree->children[i];\n  }\n  return tree ? tree->index : -1;\n}\n\n#ifdef LODEPNG_COMPILE_ENCODER\nstatic int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n{\n  return color_tree_get(tree, r, g, b, a) >= 0;\n}\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n/*color is not allowed to already exist.\nIndex should be >= 0 (it's signed to be compatible with using -1 for \"doesn't exist\")*/\nstatic void color_tree_add(ColorTree* tree,\n                           unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index)\n{\n  int bit;\n  for(bit = 0; bit < 8; ++bit)\n  {\n    int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1);\n    if(!tree->children[i])\n    {\n      tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree));\n      color_tree_init(tree->children[i]);\n    }\n    tree = tree->children[i];\n  }\n  tree->index = (int)index;\n}\n\n/*put a pixel, given its RGBA color, into image of any color type*/\nstatic unsigned rgba8ToPixel(unsigned char* out, size_t i,\n                             const LodePNGColorMode* mode, ColorTree* tree /*for palette*/,\n                             unsigned char r, unsigned char g, unsigned char b, unsigned char a)\n{\n  if(mode->colortype == LCT_GREY)\n  {\n    unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/;\n    if(mode->bitdepth == 8) out[i] = grey;\n    else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = grey;\n    else\n    {\n      /*take the most significant bits of grey*/\n      grey = (grey >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1);\n      addColorBits(out, i, mode->bitdepth, grey);\n    }\n  }\n  else if(mode->colortype == LCT_RGB)\n  {\n    if(mode->bitdepth == 8)\n    {\n      out[i * 3 + 0] = r;\n      out[i * 3 + 1] = g;\n      out[i * 3 + 2] = b;\n    }\n    else\n    {\n      out[i * 6 + 0] = out[i * 6 + 1] = r;\n      out[i * 6 + 2] = out[i * 6 + 3] = g;\n      out[i * 6 + 4] = out[i * 6 + 5] = b;\n    }\n  }\n  else if(mode->colortype == LCT_PALETTE)\n  {\n    int index = color_tree_get(tree, r, g, b, a);\n    if(index < 0) return 82; /*color not in palette*/\n    if(mode->bitdepth == 8) out[i] = index;\n    else addColorBits(out, i, mode->bitdepth, (unsigned)index);\n  }\n  else if(mode->colortype == LCT_GREY_ALPHA)\n  {\n    unsigned char grey = r; /*((unsigned short)r + g + b) / 3*/;\n    if(mode->bitdepth == 8)\n    {\n      out[i * 2 + 0] = grey;\n      out[i * 2 + 1] = a;\n    }\n    else if(mode->bitdepth == 16)\n    {\n      out[i * 4 + 0] = out[i * 4 + 1] = grey;\n      out[i * 4 + 2] = out[i * 4 + 3] = a;\n    }\n  }\n  else if(mode->colortype == LCT_RGBA)\n  {\n    if(mode->bitdepth == 8)\n    {\n      out[i * 4 + 0] = r;\n      out[i * 4 + 1] = g;\n      out[i * 4 + 2] = b;\n      out[i * 4 + 3] = a;\n    }\n    else\n    {\n      out[i * 8 + 0] = out[i * 8 + 1] = r;\n      out[i * 8 + 2] = out[i * 8 + 3] = g;\n      out[i * 8 + 4] = out[i * 8 + 5] = b;\n      out[i * 8 + 6] = out[i * 8 + 7] = a;\n    }\n  }\n\n  return 0; /*no error*/\n}\n\n/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/\nstatic void rgba16ToPixel(unsigned char* out, size_t i,\n                         const LodePNGColorMode* mode,\n                         unsigned short r, unsigned short g, unsigned short b, unsigned short a)\n{\n  if(mode->colortype == LCT_GREY)\n  {\n    unsigned short grey = r; /*((unsigned)r + g + b) / 3*/;\n    out[i * 2 + 0] = (grey >> 8) & 255;\n    out[i * 2 + 1] = grey & 255;\n  }\n  else if(mode->colortype == LCT_RGB)\n  {\n    out[i * 6 + 0] = (r >> 8) & 255;\n    out[i * 6 + 1] = r & 255;\n    out[i * 6 + 2] = (g >> 8) & 255;\n    out[i * 6 + 3] = g & 255;\n    out[i * 6 + 4] = (b >> 8) & 255;\n    out[i * 6 + 5] = b & 255;\n  }\n  else if(mode->colortype == LCT_GREY_ALPHA)\n  {\n    unsigned short grey = r; /*((unsigned)r + g + b) / 3*/;\n    out[i * 4 + 0] = (grey >> 8) & 255;\n    out[i * 4 + 1] = grey & 255;\n    out[i * 4 + 2] = (a >> 8) & 255;\n    out[i * 4 + 3] = a & 255;\n  }\n  else if(mode->colortype == LCT_RGBA)\n  {\n    out[i * 8 + 0] = (r >> 8) & 255;\n    out[i * 8 + 1] = r & 255;\n    out[i * 8 + 2] = (g >> 8) & 255;\n    out[i * 8 + 3] = g & 255;\n    out[i * 8 + 4] = (b >> 8) & 255;\n    out[i * 8 + 5] = b & 255;\n    out[i * 8 + 6] = (a >> 8) & 255;\n    out[i * 8 + 7] = a & 255;\n  }\n}\n\n/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with given color type.*/\nstatic void getPixelColorRGBA8(unsigned char* r, unsigned char* g,\n                               unsigned char* b, unsigned char* a,\n                               const unsigned char* in, size_t i,\n                               const LodePNGColorMode* mode)\n{\n  if(mode->colortype == LCT_GREY)\n  {\n    if(mode->bitdepth == 8)\n    {\n      *r = *g = *b = in[i];\n      if(mode->key_defined && *r == mode->key_r) *a = 0;\n      else *a = 255;\n    }\n    else if(mode->bitdepth == 16)\n    {\n      *r = *g = *b = in[i * 2 + 0];\n      if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0;\n      else *a = 255;\n    }\n    else\n    {\n      unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/\n      size_t j = i * mode->bitdepth;\n      unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth);\n      *r = *g = *b = (value * 255) / highest;\n      if(mode->key_defined && value == mode->key_r) *a = 0;\n      else *a = 255;\n    }\n  }\n  else if(mode->colortype == LCT_RGB)\n  {\n    if(mode->bitdepth == 8)\n    {\n      *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2];\n      if(mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0;\n      else *a = 255;\n    }\n    else\n    {\n      *r = in[i * 6 + 0];\n      *g = in[i * 6 + 2];\n      *b = in[i * 6 + 4];\n      if(mode->key_defined && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r\n         && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g\n         && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0;\n      else *a = 255;\n    }\n  }\n  else if(mode->colortype == LCT_PALETTE)\n  {\n    unsigned index;\n    if(mode->bitdepth == 8) index = in[i];\n    else\n    {\n      size_t j = i * mode->bitdepth;\n      index = readBitsFromReversedStream(&j, in, mode->bitdepth);\n    }\n\n    if(index >= mode->palettesize)\n    {\n      /*This is an error according to the PNG spec, but common PNG decoders make it black instead.\n      Done here too, slightly faster due to no error handling needed.*/\n      *r = *g = *b = 0;\n      *a = 255;\n    }\n    else\n    {\n      *r = mode->palette[index * 4 + 0];\n      *g = mode->palette[index * 4 + 1];\n      *b = mode->palette[index * 4 + 2];\n      *a = mode->palette[index * 4 + 3];\n    }\n  }\n  else if(mode->colortype == LCT_GREY_ALPHA)\n  {\n    if(mode->bitdepth == 8)\n    {\n      *r = *g = *b = in[i * 2 + 0];\n      *a = in[i * 2 + 1];\n    }\n    else\n    {\n      *r = *g = *b = in[i * 4 + 0];\n      *a = in[i * 4 + 2];\n    }\n  }\n  else if(mode->colortype == LCT_RGBA)\n  {\n    if(mode->bitdepth == 8)\n    {\n      *r = in[i * 4 + 0];\n      *g = in[i * 4 + 1];\n      *b = in[i * 4 + 2];\n      *a = in[i * 4 + 3];\n    }\n    else\n    {\n      *r = in[i * 8 + 0];\n      *g = in[i * 8 + 2];\n      *b = in[i * 8 + 4];\n      *a = in[i * 8 + 6];\n    }\n  }\n}\n\n/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color\nmode test cases, optimized to convert the colors much faster, when converting\nto RGBA or RGB with 8 bit per cannel. buffer must be RGBA or RGB output with\nenough memory, if has_alpha is true the output is RGBA. mode has the color mode\nof the input buffer.*/\nstatic void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels,\n                                unsigned has_alpha, const unsigned char* in,\n                                const LodePNGColorMode* mode)\n{\n  unsigned num_channels = has_alpha ? 4 : 3;\n  size_t i;\n  if(mode->colortype == LCT_GREY)\n  {\n    if(mode->bitdepth == 8)\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = buffer[1] = buffer[2] = in[i];\n        if(has_alpha) buffer[3] = mode->key_defined && in[i] == mode->key_r ? 0 : 255;\n      }\n    }\n    else if(mode->bitdepth == 16)\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = buffer[1] = buffer[2] = in[i * 2];\n        if(has_alpha) buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255;\n      }\n    }\n    else\n    {\n      unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/\n      size_t j = 0;\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth);\n        buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest;\n        if(has_alpha) buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255;\n      }\n    }\n  }\n  else if(mode->colortype == LCT_RGB)\n  {\n    if(mode->bitdepth == 8)\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = in[i * 3 + 0];\n        buffer[1] = in[i * 3 + 1];\n        buffer[2] = in[i * 3 + 2];\n        if(has_alpha) buffer[3] = mode->key_defined && buffer[0] == mode->key_r\n           && buffer[1]== mode->key_g && buffer[2] == mode->key_b ? 0 : 255;\n      }\n    }\n    else\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = in[i * 6 + 0];\n        buffer[1] = in[i * 6 + 2];\n        buffer[2] = in[i * 6 + 4];\n        if(has_alpha) buffer[3] = mode->key_defined\n           && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r\n           && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g\n           && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255;\n      }\n    }\n  }\n  else if(mode->colortype == LCT_PALETTE)\n  {\n    unsigned index;\n    size_t j = 0;\n    for(i = 0; i != numpixels; ++i, buffer += num_channels)\n    {\n      if(mode->bitdepth == 8) index = in[i];\n      else index = readBitsFromReversedStream(&j, in, mode->bitdepth);\n\n      if(index >= mode->palettesize)\n      {\n        /*This is an error according to the PNG spec, but most PNG decoders make it black instead.\n        Done here too, slightly faster due to no error handling needed.*/\n        buffer[0] = buffer[1] = buffer[2] = 0;\n        if(has_alpha) buffer[3] = 255;\n      }\n      else\n      {\n        buffer[0] = mode->palette[index * 4 + 0];\n        buffer[1] = mode->palette[index * 4 + 1];\n        buffer[2] = mode->palette[index * 4 + 2];\n        if(has_alpha) buffer[3] = mode->palette[index * 4 + 3];\n      }\n    }\n  }\n  else if(mode->colortype == LCT_GREY_ALPHA)\n  {\n    if(mode->bitdepth == 8)\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0];\n        if(has_alpha) buffer[3] = in[i * 2 + 1];\n      }\n    }\n    else\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0];\n        if(has_alpha) buffer[3] = in[i * 4 + 2];\n      }\n    }\n  }\n  else if(mode->colortype == LCT_RGBA)\n  {\n    if(mode->bitdepth == 8)\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = in[i * 4 + 0];\n        buffer[1] = in[i * 4 + 1];\n        buffer[2] = in[i * 4 + 2];\n        if(has_alpha) buffer[3] = in[i * 4 + 3];\n      }\n    }\n    else\n    {\n      for(i = 0; i != numpixels; ++i, buffer += num_channels)\n      {\n        buffer[0] = in[i * 8 + 0];\n        buffer[1] = in[i * 8 + 2];\n        buffer[2] = in[i * 8 + 4];\n        if(has_alpha) buffer[3] = in[i * 8 + 6];\n      }\n    }\n  }\n}\n\n/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with\ngiven color type, but the given color type must be 16-bit itself.*/\nstatic void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a,\n                                const unsigned char* in, size_t i, const LodePNGColorMode* mode)\n{\n  if(mode->colortype == LCT_GREY)\n  {\n    *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1];\n    if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0;\n    else *a = 65535;\n  }\n  else if(mode->colortype == LCT_RGB)\n  {\n    *r = 256u * in[i * 6 + 0] + in[i * 6 + 1];\n    *g = 256u * in[i * 6 + 2] + in[i * 6 + 3];\n    *b = 256u * in[i * 6 + 4] + in[i * 6 + 5];\n    if(mode->key_defined\n       && 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r\n       && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g\n       && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0;\n    else *a = 65535;\n  }\n  else if(mode->colortype == LCT_GREY_ALPHA)\n  {\n    *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1];\n    *a = 256u * in[i * 4 + 2] + in[i * 4 + 3];\n  }\n  else if(mode->colortype == LCT_RGBA)\n  {\n    *r = 256u * in[i * 8 + 0] + in[i * 8 + 1];\n    *g = 256u * in[i * 8 + 2] + in[i * 8 + 3];\n    *b = 256u * in[i * 8 + 4] + in[i * 8 + 5];\n    *a = 256u * in[i * 8 + 6] + in[i * 8 + 7];\n  }\n}\n\nunsigned lodepng_convert(unsigned char* out, const unsigned char* in,\n                         const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,\n                         unsigned w, unsigned h)\n{\n  size_t i;\n  ColorTree tree;\n  size_t numpixels = (size_t)w * (size_t)h;\n  unsigned error = 0;\n\n  if(lodepng_color_mode_equal(mode_out, mode_in))\n  {\n    size_t numbytes = lodepng_get_raw_size(w, h, mode_in);\n    for(i = 0; i != numbytes; ++i) out[i] = in[i];\n    return 0;\n  }\n\n  if(mode_out->colortype == LCT_PALETTE)\n  {\n    size_t palettesize = mode_out->palettesize;\n    const unsigned char* palette = mode_out->palette;\n    size_t palsize = (size_t)1u << mode_out->bitdepth;\n    /*if the user specified output palette but did not give the values, assume\n    they want the values of the input color type (assuming that one is palette).\n    Note that we never create a new palette ourselves.*/\n    if(palettesize == 0)\n    {\n      palettesize = mode_in->palettesize;\n      palette = mode_in->palette;\n      /*if the input was also palette with same bitdepth, then the color types are also\n      equal, so copy literally. This to preserve the exact indices that were in the PNG\n      even in case there are duplicate colors in the palette.*/\n      if (mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth)\n      {\n        size_t numbytes = lodepng_get_raw_size(w, h, mode_in);\n        for(i = 0; i != numbytes; ++i) out[i] = in[i];\n        return 0;\n      }\n    }\n    if(palettesize < palsize) palsize = palettesize;\n    color_tree_init(&tree);\n    for(i = 0; i != palsize; ++i)\n    {\n      const unsigned char* p = &palette[i * 4];\n      color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i);\n    }\n  }\n\n  if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16)\n  {\n    for(i = 0; i != numpixels; ++i)\n    {\n      unsigned short r = 0, g = 0, b = 0, a = 0;\n      getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);\n      rgba16ToPixel(out, i, mode_out, r, g, b, a);\n    }\n  }\n  else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA)\n  {\n    getPixelColorsRGBA8(out, numpixels, 1, in, mode_in);\n  }\n  else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB)\n  {\n    getPixelColorsRGBA8(out, numpixels, 0, in, mode_in);\n  }\n  else\n  {\n    unsigned char r = 0, g = 0, b = 0, a = 0;\n    for(i = 0; i != numpixels; ++i)\n    {\n      getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);\n      error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a);\n      if (error) break;\n    }\n  }\n\n  if(mode_out->colortype == LCT_PALETTE)\n  {\n    color_tree_cleanup(&tree);\n  }\n\n  return error;\n}\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\nvoid lodepng_color_profile_init(LodePNGColorProfile* profile)\n{\n  profile->colored = 0;\n  profile->key = 0;\n  profile->key_r = profile->key_g = profile->key_b = 0;\n  profile->alpha = 0;\n  profile->numcolors = 0;\n  profile->bits = 1;\n}\n\n/*function used for debug purposes with C++*/\n/*void printColorProfile(LodePNGColorProfile* p)\n{\n  std::cout << \"colored: \" << (int)p->colored << \", \";\n  std::cout << \"key: \" << (int)p->key << \", \";\n  std::cout << \"key_r: \" << (int)p->key_r << \", \";\n  std::cout << \"key_g: \" << (int)p->key_g << \", \";\n  std::cout << \"key_b: \" << (int)p->key_b << \", \";\n  std::cout << \"alpha: \" << (int)p->alpha << \", \";\n  std::cout << \"numcolors: \" << (int)p->numcolors << \", \";\n  std::cout << \"bits: \" << (int)p->bits << std::endl;\n}*/\n\n/*Returns how many bits needed to represent given value (max 8 bit)*/\nstatic unsigned getValueRequiredBits(unsigned char value)\n{\n  if(value == 0 || value == 255) return 1;\n  /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/\n  if(value % 17 == 0) return value % 85 == 0 ? 2 : 4;\n  return 8;\n}\n\n/*profile must already have been inited with mode.\nIt's ok to set some parameters of profile to done already.*/\nunsigned lodepng_get_color_profile(LodePNGColorProfile* profile,\n                                   const unsigned char* in, unsigned w, unsigned h,\n                                   const LodePNGColorMode* mode)\n{\n  unsigned error = 0;\n  size_t i;\n  ColorTree tree;\n  size_t numpixels = (size_t)w * (size_t)h;\n\n  unsigned colored_done = lodepng_is_greyscale_type(mode) ? 1 : 0;\n  unsigned alpha_done = lodepng_can_have_alpha(mode) ? 0 : 1;\n  unsigned numcolors_done = 0;\n  unsigned bpp = lodepng_get_bpp(mode);\n  unsigned bits_done = bpp == 1 ? 1 : 0;\n  unsigned maxnumcolors = 257;\n  unsigned sixteen = 0;\n  if(bpp <= 8) maxnumcolors = bpp == 1 ? 2 : (bpp == 2 ? 4 : (bpp == 4 ? 16 : 256));\n\n  color_tree_init(&tree);\n\n  /*Check if the 16-bit input is truly 16-bit*/\n  if(mode->bitdepth == 16)\n  {\n    unsigned short r, g, b, a;\n    for(i = 0; i != numpixels; ++i)\n    {\n      getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode);\n      if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) ||\n         (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/\n      {\n        sixteen = 1;\n        break;\n      }\n    }\n  }\n\n  if(sixteen)\n  {\n    unsigned short r = 0, g = 0, b = 0, a = 0;\n    profile->bits = 16;\n    bits_done = numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/\n\n    for(i = 0; i != numpixels; ++i)\n    {\n      getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode);\n\n      if(!colored_done && (r != g || r != b))\n      {\n        profile->colored = 1;\n        colored_done = 1;\n      }\n\n      if(!alpha_done)\n      {\n        unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b);\n        if(a != 65535 && (a != 0 || (profile->key && !matchkey)))\n        {\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n        }\n        else if(a == 0 && !profile->alpha && !profile->key)\n        {\n          profile->key = 1;\n          profile->key_r = r;\n          profile->key_g = g;\n          profile->key_b = b;\n        }\n        else if(a == 65535 && profile->key && matchkey)\n        {\n          /* Color key cannot be used if an opaque pixel also has that RGB color. */\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n        }\n      }\n      if(alpha_done && numcolors_done && colored_done && bits_done) break;\n    }\n\n    if(profile->key && !profile->alpha)\n    {\n      for(i = 0; i != numpixels; ++i)\n      {\n        getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode);\n        if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b)\n        {\n          /* Color key cannot be used if an opaque pixel also has that RGB color. */\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n        }\n      }\n    }\n  }\n  else /* < 16-bit */\n  {\n    unsigned char r = 0, g = 0, b = 0, a = 0;\n    for(i = 0; i != numpixels; ++i)\n    {\n      getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode);\n\n      if(!bits_done && profile->bits < 8)\n      {\n        /*only r is checked, < 8 bits is only relevant for greyscale*/\n        unsigned bits = getValueRequiredBits(r);\n        if(bits > profile->bits) profile->bits = bits;\n      }\n      bits_done = (profile->bits >= bpp);\n\n      if(!colored_done && (r != g || r != b))\n      {\n        profile->colored = 1;\n        colored_done = 1;\n        if(profile->bits < 8) profile->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/\n      }\n\n      if(!alpha_done)\n      {\n        unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b);\n        if(a != 255 && (a != 0 || (profile->key && !matchkey)))\n        {\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n          if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/\n        }\n        else if(a == 0 && !profile->alpha && !profile->key)\n        {\n          profile->key = 1;\n          profile->key_r = r;\n          profile->key_g = g;\n          profile->key_b = b;\n        }\n        else if(a == 255 && profile->key && matchkey)\n        {\n          /* Color key cannot be used if an opaque pixel also has that RGB color. */\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n          if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/\n        }\n      }\n\n      if(!numcolors_done)\n      {\n        if(!color_tree_has(&tree, r, g, b, a))\n        {\n          color_tree_add(&tree, r, g, b, a, profile->numcolors);\n          if(profile->numcolors < 256)\n          {\n            unsigned char* p = profile->palette;\n            unsigned n = profile->numcolors;\n            p[n * 4 + 0] = r;\n            p[n * 4 + 1] = g;\n            p[n * 4 + 2] = b;\n            p[n * 4 + 3] = a;\n          }\n          ++profile->numcolors;\n          numcolors_done = profile->numcolors >= maxnumcolors;\n        }\n      }\n\n      if(alpha_done && numcolors_done && colored_done && bits_done) break;\n    }\n\n    if(profile->key && !profile->alpha)\n    {\n      for(i = 0; i != numpixels; ++i)\n      {\n        getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode);\n        if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b)\n        {\n          /* Color key cannot be used if an opaque pixel also has that RGB color. */\n          profile->alpha = 1;\n          profile->key = 0;\n          alpha_done = 1;\n          if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/\n        }\n      }\n    }\n\n    /*make the profile's key always 16-bit for consistency - repeat each byte twice*/\n    profile->key_r += (profile->key_r << 8);\n    profile->key_g += (profile->key_g << 8);\n    profile->key_b += (profile->key_b << 8);\n  }\n\n  color_tree_cleanup(&tree);\n  return error;\n}\n\n/*Automatically chooses color type that gives smallest amount of bits in the\noutput image, e.g. grey if there are only greyscale pixels, palette if there\nare less than 256 colors, ...\nUpdates values of mode with a potentially smaller color model. mode_out should\ncontain the user chosen color model, but will be overwritten with the new chosen one.*/\nunsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out,\n                                   const unsigned char* image, unsigned w, unsigned h,\n                                   const LodePNGColorMode* mode_in)\n{\n  LodePNGColorProfile prof;\n  unsigned error = 0;\n  unsigned palettebits, palette_ok;\n  size_t i, n;\n  size_t numpixels = (size_t)w * (size_t)h;\n\n  lodepng_color_profile_init(&prof);\n  error = lodepng_get_color_profile(&prof, image, w, h, mode_in);\n  if(error) return error;\n  mode_out->key_defined = 0;\n\n  if(prof.key && numpixels <= 16)\n  {\n    prof.alpha = 1; /*too few pixels to justify tRNS chunk overhead*/\n    prof.key = 0;\n    if(prof.bits < 8) prof.bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/\n  }\n  n = prof.numcolors;\n  palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8));\n  palette_ok = n <= 256 && prof.bits <= 8;\n  if(numpixels < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/\n  if(!prof.colored && prof.bits <= palettebits) palette_ok = 0; /*grey is less overhead*/\n\n  if(palette_ok)\n  {\n    unsigned char* p = prof.palette;\n    lodepng_palette_clear(mode_out); /*remove potential earlier palette*/\n    for(i = 0; i != prof.numcolors; ++i)\n    {\n      error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]);\n      if(error) break;\n    }\n\n    mode_out->colortype = LCT_PALETTE;\n    mode_out->bitdepth = palettebits;\n\n    if(mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize\n        && mode_in->bitdepth == mode_out->bitdepth)\n    {\n      /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/\n      lodepng_color_mode_cleanup(mode_out);\n      lodepng_color_mode_copy(mode_out, mode_in);\n    }\n  }\n  else /*8-bit or 16-bit per channel*/\n  {\n    mode_out->bitdepth = prof.bits;\n    mode_out->colortype = prof.alpha ? (prof.colored ? LCT_RGBA : LCT_GREY_ALPHA)\n                                     : (prof.colored ? LCT_RGB : LCT_GREY);\n\n    if(prof.key)\n    {\n      unsigned mask = (1u << mode_out->bitdepth) - 1u; /*profile always uses 16-bit, mask converts it*/\n      mode_out->key_r = prof.key_r & mask;\n      mode_out->key_g = prof.key_g & mask;\n      mode_out->key_b = prof.key_b & mask;\n      mode_out->key_defined = 1;\n    }\n  }\n\n  return error;\n}\n\n#endif /* #ifdef LODEPNG_COMPILE_ENCODER */\n\n/*\nPaeth predicter, used by PNG filter type 4\nThe parameters are of type short, but should come from unsigned chars, the shorts\nare only needed to make the paeth calculation correct.\n*/\nstatic unsigned char paethPredictor(short a, short b, short c)\n{\n  short pa = abs(b - c);\n  short pb = abs(a - c);\n  short pc = abs(a + b - c - c);\n\n  if(pc < pa && pc < pb) return (unsigned char)c;\n  else if(pb < pa) return (unsigned char)b;\n  else return (unsigned char)a;\n}\n\n/*shared values used by multiple Adam7 related functions*/\n\nstatic const unsigned ADAM7_IX[7] = { 0, 4, 0, 2, 0, 1, 0 }; /*x start values*/\nstatic const unsigned ADAM7_IY[7] = { 0, 0, 4, 0, 2, 0, 1 }; /*y start values*/\nstatic const unsigned ADAM7_DX[7] = { 8, 8, 4, 4, 2, 2, 1 }; /*x delta values*/\nstatic const unsigned ADAM7_DY[7] = { 8, 8, 8, 4, 4, 2, 2 }; /*y delta values*/\n\n/*\nOutputs various dimensions and positions in the image related to the Adam7 reduced images.\npassw: output containing the width of the 7 passes\npassh: output containing the height of the 7 passes\nfilter_passstart: output containing the index of the start and end of each\n reduced image with filter bytes\npadded_passstart output containing the index of the start and end of each\n reduced image when without filter bytes but with padded scanlines\npassstart: output containing the index of the start and end of each reduced\n image without padding between scanlines, but still padding between the images\nw, h: width and height of non-interlaced image\nbpp: bits per pixel\n\"padded\" is only relevant if bpp is less than 8 and a scanline or image does not\n end at a full byte\n*/\nstatic void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8],\n                                size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp)\n{\n  /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/\n  unsigned i;\n\n  /*calculate width and height in pixels of each pass*/\n  for(i = 0; i != 7; ++i)\n  {\n    passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i];\n    passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i];\n    if(passw[i] == 0) passh[i] = 0;\n    if(passh[i] == 0) passw[i] = 0;\n  }\n\n  filter_passstart[0] = padded_passstart[0] = passstart[0] = 0;\n  for(i = 0; i != 7; ++i)\n  {\n    /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/\n    filter_passstart[i + 1] = filter_passstart[i]\n                            + ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0);\n    /*bits padded if needed to fill full byte at end of each scanline*/\n    padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8);\n    /*only padded at end of reduced image*/\n    passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8;\n  }\n}\n\n#ifdef LODEPNG_COMPILE_DECODER\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / PNG Decoder                                                            / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*read the information from the header and store it in the LodePNGInfo. return value is error*/\nunsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state,\n                         const unsigned char* in, size_t insize)\n{\n  LodePNGInfo* info = &state->info_png;\n  if(insize == 0 || in == 0)\n  {\n    CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/\n  }\n  if(insize < 33)\n  {\n    CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/\n  }\n\n  /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/\n  lodepng_info_cleanup(info);\n  lodepng_info_init(info);\n\n  if(in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71\n     || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10)\n  {\n    CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/\n  }\n  if(lodepng_chunk_length(in + 8) != 13)\n  {\n    CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/\n  }\n  if(!lodepng_chunk_type_equals(in + 8, \"IHDR\"))\n  {\n    CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/\n  }\n\n  /*read the values given in the header*/\n  *w = lodepng_read32bitInt(&in[16]);\n  *h = lodepng_read32bitInt(&in[20]);\n  info->color.bitdepth = in[24];\n  info->color.colortype = (LodePNGColorType)in[25];\n  info->compression_method = in[26];\n  info->filter_method = in[27];\n  info->interlace_method = in[28];\n\n  if(*w == 0 || *h == 0)\n  {\n    CERROR_RETURN_ERROR(state->error, 93);\n  }\n\n  if(!state->decoder.ignore_crc)\n  {\n    unsigned CRC = lodepng_read32bitInt(&in[29]);\n    unsigned checksum = lodepng_crc32(&in[12], 17);\n    if(CRC != checksum)\n    {\n      CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/\n    }\n  }\n\n  /*error: only compression method 0 is allowed in the specification*/\n  if(info->compression_method != 0) CERROR_RETURN_ERROR(state->error, 32);\n  /*error: only filter method 0 is allowed in the specification*/\n  if(info->filter_method != 0) CERROR_RETURN_ERROR(state->error, 33);\n  /*error: only interlace methods 0 and 1 exist in the specification*/\n  if(info->interlace_method > 1) CERROR_RETURN_ERROR(state->error, 34);\n\n  state->error = checkColorValidity(info->color.colortype, info->color.bitdepth);\n  return state->error;\n}\n\nstatic unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon,\n                                 size_t bytewidth, unsigned char filterType, size_t length)\n{\n  /*\n  For PNG filter method 0\n  unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte,\n  the filter works byte per byte (bytewidth = 1)\n  precon is the previous unfiltered scanline, recon the result, scanline the current one\n  the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead\n  recon and scanline MAY be the same memory address! precon must be disjoint.\n  */\n\n  size_t i;\n  switch(filterType)\n  {\n    case 0:\n      for(i = 0; i != length; ++i) recon[i] = scanline[i];\n      break;\n    case 1:\n      for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];\n      for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + recon[i - bytewidth];\n      break;\n    case 2:\n      if(precon)\n      {\n        for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i];\n      }\n      else\n      {\n        for(i = 0; i != length; ++i) recon[i] = scanline[i];\n      }\n      break;\n    case 3:\n      if(precon)\n      {\n        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1);\n        for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1);\n      }\n      else\n      {\n        for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];\n        for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + (recon[i - bytewidth] >> 1);\n      }\n      break;\n    case 4:\n      if(precon)\n      {\n        for(i = 0; i != bytewidth; ++i)\n        {\n          recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/\n        }\n        for(i = bytewidth; i < length; ++i)\n        {\n          recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth]));\n        }\n      }\n      else\n      {\n        for(i = 0; i != bytewidth; ++i)\n        {\n          recon[i] = scanline[i];\n        }\n        for(i = bytewidth; i < length; ++i)\n        {\n          /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/\n          recon[i] = (scanline[i] + recon[i - bytewidth]);\n        }\n      }\n      break;\n    default: return 36; /*error: unexisting filter type given*/\n  }\n  return 0;\n}\n\nstatic unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)\n{\n  /*\n  For PNG filter method 0\n  this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times)\n  out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline\n  w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel\n  in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes)\n  */\n\n  unsigned y;\n  unsigned char* prevline = 0;\n\n  /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/\n  size_t bytewidth = (bpp + 7) / 8;\n  size_t linebytes = (w * bpp + 7) / 8;\n\n  for(y = 0; y < h; ++y)\n  {\n    size_t outindex = linebytes * y;\n    size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/\n    unsigned char filterType = in[inindex];\n\n    CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes));\n\n    prevline = &out[outindex];\n  }\n\n  return 0;\n}\n\n/*\nin: Adam7 interlaced image, with no padding bits between scanlines, but between\n reduced images so that each reduced image starts at a byte.\nout: the same pixels, but re-ordered so that they're now a non-interlaced image with size w*h\nbpp: bits per pixel\nout has the following size in bits: w * h * bpp.\nin is possibly bigger due to padding bits between reduced images.\nout must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation\n(because that's likely a little bit faster)\nNOTE: comments about padding bits are only relevant if bpp < 8\n*/\nstatic void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)\n{\n  unsigned passw[7], passh[7];\n  size_t filter_passstart[8], padded_passstart[8], passstart[8];\n  unsigned i;\n\n  Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);\n\n  if(bpp >= 8)\n  {\n    for(i = 0; i != 7; ++i)\n    {\n      unsigned x, y, b;\n      size_t bytewidth = bpp / 8;\n      for(y = 0; y < passh[i]; ++y)\n      for(x = 0; x < passw[i]; ++x)\n      {\n        size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth;\n        size_t pixeloutstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth;\n        for(b = 0; b < bytewidth; ++b)\n        {\n          out[pixeloutstart + b] = in[pixelinstart + b];\n        }\n      }\n    }\n  }\n  else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/\n  {\n    for(i = 0; i != 7; ++i)\n    {\n      unsigned x, y, b;\n      unsigned ilinebits = bpp * passw[i];\n      unsigned olinebits = bpp * w;\n      size_t obp, ibp; /*bit pointers (for out and in buffer)*/\n      for(y = 0; y < passh[i]; ++y)\n      for(x = 0; x < passw[i]; ++x)\n      {\n        ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp);\n        obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;\n        for(b = 0; b < bpp; ++b)\n        {\n          unsigned char bit = readBitFromReversedStream(&ibp, in);\n          /*note that this function assumes the out buffer is completely 0, use setBitOfReversedStream otherwise*/\n          setBitOfReversedStream0(&obp, out, bit);\n        }\n      }\n    }\n  }\n}\n\nstatic void removePaddingBits(unsigned char* out, const unsigned char* in,\n                              size_t olinebits, size_t ilinebits, unsigned h)\n{\n  /*\n  After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need\n  to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers\n  for the Adam7 code, the color convert code and the output to the user.\n  in and out are allowed to be the same buffer, in may also be higher but still overlapping; in must\n  have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits must be <= ilinebits\n  also used to move bits after earlier such operations happened, e.g. in a sequence of reduced images from Adam7\n  only useful if (ilinebits - olinebits) is a value in the range 1..7\n  */\n  unsigned y;\n  size_t diff = ilinebits - olinebits;\n  size_t ibp = 0, obp = 0; /*input and output bit pointers*/\n  for(y = 0; y < h; ++y)\n  {\n    size_t x;\n    for(x = 0; x < olinebits; ++x)\n    {\n      unsigned char bit = readBitFromReversedStream(&ibp, in);\n      setBitOfReversedStream(&obp, out, bit);\n    }\n    ibp += diff;\n  }\n}\n\n/*out must be buffer big enough to contain full image, and in must contain the full decompressed data from\nthe IDAT chunks (with filter index bytes and possible padding bits)\nreturn value is error*/\nstatic unsigned postProcessScanlines(unsigned char* out, unsigned char* in,\n                                     unsigned w, unsigned h, const LodePNGInfo* info_png)\n{\n  /*\n  This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype.\n  Steps:\n  *) if no Adam7: 1) unfilter 2) remove padding bits (= posible extra bits per scanline if bpp < 8)\n  *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace\n  NOTE: the in buffer will be overwritten with intermediate data!\n  */\n  unsigned bpp = lodepng_get_bpp(&info_png->color);\n  if(bpp == 0) return 31; /*error: invalid colortype*/\n\n  if(info_png->interlace_method == 0)\n  {\n    if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)\n    {\n      CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp));\n      removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h);\n    }\n    /*we can immediately filter into the out buffer, no other steps needed*/\n    else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp));\n  }\n  else /*interlace_method is 1 (Adam7)*/\n  {\n    unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8];\n    unsigned i;\n\n    Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);\n\n    for(i = 0; i != 7; ++i)\n    {\n      CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp));\n      /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline,\n      move bytes instead of bits or move not at all*/\n      if(bpp < 8)\n      {\n        /*remove padding bits in scanlines; after this there still may be padding\n        bits between the different reduced images: each reduced image still starts nicely at a byte*/\n        removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp,\n                          ((passw[i] * bpp + 7) / 8) * 8, passh[i]);\n      }\n    }\n\n    Adam7_deinterlace(out, in, w, h, bpp);\n  }\n\n  return 0;\n}\n\nstatic unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength)\n{\n  unsigned pos = 0, i;\n  if(color->palette) lodepng_free(color->palette);\n  color->palettesize = chunkLength / 3;\n  color->palette = (unsigned char*)lodepng_malloc(4 * color->palettesize);\n  if(!color->palette && color->palettesize)\n  {\n    color->palettesize = 0;\n    return 83; /*alloc fail*/\n  }\n  if(color->palettesize > 256) return 38; /*error: palette too big*/\n\n  for(i = 0; i != color->palettesize; ++i)\n  {\n    color->palette[4 * i + 0] = data[pos++]; /*R*/\n    color->palette[4 * i + 1] = data[pos++]; /*G*/\n    color->palette[4 * i + 2] = data[pos++]; /*B*/\n    color->palette[4 * i + 3] = 255; /*alpha*/\n  }\n\n  return 0; /* OK */\n}\n\nstatic unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength)\n{\n  unsigned i;\n  if(color->colortype == LCT_PALETTE)\n  {\n    /*error: more alpha values given than there are palette entries*/\n    if(chunkLength > color->palettesize) return 38;\n\n    for(i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i];\n  }\n  else if(color->colortype == LCT_GREY)\n  {\n    /*error: this chunk must be 2 bytes for greyscale image*/\n    if(chunkLength != 2) return 30;\n\n    color->key_defined = 1;\n    color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1];\n  }\n  else if(color->colortype == LCT_RGB)\n  {\n    /*error: this chunk must be 6 bytes for RGB image*/\n    if(chunkLength != 6) return 41;\n\n    color->key_defined = 1;\n    color->key_r = 256u * data[0] + data[1];\n    color->key_g = 256u * data[2] + data[3];\n    color->key_b = 256u * data[4] + data[5];\n  }\n  else return 42; /*error: tRNS chunk not allowed for other color models*/\n\n  return 0; /* OK */\n}\n\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n/*background color chunk (bKGD)*/\nstatic unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength)\n{\n  if(info->color.colortype == LCT_PALETTE)\n  {\n    /*error: this chunk must be 1 byte for indexed color image*/\n    if(chunkLength != 1) return 43;\n\n    info->background_defined = 1;\n    info->background_r = info->background_g = info->background_b = data[0];\n  }\n  else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA)\n  {\n    /*error: this chunk must be 2 bytes for greyscale image*/\n    if(chunkLength != 2) return 44;\n\n    info->background_defined = 1;\n    info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1];\n  }\n  else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA)\n  {\n    /*error: this chunk must be 6 bytes for greyscale image*/\n    if(chunkLength != 6) return 45;\n\n    info->background_defined = 1;\n    info->background_r = 256u * data[0] + data[1];\n    info->background_g = 256u * data[2] + data[3];\n    info->background_b = 256u * data[4] + data[5];\n  }\n\n  return 0; /* OK */\n}\n\n/*text chunk (tEXt)*/\nstatic unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength)\n{\n  unsigned error = 0;\n  char *key = 0, *str = 0;\n  unsigned i;\n\n  while(!error) /*not really a while loop, only used to break on error*/\n  {\n    unsigned length, string2_begin;\n\n    length = 0;\n    while(length < chunkLength && data[length] != 0) ++length;\n    /*even though it's not allowed by the standard, no error is thrown if\n    there's no null termination char, if the text is empty*/\n    if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/\n\n    key = (char*)lodepng_malloc(length + 1);\n    if(!key) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    key[length] = 0;\n    for(i = 0; i != length; ++i) key[i] = (char)data[i];\n\n    string2_begin = length + 1; /*skip keyword null terminator*/\n\n    length = (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin);\n    str = (char*)lodepng_malloc(length + 1);\n    if(!str) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    str[length] = 0;\n    for(i = 0; i != length; ++i) str[i] = (char)data[string2_begin + i];\n\n    error = lodepng_add_text(info, key, str);\n\n    break;\n  }\n\n  lodepng_free(key);\n  lodepng_free(str);\n\n  return error;\n}\n\n/*compressed text chunk (zTXt)*/\nstatic unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings,\n                               const unsigned char* data, size_t chunkLength)\n{\n  unsigned error = 0;\n  unsigned i;\n\n  unsigned length, string2_begin;\n  char *key = 0;\n  ucvector decoded;\n\n  ucvector_init(&decoded);\n\n  while(!error) /*not really a while loop, only used to break on error*/\n  {\n    for(length = 0; length < chunkLength && data[length] != 0; ++length) ;\n    if(length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/\n    if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/\n\n    key = (char*)lodepng_malloc(length + 1);\n    if(!key) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    key[length] = 0;\n    for(i = 0; i != length; ++i) key[i] = (char)data[i];\n\n    if(data[length + 1] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/\n\n    string2_begin = length + 2;\n    if(string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/\n\n    length = (unsigned)chunkLength - string2_begin;\n    /*will fail if zlib error, e.g. if length is too small*/\n    error = zlib_decompress(&decoded.data, &decoded.size,\n                            (unsigned char*)(&data[string2_begin]),\n                            length, zlibsettings);\n    if(error) break;\n    ucvector_push_back(&decoded, 0);\n\n    error = lodepng_add_text(info, key, (char*)decoded.data);\n\n    break;\n  }\n\n  lodepng_free(key);\n  ucvector_cleanup(&decoded);\n\n  return error;\n}\n\n/*international text chunk (iTXt)*/\nstatic unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings,\n                               const unsigned char* data, size_t chunkLength)\n{\n  unsigned error = 0;\n  unsigned i;\n\n  unsigned length, begin, compressed;\n  char *key = 0, *langtag = 0, *transkey = 0;\n  ucvector decoded;\n  ucvector_init(&decoded);\n\n  while(!error) /*not really a while loop, only used to break on error*/\n  {\n    /*Quick check if the chunk length isn't too small. Even without check\n    it'd still fail with other error checks below if it's too short. This just gives a different error code.*/\n    if(chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/\n\n    /*read the key*/\n    for(length = 0; length < chunkLength && data[length] != 0; ++length) ;\n    if(length + 3 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/\n    if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/\n\n    key = (char*)lodepng_malloc(length + 1);\n    if(!key) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    key[length] = 0;\n    for(i = 0; i != length; ++i) key[i] = (char)data[i];\n\n    /*read the compression method*/\n    compressed = data[length + 1];\n    if(data[length + 2] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/\n\n    /*even though it's not allowed by the standard, no error is thrown if\n    there's no null termination char, if the text is empty for the next 3 texts*/\n\n    /*read the langtag*/\n    begin = length + 3;\n    length = 0;\n    for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length;\n\n    langtag = (char*)lodepng_malloc(length + 1);\n    if(!langtag) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    langtag[length] = 0;\n    for(i = 0; i != length; ++i) langtag[i] = (char)data[begin + i];\n\n    /*read the transkey*/\n    begin += length + 1;\n    length = 0;\n    for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length;\n\n    transkey = (char*)lodepng_malloc(length + 1);\n    if(!transkey) CERROR_BREAK(error, 83); /*alloc fail*/\n\n    transkey[length] = 0;\n    for(i = 0; i != length; ++i) transkey[i] = (char)data[begin + i];\n\n    /*read the actual text*/\n    begin += length + 1;\n\n    length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin;\n\n    if(compressed)\n    {\n      /*will fail if zlib error, e.g. if length is too small*/\n      error = zlib_decompress(&decoded.data, &decoded.size,\n                              (unsigned char*)(&data[begin]),\n                              length, zlibsettings);\n      if(error) break;\n      if(decoded.allocsize < decoded.size) decoded.allocsize = decoded.size;\n      ucvector_push_back(&decoded, 0);\n    }\n    else\n    {\n      if(!ucvector_resize(&decoded, length + 1)) CERROR_BREAK(error, 83 /*alloc fail*/);\n\n      decoded.data[length] = 0;\n      for(i = 0; i != length; ++i) decoded.data[i] = data[begin + i];\n    }\n\n    error = lodepng_add_itext(info, key, langtag, transkey, (char*)decoded.data);\n\n    break;\n  }\n\n  lodepng_free(key);\n  lodepng_free(langtag);\n  lodepng_free(transkey);\n  ucvector_cleanup(&decoded);\n\n  return error;\n}\n\nstatic unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength)\n{\n  if(chunkLength != 7) return 73; /*invalid tIME chunk size*/\n\n  info->time_defined = 1;\n  info->time.year = 256u * data[0] + data[1];\n  info->time.month = data[2];\n  info->time.day = data[3];\n  info->time.hour = data[4];\n  info->time.minute = data[5];\n  info->time.second = data[6];\n\n  return 0; /* OK */\n}\n\nstatic unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength)\n{\n  if(chunkLength != 9) return 74; /*invalid pHYs chunk size*/\n\n  info->phys_defined = 1;\n  info->phys_x = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3];\n  info->phys_y = 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7];\n  info->phys_unit = data[8];\n\n  return 0; /* OK */\n}\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\n/*read a PNG, the result will be in the same color type as the PNG (hence \"generic\")*/\nstatic void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h,\n                          LodePNGState* state,\n                          const unsigned char* in, size_t insize)\n{\n  unsigned char IEND = 0;\n  const unsigned char* chunk;\n  size_t i;\n  ucvector idat; /*the data from idat chunks*/\n  ucvector scanlines;\n  size_t predict;\n  size_t outsize = 0;\n\n  /*for unknown chunk order*/\n  unsigned unknown = 0;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\n  /*provide some proper output values if error will happen*/\n  *out = 0;\n\n  state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/\n  if(state->error) return;\n\n  if(lodepng_pixel_overflow(*w, *h, &state->info_png.color, &state->info_raw))\n  {\n    CERROR_RETURN(state->error, 92); /*overflow possible due to amount of pixels*/\n  }\n\n  ucvector_init(&idat);\n  chunk = &in[33]; /*first byte of the first chunk after the header*/\n\n  /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk.\n  IDAT data is put at the start of the in buffer*/\n  while(!IEND && !state->error)\n  {\n    unsigned chunkLength;\n    const unsigned char* data; /*the data in the chunk*/\n\n    /*error: size of the in buffer too small to contain next chunk*/\n    if((size_t)((chunk - in) + 12) > insize || chunk < in)\n    {\n      if(state->decoder.ignore_end) break; /*other errors may still happen though*/\n      CERROR_BREAK(state->error, 30);\n    }\n\n    /*length of the data of the chunk, excluding the length bytes, chunk type and CRC bytes*/\n    chunkLength = lodepng_chunk_length(chunk);\n    /*error: chunk length larger than the max PNG chunk size*/\n    if(chunkLength > 2147483647)\n    {\n      if(state->decoder.ignore_end) break; /*other errors may still happen though*/\n      CERROR_BREAK(state->error, 63);\n    }\n\n    if((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in)\n    {\n      CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk*/\n    }\n\n    data = lodepng_chunk_data_const(chunk);\n\n    /*IDAT chunk, containing compressed image data*/\n    if(lodepng_chunk_type_equals(chunk, \"IDAT\"))\n    {\n      size_t oldsize = idat.size;\n      size_t newsize;\n      if(lodepng_addofl(oldsize, chunkLength, &newsize)) CERROR_BREAK(state->error, 95);\n      if(!ucvector_resize(&idat, newsize)) CERROR_BREAK(state->error, 83 /*alloc fail*/);\n      for(i = 0; i != chunkLength; ++i) idat.data[oldsize + i] = data[i];\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n      critical_pos = 3;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    }\n    /*IEND chunk*/\n    else if(lodepng_chunk_type_equals(chunk, \"IEND\"))\n    {\n      IEND = 1;\n    }\n    /*palette chunk (PLTE)*/\n    else if(lodepng_chunk_type_equals(chunk, \"PLTE\"))\n    {\n      state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength);\n      if(state->error) break;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n      critical_pos = 2;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    }\n    /*palette transparency chunk (tRNS)*/\n    else if(lodepng_chunk_type_equals(chunk, \"tRNS\"))\n    {\n      state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength);\n      if(state->error) break;\n    }\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n    /*background color chunk (bKGD)*/\n    else if(lodepng_chunk_type_equals(chunk, \"bKGD\"))\n    {\n      state->error = readChunk_bKGD(&state->info_png, data, chunkLength);\n      if(state->error) break;\n    }\n    /*text chunk (tEXt)*/\n    else if(lodepng_chunk_type_equals(chunk, \"tEXt\"))\n    {\n      if(state->decoder.read_text_chunks)\n      {\n        state->error = readChunk_tEXt(&state->info_png, data, chunkLength);\n        if(state->error) break;\n      }\n    }\n    /*compressed text chunk (zTXt)*/\n    else if(lodepng_chunk_type_equals(chunk, \"zTXt\"))\n    {\n      if(state->decoder.read_text_chunks)\n      {\n        state->error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);\n        if(state->error) break;\n      }\n    }\n    /*international text chunk (iTXt)*/\n    else if(lodepng_chunk_type_equals(chunk, \"iTXt\"))\n    {\n      if(state->decoder.read_text_chunks)\n      {\n        state->error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);\n        if(state->error) break;\n      }\n    }\n    else if(lodepng_chunk_type_equals(chunk, \"tIME\"))\n    {\n      state->error = readChunk_tIME(&state->info_png, data, chunkLength);\n      if(state->error) break;\n    }\n    else if(lodepng_chunk_type_equals(chunk, \"pHYs\"))\n    {\n      state->error = readChunk_pHYs(&state->info_png, data, chunkLength);\n      if(state->error) break;\n    }\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    else /*it's not an implemented chunk type, so ignore it: skip over the data*/\n    {\n      /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/\n      if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk))\n      {\n        CERROR_BREAK(state->error, 69);\n      }\n\n      unknown = 1;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n      if(state->decoder.remember_unknown_chunks)\n      {\n        state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1],\n                                            &state->info_png.unknown_chunks_size[critical_pos - 1], chunk);\n        if(state->error) break;\n      }\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    }\n\n    if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/\n    {\n      if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/\n    }\n\n    if(!IEND) chunk = lodepng_chunk_next_const(chunk);\n  }\n\n  ucvector_init(&scanlines);\n  /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation.\n  If the decompressed size does not match the prediction, the image must be corrupt.*/\n  if(state->info_png.interlace_method == 0)\n  {\n    predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color);\n  }\n  else\n  {\n    /*Adam-7 interlaced: predicted size is the sum of the 7 sub-images sizes*/\n    const LodePNGColorMode* color = &state->info_png.color;\n    predict = 0;\n    predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color);\n    if(*w > 4) predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color);\n    predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color);\n    if(*w > 2) predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color);\n    predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color);\n    if(*w > 1) predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color);\n    predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color);\n  }\n  if(!state->error && !ucvector_reserve(&scanlines, predict)) state->error = 83; /*alloc fail*/\n  if(!state->error)\n  {\n    state->error = zlib_decompress(&scanlines.data, &scanlines.size, idat.data,\n                                   idat.size, &state->decoder.zlibsettings);\n    if(!state->error && scanlines.size != predict) state->error = 91; /*decompressed size doesn't match prediction*/\n  }\n  ucvector_cleanup(&idat);\n\n  if(!state->error)\n  {\n    outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color);\n    *out = (unsigned char*)lodepng_malloc(outsize);\n    if(!*out) state->error = 83; /*alloc fail*/\n  }\n  if(!state->error)\n  {\n    for(i = 0; i < outsize; i++) (*out)[i] = 0;\n    state->error = postProcessScanlines(*out, scanlines.data, *w, *h, &state->info_png);\n  }\n  ucvector_cleanup(&scanlines);\n}\n\nunsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h,\n                        LodePNGState* state,\n                        const unsigned char* in, size_t insize)\n{\n  *out = 0;\n  decodeGeneric(out, w, h, state, in, insize);\n  if(state->error) return state->error;\n  if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color))\n  {\n    /*same color type, no copying or converting of data needed*/\n    /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype\n    the raw image has to the end user*/\n    if(!state->decoder.color_convert)\n    {\n      state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color);\n      if(state->error) return state->error;\n    }\n  }\n  else\n  {\n    /*color conversion needed; sort of copy of the data*/\n    unsigned char* data = *out;\n    size_t outsize;\n\n    /*TODO: check if this works according to the statement in the documentation: \"The converter can convert\n    from greyscale input color type, to 8-bit greyscale or greyscale with alpha\"*/\n    if(!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA)\n       && !(state->info_raw.bitdepth == 8))\n    {\n      return 56; /*unsupported color mode conversion*/\n    }\n\n    outsize = lodepng_get_raw_size(*w, *h, &state->info_raw);\n    *out = (unsigned char*)lodepng_malloc(outsize);\n    if(!(*out))\n    {\n      state->error = 83; /*alloc fail*/\n    }\n    else state->error = lodepng_convert(*out, data, &state->info_raw,\n                                        &state->info_png.color, *w, *h);\n    lodepng_free(data);\n  }\n  return state->error;\n}\n\nunsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in,\n                               size_t insize, LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned error;\n  LodePNGState state;\n  lodepng_state_init(&state);\n  state.info_raw.colortype = colortype;\n  state.info_raw.bitdepth = bitdepth;\n  error = lodepng_decode(out, w, h, &state, in, insize);\n  lodepng_state_cleanup(&state);\n  return error;\n}\n\nunsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize)\n{\n  return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8);\n}\n\nunsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize)\n{\n  return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8);\n}\n\n#ifdef LODEPNG_COMPILE_DISK\nunsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename,\n                             LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned char* buffer = 0;\n  size_t buffersize;\n  unsigned error;\n  error = lodepng_load_file(&buffer, &buffersize, filename);\n  if(!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth);\n  lodepng_free(buffer);\n  return error;\n}\n\nunsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename)\n{\n  return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8);\n}\n\nunsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename)\n{\n  return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8);\n}\n#endif /*LODEPNG_COMPILE_DISK*/\n\nvoid lodepng_decoder_settings_init(LodePNGDecoderSettings* settings)\n{\n  settings->color_convert = 1;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  settings->read_text_chunks = 1;\n  settings->remember_unknown_chunks = 0;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n  settings->ignore_crc = 0;\n  settings->ignore_critical = 0;\n  settings->ignore_end = 0;\n  lodepng_decompress_settings_init(&settings->zlibsettings);\n}\n\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER)\n\nvoid lodepng_state_init(LodePNGState* state)\n{\n#ifdef LODEPNG_COMPILE_DECODER\n  lodepng_decoder_settings_init(&state->decoder);\n#endif /*LODEPNG_COMPILE_DECODER*/\n#ifdef LODEPNG_COMPILE_ENCODER\n  lodepng_encoder_settings_init(&state->encoder);\n#endif /*LODEPNG_COMPILE_ENCODER*/\n  lodepng_color_mode_init(&state->info_raw);\n  lodepng_info_init(&state->info_png);\n  state->error = 1;\n}\n\nvoid lodepng_state_cleanup(LodePNGState* state)\n{\n  lodepng_color_mode_cleanup(&state->info_raw);\n  lodepng_info_cleanup(&state->info_png);\n}\n\nvoid lodepng_state_copy(LodePNGState* dest, const LodePNGState* source)\n{\n  lodepng_state_cleanup(dest);\n  *dest = *source;\n  lodepng_color_mode_init(&dest->info_raw);\n  lodepng_info_init(&dest->info_png);\n  dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); if(dest->error) return;\n  dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); if(dest->error) return;\n}\n\n#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */\n\n#ifdef LODEPNG_COMPILE_ENCODER\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* / PNG Encoder                                                            / */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n/*chunkName must be string of 4 characters*/\nstatic unsigned addChunk(ucvector* out, const char* chunkName, const unsigned char* data, size_t length)\n{\n  CERROR_TRY_RETURN(lodepng_chunk_create(&out->data, &out->size, (unsigned)length, chunkName, data));\n  out->allocsize = out->size; /*fix the allocsize again*/\n  return 0;\n}\n\nstatic void writeSignature(ucvector* out)\n{\n  /*8 bytes PNG signature, aka the magic bytes*/\n  ucvector_push_back(out, 137);\n  ucvector_push_back(out, 80);\n  ucvector_push_back(out, 78);\n  ucvector_push_back(out, 71);\n  ucvector_push_back(out, 13);\n  ucvector_push_back(out, 10);\n  ucvector_push_back(out, 26);\n  ucvector_push_back(out, 10);\n}\n\nstatic unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h,\n                              LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method)\n{\n  unsigned error = 0;\n  ucvector header;\n  ucvector_init(&header);\n\n  lodepng_add32bitInt(&header, w); /*width*/\n  lodepng_add32bitInt(&header, h); /*height*/\n  ucvector_push_back(&header, (unsigned char)bitdepth); /*bit depth*/\n  ucvector_push_back(&header, (unsigned char)colortype); /*color type*/\n  ucvector_push_back(&header, 0); /*compression method*/\n  ucvector_push_back(&header, 0); /*filter method*/\n  ucvector_push_back(&header, interlace_method); /*interlace method*/\n\n  error = addChunk(out, \"IHDR\", header.data, header.size);\n  ucvector_cleanup(&header);\n\n  return error;\n}\n\nstatic unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info)\n{\n  unsigned error = 0;\n  size_t i;\n  ucvector PLTE;\n  ucvector_init(&PLTE);\n  for(i = 0; i != info->palettesize * 4; ++i)\n  {\n    /*add all channels except alpha channel*/\n    if(i % 4 != 3) ucvector_push_back(&PLTE, info->palette[i]);\n  }\n  error = addChunk(out, \"PLTE\", PLTE.data, PLTE.size);\n  ucvector_cleanup(&PLTE);\n\n  return error;\n}\n\nstatic unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info)\n{\n  unsigned error = 0;\n  size_t i;\n  ucvector tRNS;\n  ucvector_init(&tRNS);\n  if(info->colortype == LCT_PALETTE)\n  {\n    size_t amount = info->palettesize;\n    /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/\n    for(i = info->palettesize; i != 0; --i)\n    {\n      if(info->palette[4 * (i - 1) + 3] == 255) --amount;\n      else break;\n    }\n    /*add only alpha channel*/\n    for(i = 0; i != amount; ++i) ucvector_push_back(&tRNS, info->palette[4 * i + 3]);\n  }\n  else if(info->colortype == LCT_GREY)\n  {\n    if(info->key_defined)\n    {\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255));\n    }\n  }\n  else if(info->colortype == LCT_RGB)\n  {\n    if(info->key_defined)\n    {\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_g >> 8));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_g & 255));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_b >> 8));\n      ucvector_push_back(&tRNS, (unsigned char)(info->key_b & 255));\n    }\n  }\n\n  error = addChunk(out, \"tRNS\", tRNS.data, tRNS.size);\n  ucvector_cleanup(&tRNS);\n\n  return error;\n}\n\nstatic unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize,\n                              LodePNGCompressSettings* zlibsettings)\n{\n  ucvector zlibdata;\n  unsigned error = 0;\n\n  /*compress with the Zlib compressor*/\n  ucvector_init(&zlibdata);\n  error = zlib_compress(&zlibdata.data, &zlibdata.size, data, datasize, zlibsettings);\n  if(!error) error = addChunk(out, \"IDAT\", zlibdata.data, zlibdata.size);\n  ucvector_cleanup(&zlibdata);\n\n  return error;\n}\n\nstatic unsigned addChunk_IEND(ucvector* out)\n{\n  unsigned error = 0;\n  error = addChunk(out, \"IEND\", 0, 0);\n  return error;\n}\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n\nstatic unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring)\n{\n  unsigned error = 0;\n  size_t i;\n  ucvector text;\n  ucvector_init(&text);\n  for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)keyword[i]);\n  if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/\n  ucvector_push_back(&text, 0); /*0 termination char*/\n  for(i = 0; textstring[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)textstring[i]);\n  error = addChunk(out, \"tEXt\", text.data, text.size);\n  ucvector_cleanup(&text);\n\n  return error;\n}\n\nstatic unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring,\n                              LodePNGCompressSettings* zlibsettings)\n{\n  unsigned error = 0;\n  ucvector data, compressed;\n  size_t i, textsize = strlen(textstring);\n\n  ucvector_init(&data);\n  ucvector_init(&compressed);\n  for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]);\n  if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/\n  ucvector_push_back(&data, 0); /*0 termination char*/\n  ucvector_push_back(&data, 0); /*compression method: 0*/\n\n  error = zlib_compress(&compressed.data, &compressed.size,\n                        (unsigned char*)textstring, textsize, zlibsettings);\n  if(!error)\n  {\n    for(i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]);\n    error = addChunk(out, \"zTXt\", data.data, data.size);\n  }\n\n  ucvector_cleanup(&compressed);\n  ucvector_cleanup(&data);\n  return error;\n}\n\nstatic unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* keyword, const char* langtag,\n                              const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings)\n{\n  unsigned error = 0;\n  ucvector data;\n  size_t i, textsize = strlen(textstring);\n\n  ucvector_init(&data);\n\n  for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]);\n  if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/\n  ucvector_push_back(&data, 0); /*null termination char*/\n  ucvector_push_back(&data, compressed ? 1 : 0); /*compression flag*/\n  ucvector_push_back(&data, 0); /*compression method*/\n  for(i = 0; langtag[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)langtag[i]);\n  ucvector_push_back(&data, 0); /*null termination char*/\n  for(i = 0; transkey[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)transkey[i]);\n  ucvector_push_back(&data, 0); /*null termination char*/\n\n  if(compressed)\n  {\n    ucvector compressed_data;\n    ucvector_init(&compressed_data);\n    error = zlib_compress(&compressed_data.data, &compressed_data.size,\n                          (unsigned char*)textstring, textsize, zlibsettings);\n    if(!error)\n    {\n      for(i = 0; i != compressed_data.size; ++i) ucvector_push_back(&data, compressed_data.data[i]);\n    }\n    ucvector_cleanup(&compressed_data);\n  }\n  else /*not compressed*/\n  {\n    for(i = 0; textstring[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)textstring[i]);\n  }\n\n  if(!error) error = addChunk(out, \"iTXt\", data.data, data.size);\n  ucvector_cleanup(&data);\n  return error;\n}\n\nstatic unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info)\n{\n  unsigned error = 0;\n  ucvector bKGD;\n  ucvector_init(&bKGD);\n  if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA)\n  {\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255));\n  }\n  else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA)\n  {\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_g >> 8));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_g & 255));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_b >> 8));\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_b & 255));\n  }\n  else if(info->color.colortype == LCT_PALETTE)\n  {\n    ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); /*palette index*/\n  }\n\n  error = addChunk(out, \"bKGD\", bKGD.data, bKGD.size);\n  ucvector_cleanup(&bKGD);\n\n  return error;\n}\n\nstatic unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time)\n{\n  unsigned error = 0;\n  unsigned char* data = (unsigned char*)lodepng_malloc(7);\n  if(!data) return 83; /*alloc fail*/\n  data[0] = (unsigned char)(time->year >> 8);\n  data[1] = (unsigned char)(time->year & 255);\n  data[2] = (unsigned char)time->month;\n  data[3] = (unsigned char)time->day;\n  data[4] = (unsigned char)time->hour;\n  data[5] = (unsigned char)time->minute;\n  data[6] = (unsigned char)time->second;\n  error = addChunk(out, \"tIME\", data, 7);\n  lodepng_free(data);\n  return error;\n}\n\nstatic unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info)\n{\n  unsigned error = 0;\n  ucvector data;\n  ucvector_init(&data);\n\n  lodepng_add32bitInt(&data, info->phys_x);\n  lodepng_add32bitInt(&data, info->phys_y);\n  ucvector_push_back(&data, info->phys_unit);\n\n  error = addChunk(out, \"pHYs\", data.data, data.size);\n  ucvector_cleanup(&data);\n\n  return error;\n}\n\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\nstatic void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline,\n                           size_t length, size_t bytewidth, unsigned char filterType)\n{\n  size_t i;\n  switch(filterType)\n  {\n    case 0: /*None*/\n      for(i = 0; i != length; ++i) out[i] = scanline[i];\n      break;\n    case 1: /*Sub*/\n      for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];\n      for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth];\n      break;\n    case 2: /*Up*/\n      if(prevline)\n      {\n        for(i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i];\n      }\n      else\n      {\n        for(i = 0; i != length; ++i) out[i] = scanline[i];\n      }\n      break;\n    case 3: /*Average*/\n      if(prevline)\n      {\n        for(i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1);\n        for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1);\n      }\n      else\n      {\n        for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];\n        for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1);\n      }\n      break;\n    case 4: /*Paeth*/\n      if(prevline)\n      {\n        /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/\n        for(i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]);\n        for(i = bytewidth; i < length; ++i)\n        {\n          out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth]));\n        }\n      }\n      else\n      {\n        for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];\n        /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/\n        for(i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]);\n      }\n      break;\n    default: return; /*unexisting filter type given*/\n  }\n}\n\n/* log2 approximation. A slight bit faster than std::log. */\nstatic float flog2(float f)\n{\n  float result = 0;\n  while(f > 32) { result += 4; f /= 16; }\n  while(f > 2) { ++result; f /= 2; }\n  return result + 1.442695f * (f * f * f / 3 - 3 * f * f / 2 + 3 * f - 1.83333f);\n}\n\nstatic unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h,\n                       const LodePNGColorMode* info, const LodePNGEncoderSettings* settings)\n{\n  /*\n  For PNG filter method 0\n  out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there are\n  the scanlines with 1 extra byte per scanline\n  */\n\n  unsigned bpp = lodepng_get_bpp(info);\n  /*the width of a scanline in bytes, not including the filter type*/\n  size_t linebytes = (w * bpp + 7) / 8;\n  /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/\n  size_t bytewidth = (bpp + 7) / 8;\n  const unsigned char* prevline = 0;\n  unsigned x, y;\n  unsigned error = 0;\n  LodePNGFilterStrategy strategy = settings->filter_strategy;\n\n  /*\n  There is a heuristic called the minimum sum of absolute differences heuristic, suggested by the PNG standard:\n   *  If the image type is Palette, or the bit depth is smaller than 8, then do not filter the image (i.e.\n      use fixed filtering, with the filter None).\n   * (The other case) If the image type is Grayscale or RGB (with or without Alpha), and the bit depth is\n     not smaller than 8, then use adaptive filtering heuristic as follows: independently for each row, apply\n     all five filters and select the filter that produces the smallest sum of absolute values per row.\n  This heuristic is used if filter strategy is LFS_MINSUM and filter_palette_zero is true.\n\n  If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the above heuristic is followed,\n  but for \"the other case\", whatever strategy filter_strategy is set to instead of the minimum sum\n  heuristic is used.\n  */\n  if(settings->filter_palette_zero &&\n     (info->colortype == LCT_PALETTE || info->bitdepth < 8)) strategy = LFS_ZERO;\n\n  if(bpp == 0) return 31; /*error: invalid color type*/\n\n  if(strategy == LFS_ZERO)\n  {\n    for(y = 0; y != h; ++y)\n    {\n      size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/\n      size_t inindex = linebytes * y;\n      out[outindex] = 0; /*filter type byte*/\n      filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, 0);\n      prevline = &in[inindex];\n    }\n  }\n  else if(strategy == LFS_MINSUM)\n  {\n    /*adaptive filtering*/\n    size_t sum[5];\n    unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/\n    size_t smallest = 0;\n    unsigned char type, bestType = 0;\n\n    for(type = 0; type != 5; ++type)\n    {\n      attempt[type] = (unsigned char*)lodepng_malloc(linebytes);\n      if(!attempt[type]) return 83; /*alloc fail*/\n    }\n\n    if(!error)\n    {\n      for(y = 0; y != h; ++y)\n      {\n        /*try the 5 filter types*/\n        for(type = 0; type != 5; ++type)\n        {\n          filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);\n\n          /*calculate the sum of the result*/\n          sum[type] = 0;\n          if(type == 0)\n          {\n            for(x = 0; x != linebytes; ++x) sum[type] += (unsigned char)(attempt[type][x]);\n          }\n          else\n          {\n            for(x = 0; x != linebytes; ++x)\n            {\n              /*For differences, each byte should be treated as signed, values above 127 are negative\n              (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there.\n              This means filtertype 0 is almost never chosen, but that is justified.*/\n              unsigned char s = attempt[type][x];\n              sum[type] += s < 128 ? s : (255U - s);\n            }\n          }\n\n          /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/\n          if(type == 0 || sum[type] < smallest)\n          {\n            bestType = type;\n            smallest = sum[type];\n          }\n        }\n\n        prevline = &in[y * linebytes];\n\n        /*now fill the out values*/\n        out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/\n        for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];\n      }\n    }\n\n    for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);\n  }\n  else if(strategy == LFS_ENTROPY)\n  {\n    float sum[5];\n    unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/\n    float smallest = 0;\n    unsigned type, bestType = 0;\n    unsigned count[256];\n\n    for(type = 0; type != 5; ++type)\n    {\n      attempt[type] = (unsigned char*)lodepng_malloc(linebytes);\n      if(!attempt[type]) return 83; /*alloc fail*/\n    }\n\n    for(y = 0; y != h; ++y)\n    {\n      /*try the 5 filter types*/\n      for(type = 0; type != 5; ++type)\n      {\n        filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);\n        for(x = 0; x != 256; ++x) count[x] = 0;\n        for(x = 0; x != linebytes; ++x) ++count[attempt[type][x]];\n        ++count[type]; /*the filter type itself is part of the scanline*/\n        sum[type] = 0;\n        for(x = 0; x != 256; ++x)\n        {\n          float p = count[x] / (float)(linebytes + 1);\n          sum[type] += count[x] == 0 ? 0 : flog2(1 / p) * p;\n        }\n        /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/\n        if(type == 0 || sum[type] < smallest)\n        {\n          bestType = type;\n          smallest = sum[type];\n        }\n      }\n\n      prevline = &in[y * linebytes];\n\n      /*now fill the out values*/\n      out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/\n      for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];\n    }\n\n    for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);\n  }\n  else if(strategy == LFS_PREDEFINED)\n  {\n    for(y = 0; y != h; ++y)\n    {\n      size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/\n      size_t inindex = linebytes * y;\n      unsigned char type = settings->predefined_filters[y];\n      out[outindex] = type; /*filter type byte*/\n      filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type);\n      prevline = &in[inindex];\n    }\n  }\n  else if(strategy == LFS_BRUTE_FORCE)\n  {\n    /*brute force filter chooser.\n    deflate the scanline after every filter attempt to see which one deflates best.\n    This is very slow and gives only slightly smaller, sometimes even larger, result*/\n    size_t size[5];\n    unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/\n    size_t smallest = 0;\n    unsigned type = 0, bestType = 0;\n    unsigned char* dummy;\n    LodePNGCompressSettings zlibsettings = settings->zlibsettings;\n    /*use fixed tree on the attempts so that the tree is not adapted to the filtertype on purpose,\n    to simulate the true case where the tree is the same for the whole image. Sometimes it gives\n    better result with dynamic tree anyway. Using the fixed tree sometimes gives worse, but in rare\n    cases better compression. It does make this a bit less slow, so it's worth doing this.*/\n    zlibsettings.btype = 1;\n    /*a custom encoder likely doesn't read the btype setting and is optimized for complete PNG\n    images only, so disable it*/\n    zlibsettings.custom_zlib = 0;\n    zlibsettings.custom_deflate = 0;\n    for(type = 0; type != 5; ++type)\n    {\n      attempt[type] = (unsigned char*)lodepng_malloc(linebytes);\n      if(!attempt[type]) return 83; /*alloc fail*/\n    }\n    for(y = 0; y != h; ++y) /*try the 5 filter types*/\n    {\n      for(type = 0; type != 5; ++type)\n      {\n        unsigned testsize = (unsigned)linebytes;\n        /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/\n\n        filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);\n        size[type] = 0;\n        dummy = 0;\n        zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings);\n        lodepng_free(dummy);\n        /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/\n        if(type == 0 || size[type] < smallest)\n        {\n          bestType = type;\n          smallest = size[type];\n        }\n      }\n      prevline = &in[y * linebytes];\n      out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/\n      for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];\n    }\n    for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);\n  }\n  else return 88; /* unknown filter strategy */\n\n  return error;\n}\n\nstatic void addPaddingBits(unsigned char* out, const unsigned char* in,\n                           size_t olinebits, size_t ilinebits, unsigned h)\n{\n  /*The opposite of the removePaddingBits function\n  olinebits must be >= ilinebits*/\n  unsigned y;\n  size_t diff = olinebits - ilinebits;\n  size_t obp = 0, ibp = 0; /*bit pointers*/\n  for(y = 0; y != h; ++y)\n  {\n    size_t x;\n    for(x = 0; x < ilinebits; ++x)\n    {\n      unsigned char bit = readBitFromReversedStream(&ibp, in);\n      setBitOfReversedStream(&obp, out, bit);\n    }\n    /*obp += diff; --> no, fill in some value in the padding bits too, to avoid\n    \"Use of uninitialised value of size ###\" warning from valgrind*/\n    for(x = 0; x != diff; ++x) setBitOfReversedStream(&obp, out, 0);\n  }\n}\n\n/*\nin: non-interlaced image with size w*h\nout: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with\n no padding bits between scanlines, but between reduced images so that each\n reduced image starts at a byte.\nbpp: bits per pixel\nthere are no padding bits, not between scanlines, not between reduced images\nin has the following size in bits: w * h * bpp.\nout is possibly bigger due to padding bits between reduced images\nNOTE: comments about padding bits are only relevant if bpp < 8\n*/\nstatic void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)\n{\n  unsigned passw[7], passh[7];\n  size_t filter_passstart[8], padded_passstart[8], passstart[8];\n  unsigned i;\n\n  Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);\n\n  if(bpp >= 8)\n  {\n    for(i = 0; i != 7; ++i)\n    {\n      unsigned x, y, b;\n      size_t bytewidth = bpp / 8;\n      for(y = 0; y < passh[i]; ++y)\n      for(x = 0; x < passw[i]; ++x)\n      {\n        size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth;\n        size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth;\n        for(b = 0; b < bytewidth; ++b)\n        {\n          out[pixeloutstart + b] = in[pixelinstart + b];\n        }\n      }\n    }\n  }\n  else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/\n  {\n    for(i = 0; i != 7; ++i)\n    {\n      unsigned x, y, b;\n      unsigned ilinebits = bpp * passw[i];\n      unsigned olinebits = bpp * w;\n      size_t obp, ibp; /*bit pointers (for out and in buffer)*/\n      for(y = 0; y < passh[i]; ++y)\n      for(x = 0; x < passw[i]; ++x)\n      {\n        ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;\n        obp = (8 * passstart[i]) + (y * ilinebits + x * bpp);\n        for(b = 0; b < bpp; ++b)\n        {\n          unsigned char bit = readBitFromReversedStream(&ibp, in);\n          setBitOfReversedStream(&obp, out, bit);\n        }\n      }\n    }\n  }\n}\n\n/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in must contain the full image.\nreturn value is error**/\nstatic unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in,\n                                    unsigned w, unsigned h,\n                                    const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings)\n{\n  /*\n  This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps:\n  *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp < 8) 2) filter\n  *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter\n  */\n  unsigned bpp = lodepng_get_bpp(&info_png->color);\n  unsigned error = 0;\n\n  if(info_png->interlace_method == 0)\n  {\n    *outsize = h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per scanline + possible padding bits*/\n    *out = (unsigned char*)lodepng_malloc(*outsize);\n    if(!(*out) && (*outsize)) error = 83; /*alloc fail*/\n\n    if(!error)\n    {\n      /*non multiple of 8 bits per scanline, padding bits needed per scanline*/\n      if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)\n      {\n        unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7) / 8));\n        if(!padded) error = 83; /*alloc fail*/\n        if(!error)\n        {\n          addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h);\n          error = filter(*out, padded, w, h, &info_png->color, settings);\n        }\n        lodepng_free(padded);\n      }\n      else\n      {\n        /*we can immediately filter into the out buffer, no other steps needed*/\n        error = filter(*out, in, w, h, &info_png->color, settings);\n      }\n    }\n  }\n  else /*interlace_method is 1 (Adam7)*/\n  {\n    unsigned passw[7], passh[7];\n    size_t filter_passstart[8], padded_passstart[8], passstart[8];\n    unsigned char* adam7;\n\n    Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);\n\n    *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline + possible padding bits*/\n    *out = (unsigned char*)lodepng_malloc(*outsize);\n    if(!(*out)) error = 83; /*alloc fail*/\n\n    adam7 = (unsigned char*)lodepng_malloc(passstart[7]);\n    if(!adam7 && passstart[7]) error = 83; /*alloc fail*/\n\n    if(!error)\n    {\n      unsigned i;\n\n      Adam7_interlace(adam7, in, w, h, bpp);\n      for(i = 0; i != 7; ++i)\n      {\n        if(bpp < 8)\n        {\n          unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]);\n          if(!padded) ERROR_BREAK(83); /*alloc fail*/\n          addPaddingBits(padded, &adam7[passstart[i]],\n                         ((passw[i] * bpp + 7) / 8) * 8, passw[i] * bpp, passh[i]);\n          error = filter(&(*out)[filter_passstart[i]], padded,\n                         passw[i], passh[i], &info_png->color, settings);\n          lodepng_free(padded);\n        }\n        else\n        {\n          error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]],\n                         passw[i], passh[i], &info_png->color, settings);\n        }\n\n        if(error) break;\n      }\n    }\n\n    lodepng_free(adam7);\n  }\n\n  return error;\n}\n\n/*\npalette must have 4 * palettesize bytes allocated, and given in format RGBARGBARGBARGBA...\nreturns 0 if the palette is opaque,\nreturns 1 if the palette has a single color with alpha 0 ==> color key\nreturns 2 if the palette is semi-translucent.\n*/\nstatic unsigned getPaletteTranslucency(const unsigned char* palette, size_t palettesize)\n{\n  size_t i;\n  unsigned key = 0;\n  unsigned r = 0, g = 0, b = 0; /*the value of the color with alpha 0, so long as color keying is possible*/\n  for(i = 0; i != palettesize; ++i)\n  {\n    if(!key && palette[4 * i + 3] == 0)\n    {\n      r = palette[4 * i + 0]; g = palette[4 * i + 1]; b = palette[4 * i + 2];\n      key = 1;\n      i = (size_t)(-1); /*restart from beginning, to detect earlier opaque colors with key's value*/\n    }\n    else if(palette[4 * i + 3] != 255) return 2;\n    /*when key, no opaque RGB may have key's RGB*/\n    else if(key && r == palette[i * 4 + 0] && g == palette[i * 4 + 1] && b == palette[i * 4 + 2]) return 2;\n  }\n  return key;\n}\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\nstatic unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize)\n{\n  unsigned char* inchunk = data;\n  while((size_t)(inchunk - data) < datasize)\n  {\n    CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk));\n    out->allocsize = out->size; /*fix the allocsize again*/\n    inchunk = lodepng_chunk_next(inchunk);\n  }\n  return 0;\n}\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\nunsigned lodepng_encode(unsigned char** out, size_t* outsize,\n                        const unsigned char* image, unsigned w, unsigned h,\n                        LodePNGState* state)\n{\n  LodePNGInfo info;\n  ucvector outv;\n  unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/\n  size_t datasize = 0;\n\n  /*provide some proper output values if error will happen*/\n  *out = 0;\n  *outsize = 0;\n  state->error = 0;\n\n  /*check input values validity*/\n  if((state->info_png.color.colortype == LCT_PALETTE || state->encoder.force_palette)\n      && (state->info_png.color.palettesize == 0 || state->info_png.color.palettesize > 256))\n  {\n    CERROR_RETURN_ERROR(state->error, 68); /*invalid palette size, it is only allowed to be 1-256*/\n  }\n  if(state->encoder.zlibsettings.btype > 2)\n  {\n    CERROR_RETURN_ERROR(state->error, 61); /*error: unexisting btype*/\n  }\n  if(state->info_png.interlace_method > 1)\n  {\n    CERROR_RETURN_ERROR(state->error, 71); /*error: unexisting interlace mode*/\n  }\n  state->error = checkColorValidity(state->info_png.color.colortype, state->info_png.color.bitdepth);\n  if(state->error) return state->error; /*error: unexisting color type given*/\n  state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth);\n  if(state->error) return state->error; /*error: unexisting color type given*/\n\n  /* color convert and compute scanline filter types */\n  lodepng_info_init(&info);\n  lodepng_info_copy(&info, &state->info_png);\n  if(state->encoder.auto_convert)\n  {\n    state->error = lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw);\n  }\n  if (!state->error)\n  {\n    if(!lodepng_color_mode_equal(&state->info_raw, &info.color))\n    {\n      unsigned char* converted;\n      size_t size = ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7) / 8;\n\n      converted = (unsigned char*)lodepng_malloc(size);\n      if(!converted && size) state->error = 83; /*alloc fail*/\n      if(!state->error)\n      {\n        state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h);\n      }\n      if(!state->error) preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder);\n      lodepng_free(converted);\n    }\n    else preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder);\n  }\n\n  /* output all PNG chunks */\n  ucvector_init(&outv);\n  while(!state->error) /*while only executed once, to break on error*/\n  {\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n    size_t i;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    /*write signature and chunks*/\n    writeSignature(&outv);\n    /*IHDR*/\n    addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method);\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n    /*unknown chunks between IHDR and PLTE*/\n    if(info.unknown_chunks_data[0])\n    {\n      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]);\n      if(state->error) break;\n    }\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    /*PLTE*/\n    if(info.color.colortype == LCT_PALETTE)\n    {\n      addChunk_PLTE(&outv, &info.color);\n    }\n    if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA))\n    {\n      addChunk_PLTE(&outv, &info.color);\n    }\n    /*tRNS*/\n    if(info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0)\n    {\n      addChunk_tRNS(&outv, &info.color);\n    }\n    if((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined)\n    {\n      addChunk_tRNS(&outv, &info.color);\n    }\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n    /*bKGD (must come between PLTE and the IDAt chunks*/\n    if(info.background_defined) addChunk_bKGD(&outv, &info);\n    /*pHYs (must come before the IDAT chunks)*/\n    if(info.phys_defined) addChunk_pHYs(&outv, &info);\n\n    /*unknown chunks between PLTE and IDAT*/\n    if(info.unknown_chunks_data[1])\n    {\n      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]);\n      if(state->error) break;\n    }\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    /*IDAT (multiple IDAT chunks must be consecutive)*/\n    state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings);\n    if(state->error) break;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n    /*tIME*/\n    if(info.time_defined) addChunk_tIME(&outv, &info.time);\n    /*tEXt and/or zTXt*/\n    for(i = 0; i != info.text_num; ++i)\n    {\n      if(strlen(info.text_keys[i]) > 79)\n      {\n        state->error = 66; /*text chunk too large*/\n        break;\n      }\n      if(strlen(info.text_keys[i]) < 1)\n      {\n        state->error = 67; /*text chunk too small*/\n        break;\n      }\n      if(state->encoder.text_compression)\n      {\n        addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings);\n      }\n      else\n      {\n        addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]);\n      }\n    }\n    /*LodePNG version id in text chunk*/\n    if(state->encoder.add_id)\n    {\n      unsigned alread_added_id_text = 0;\n      for(i = 0; i != info.text_num; ++i)\n      {\n        if(!strcmp(info.text_keys[i], \"LodePNG\"))\n        {\n          alread_added_id_text = 1;\n          break;\n        }\n      }\n      if(alread_added_id_text == 0)\n      {\n        addChunk_tEXt(&outv, \"LodePNG\", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/\n      }\n    }\n    /*iTXt*/\n    for(i = 0; i != info.itext_num; ++i)\n    {\n      if(strlen(info.itext_keys[i]) > 79)\n      {\n        state->error = 66; /*text chunk too large*/\n        break;\n      }\n      if(strlen(info.itext_keys[i]) < 1)\n      {\n        state->error = 67; /*text chunk too small*/\n        break;\n      }\n      addChunk_iTXt(&outv, state->encoder.text_compression,\n                    info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i],\n                    &state->encoder.zlibsettings);\n    }\n\n    /*unknown chunks between IDAT and IEND*/\n    if(info.unknown_chunks_data[2])\n    {\n      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]);\n      if(state->error) break;\n    }\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n    addChunk_IEND(&outv);\n\n    break; /*this isn't really a while loop; no error happened so break out now!*/\n  }\n\n  lodepng_info_cleanup(&info);\n  lodepng_free(data);\n  /*instead of cleaning the vector up, give it to the output*/\n  *out = outv.data;\n  *outsize = outv.size;\n\n  return state->error;\n}\n\nunsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image,\n                               unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned error;\n  LodePNGState state;\n  lodepng_state_init(&state);\n  state.info_raw.colortype = colortype;\n  state.info_raw.bitdepth = bitdepth;\n  state.info_png.color.colortype = colortype;\n  state.info_png.color.bitdepth = bitdepth;\n  lodepng_encode(out, outsize, image, w, h, &state);\n  error = state.error;\n  lodepng_state_cleanup(&state);\n  return error;\n}\n\nunsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h)\n{\n  return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8);\n}\n\nunsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h)\n{\n  return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8);\n}\n\n#ifdef LODEPNG_COMPILE_DISK\nunsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h,\n                             LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned char* buffer;\n  size_t buffersize;\n  unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth);\n  if(!error) error = lodepng_save_file(buffer, buffersize, filename);\n  lodepng_free(buffer);\n  return error;\n}\n\nunsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h)\n{\n  return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8);\n}\n\nunsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h)\n{\n  return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8);\n}\n#endif /*LODEPNG_COMPILE_DISK*/\n\nvoid lodepng_encoder_settings_init(LodePNGEncoderSettings* settings)\n{\n  lodepng_compress_settings_init(&settings->zlibsettings);\n  settings->filter_palette_zero = 1;\n  settings->filter_strategy = LFS_MINSUM;\n  settings->auto_convert = 1;\n  settings->force_palette = 0;\n  settings->predefined_filters = 0;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  settings->add_id = 0;\n  settings->text_compression = 1;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n}\n\n#endif /*LODEPNG_COMPILE_ENCODER*/\n#endif /*LODEPNG_COMPILE_PNG*/\n\n#ifdef LODEPNG_COMPILE_ERROR_TEXT\n/*\nThis returns the description of a numerical error code in English. This is also\nthe documentation of all the error codes.\n*/\nconst char* lodepng_error_text(unsigned code)\n{\n  switch(code)\n  {\n    case 0: return \"no error, everything went ok\";\n    case 1: return \"nothing done yet\"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/\n    case 10: return \"end of input memory reached without huffman end code\"; /*while huffman decoding*/\n    case 11: return \"error in code tree made it jump outside of huffman tree\"; /*while huffman decoding*/\n    case 13: return \"problem while processing dynamic deflate block\";\n    case 14: return \"problem while processing dynamic deflate block\";\n    case 15: return \"problem while processing dynamic deflate block\";\n    case 16: return \"unexisting code while processing dynamic deflate block\";\n    case 17: return \"end of out buffer memory reached while inflating\";\n    case 18: return \"invalid distance code while inflating\";\n    case 19: return \"end of out buffer memory reached while inflating\";\n    case 20: return \"invalid deflate block BTYPE encountered while decoding\";\n    case 21: return \"NLEN is not ones complement of LEN in a deflate block\";\n     /*end of out buffer memory reached while inflating:\n     This can happen if the inflated deflate data is longer than the amount of bytes required to fill up\n     all the pixels of the image, given the color depth and image dimensions. Something that doesn't\n     happen in a normal, well encoded, PNG image.*/\n    case 22: return \"end of out buffer memory reached while inflating\";\n    case 23: return \"end of in buffer memory reached while inflating\";\n    case 24: return \"invalid FCHECK in zlib header\";\n    case 25: return \"invalid compression method in zlib header\";\n    case 26: return \"FDICT encountered in zlib header while it's not used for PNG\";\n    case 27: return \"PNG file is smaller than a PNG header\";\n    /*Checks the magic file header, the first 8 bytes of the PNG file*/\n    case 28: return \"incorrect PNG signature, it's no PNG or corrupted\";\n    case 29: return \"first chunk is not the header chunk\";\n    case 30: return \"chunk length too large, chunk broken off at end of file\";\n    case 31: return \"illegal PNG color type or bpp\";\n    case 32: return \"illegal PNG compression method\";\n    case 33: return \"illegal PNG filter method\";\n    case 34: return \"illegal PNG interlace method\";\n    case 35: return \"chunk length of a chunk is too large or the chunk too small\";\n    case 36: return \"illegal PNG filter type encountered\";\n    case 37: return \"illegal bit depth for this color type given\";\n    case 38: return \"the palette is too big\"; /*more than 256 colors*/\n    case 39: return \"more palette alpha values given in tRNS chunk than there are colors in the palette\";\n    case 40: return \"tRNS chunk has wrong size for greyscale image\";\n    case 41: return \"tRNS chunk has wrong size for RGB image\";\n    case 42: return \"tRNS chunk appeared while it was not allowed for this color type\";\n    case 43: return \"bKGD chunk has wrong size for palette image\";\n    case 44: return \"bKGD chunk has wrong size for greyscale image\";\n    case 45: return \"bKGD chunk has wrong size for RGB image\";\n    case 48: return \"empty input buffer given to decoder. Maybe caused by non-existing file?\";\n    case 49: return \"jumped past memory while generating dynamic huffman tree\";\n    case 50: return \"jumped past memory while generating dynamic huffman tree\";\n    case 51: return \"jumped past memory while inflating huffman block\";\n    case 52: return \"jumped past memory while inflating\";\n    case 53: return \"size of zlib data too small\";\n    case 54: return \"repeat symbol in tree while there was no value symbol yet\";\n    /*jumped past tree while generating huffman tree, this could be when the\n    tree will have more leaves than symbols after generating it out of the\n    given lenghts. They call this an oversubscribed dynamic bit lengths tree in zlib.*/\n    case 55: return \"jumped past tree while generating huffman tree\";\n    case 56: return \"given output image colortype or bitdepth not supported for color conversion\";\n    case 57: return \"invalid CRC encountered (checking CRC can be disabled)\";\n    case 58: return \"invalid ADLER32 encountered (checking ADLER32 can be disabled)\";\n    case 59: return \"requested color conversion not supported\";\n    case 60: return \"invalid window size given in the settings of the encoder (must be 0-32768)\";\n    case 61: return \"invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)\";\n    /*LodePNG leaves the choice of RGB to greyscale conversion formula to the user.*/\n    case 62: return \"conversion from color to greyscale not supported\";\n    case 63: return \"length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk\"; /*(2^31-1)*/\n    /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/\n    case 64: return \"the length of the END symbol 256 in the Huffman tree is 0\";\n    case 66: return \"the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes\";\n    case 67: return \"the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte\";\n    case 68: return \"tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors\";\n    case 69: return \"unknown chunk type with 'critical' flag encountered by the decoder\";\n    case 71: return \"unexisting interlace mode given to encoder (must be 0 or 1)\";\n    case 72: return \"while decoding, unexisting compression method encountering in zTXt or iTXt chunk (it must be 0)\";\n    case 73: return \"invalid tIME chunk size\";\n    case 74: return \"invalid pHYs chunk size\";\n    /*length could be wrong, or data chopped off*/\n    case 75: return \"no null termination char found while decoding text chunk\";\n    case 76: return \"iTXt chunk too short to contain required bytes\";\n    case 77: return \"integer overflow in buffer size\";\n    case 78: return \"failed to open file for reading\"; /*file doesn't exist or couldn't be opened for reading*/\n    case 79: return \"failed to open file for writing\";\n    case 80: return \"tried creating a tree of 0 symbols\";\n    case 81: return \"lazy matching at pos 0 is impossible\";\n    case 82: return \"color conversion to palette requested while a color isn't in palette\";\n    case 83: return \"memory allocation failed\";\n    case 84: return \"given image too small to contain all pixels to be encoded\";\n    case 86: return \"impossible offset in lz77 encoding (internal bug)\";\n    case 87: return \"must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined\";\n    case 88: return \"invalid filter strategy given for LodePNGEncoderSettings.filter_strategy\";\n    case 89: return \"text chunk keyword too short or long: must have size 1-79\";\n    /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/\n    case 90: return \"windowsize must be a power of two\";\n    case 91: return \"invalid decompressed idat size\";\n    case 92: return \"integer overflow due to too many pixels\";\n    case 93: return \"zero width or height is invalid\";\n    case 94: return \"header chunk must have a size of 13 bytes\";\n    case 95: return \"integer overflow with combined idat chunk size\";\n  }\n  return \"unknown error code\";\n}\n#endif /*LODEPNG_COMPILE_ERROR_TEXT*/\n\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* // C++ Wrapper                                                          // */\n/* ////////////////////////////////////////////////////////////////////////// */\n/* ////////////////////////////////////////////////////////////////////////// */\n\n#ifdef LODEPNG_COMPILE_CPP\nnamespace lodepng\n{\n\n#ifdef LODEPNG_COMPILE_DISK\nunsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename)\n{\n  long size = lodepng_filesize(filename.c_str());\n  if(size < 0) return 78;\n  buffer.resize((size_t)size);\n  return size == 0 ? 0 : lodepng_buffer_file(&buffer[0], (size_t)size, filename.c_str());\n}\n\n/*write given buffer to the file, overwriting the file, it doesn't append to it.*/\nunsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename)\n{\n  return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str());\n}\n#endif /* LODEPNG_COMPILE_DISK */\n\n#ifdef LODEPNG_COMPILE_ZLIB\n#ifdef LODEPNG_COMPILE_DECODER\nunsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,\n                    const LodePNGDecompressSettings& settings)\n{\n  unsigned char* buffer = 0;\n  size_t buffersize = 0;\n  unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings);\n  if(buffer)\n  {\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n    lodepng_free(buffer);\n  }\n  return error;\n}\n\nunsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,\n                    const LodePNGDecompressSettings& settings)\n{\n  return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings);\n}\n#endif /* LODEPNG_COMPILE_DECODER */\n\n#ifdef LODEPNG_COMPILE_ENCODER\nunsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,\n                  const LodePNGCompressSettings& settings)\n{\n  unsigned char* buffer = 0;\n  size_t buffersize = 0;\n  unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings);\n  if(buffer)\n  {\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n    lodepng_free(buffer);\n  }\n  return error;\n}\n\nunsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,\n                  const LodePNGCompressSettings& settings)\n{\n  return compress(out, in.empty() ? 0 : &in[0], in.size(), settings);\n}\n#endif /* LODEPNG_COMPILE_ENCODER */\n#endif /* LODEPNG_COMPILE_ZLIB */\n\n\n#ifdef LODEPNG_COMPILE_PNG\n\nState::State()\n{\n  lodepng_state_init(this);\n}\n\nState::State(const State& other)\n{\n  lodepng_state_init(this);\n  lodepng_state_copy(this, &other);\n}\n\nState::~State()\n{\n  lodepng_state_cleanup(this);\n}\n\nState& State::operator=(const State& other)\n{\n  lodepng_state_copy(this, &other);\n  return *this;\n}\n\n#ifdef LODEPNG_COMPILE_DECODER\n\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const unsigned char* in,\n                size_t insize, LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned char* buffer;\n  unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth);\n  if(buffer && !error)\n  {\n    State state;\n    state.info_raw.colortype = colortype;\n    state.info_raw.bitdepth = bitdepth;\n    size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n    lodepng_free(buffer);\n  }\n  return error;\n}\n\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                const std::vector<unsigned char>& in, LodePNGColorType colortype, unsigned bitdepth)\n{\n  return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth);\n}\n\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                State& state,\n                const unsigned char* in, size_t insize)\n{\n  unsigned char* buffer = NULL;\n  unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize);\n  if(buffer && !error)\n  {\n    size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n  }\n  lodepng_free(buffer);\n  return error;\n}\n\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                State& state,\n                const std::vector<unsigned char>& in)\n{\n  return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size());\n}\n\n#ifdef LODEPNG_COMPILE_DISK\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const std::string& filename,\n                LodePNGColorType colortype, unsigned bitdepth)\n{\n  std::vector<unsigned char> buffer;\n  unsigned error = load_file(buffer, filename);\n  if(error) return error;\n  return decode(out, w, h, buffer, colortype, bitdepth);\n}\n#endif /* LODEPNG_COMPILE_DECODER */\n#endif /* LODEPNG_COMPILE_DISK */\n\n#ifdef LODEPNG_COMPILE_ENCODER\nunsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsigned w, unsigned h,\n                LodePNGColorType colortype, unsigned bitdepth)\n{\n  unsigned char* buffer;\n  size_t buffersize;\n  unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth);\n  if(buffer)\n  {\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n    lodepng_free(buffer);\n  }\n  return error;\n}\n\nunsigned encode(std::vector<unsigned char>& out,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                LodePNGColorType colortype, unsigned bitdepth)\n{\n  if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84;\n  return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth);\n}\n\nunsigned encode(std::vector<unsigned char>& out,\n                const unsigned char* in, unsigned w, unsigned h,\n                State& state)\n{\n  unsigned char* buffer;\n  size_t buffersize;\n  unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state);\n  if(buffer)\n  {\n    out.insert(out.end(), &buffer[0], &buffer[buffersize]);\n    lodepng_free(buffer);\n  }\n  return error;\n}\n\nunsigned encode(std::vector<unsigned char>& out,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                State& state)\n{\n  if(lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84;\n  return encode(out, in.empty() ? 0 : &in[0], w, h, state);\n}\n\n#ifdef LODEPNG_COMPILE_DISK\nunsigned encode(const std::string& filename,\n                const unsigned char* in, unsigned w, unsigned h,\n                LodePNGColorType colortype, unsigned bitdepth)\n{\n  std::vector<unsigned char> buffer;\n  unsigned error = encode(buffer, in, w, h, colortype, bitdepth);\n  if(!error) error = save_file(buffer, filename);\n  return error;\n}\n\nunsigned encode(const std::string& filename,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                LodePNGColorType colortype, unsigned bitdepth)\n{\n  if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84;\n  return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth);\n}\n#endif /* LODEPNG_COMPILE_DISK */\n#endif /* LODEPNG_COMPILE_ENCODER */\n#endif /* LODEPNG_COMPILE_PNG */\n} /* namespace lodepng */\n#endif /*LODEPNG_COMPILE_CPP*/\n"
  },
  {
    "path": "src/lodepng/lodepng.h",
    "content": "/*\nLodePNG version 20180611\n\nCopyright (c) 2005-2018 Lode Vandevenne\n\nThis software is provided 'as-is', without any express or implied\nwarranty. In no event will the authors be held liable for any damages\narising from the use of this software.\n\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely, subject to the following restrictions:\n\n    1. The origin of this software must not be misrepresented; you must not\n    claim that you wrote the original software. If you use this software\n    in a product, an acknowledgment in the product documentation would be\n    appreciated but is not required.\n\n    2. Altered source versions must be plainly marked as such, and must not be\n    misrepresented as being the original software.\n\n    3. This notice may not be removed or altered from any source\n    distribution.\n*/\n\n#ifndef LODEPNG_H\n#define LODEPNG_H\n\n#include <string.h> /*for size_t*/\n\nextern const char* LODEPNG_VERSION_STRING;\n\n/*\nThe following #defines are used to create code sections. They can be disabled\nto disable code sections, which can give faster compile time and smaller binary.\nThe \"NO_COMPILE\" defines are designed to be used to pass as defines to the\ncompiler command to disable them without modifying this header, e.g.\n-DLODEPNG_NO_COMPILE_ZLIB for gcc.\nIn addition to those below, you can also define LODEPNG_NO_COMPILE_CRC to\nallow implementing a custom lodepng_crc32.\n*/\n/*deflate & zlib. If disabled, you must specify alternative zlib functions in\nthe custom_zlib field of the compress and decompress settings*/\n#ifndef LODEPNG_NO_COMPILE_ZLIB\n#define LODEPNG_COMPILE_ZLIB\n#endif\n/*png encoder and png decoder*/\n#ifndef LODEPNG_NO_COMPILE_PNG\n#define LODEPNG_COMPILE_PNG\n#endif\n/*deflate&zlib decoder and png decoder*/\n#ifndef LODEPNG_NO_COMPILE_DECODER\n#define LODEPNG_COMPILE_DECODER\n#endif\n/*deflate&zlib encoder and png encoder*/\n#ifndef LODEPNG_NO_COMPILE_ENCODER\n#define LODEPNG_COMPILE_ENCODER\n#endif\n/*the optional built in harddisk file loading and saving functions*/\n#ifndef LODEPNG_NO_COMPILE_DISK\n#define LODEPNG_COMPILE_DISK\n#endif\n/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/\n#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS\n#define LODEPNG_COMPILE_ANCILLARY_CHUNKS\n#endif\n/*ability to convert error numerical codes to English text string*/\n#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT\n#define LODEPNG_COMPILE_ERROR_TEXT\n#endif\n/*Compile the default allocators (C's free, malloc and realloc). If you disable this,\nyou can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your\nsource files with custom allocators.*/\n#ifndef LODEPNG_NO_COMPILE_ALLOCATORS\n#define LODEPNG_COMPILE_ALLOCATORS\n#endif\n/*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/\n#ifdef __cplusplus\n#ifndef LODEPNG_NO_COMPILE_CPP\n#define LODEPNG_COMPILE_CPP\n#endif\n#endif\n\n#ifdef LODEPNG_COMPILE_CPP\n#include <vector>\n#include <string>\n#endif /*LODEPNG_COMPILE_CPP*/\n\n#ifdef LODEPNG_COMPILE_PNG\n/*The PNG color types (also used for raw).*/\ntypedef enum LodePNGColorType\n{\n  LCT_GREY = 0, /*greyscale: 1,2,4,8,16 bit*/\n  LCT_RGB = 2, /*RGB: 8,16 bit*/\n  LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/\n  LCT_GREY_ALPHA = 4, /*greyscale with alpha: 8,16 bit*/\n  LCT_RGBA = 6 /*RGB with alpha: 8,16 bit*/\n} LodePNGColorType;\n\n#ifdef LODEPNG_COMPILE_DECODER\n/*\nConverts PNG data in memory to raw pixel data.\nout: Output parameter. Pointer to buffer that will contain the raw pixel data.\n     After decoding, its size is w * h * (bytes per pixel) bytes larger than\n     initially. Bytes per pixel depends on colortype and bitdepth.\n     Must be freed after usage with free(*out).\n     Note: for 16-bit per channel colors, uses big endian format like PNG does.\nw: Output parameter. Pointer to width of pixel data.\nh: Output parameter. Pointer to height of pixel data.\nin: Memory buffer with the PNG file.\ninsize: size of the in buffer.\ncolortype: the desired color type for the raw output image. See explanation on PNG color types.\nbitdepth: the desired bit depth for the raw output image. See explanation on PNG color types.\nReturn value: LodePNG error code (0 means no error).\n*/\nunsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h,\n                               const unsigned char* in, size_t insize,\n                               LodePNGColorType colortype, unsigned bitdepth);\n\n/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/\nunsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h,\n                          const unsigned char* in, size_t insize);\n\n/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/\nunsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h,\n                          const unsigned char* in, size_t insize);\n\n#ifdef LODEPNG_COMPILE_DISK\n/*\nLoad PNG from disk, from file with given name.\nSame as the other decode functions, but instead takes a filename as input.\n*/\nunsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h,\n                             const char* filename,\n                             LodePNGColorType colortype, unsigned bitdepth);\n\n/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image.*/\nunsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h,\n                               const char* filename);\n\n/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image.*/\nunsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h,\n                               const char* filename);\n#endif /*LODEPNG_COMPILE_DISK*/\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*\nConverts raw pixel data into a PNG image in memory. The colortype and bitdepth\n  of the output PNG image cannot be chosen, they are automatically determined\n  by the colortype, bitdepth and content of the input pixel data.\n  Note: for 16-bit per channel colors, needs big endian format like PNG does.\nout: Output parameter. Pointer to buffer that will contain the PNG image data.\n     Must be freed after usage with free(*out).\noutsize: Output parameter. Pointer to the size in bytes of the out buffer.\nimage: The raw pixel data to encode. The size of this buffer should be\n       w * h * (bytes per pixel), bytes per pixel depends on colortype and bitdepth.\nw: width of the raw pixel data in pixels.\nh: height of the raw pixel data in pixels.\ncolortype: the color type of the raw input image. See explanation on PNG color types.\nbitdepth: the bit depth of the raw input image. See explanation on PNG color types.\nReturn value: LodePNG error code (0 means no error).\n*/\nunsigned lodepng_encode_memory(unsigned char** out, size_t* outsize,\n                               const unsigned char* image, unsigned w, unsigned h,\n                               LodePNGColorType colortype, unsigned bitdepth);\n\n/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw image.*/\nunsigned lodepng_encode32(unsigned char** out, size_t* outsize,\n                          const unsigned char* image, unsigned w, unsigned h);\n\n/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/\nunsigned lodepng_encode24(unsigned char** out, size_t* outsize,\n                          const unsigned char* image, unsigned w, unsigned h);\n\n#ifdef LODEPNG_COMPILE_DISK\n/*\nConverts raw pixel data into a PNG file on disk.\nSame as the other encode functions, but instead takes a filename as output.\nNOTE: This overwrites existing files without warning!\n*/\nunsigned lodepng_encode_file(const char* filename,\n                             const unsigned char* image, unsigned w, unsigned h,\n                             LodePNGColorType colortype, unsigned bitdepth);\n\n/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image.*/\nunsigned lodepng_encode32_file(const char* filename,\n                               const unsigned char* image, unsigned w, unsigned h);\n\n/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image.*/\nunsigned lodepng_encode24_file(const char* filename,\n                               const unsigned char* image, unsigned w, unsigned h);\n#endif /*LODEPNG_COMPILE_DISK*/\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n\n#ifdef LODEPNG_COMPILE_CPP\nnamespace lodepng\n{\n#ifdef LODEPNG_COMPILE_DECODER\n/*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype\nis the format to output the pixels to. Default is RGBA 8-bit per channel.*/\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                const unsigned char* in, size_t insize,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                const std::vector<unsigned char>& in,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\n#ifdef LODEPNG_COMPILE_DISK\n/*\nConverts PNG file from disk to raw pixel data in memory.\nSame as the other decode functions, but instead takes a filename as input.\n*/\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                const std::string& filename,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\n#endif /* LODEPNG_COMPILE_DISK */\n#endif /* LODEPNG_COMPILE_DECODER */\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype\nis that of the raw input data. The output PNG color type will be auto chosen.*/\nunsigned encode(std::vector<unsigned char>& out,\n                const unsigned char* in, unsigned w, unsigned h,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\nunsigned encode(std::vector<unsigned char>& out,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\n#ifdef LODEPNG_COMPILE_DISK\n/*\nConverts 32-bit RGBA raw pixel data into a PNG file on disk.\nSame as the other encode functions, but instead takes a filename as output.\nNOTE: This overwrites existing files without warning!\n*/\nunsigned encode(const std::string& filename,\n                const unsigned char* in, unsigned w, unsigned h,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\nunsigned encode(const std::string& filename,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);\n#endif /* LODEPNG_COMPILE_DISK */\n#endif /* LODEPNG_COMPILE_ENCODER */\n} /* namespace lodepng */\n#endif /*LODEPNG_COMPILE_CPP*/\n#endif /*LODEPNG_COMPILE_PNG*/\n\n#ifdef LODEPNG_COMPILE_ERROR_TEXT\n/*Returns an English description of the numerical error code.*/\nconst char* lodepng_error_text(unsigned code);\n#endif /*LODEPNG_COMPILE_ERROR_TEXT*/\n\n#ifdef LODEPNG_COMPILE_DECODER\n/*Settings for zlib decompression*/\ntypedef struct LodePNGDecompressSettings LodePNGDecompressSettings;\nstruct LodePNGDecompressSettings\n{\n  /* Check LodePNGDecoderSettings for more ignorable errors */\n  unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/\n\n  /*use custom zlib decoder instead of built in one (default: null)*/\n  unsigned (*custom_zlib)(unsigned char**, size_t*,\n                          const unsigned char*, size_t,\n                          const LodePNGDecompressSettings*);\n  /*use custom deflate decoder instead of built in one (default: null)\n  if custom_zlib is used, custom_deflate is ignored since only the built in\n  zlib function will call custom_deflate*/\n  unsigned (*custom_inflate)(unsigned char**, size_t*,\n                             const unsigned char*, size_t,\n                             const LodePNGDecompressSettings*);\n\n  const void* custom_context; /*optional custom settings for custom functions*/\n};\n\nextern const LodePNGDecompressSettings lodepng_default_decompress_settings;\nvoid lodepng_decompress_settings_init(LodePNGDecompressSettings* settings);\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*\nSettings for zlib compression. Tweaking these settings tweaks the balance\nbetween speed and compression ratio.\n*/\ntypedef struct LodePNGCompressSettings LodePNGCompressSettings;\nstruct LodePNGCompressSettings /*deflate = compress*/\n{\n  /*LZ77 related settings*/\n  unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/\n  unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/\n  unsigned windowsize; /*must be a power of two <= 32768. higher compresses more but is slower. Default value: 2048.*/\n  unsigned minmatch; /*mininum lz77 length. 3 is normally best, 6 can be better for some PNGs. Default: 0*/\n  unsigned nicematch; /*stop searching if >= this length found. Set to 258 for best compression. Default: 128*/\n  unsigned lazymatching; /*use lazy matching: better compression but a bit slower. Default: true*/\n\n  /*use custom zlib encoder instead of built in one (default: null)*/\n  unsigned (*custom_zlib)(unsigned char**, size_t*,\n                          const unsigned char*, size_t,\n                          const LodePNGCompressSettings*);\n  /*use custom deflate encoder instead of built in one (default: null)\n  if custom_zlib is used, custom_deflate is ignored since only the built in\n  zlib function will call custom_deflate*/\n  unsigned (*custom_deflate)(unsigned char**, size_t*,\n                             const unsigned char*, size_t,\n                             const LodePNGCompressSettings*);\n\n  const void* custom_context; /*optional custom settings for custom functions*/\n};\n\nextern const LodePNGCompressSettings lodepng_default_compress_settings;\nvoid lodepng_compress_settings_init(LodePNGCompressSettings* settings);\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#ifdef LODEPNG_COMPILE_PNG\n/*\nColor mode of an image. Contains all information required to decode the pixel\nbits to RGBA colors. This information is the same as used in the PNG file\nformat, and is used both for PNG and raw image data in LodePNG.\n*/\ntypedef struct LodePNGColorMode\n{\n  /*header (IHDR)*/\n  LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/\n  unsigned bitdepth;  /*bits per sample, see PNG standard or documentation further in this header file*/\n\n  /*\n  palette (PLTE and tRNS)\n\n  Dynamically allocated with the colors of the palette, including alpha.\n  When encoding a PNG, to store your colors in the palette of the LodePNGColorMode, first use\n  lodepng_palette_clear, then for each color use lodepng_palette_add.\n  If you encode an image without alpha with palette, don't forget to put value 255 in each A byte of the palette.\n\n  When decoding, by default you can ignore this palette, since LodePNG already\n  fills the palette colors in the pixels of the raw RGBA output.\n\n  The palette is only supported for color type 3.\n  */\n  unsigned char* palette; /*palette in RGBARGBA... order. When allocated, must be either 0, or have size 1024*/\n  size_t palettesize; /*palette size in number of colors (amount of bytes is 4 * palettesize)*/\n\n  /*\n  transparent color key (tRNS)\n\n  This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit.\n  For greyscale PNGs, r, g and b will all 3 be set to the same.\n\n  When decoding, by default you can ignore this information, since LodePNG sets\n  pixels with this key to transparent already in the raw RGBA output.\n\n  The color key is only supported for color types 0 and 2.\n  */\n  unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/\n  unsigned key_r;       /*red/greyscale component of color key*/\n  unsigned key_g;       /*green component of color key*/\n  unsigned key_b;       /*blue component of color key*/\n} LodePNGColorMode;\n\n/*init, cleanup and copy functions to use with this struct*/\nvoid lodepng_color_mode_init(LodePNGColorMode* info);\nvoid lodepng_color_mode_cleanup(LodePNGColorMode* info);\n/*return value is error code (0 means no error)*/\nunsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source);\n\nvoid lodepng_palette_clear(LodePNGColorMode* info);\n/*add 1 color to the palette*/\nunsigned lodepng_palette_add(LodePNGColorMode* info,\n                             unsigned char r, unsigned char g, unsigned char b, unsigned char a);\n\n/*get the total amount of bits per pixel, based on colortype and bitdepth in the struct*/\nunsigned lodepng_get_bpp(const LodePNGColorMode* info);\n/*get the amount of color channels used, based on colortype in the struct.\nIf a palette is used, it counts as 1 channel.*/\nunsigned lodepng_get_channels(const LodePNGColorMode* info);\n/*is it a greyscale type? (only colortype 0 or 4)*/\nunsigned lodepng_is_greyscale_type(const LodePNGColorMode* info);\n/*has it got an alpha channel? (only colortype 2 or 6)*/\nunsigned lodepng_is_alpha_type(const LodePNGColorMode* info);\n/*has it got a palette? (only colortype 3)*/\nunsigned lodepng_is_palette_type(const LodePNGColorMode* info);\n/*only returns true if there is a palette and there is a value in the palette with alpha < 255.\nLoops through the palette to check this.*/\nunsigned lodepng_has_palette_alpha(const LodePNGColorMode* info);\n/*\nCheck if the given color info indicates the possibility of having non-opaque pixels in the PNG image.\nReturns true if the image can have translucent or invisible pixels (it still be opaque if it doesn't use such pixels).\nReturns false if the image can only have opaque pixels.\nIn detail, it returns true only if it's a color type with alpha, or has a palette with non-opaque values,\nor if \"key_defined\" is true.\n*/\nunsigned lodepng_can_have_alpha(const LodePNGColorMode* info);\n/*Returns the byte size of a raw image buffer with given width, height and color mode*/\nsize_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color);\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n/*The information of a Time chunk in PNG.*/\ntypedef struct LodePNGTime\n{\n  unsigned year;    /*2 bytes used (0-65535)*/\n  unsigned month;   /*1-12*/\n  unsigned day;     /*1-31*/\n  unsigned hour;    /*0-23*/\n  unsigned minute;  /*0-59*/\n  unsigned second;  /*0-60 (to allow for leap seconds)*/\n} LodePNGTime;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\n/*Information about the PNG image, except pixels, width and height.*/\ntypedef struct LodePNGInfo\n{\n  /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/\n  unsigned compression_method;/*compression method of the original file. Always 0.*/\n  unsigned filter_method;     /*filter method of the original file*/\n  unsigned interlace_method;  /*interlace method of the original file: 0=none, 1=Adam7*/\n  LodePNGColorMode color;     /*color type and bits, palette and transparency of the PNG file*/\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  /*\n  suggested background color chunk (bKGD)\n  This color uses the same color mode as the PNG (except alpha channel), which can be 1-bit to 16-bit.\n\n  For greyscale PNGs, r, g and b will all 3 be set to the same. When encoding\n  the encoder writes the red one. For palette PNGs: When decoding, the RGB value\n  will be stored, not a palette index. But when encoding, specify the index of\n  the palette in background_r, the other two are then ignored.\n\n  The decoder does not use this background color to edit the color of pixels.\n  */\n  unsigned background_defined; /*is a suggested background color given?*/\n  unsigned background_r;       /*red component of suggested background color*/\n  unsigned background_g;       /*green component of suggested background color*/\n  unsigned background_b;       /*blue component of suggested background color*/\n\n  /*\n  non-international text chunks (tEXt and zTXt)\n\n  The char** arrays each contain num strings. The actual messages are in\n  text_strings, while text_keys are keywords that give a short description what\n  the actual text represents, e.g. Title, Author, Description, or anything else.\n\n  A keyword is minimum 1 character and maximum 79 characters long. It's\n  discouraged to use a single line length longer than 79 characters for texts.\n\n  Don't allocate these text buffers yourself. Use the init/cleanup functions\n  correctly and use lodepng_add_text and lodepng_clear_text.\n  */\n  size_t text_num; /*the amount of texts in these char** buffers (there may be more texts in itext)*/\n  char** text_keys; /*the keyword of a text chunk (e.g. \"Comment\")*/\n  char** text_strings; /*the actual text*/\n\n  /*\n  international text chunks (iTXt)\n  Similar to the non-international text chunks, but with additional strings\n  \"langtags\" and \"transkeys\".\n  */\n  size_t itext_num; /*the amount of international texts in this PNG*/\n  char** itext_keys; /*the English keyword of the text chunk (e.g. \"Comment\")*/\n  char** itext_langtags; /*language tag for this text's language, ISO/IEC 646 string, e.g. ISO 639 language tag*/\n  char** itext_transkeys; /*keyword translated to the international language - UTF-8 string*/\n  char** itext_strings; /*the actual international text - UTF-8 string*/\n\n  /*time chunk (tIME)*/\n  unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/\n  LodePNGTime time;\n\n  /*phys chunk (pHYs)*/\n  unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are undefined, if 1 else there is one*/\n  unsigned phys_x; /*pixels per unit in x direction*/\n  unsigned phys_y; /*pixels per unit in y direction*/\n  unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/\n\n  /*\n  unknown chunks\n  There are 3 buffers, one for each position in the PNG where unknown chunks can appear\n  each buffer contains all unknown chunks for that position consecutively\n  The 3 buffers are the unknown chunks between certain critical chunks:\n  0: IHDR-PLTE, 1: PLTE-IDAT, 2: IDAT-IEND\n  Do not allocate or traverse this data yourself. Use the chunk traversing functions declared\n  later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct.\n  */\n  unsigned char* unknown_chunks_data[3];\n  size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given for protection*/\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n} LodePNGInfo;\n\n/*init, cleanup and copy functions to use with this struct*/\nvoid lodepng_info_init(LodePNGInfo* info);\nvoid lodepng_info_cleanup(LodePNGInfo* info);\n/*return value is error code (0 means no error)*/\nunsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source);\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\nvoid lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/\nunsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/\n\nvoid lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/\nunsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag,\n                           const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n\n/*\nConverts raw buffer from one color type to another color type, based on\nLodePNGColorMode structs to describe the input and output color type.\nSee the reference manual at the end of this header file to see which color conversions are supported.\nreturn value = LodePNG error code (0 if all went ok, an error if the conversion isn't supported)\nThe out buffer must have size (w * h * bpp + 7) / 8, where bpp is the bits per pixel\nof the output color type (lodepng_get_bpp).\nFor < 8 bpp images, there should not be padding bits at the end of scanlines.\nFor 16-bit per channel colors, uses big endian format like PNG does.\nReturn value is LodePNG error code\n*/\nunsigned lodepng_convert(unsigned char* out, const unsigned char* in,\n                         const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,\n                         unsigned w, unsigned h);\n\n#ifdef LODEPNG_COMPILE_DECODER\n/*\nSettings for the decoder. This contains settings for the PNG and the Zlib\ndecoder, but not the Info settings from the Info structs.\n*/\ntypedef struct LodePNGDecoderSettings\n{\n  LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/\n\n  /* Check LodePNGDecompressSettings for more ignorable errors */\n  unsigned ignore_crc; /*ignore CRC checksums*/\n  unsigned ignore_critical; /*ignore unknown critical chunks*/\n  unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND chunk, too large chunk, ...)*/\n\n  unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/\n\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, they're stored in the unknown chunks*/\n  /*store all bytes from unknown chunks in the LodePNGInfo (off by default, useful for a png editor)*/\n  unsigned remember_unknown_chunks;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n} LodePNGDecoderSettings;\n\nvoid lodepng_decoder_settings_init(LodePNGDecoderSettings* settings);\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/\ntypedef enum LodePNGFilterStrategy\n{\n  /*every filter at zero*/\n  LFS_ZERO,\n  /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/\n  LFS_MINSUM,\n  /*Use the filter type that gives smallest Shannon entropy for this scanline. Depending\n  on the image, this is better or worse than minsum.*/\n  LFS_ENTROPY,\n  /*\n  Brute-force-search PNG filters by compressing each filter for each scanline.\n  Experimental, very slow, and only rarely gives better compression than MINSUM.\n  */\n  LFS_BRUTE_FORCE,\n  /*use predefined_filters buffer: you specify the filter type for each scanline*/\n  LFS_PREDEFINED\n} LodePNGFilterStrategy;\n\n/*Gives characteristics about the colors of the image, which helps decide which color model to use for encoding.\nUsed internally by default if \"auto_convert\" is enabled. Public because it's useful for custom algorithms.*/\ntypedef struct LodePNGColorProfile\n{\n  unsigned colored; /*not greyscale*/\n  unsigned key; /*image is not opaque and color key is possible instead of full alpha*/\n  unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/\n  unsigned short key_g;\n  unsigned short key_b;\n  unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/\n  unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16.*/\n  unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order*/\n  unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for greyscale only. 16 if 16-bit per channel required.*/\n} LodePNGColorProfile;\n\nvoid lodepng_color_profile_init(LodePNGColorProfile* profile);\n\n/*Get a LodePNGColorProfile of the image.*/\nunsigned lodepng_get_color_profile(LodePNGColorProfile* profile,\n                                   const unsigned char* image, unsigned w, unsigned h,\n                                   const LodePNGColorMode* mode_in);\n/*The function LodePNG uses internally to decide the PNG color with auto_convert.\nChooses an optimal color model, e.g. grey if only grey pixels, palette if < 256 colors, ...*/\nunsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out,\n                                   const unsigned char* image, unsigned w, unsigned h,\n                                   const LodePNGColorMode* mode_in);\n\n/*Settings for the encoder.*/\ntypedef struct LodePNGEncoderSettings\n{\n  LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/\n\n  unsigned auto_convert; /*automatically choose output PNG color type. Default: true*/\n\n  /*If true, follows the official PNG heuristic: if the PNG uses a palette or lower than\n  8 bit depth, set all filters to zero. Otherwise use the filter_strategy. Note that to\n  completely follow the official PNG heuristic, filter_palette_zero must be true and\n  filter_strategy must be LFS_MINSUM*/\n  unsigned filter_palette_zero;\n  /*Which filter strategy to use when not using zeroes due to filter_palette_zero.\n  Set filter_palette_zero to 0 to ensure always using your chosen strategy. Default: LFS_MINSUM*/\n  LodePNGFilterStrategy filter_strategy;\n  /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to a buffer with\n  the same length as the amount of scanlines in the image, and each value must <= 5. You\n  have to cleanup this buffer, LodePNG will never free it. Don't forget that filter_palette_zero\n  must be set to 0 to ensure this is also used on palette or low bitdepth images.*/\n  const unsigned char* predefined_filters;\n\n  /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette).\n  If colortype is 3, PLTE is _always_ created.*/\n  unsigned force_palette;\n#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS\n  /*add LodePNG identifier and version as a text chunk, for debugging*/\n  unsigned add_id;\n  /*encode text chunks as zTXt chunks instead of tEXt chunks, and use compression in iTXt chunks*/\n  unsigned text_compression;\n#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/\n} LodePNGEncoderSettings;\n\nvoid lodepng_encoder_settings_init(LodePNGEncoderSettings* settings);\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n\n#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER)\n/*The settings, state and information for extended encoding and decoding.*/\ntypedef struct LodePNGState\n{\n#ifdef LODEPNG_COMPILE_DECODER\n  LodePNGDecoderSettings decoder; /*the decoding settings*/\n#endif /*LODEPNG_COMPILE_DECODER*/\n#ifdef LODEPNG_COMPILE_ENCODER\n  LodePNGEncoderSettings encoder; /*the encoding settings*/\n#endif /*LODEPNG_COMPILE_ENCODER*/\n  LodePNGColorMode info_raw; /*specifies the format in which you would like to get the raw pixel buffer*/\n  LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/\n  unsigned error;\n#ifdef LODEPNG_COMPILE_CPP\n  /* For the lodepng::State subclass. */\n  virtual ~LodePNGState(){}\n#endif\n} LodePNGState;\n\n/*init, cleanup and copy functions to use with this struct*/\nvoid lodepng_state_init(LodePNGState* state);\nvoid lodepng_state_cleanup(LodePNGState* state);\nvoid lodepng_state_copy(LodePNGState* dest, const LodePNGState* source);\n#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */\n\n#ifdef LODEPNG_COMPILE_DECODER\n/*\nSame as lodepng_decode_memory, but uses a LodePNGState to allow custom settings and\ngetting much more information about the PNG image and color mode.\n*/\nunsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h,\n                        LodePNGState* state,\n                        const unsigned char* in, size_t insize);\n\n/*\nRead the PNG header, but not the actual data. This returns only the information\nthat is in the header chunk of the PNG, such as width, height and color type. The\ninformation is placed in the info_png field of the LodePNGState.\n*/\nunsigned lodepng_inspect(unsigned* w, unsigned* h,\n                         LodePNGState* state,\n                         const unsigned char* in, size_t insize);\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/\nunsigned lodepng_encode(unsigned char** out, size_t* outsize,\n                        const unsigned char* image, unsigned w, unsigned h,\n                        LodePNGState* state);\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n/*\nThe lodepng_chunk functions are normally not needed, except to traverse the\nunknown chunks stored in the LodePNGInfo struct, or add new ones to it.\nIt also allows traversing the chunks of an encoded PNG file yourself.\n\nPNG standard chunk naming conventions:\nFirst byte: uppercase = critical, lowercase = ancillary\nSecond byte: uppercase = public, lowercase = private\nThird byte: must be uppercase\nFourth byte: uppercase = unsafe to copy, lowercase = safe to copy\n*/\n\n/*\nGets the length of the data of the chunk. Total chunk length has 12 bytes more.\nThere must be at least 4 bytes to read from. If the result value is too large,\nit may be corrupt data.\n*/\nunsigned lodepng_chunk_length(const unsigned char* chunk);\n\n/*puts the 4-byte type in null terminated string*/\nvoid lodepng_chunk_type(char type[5], const unsigned char* chunk);\n\n/*check if the type is the given type*/\nunsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type);\n\n/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG standard)*/\nunsigned char lodepng_chunk_ancillary(const unsigned char* chunk);\n\n/*0: public, 1: private (see PNG standard)*/\nunsigned char lodepng_chunk_private(const unsigned char* chunk);\n\n/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG standard)*/\nunsigned char lodepng_chunk_safetocopy(const unsigned char* chunk);\n\n/*get pointer to the data of the chunk, where the input points to the header of the chunk*/\nunsigned char* lodepng_chunk_data(unsigned char* chunk);\nconst unsigned char* lodepng_chunk_data_const(const unsigned char* chunk);\n\n/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/\nunsigned lodepng_chunk_check_crc(const unsigned char* chunk);\n\n/*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/\nvoid lodepng_chunk_generate_crc(unsigned char* chunk);\n\n/*iterate to next chunks. don't use on IEND chunk, as there is no next chunk then*/\nunsigned char* lodepng_chunk_next(unsigned char* chunk);\nconst unsigned char* lodepng_chunk_next_const(const unsigned char* chunk);\n\n/*\nAppends chunk to the data in out. The given chunk should already have its chunk header.\nThe out variable and outlength are updated to reflect the new reallocated buffer.\nReturns error code (0 if it went ok)\n*/\nunsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk);\n\n/*\nAppends new chunk to out. The chunk to append is given by giving its length, type\nand data separately. The type is a 4-letter string.\nThe out variable and outlength are updated to reflect the new reallocated buffer.\nReturne error code (0 if it went ok)\n*/\nunsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,\n                              const char* type, const unsigned char* data);\n\n\n/*Calculate CRC32 of buffer*/\nunsigned lodepng_crc32(const unsigned char* buf, size_t len);\n#endif /*LODEPNG_COMPILE_PNG*/\n\n\n#ifdef LODEPNG_COMPILE_ZLIB\n/*\nThis zlib part can be used independently to zlib compress and decompress a\nbuffer. It cannot be used to create gzip files however, and it only supports the\npart of zlib that is required for PNG, it does not support dictionaries.\n*/\n\n#ifdef LODEPNG_COMPILE_DECODER\n/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer must be freed after use.*/\nunsigned lodepng_inflate(unsigned char** out, size_t* outsize,\n                         const unsigned char* in, size_t insize,\n                         const LodePNGDecompressSettings* settings);\n\n/*\nDecompresses Zlib data. Reallocates the out buffer and appends the data. The\ndata must be according to the zlib specification.\nEither, *out must be NULL and *outsize must be 0, or, *out must be a valid\nbuffer and *outsize its size in bytes. out must be freed by user after usage.\n*/\nunsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize,\n                                 const unsigned char* in, size_t insize,\n                                 const LodePNGDecompressSettings* settings);\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/*\nCompresses data with Zlib. Reallocates the out buffer and appends the data.\nZlib adds a small header and trailer around the deflate data.\nThe data is output in the format of the zlib specification.\nEither, *out must be NULL and *outsize must be 0, or, *out must be a valid\nbuffer and *outsize its size in bytes. out must be freed by user after usage.\n*/\nunsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize,\n                               const unsigned char* in, size_t insize,\n                               const LodePNGCompressSettings* settings);\n\n/*\nFind length-limited Huffman code for given frequencies. This function is in the\npublic interface only for tests, it's used internally by lodepng_deflate.\n*/\nunsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies,\n                                      size_t numcodes, unsigned maxbitlen);\n\n/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after use.*/\nunsigned lodepng_deflate(unsigned char** out, size_t* outsize,\n                         const unsigned char* in, size_t insize,\n                         const LodePNGCompressSettings* settings);\n\n#endif /*LODEPNG_COMPILE_ENCODER*/\n#endif /*LODEPNG_COMPILE_ZLIB*/\n\n#ifdef LODEPNG_COMPILE_DISK\n/*\nLoad a file from disk into buffer. The function allocates the out buffer, and\nafter usage you should free it.\nout: output parameter, contains pointer to loaded buffer.\noutsize: output parameter, size of the allocated out buffer\nfilename: the path to the file to load\nreturn value: error code (0 means ok)\n*/\nunsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename);\n\n/*\nSave a file from buffer to disk. Warning, if it exists, this function overwrites\nthe file without warning!\nbuffer: the buffer to write\nbuffersize: size of the buffer to write\nfilename: the path to the file to save to\nreturn value: error code (0 means ok)\n*/\nunsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename);\n#endif /*LODEPNG_COMPILE_DISK*/\n\n#ifdef LODEPNG_COMPILE_CPP\n/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */\nnamespace lodepng\n{\n#ifdef LODEPNG_COMPILE_PNG\nclass State : public LodePNGState\n{\n  public:\n    State();\n    State(const State& other);\n    virtual ~State();\n    State& operator=(const State& other);\n};\n\n#ifdef LODEPNG_COMPILE_DECODER\n/* Same as other lodepng::decode, but using a State for more settings and information. */\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                State& state,\n                const unsigned char* in, size_t insize);\nunsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,\n                State& state,\n                const std::vector<unsigned char>& in);\n#endif /*LODEPNG_COMPILE_DECODER*/\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/* Same as other lodepng::encode, but using a State for more settings and information. */\nunsigned encode(std::vector<unsigned char>& out,\n                const unsigned char* in, unsigned w, unsigned h,\n                State& state);\nunsigned encode(std::vector<unsigned char>& out,\n                const std::vector<unsigned char>& in, unsigned w, unsigned h,\n                State& state);\n#endif /*LODEPNG_COMPILE_ENCODER*/\n\n#ifdef LODEPNG_COMPILE_DISK\n/*\nLoad a file from disk into an std::vector.\nreturn value: error code (0 means ok)\n*/\nunsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename);\n\n/*\nSave the binary data in an std::vector to a file on disk. The file is overwritten\nwithout warning.\n*/\nunsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename);\n#endif /* LODEPNG_COMPILE_DISK */\n#endif /* LODEPNG_COMPILE_PNG */\n\n#ifdef LODEPNG_COMPILE_ZLIB\n#ifdef LODEPNG_COMPILE_DECODER\n/* Zlib-decompress an unsigned char buffer */\nunsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,\n                    const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);\n\n/* Zlib-decompress an std::vector */\nunsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,\n                    const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);\n#endif /* LODEPNG_COMPILE_DECODER */\n\n#ifdef LODEPNG_COMPILE_ENCODER\n/* Zlib-compress an unsigned char buffer */\nunsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,\n                  const LodePNGCompressSettings& settings = lodepng_default_compress_settings);\n\n/* Zlib-compress an std::vector */\nunsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,\n                  const LodePNGCompressSettings& settings = lodepng_default_compress_settings);\n#endif /* LODEPNG_COMPILE_ENCODER */\n#endif /* LODEPNG_COMPILE_ZLIB */\n} /* namespace lodepng */\n#endif /*LODEPNG_COMPILE_CPP*/\n\n/*\nTODO:\n[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often\n[.] check compatibility with various compilers  - done but needs to be redone for every newer version\n[X] converting color to 16-bit per channel types\n[ ] read all public PNG chunk types (but never let the color profile and gamma ones touch RGB values)\n[ ] make sure encoder generates no chunks with size > (2^31)-1\n[ ] partial decoding (stream processing)\n[X] let the \"isFullyOpaque\" function check color keys and transparent palettes too\n[X] better name for the variables \"codes\", \"codesD\", \"codelengthcodes\", \"clcl\" and \"lldl\"\n[ ] don't stop decoding on errors like 69, 57, 58 (make warnings)\n[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ...\n[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes\n[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ...\n[ ] allow user to give data (void*) to custom allocator\n*/\n\n#endif /*LODEPNG_H inclusion guard*/\n\n/*\nLodePNG Documentation\n---------------------\n\n0. table of contents\n--------------------\n\n  1. about\n   1.1. supported features\n   1.2. features not supported\n  2. C and C++ version\n  3. security\n  4. decoding\n  5. encoding\n  6. color conversions\n    6.1. PNG color types\n    6.2. color conversions\n    6.3. padding bits\n    6.4. A note about 16-bits per channel and endianness\n  7. error values\n  8. chunks and PNG editing\n  9. compiler support\n  10. examples\n   10.1. decoder C++ example\n   10.2. decoder C example\n  11. state settings reference\n  12. changes\n  13. contact information\n\n\n1. about\n--------\n\nPNG is a file format to store raster images losslessly with good compression,\nsupporting different color types and alpha channel.\n\nLodePNG is a PNG codec according to the Portable Network Graphics (PNG)\nSpecification (Second Edition) - W3C Recommendation 10 November 2003.\n\nThe specifications used are:\n\n*) Portable Network Graphics (PNG) Specification (Second Edition):\n     http://www.w3.org/TR/2003/REC-PNG-20031110\n*) RFC 1950 ZLIB Compressed Data Format version 3.3:\n     http://www.gzip.org/zlib/rfc-zlib.html\n*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3:\n     http://www.gzip.org/zlib/rfc-deflate.html\n\nThe most recent version of LodePNG can currently be found at\nhttp://lodev.org/lodepng/\n\nLodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds\nextra functionality.\n\nLodePNG exists out of two files:\n-lodepng.h: the header file for both C and C++\n-lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on your usage\n\nIf you want to start using LodePNG right away without reading this doc, get the\nexamples from the LodePNG website to see how to use it in code, or check the\nsmaller examples in chapter 13 here.\n\nLodePNG is simple but only supports the basic requirements. To achieve\nsimplicity, the following design choices were made: There are no dependencies\non any external library. There are functions to decode and encode a PNG with\na single function call, and extended versions of these functions taking a\nLodePNGState struct allowing to specify or get more information. By default\nthe colors of the raw image are always RGB or RGBA, no matter what color type\nthe PNG file uses. To read and write files, there are simple functions to\nconvert the files to/from buffers in memory.\n\nThis all makes LodePNG suitable for loading textures in games, demos and small\nprograms, ... It's less suitable for full fledged image editors, loading PNGs\nover network (it requires all the image data to be available before decoding can\nbegin), life-critical systems, ...\n\n1.1. supported features\n-----------------------\n\nThe following features are supported by the decoder:\n\n*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- or 32-bit color raw image,\n   or the same color type as the PNG\n*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same color type as the raw image\n*) Adam7 interlace and deinterlace for any color type\n*) loading the image from harddisk or decoding it from a buffer from other sources than harddisk\n*) support for alpha channels, including RGBA color model, translucent palettes and color keying\n*) zlib decompression (inflate)\n*) zlib compression (deflate)\n*) CRC32 and ADLER32 checksums\n*) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks.\n*) the following chunks are supported (generated/interpreted) by both encoder and decoder:\n    IHDR: header information\n    PLTE: color palette\n    IDAT: pixel data\n    IEND: the final chunk\n    tRNS: transparency for palettized images\n    tEXt: textual information\n    zTXt: compressed textual information\n    iTXt: international textual information\n    bKGD: suggested background color\n    pHYs: physical dimensions\n    tIME: modification time\n\n1.2. features not supported\n---------------------------\n\nThe following features are _not_ supported:\n\n*) some features needed to make a conformant PNG-Editor might be still missing.\n*) partial loading/stream processing. All data must be available and is processed in one call.\n*) The following public chunks are not supported but treated as unknown chunks by LodePNG\n    cHRM, gAMA, iCCP, sRGB, sBIT, hIST, sPLT\n   Some of these are not supported on purpose: LodePNG wants to provide the RGB values\n   stored in the pixels, not values modified by system dependent gamma or color models.\n\n\n2. C and C++ version\n--------------------\n\nThe C version uses buffers allocated with alloc that you need to free()\nyourself. You need to use init and cleanup functions for each struct whenever\nusing a struct from the C version to avoid exploits and memory leaks.\n\nThe C++ version has extra functions with std::vectors in the interface and the\nlodepng::State class which is a LodePNGState with constructor and destructor.\n\nThese files work without modification for both C and C++ compilers because all\nthe additional C++ code is in \"#ifdef __cplusplus\" blocks that make C-compilers\nignore it, and the C code is made to compile both with strict ISO C90 and C++.\n\nTo use the C++ version, you need to rename the source file to lodepng.cpp\n(instead of lodepng.c), and compile it with a C++ compiler.\n\nTo use the C version, you need to rename the source file to lodepng.c (instead\nof lodepng.cpp), and compile it with a C compiler.\n\n\n3. Security\n-----------\n\nEven if carefully designed, it's always possible that LodePNG contains possible\nexploits. If you discover one, please let me know, and it will be fixed.\n\nWhen using LodePNG, care has to be taken with the C version of LodePNG, as well\nas the C-style structs when working with C++. The following conventions are used\nfor all C-style structs:\n\n-if a struct has a corresponding init function, always call the init function when making a new one\n-if a struct has a corresponding cleanup function, call it before the struct disappears to avoid memory leaks\n-if a struct has a corresponding copy function, use the copy function instead of \"=\".\n The destination must also be inited already.\n\n\n4. Decoding\n-----------\n\nDecoding converts a PNG compressed image to a raw pixel buffer.\n\nMost documentation on using the decoder is at its declarations in the header\nabove. For C, simple decoding can be done with functions such as\nlodepng_decode32, and more advanced decoding can be done with the struct\nLodePNGState and lodepng_decode. For C++, all decoding can be done with the\nvarious lodepng::decode functions, and lodepng::State can be used for advanced\nfeatures.\n\nWhen using the LodePNGState, it uses the following fields for decoding:\n*) LodePNGInfo info_png: it stores extra information about the PNG (the input) in here\n*) LodePNGColorMode info_raw: here you can say what color mode of the raw image (the output) you want to get\n*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the decoder to use\n\nLodePNGInfo info_png\n--------------------\n\nAfter decoding, this contains extra information of the PNG image, except the actual\npixels, width and height because these are already gotten directly from the decoder\nfunctions.\n\nIt contains for example the original color type of the PNG image, text comments,\nsuggested background color, etc... More details about the LodePNGInfo struct are\nat its declaration documentation.\n\nLodePNGColorMode info_raw\n-------------------------\n\nWhen decoding, here you can specify which color type you want\nthe resulting raw image to be. If this is different from the colortype of the\nPNG, then the decoder will automatically convert the result. This conversion\nalways works, except if you want it to convert a color PNG to greyscale or to\na palette with missing colors.\n\nBy default, 32-bit color is used for the result.\n\nLodePNGDecoderSettings decoder\n------------------------------\n\nThe settings can be used to ignore the errors created by invalid CRC and Adler32\nchunks, and to disable the decoding of tEXt chunks.\n\nThere's also a setting color_convert, true by default. If false, no conversion\nis done, the resulting data will be as it was in the PNG (after decompression)\nand you'll have to puzzle the colors of the pixels together yourself using the\ncolor type information in the LodePNGInfo.\n\n\n5. Encoding\n-----------\n\nEncoding converts a raw pixel buffer to a PNG compressed image.\n\nMost documentation on using the encoder is at its declarations in the header\nabove. For C, simple encoding can be done with functions such as\nlodepng_encode32, and more advanced decoding can be done with the struct\nLodePNGState and lodepng_encode. For C++, all encoding can be done with the\nvarious lodepng::encode functions, and lodepng::State can be used for advanced\nfeatures.\n\nLike the decoder, the encoder can also give errors. However it gives less errors\nsince the encoder input is trusted, the decoder input (a PNG image that could\nbe forged by anyone) is not trusted.\n\nWhen using the LodePNGState, it uses the following fields for encoding:\n*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to be.\n*) LodePNGColorMode info_raw: here you say what color type of the raw image (the input) has\n*) LodePNGEncoderSettings encoder: you can specify a few settings for the encoder to use\n\nLodePNGInfo info_png\n--------------------\n\nWhen encoding, you use this the opposite way as when decoding: for encoding,\nyou fill in the values you want the PNG to have before encoding. By default it's\nnot needed to specify a color type for the PNG since it's automatically chosen,\nbut it's possible to choose it yourself given the right settings.\n\nThe encoder will not always exactly match the LodePNGInfo struct you give,\nit tries as close as possible. Some things are ignored by the encoder. The\nencoder uses, for example, the following settings from it when applicable:\ncolortype and bitdepth, text chunks, time chunk, the color key, the palette, the\nbackground color, the interlace method, unknown chunks, ...\n\nWhen encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk.\nIf the palette contains any colors for which the alpha channel is not 255 (so\nthere are translucent colors in the palette), it'll add a tRNS chunk.\n\nLodePNGColorMode info_raw\n-------------------------\n\nYou specify the color type of the raw image that you give to the input here,\nincluding a possible transparent color key and palette you happen to be using in\nyour raw image data.\n\nBy default, 32-bit color is assumed, meaning your input has to be in RGBA\nformat with 4 bytes (unsigned chars) per pixel.\n\nLodePNGEncoderSettings encoder\n------------------------------\n\nThe following settings are supported (some are in sub-structs):\n*) auto_convert: when this option is enabled, the encoder will\nautomatically choose the smallest possible color mode (including color key) that\ncan encode the colors of all pixels without information loss.\n*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree,\n   2 = dynamic huffman tree (best compression). Should be 2 for proper\n   compression.\n*) use_lz77: whether or not to use LZ77 for compressed block types. Should be\n   true for proper compression.\n*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value\n   2048 by default, but can be set to 32768 for better, but slow, compression.\n*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE\n   chunk if force_palette is true. This can used as suggested palette to convert\n   to by viewers that don't support more than 256 colors (if those still exist)\n*) add_id: add text chunk \"Encoder: LodePNG <version>\" to the image.\n*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt chunks.\n  zTXt chunks use zlib compression on the text. This gives a smaller result on\n  large texts but a larger result on small texts (such as a single program name).\n  It's all tEXt or all zTXt though, there's no separate setting per text yet.\n\n\n6. color conversions\n--------------------\n\nAn important thing to note about LodePNG, is that the color type of the PNG, and\nthe color type of the raw image, are completely independent. By default, when\nyou decode a PNG, you get the result as a raw image in the color type you want,\nno matter whether the PNG was encoded with a palette, greyscale or RGBA color.\nAnd if you encode an image, by default LodePNG will automatically choose the PNG\ncolor type that gives good compression based on the values of colors and amount\nof colors in the image. It can be configured to let you control it instead as\nwell, though.\n\nTo be able to do this, LodePNG does conversions from one color mode to another.\nIt can convert from almost any color type to any other color type, except the\nfollowing conversions: RGB to greyscale is not supported, and converting to a\npalette when the palette doesn't have a required color is not supported. This is\nnot supported on purpose: this is information loss which requires a color\nreduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to grey\nis easy, but there are multiple ways if you want to give some channels more\nweight).\n\nBy default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB\ncolor, no matter what color type the PNG has. And by default when encoding,\nLodePNG automatically picks the best color model for the output PNG, and expects\nthe input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control\nthe color format of the images yourself, you can skip this chapter.\n\n6.1. PNG color types\n--------------------\n\nA PNG image can have many color types, ranging from 1-bit color to 64-bit color,\nas well as palettized color modes. After the zlib decompression and unfiltering\nin the PNG image is done, the raw pixel data will have that color type and thus\na certain amount of bits per pixel. If you want the output raw image after\ndecoding to have another color type, a conversion is done by LodePNG.\n\nThe PNG specification gives the following color types:\n\n0: greyscale, bit depths 1, 2, 4, 8, 16\n2: RGB, bit depths 8 and 16\n3: palette, bit depths 1, 2, 4 and 8\n4: greyscale with alpha, bit depths 8 and 16\n6: RGBA, bit depths 8 and 16\n\nBit depth is the amount of bits per pixel per color channel. So the total amount\nof bits per pixel is: amount of channels * bitdepth.\n\n6.2. color conversions\n----------------------\n\nAs explained in the sections about the encoder and decoder, you can specify\ncolor types and bit depths in info_png and info_raw to change the default\nbehaviour.\n\nIf, when decoding, you want the raw image to be something else than the default,\nyou need to set the color type and bit depth you want in the LodePNGColorMode,\nor the parameters colortype and bitdepth of the simple decoding function.\n\nIf, when encoding, you use another color type than the default in the raw input\nimage, you need to specify its color type and bit depth in the LodePNGColorMode\nof the raw image, or use the parameters colortype and bitdepth of the simple\nencoding function.\n\nIf, when encoding, you don't want LodePNG to choose the output PNG color type\nbut control it yourself, you need to set auto_convert in the encoder settings\nto false, and specify the color type you want in the LodePNGInfo of the\nencoder (including palette: it can generate a palette if auto_convert is true,\notherwise not).\n\nIf the input and output color type differ (whether user chosen or auto chosen),\nLodePNG will do a color conversion, which follows the rules below, and may\nsometimes result in an error.\n\nTo avoid some confusion:\n-the decoder converts from PNG to raw image\n-the encoder converts from raw image to PNG\n-the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw image\n-the colortype and bitdepth in the color field of LodePNGInfo info_png, are those of the PNG\n-when encoding, the color type in LodePNGInfo is ignored if auto_convert\n is enabled, it is automatically generated instead\n-when decoding, the color type in LodePNGInfo is set by the decoder to that of the original\n PNG image, but it can be ignored since the raw image has the color type you requested instead\n-if the color type of the LodePNGColorMode and PNG image aren't the same, a conversion\n between the color types is done if the color types are supported. If it is not\n supported, an error is returned. If the types are the same, no conversion is done.\n-even though some conversions aren't supported, LodePNG supports loading PNGs from any\n colortype and saving PNGs to any colortype, sometimes it just requires preparing\n the raw image correctly before encoding.\n-both encoder and decoder use the same color converter.\n\nNon supported color conversions:\n-color to greyscale: no error is thrown, but the result will look ugly because\nonly the red channel is taken\n-anything to palette when that palette does not have that color in it: in this\ncase an error is thrown\n\nSupported color conversions:\n-anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA\n-any grey or grey+alpha, to grey or grey+alpha\n-anything to a palette, as long as the palette has the requested colors in it\n-removing alpha channel\n-higher to smaller bitdepth, and vice versa\n\nIf you want no color conversion to be done (e.g. for speed or control):\n-In the encoder, you can make it save a PNG with any color type by giving the\nraw color mode and LodePNGInfo the same color mode, and setting auto_convert to\nfalse.\n-In the decoder, you can make it store the pixel data in the same color type\nas the PNG has, by setting the color_convert setting to false. Settings in\ninfo_raw are then ignored.\n\nThe function lodepng_convert does the color conversion. It is available in the\ninterface but normally isn't needed since the encoder and decoder already call\nit.\n\n6.3. padding bits\n-----------------\n\nIn the PNG file format, if a less than 8-bit per pixel color type is used and the scanlines\nhave a bit amount that isn't a multiple of 8, then padding bits are used so that each\nscanline starts at a fresh byte. But that is NOT true for the LodePNG raw input and output.\nThe raw input image you give to the encoder, and the raw output image you get from the decoder\nwill NOT have these padding bits, e.g. in the case of a 1-bit image with a width\nof 7 pixels, the first pixel of the second scanline will the the 8th bit of the first byte,\nnot the first bit of a new byte.\n\n6.4. A note about 16-bits per channel and endianness\n----------------------------------------------------\n\nLodePNG uses unsigned char arrays for 16-bit per channel colors too, just like\nfor any other color format. The 16-bit values are stored in big endian (most\nsignificant byte first) in these arrays. This is the opposite order of the\nlittle endian used by x86 CPU's.\n\nLodePNG always uses big endian because the PNG file format does so internally.\nConversions to other formats than PNG uses internally are not supported by\nLodePNG on purpose, there are myriads of formats, including endianness of 16-bit\ncolors, the order in which you store R, G, B and A, and so on. Supporting and\nconverting to/from all that is outside the scope of LodePNG.\n\nThis may mean that, depending on your use case, you may want to convert the big\nendian output of LodePNG to little endian with a for loop. This is certainly not\nalways needed, many applications and libraries support big endian 16-bit colors\nanyway, but it means you cannot simply cast the unsigned char* buffer to an\nunsigned short* buffer on x86 CPUs.\n\n\n7. error values\n---------------\n\nAll functions in LodePNG that return an error code, return 0 if everything went\nOK, or a non-zero code if there was an error.\n\nThe meaning of the LodePNG error values can be retrieved with the function\nlodepng_error_text: given the numerical error code, it returns a description\nof the error in English as a string.\n\nCheck the implementation of lodepng_error_text to see the meaning of each code.\n\n\n8. chunks and PNG editing\n-------------------------\n\nIf you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG\neditor that should follow the rules about handling of unknown chunks, or if your\nprogram is able to read other types of chunks than the ones handled by LodePNG,\nthen that's possible with the chunk functions of LodePNG.\n\nA PNG chunk has the following layout:\n\n4 bytes length\n4 bytes type name\nlength bytes data\n4 bytes CRC\n\n8.1. iterating through chunks\n-----------------------------\n\nIf you have a buffer containing the PNG image data, then the first chunk (the\nIHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the\nsignature of the PNG and are not part of a chunk. But if you start at byte 8\nthen you have a chunk, and can check the following things of it.\n\nNOTE: none of these functions check for memory buffer boundaries. To avoid\nexploits, always make sure the buffer contains all the data of the chunks.\nWhen using lodepng_chunk_next, make sure the returned value is within the\nallocated memory.\n\nunsigned lodepng_chunk_length(const unsigned char* chunk):\n\nGet the length of the chunk's data. The total chunk length is this length + 12.\n\nvoid lodepng_chunk_type(char type[5], const unsigned char* chunk):\nunsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type):\n\nGet the type of the chunk or compare if it's a certain type\n\nunsigned char lodepng_chunk_critical(const unsigned char* chunk):\nunsigned char lodepng_chunk_private(const unsigned char* chunk):\nunsigned char lodepng_chunk_safetocopy(const unsigned char* chunk):\n\nCheck if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and IEND are).\nCheck if the chunk is private (public chunks are part of the standard, private ones not).\nCheck if the chunk is safe to copy. If it's not, then, when modifying data in a critical\nchunk, unsafe to copy chunks of the old image may NOT be saved in the new one if your\nprogram doesn't handle that type of unknown chunk.\n\nunsigned char* lodepng_chunk_data(unsigned char* chunk):\nconst unsigned char* lodepng_chunk_data_const(const unsigned char* chunk):\n\nGet a pointer to the start of the data of the chunk.\n\nunsigned lodepng_chunk_check_crc(const unsigned char* chunk):\nvoid lodepng_chunk_generate_crc(unsigned char* chunk):\n\nCheck if the crc is correct or generate a correct one.\n\nunsigned char* lodepng_chunk_next(unsigned char* chunk):\nconst unsigned char* lodepng_chunk_next_const(const unsigned char* chunk):\n\nIterate to the next chunk. This works if you have a buffer with consecutive chunks. Note that these\nfunctions do no boundary checking of the allocated data whatsoever, so make sure there is enough\ndata available in the buffer to be able to go to the next chunk.\n\nunsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk):\nunsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,\n                              const char* type, const unsigned char* data):\n\nThese functions are used to create new chunks that are appended to the data in *out that has\nlength *outlength. The append function appends an existing chunk to the new data. The create\nfunction creates a new chunk with the given parameters and appends it. Type is the 4-letter\nname of the chunk.\n\n8.2. chunks in info_png\n-----------------------\n\nThe LodePNGInfo struct contains fields with the unknown chunk in it. It has 3\nbuffers (each with size) to contain 3 types of unknown chunks:\nthe ones that come before the PLTE chunk, the ones that come between the PLTE\nand the IDAT chunks, and the ones that come after the IDAT chunks.\nIt's necessary to make the distionction between these 3 cases because the PNG\nstandard forces to keep the ordering of unknown chunks compared to the critical\nchunks, but does not force any other ordering rules.\n\ninfo_png.unknown_chunks_data[0] is the chunks before PLTE\ninfo_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT\ninfo_png.unknown_chunks_data[2] is the chunks after IDAT\n\nThe chunks in these 3 buffers can be iterated through and read by using the same\nway described in the previous subchapter.\n\nWhen using the decoder to decode a PNG, you can make it store all unknown chunks\nif you set the option settings.remember_unknown_chunks to 1. By default, this\noption is off (0).\n\nThe encoder will always encode unknown chunks that are stored in the info_png.\nIf you need it to add a particular chunk that isn't known by LodePNG, you can\nuse lodepng_chunk_append or lodepng_chunk_create to the chunk data in\ninfo_png.unknown_chunks_data[x].\n\nChunks that are known by LodePNG should not be added in that way. E.g. to make\nLodePNG add a bKGD chunk, set background_defined to true and add the correct\nparameters there instead.\n\n\n9. compiler support\n-------------------\n\nNo libraries other than the current standard C library are needed to compile\nLodePNG. For the C++ version, only the standard C++ library is needed on top.\nAdd the files lodepng.c(pp) and lodepng.h to your project, include\nlodepng.h where needed, and your program can read/write PNG files.\n\nIt is compatible with C90 and up, and C++03 and up.\n\nIf performance is important, use optimization when compiling! For both the\nencoder and decoder, this makes a large difference.\n\nMake sure that LodePNG is compiled with the same compiler of the same version\nand with the same settings as the rest of the program, or the interfaces with\nstd::vectors and std::strings in C++ can be incompatible.\n\nCHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets.\n\n*) gcc and g++\n\nLodePNG is developed in gcc so this compiler is natively supported. It gives no\nwarnings with compiler options \"-Wall -Wextra -pedantic -ansi\", with gcc and g++\nversion 4.7.1 on Linux, 32-bit and 64-bit.\n\n*) Clang\n\nFully supported and warning-free.\n\n*) Mingw\n\nThe Mingw compiler (a port of gcc for Windows) should be fully supported by\nLodePNG.\n\n*) Visual Studio and Visual C++ Express Edition\n\nLodePNG should be warning-free with warning level W4. Two warnings were disabled\nwith pragmas though: warning 4244 about implicit conversions, and warning 4996\nwhere it wants to use a non-standard function fopen_s instead of the standard C\nfopen.\n\nVisual Studio may want \"stdafx.h\" files to be included in each source file and\ngive an error \"unexpected end of file while looking for precompiled header\".\nThis is not standard C++ and will not be added to the stock LodePNG. You can\ndisable it for lodepng.cpp only by right clicking it, Properties, C/C++,\nPrecompiled Headers, and set it to Not Using Precompiled Headers there.\n\nNOTE: Modern versions of VS should be fully supported, but old versions, e.g.\nVS6, are not guaranteed to work.\n\n*) Compilers on Macintosh\n\nLodePNG has been reported to work both with gcc and LLVM for Macintosh, both for\nC and C++.\n\n*) Other Compilers\n\nIf you encounter problems on any compilers, feel free to let me know and I may\ntry to fix it if the compiler is modern and standards complient.\n\n\n10. examples\n------------\n\nThis decoder example shows the most basic usage of LodePNG. More complex\nexamples can be found on the LodePNG website.\n\n10.1. decoder C++ example\n-------------------------\n\n#include \"lodepng.h\"\n#include <iostream>\n\nint main(int argc, char *argv[])\n{\n  const char* filename = argc > 1 ? argv[1] : \"test.png\";\n\n  //load and decode\n  std::vector<unsigned char> image;\n  unsigned width, height;\n  unsigned error = lodepng::decode(image, width, height, filename);\n\n  //if there's an error, display it\n  if(error) std::cout << \"decoder error \" << error << \": \" << lodepng_error_text(error) << std::endl;\n\n  //the pixels are now in the vector \"image\", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ...\n}\n\n10.2. decoder C example\n-----------------------\n\n#include \"lodepng.h\"\n\nint main(int argc, char *argv[])\n{\n  unsigned error;\n  unsigned char* image;\n  size_t width, height;\n  const char* filename = argc > 1 ? argv[1] : \"test.png\";\n\n  error = lodepng_decode32_file(&image, &width, &height, filename);\n\n  if(error) printf(\"decoder error %u: %s\\n\", error, lodepng_error_text(error));\n\n  / * use image here * /\n\n  free(image);\n  return 0;\n}\n\n11. state settings reference\n----------------------------\n\nA quick reference of some settings to set on the LodePNGState\n\nFor decoding:\n\nstate.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums\nstate.decoder.zlibsettings.custom_...: use custom inflate function\nstate.decoder.ignore_crc: ignore CRC checksums\nstate.decoder.ignore_critical: ignore unknown critical chunks\nstate.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption causes other errors\nstate.decoder.color_convert: convert internal PNG color to chosen one\nstate.decoder.read_text_chunks: whether to read in text metadata chunks\nstate.decoder.remember_unknown_chunks: whether to read in unknown chunks\nstate.info_raw.colortype: desired color type for decoded image\nstate.info_raw.bitdepth: desired bit depth for decoded image\nstate.info_raw....: more color settings, see struct LodePNGColorMode\nstate.info_png....: no settings for decoder but ouput, see struct LodePNGInfo\n\nFor encoding:\n\nstate.encoder.zlibsettings.btype: disable compression by setting it to 0\nstate.encoder.zlibsettings.use_lz77: use LZ77 in compression\nstate.encoder.zlibsettings.windowsize: tweak LZ77 windowsize\nstate.encoder.zlibsettings.minmatch: tweak min LZ77 length to match\nstate.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching\nstate.encoder.zlibsettings.lazymatching: try one more LZ77 matching\nstate.encoder.zlibsettings.custom_...: use custom deflate function\nstate.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png\nstate.encoder.filter_palette_zero: PNG filter strategy for palette\nstate.encoder.filter_strategy: PNG filter strategy to encode with\nstate.encoder.force_palette: add palette even if not encoding to one\nstate.encoder.add_id: add LodePNG identifier and version as a text chunk\nstate.encoder.text_compression: use compressed text chunks for metadata\nstate.info_raw.colortype: color type of raw input image you provide\nstate.info_raw.bitdepth: bit depth of raw input image you provide\nstate.info_raw: more color settings, see struct LodePNGColorMode\nstate.info_png.color.colortype: desired color type if auto_convert is false\nstate.info_png.color.bitdepth: desired bit depth if auto_convert is false\nstate.info_png.color....: more color settings, see struct LodePNGColorMode\nstate.info_png....: more PNG related settings, see struct LodePNGInfo\n\n\n12. changes\n-----------\n\nThe version number of LodePNG is the date of the change given in the format\nyyyymmdd.\n\nSome changes aren't backwards compatible. Those are indicated with a (!)\nsymbol.\n\n*) 11 jun 2018: less restrictive check for pixel size integer overflow\n*) 14 jan 2018: allow optionally ignoring a few more recoverable errors\n*) 17 sep 2017: fix memory leak for some encoder input error cases\n*) 27 nov 2016: grey+alpha auto color model detection bugfix\n*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort).\n*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within\n   the limits of pure C90).\n*) 08 dec 2015: Made load_file function return error if file can't be opened.\n*) 24 okt 2015: Bugfix with decoding to palette output.\n*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding.\n*) 23 aug 2014: Reduced needless memory usage of decoder.\n*) 28 jun 2014: Removed fix_png setting, always support palette OOB for\n    simplicity. Made ColorProfile public.\n*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization.\n*) 22 dec 2013: Power of two windowsize required for optimization.\n*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key.\n*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png).\n*) 11 mar 2013 (!): Bugfix with custom free. Changed from \"my\" to \"lodepng_\"\n    prefix for the custom allocators and made it possible with a new #define to\n    use custom ones in your project without needing to change lodepng's code.\n*) 28 jan 2013: Bugfix with color key.\n*) 27 okt 2012: Tweaks in text chunk keyword length error handling.\n*) 8 okt 2012 (!): Added new filter strategy (entropy) and new auto color mode.\n    (no palette). Better deflate tree encoding. New compression tweak settings.\n    Faster color conversions while decoding. Some internal cleanups.\n*) 23 sep 2012: Reduced warnings in Visual Studio a little bit.\n*) 1 sep 2012 (!): Removed #define's for giving custom (de)compression functions\n    and made it work with function pointers instead.\n*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc\n    and free functions and toggle #defines from compiler flags. Small fixes.\n*) 6 may 2012 (!): Made plugging in custom zlib/deflate functions more flexible.\n*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed\n    redundant C++ codec classes. Reduced amount of structs. Everything changed,\n    but it is cleaner now imho and functionality remains the same. Also fixed\n    several bugs and shrunk the implementation code. Made new samples.\n*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best\n    PNG color model and bit depth, based on the amount and type of colors of the\n    raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color.\n*) 9 okt 2011: simpler hash chain implementation for the encoder.\n*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching.\n*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking.\n    A bug with the PNG filtertype heuristic was fixed, so that it chooses much\n    better ones (it's quite significant). A setting to do an experimental, slow,\n    brute force search for PNG filter types is added.\n*) 17 aug 2011 (!): changed some C zlib related function names.\n*) 16 aug 2011: made the code less wide (max 120 characters per line).\n*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors.\n*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled.\n*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman\n    to optimize long sequences of zeros.\n*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and\n    LodePNG_InfoColor_canHaveAlpha functions for convenience.\n*) 7 nov 2010: added LodePNG_error_text function to get error code description.\n*) 30 okt 2010: made decoding slightly faster\n*) 26 okt 2010: (!) changed some C function and struct names (more consistent).\n     Reorganized the documentation and the declaration order in the header.\n*) 08 aug 2010: only changed some comments and external samples.\n*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version.\n*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers.\n*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could\n    read by ignoring the problem but windows apps couldn't.\n*) 06 jun 2008: added more error checks for out of memory cases.\n*) 26 apr 2008: added a few more checks here and there to ensure more safety.\n*) 06 mar 2008: crash with encoding of strings fixed\n*) 02 feb 2008: support for international text chunks added (iTXt)\n*) 23 jan 2008: small cleanups, and #defines to divide code in sections\n*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor.\n*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder.\n*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added\n    Also various fixes, such as in the deflate and the padding bits code.\n*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved\n    filtering code of encoder.\n*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A\n    C++ wrapper around this provides an interface almost identical to before.\n    Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code\n    are together in these files but it works both for C and C++ compilers.\n*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks\n*) 30 aug 2007: bug fixed which makes this Borland C++ compatible\n*) 09 aug 2007: some VS2005 warnings removed again\n*) 21 jul 2007: deflate code placed in new namespace separate from zlib code\n*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images\n*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing\n    invalid std::vector element [0] fixed, and level 3 and 4 warnings removed\n*) 02 jun 2007: made the encoder add a tag with version by default\n*) 27 may 2007: zlib and png code separated (but still in the same file),\n    simple encoder/decoder functions added for more simple usage cases\n*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69),\n    moved some examples from here to lodepng_examples.cpp\n*) 12 may 2007: palette decoding bug fixed\n*) 24 apr 2007: changed the license from BSD to the zlib license\n*) 11 mar 2007: very simple addition: ability to encode bKGD chunks.\n*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding\n    palettized PNG images. Plus little interface change with palette and texts.\n*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes.\n    Fixed a bug where the end code of a block had length 0 in the Huffman tree.\n*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented\n    and supported by the encoder, resulting in smaller PNGs at the output.\n*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone.\n*) 24 jan 2007: gave encoder an error interface. Added color conversion from any\n    greyscale type to 8-bit greyscale with or without alpha.\n*) 21 jan 2007: (!) Totally changed the interface. It allows more color types\n    to convert to and is more uniform. See the manual for how it works now.\n*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days:\n    encode/decode custom tEXt chunks, separate classes for zlib & deflate, and\n    at last made the decoder give errors for incorrect Adler32 or Crc.\n*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel.\n*) 29 dec 2006: Added support for encoding images without alpha channel, and\n    cleaned out code as well as making certain parts faster.\n*) 28 dec 2006: Added \"Settings\" to the encoder.\n*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller files now.\n    Removed some code duplication in the decoder. Fixed little bug in an example.\n*) 09 dec 2006: (!) Placed output parameters of public functions as first parameter.\n    Fixed a bug of the decoder with 16-bit per color.\n*) 15 okt 2006: Changed documentation structure\n*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the\n    given image buffer, however for now it's not compressed.\n*) 08 sep 2006: (!) Changed to interface with a Decoder class\n*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in different\n    way. Renamed decodePNG to decodePNGGeneric.\n*) 29 jul 2006: (!) Changed the interface: image info is now returned as a\n    struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit clumsy.\n*) 28 jul 2006: Cleaned the code and added new error checks.\n    Corrected terminology \"deflate\" into \"inflate\".\n*) 23 jun 2006: Added SDL example in the documentation in the header, this\n    example allows easy debugging by displaying the PNG and its transparency.\n*) 22 jun 2006: (!) Changed way to obtain error value. Added\n    loadFile function for convenience. Made decodePNG32 faster.\n*) 21 jun 2006: (!) Changed type of info vector to unsigned.\n    Changed position of palette in info vector. Fixed an important bug that\n    happened on PNGs with an uncompressed block.\n*) 16 jun 2006: Internally changed unsigned into unsigned where\n    needed, and performed some optimizations.\n*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them\n    in LodePNG namespace. Changed the order of the parameters. Rewrote the\n    documentation in the header. Renamed files to lodepng.cpp and lodepng.h\n*) 22 apr 2006: Optimized and improved some code\n*) 07 sep 2005: (!) Changed to std::vector interface\n*) 12 aug 2005: Initial release (C++, decoder only)\n\n\n13. contact information\n-----------------------\n\nFeel free to contact me with suggestions, problems, comments, ... concerning\nLodePNG. If you encounter a PNG image that doesn't work properly with this\ndecoder, feel free to send it and I'll use it to find and fix the problem.\n\nMy email address is (puzzle the account and domain together with an @ symbol):\nDomain: gmail dot com.\nAccount: lode dot vandevenne.\n\n\nCopyright (c) 2005-2018 Lode Vandevenne\n*/\n"
  },
  {
    "path": "src/nanojpeg/nanojpeg.c",
    "content": "// NanoJPEG -- KeyJ's Tiny Baseline JPEG Decoder\n// version 1.3.5 (2016-11-14)\n// Copyright (c) 2009-2016 Martin J. Fiedler <martin.fiedler@gmx.net>\n// published under the terms of the MIT license\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n// DEALINGS IN THE SOFTWARE.\n\n\n///////////////////////////////////////////////////////////////////////////////\n// DOCUMENTATION SECTION                                                     //\n// read this if you want to know what this is all about                      //\n///////////////////////////////////////////////////////////////////////////////\n\n// INTRODUCTION\n// ============\n//\n// This is a minimal decoder for baseline JPEG images. It accepts memory dumps\n// of JPEG files as input and generates either 8-bit grayscale or packed 24-bit\n// RGB images as output. It does not parse JFIF or Exif headers; all JPEG files\n// are assumed to be either grayscale or YCbCr. CMYK or other color spaces are\n// not supported. All YCbCr subsampling schemes with power-of-two ratios are\n// supported, as are restart intervals. Progressive or lossless JPEG is not\n// supported.\n// Summed up, NanoJPEG should be able to decode all images from digital cameras\n// and most common forms of other non-progressive JPEG images.\n// The decoder is not optimized for speed, it's optimized for simplicity and\n// small code. Image quality should be at a reasonable level. A bicubic chroma\n// upsampling filter ensures that subsampled YCbCr images are rendered in\n// decent quality. The decoder is not meant to deal with broken JPEG files in\n// a graceful manner; if anything is wrong with the bitstream, decoding will\n// simply fail.\n// The code should work with every modern C compiler without problems and\n// should not emit any warnings. It uses only (at least) 32-bit integer\n// arithmetic and is supposed to be endianness independent and 64-bit clean.\n// However, it is not thread-safe.\n\n\n// COMPILE-TIME CONFIGURATION\n// ==========================\n//\n// The following aspects of NanoJPEG can be controlled with preprocessor\n// defines:\n//\n// _NJ_EXAMPLE_PROGRAM     = Compile a main() function with an example\n//                           program.\n// _NJ_INCLUDE_HEADER_ONLY = Don't compile anything, just act as a header\n//                           file for NanoJPEG. Example:\n//                               #define _NJ_INCLUDE_HEADER_ONLY\n//                               #include \"nanojpeg.c\"\n//                               int main(void) {\n//                                   njInit();\n//                                   // your code here\n//                                   njDone();\n//                               }\n// NJ_USE_LIBC=1           = Use the malloc(), free(), memset() and memcpy()\n//                           functions from the standard C library (default).\n// NJ_USE_LIBC=0           = Don't use the standard C library. In this mode,\n//                           external functions njAlloc(), njFreeMem(),\n//                           njFillMem() and njCopyMem() need to be defined\n//                           and implemented somewhere.\n// NJ_USE_WIN32=0          = Normal mode (default).\n// NJ_USE_WIN32=1          = If compiling with MSVC for Win32 and\n//                           NJ_USE_LIBC=0, NanoJPEG will use its own\n//                           implementations of the required C library\n//                           functions (default if compiling with MSVC and\n//                           NJ_USE_LIBC=0).\n// NJ_CHROMA_FILTER=1      = Use the bicubic chroma upsampling filter\n//                           (default).\n// NJ_CHROMA_FILTER=0      = Use simple pixel repetition for chroma upsampling\n//                           (bad quality, but faster and less code).\n\n\n// API\n// ===\n//\n// For API documentation, read the \"header section\" below.\n\n\n// EXAMPLE\n// =======\n//\n// A few pages below, you can find an example program that uses NanoJPEG to\n// convert JPEG files into PGM or PPM. To compile it, use something like\n//     gcc -O3 -D_NJ_EXAMPLE_PROGRAM -o nanojpeg nanojpeg.c\n// You may also add -std=c99 -Wall -Wextra -pedantic -Werror, if you want :)\n// The only thing you might need is -Wno-shift-negative-value, because this\n// code relies on the target machine using two's complement arithmetic, but\n// the C standard does not, even though *any* practically useful machine\n// nowadays uses two's complement.\n\n\n///////////////////////////////////////////////////////////////////////////////\n// HEADER SECTION                                                            //\n// copy and pase this into nanojpeg.h if you want                            //\n///////////////////////////////////////////////////////////////////////////////\n\n#ifndef _NANOJPEG_H\n#define _NANOJPEG_H\n\n// nj_result_t: Result codes for njDecode().\ntypedef enum _nj_result {\n    NJ_OK = 0,        // no error, decoding successful\n    NJ_NO_JPEG,       // not a JPEG file\n    NJ_UNSUPPORTED,   // unsupported format\n    NJ_OUT_OF_MEM,    // out of memory\n    NJ_INTERNAL_ERR,  // internal error\n    NJ_SYNTAX_ERROR,  // syntax error\n    __NJ_FINISHED,    // used internally, will never be reported\n} nj_result_t;\n\n// njInit: Initialize NanoJPEG.\n// For safety reasons, this should be called at least one time before using\n// using any of the other NanoJPEG functions.\nvoid njInit(void);\n\n// njDecode: Decode a JPEG image.\n// Decodes a memory dump of a JPEG file into internal buffers.\n// Parameters:\n//   jpeg = The pointer to the memory dump.\n//   size = The size of the JPEG file.\n// Return value: The error code in case of failure, or NJ_OK (zero) on success.\nnj_result_t njDecode(const void* jpeg, const int size);\n\n// njGetWidth: Return the width (in pixels) of the most recently decoded\n// image. If njDecode() failed, the result of njGetWidth() is undefined.\nint njGetWidth(void);\n\n// njGetHeight: Return the height (in pixels) of the most recently decoded\n// image. If njDecode() failed, the result of njGetHeight() is undefined.\nint njGetHeight(void);\n\n// njIsColor: Return 1 if the most recently decoded image is a color image\n// (RGB) or 0 if it is a grayscale image. If njDecode() failed, the result\n// of njGetWidth() is undefined.\nint njIsColor(void);\n\n// njGetImage: Returns the decoded image data.\n// Returns a pointer to the most recently image. The memory layout it byte-\n// oriented, top-down, without any padding between lines. Pixels of color\n// images will be stored as three consecutive bytes for the red, green and\n// blue channels. This data format is thus compatible with the PGM or PPM\n// file formats and the OpenGL texture formats GL_LUMINANCE8 or GL_RGB8.\n// If njDecode() failed, the result of njGetImage() is undefined.\nunsigned char* njGetImage(void);\n\n// njGetImageSize: Returns the size (in bytes) of the image data returned\n// by njGetImage(). If njDecode() failed, the result of njGetImageSize() is\n// undefined.\nint njGetImageSize(void);\n\n// njDone: Uninitialize NanoJPEG.\n// Resets NanoJPEG's internal state and frees all memory that has been\n// allocated at run-time by NanoJPEG. It is still possible to decode another\n// image after a njDone() call.\nvoid njDone(void);\n\n#endif//_NANOJPEG_H\n\n\n///////////////////////////////////////////////////////////////////////////////\n// CONFIGURATION SECTION                                                     //\n// adjust the default settings for the NJ_ defines here                      //\n///////////////////////////////////////////////////////////////////////////////\n\n#ifndef NJ_USE_LIBC\n    #define NJ_USE_LIBC 1\n#endif\n\n#ifndef NJ_USE_WIN32\n  #ifdef _MSC_VER\n    #define NJ_USE_WIN32 (!NJ_USE_LIBC)\n  #else\n    #define NJ_USE_WIN32 0\n  #endif\n#endif\n\n#ifndef NJ_CHROMA_FILTER\n    #define NJ_CHROMA_FILTER 1\n#endif\n\n\n///////////////////////////////////////////////////////////////////////////////\n// EXAMPLE PROGRAM                                                           //\n// just define _NJ_EXAMPLE_PROGRAM to compile this (requires NJ_USE_LIBC)    //\n///////////////////////////////////////////////////////////////////////////////\n\n#ifdef  _NJ_EXAMPLE_PROGRAM\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main(int argc, char* argv[]) {\n    int size;\n    char *buf;\n    FILE *f;\n\n    if (argc < 2) {\n        printf(\"Usage: %s <input.jpg> [<output.ppm>]\\n\", argv[0]);\n        return 2;\n    }\n    f = fopen(argv[1], \"rb\");\n    if (!f) {\n        printf(\"Error opening the input file.\\n\");\n        return 1;\n    }\n    fseek(f, 0, SEEK_END);\n    size = (int) ftell(f);\n    buf = (char*) malloc(size);\n    fseek(f, 0, SEEK_SET);\n    size = (int) fread(buf, 1, size, f);\n    fclose(f);\n\n    njInit();\n    if (njDecode(buf, size)) {\n        free((void*)buf);\n        printf(\"Error decoding the input file.\\n\");\n        return 1;\n    }\n    free((void*)buf);\n\n    f = fopen((argc > 2) ? argv[2] : (njIsColor() ? \"nanojpeg_out.ppm\" : \"nanojpeg_out.pgm\"), \"wb\");\n    if (!f) {\n        printf(\"Error opening the output file.\\n\");\n        return 1;\n    }\n    fprintf(f, \"P%d\\n%d %d\\n255\\n\", njIsColor() ? 6 : 5, njGetWidth(), njGetHeight());\n    fwrite(njGetImage(), 1, njGetImageSize(), f);\n    fclose(f);\n    njDone();\n    return 0;\n}\n\n#endif\n\n\n///////////////////////////////////////////////////////////////////////////////\n// IMPLEMENTATION SECTION                                                    //\n// you may stop reading here                                                 //\n///////////////////////////////////////////////////////////////////////////////\n\n#ifndef _NJ_INCLUDE_HEADER_ONLY\n\n#ifdef _MSC_VER\n    #define NJ_INLINE static __inline\n    #define NJ_FORCE_INLINE static __forceinline\n#else\n    #define NJ_INLINE static inline\n    #define NJ_FORCE_INLINE static inline\n#endif\n\n#if NJ_USE_LIBC\n    #include <stdlib.h>\n    #include <string.h>\n    #define njAllocMem malloc\n    #define njFreeMem  free\n    #define njFillMem  memset\n    #define njCopyMem  memcpy\n#elif NJ_USE_WIN32\n    #include <windows.h>\n    #define njAllocMem(size) ((void*) LocalAlloc(LMEM_FIXED, (SIZE_T)(size)))\n    #define njFreeMem(block) ((void) LocalFree((HLOCAL) block))\n    NJ_INLINE void njFillMem(void* block, unsigned char value, int count) { __asm {\n        mov edi, block\n        mov al, value\n        mov ecx, count\n        rep stosb\n    } }\n    NJ_INLINE void njCopyMem(void* dest, const void* src, int count) { __asm {\n        mov edi, dest\n        mov esi, src\n        mov ecx, count\n        rep movsb\n    } }\n#else\n    extern void* njAllocMem(int size);\n    extern void njFreeMem(void* block);\n    extern void njFillMem(void* block, unsigned char byte, int size);\n    extern void njCopyMem(void* dest, const void* src, int size);\n#endif\n\ntypedef struct _nj_code {\n    unsigned char bits, code;\n} nj_vlc_code_t;\n\ntypedef struct _nj_cmp {\n    int cid;\n    int ssx, ssy;\n    int width, height;\n    int stride;\n    int qtsel;\n    int actabsel, dctabsel;\n    int dcpred;\n    unsigned char *pixels;\n} nj_component_t;\n\ntypedef struct _nj_ctx {\n    nj_result_t error;\n    const unsigned char *pos;\n    int size;\n    int length;\n    int width, height;\n    int mbwidth, mbheight;\n    int mbsizex, mbsizey;\n    int ncomp;\n    nj_component_t comp[3];\n    int qtused, qtavail;\n    unsigned char qtab[4][64];\n    nj_vlc_code_t vlctab[4][65536];\n    int buf, bufbits;\n    int block[64];\n    int rstinterval;\n    unsigned char *rgb;\n} nj_context_t;\n\nstatic nj_context_t nj;\n\nstatic const char njZZ[64] = { 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18,\n11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35,\n42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45,\n38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63 };\n\nNJ_FORCE_INLINE unsigned char njClip(const int x) {\n    return (x < 0) ? 0 : ((x > 0xFF) ? 0xFF : (unsigned char) x);\n}\n\n#define W1 2841\n#define W2 2676\n#define W3 2408\n#define W5 1609\n#define W6 1108\n#define W7 565\n\nNJ_INLINE void njRowIDCT(int* blk) {\n    int x0, x1, x2, x3, x4, x5, x6, x7, x8;\n    if (!((x1 = blk[4] << 11)\n        | (x2 = blk[6])\n        | (x3 = blk[2])\n        | (x4 = blk[1])\n        | (x5 = blk[7])\n        | (x6 = blk[5])\n        | (x7 = blk[3])))\n    {\n        blk[0] = blk[1] = blk[2] = blk[3] = blk[4] = blk[5] = blk[6] = blk[7] = blk[0] << 3;\n        return;\n    }\n    x0 = (blk[0] << 11) + 128;\n    x8 = W7 * (x4 + x5);\n    x4 = x8 + (W1 - W7) * x4;\n    x5 = x8 - (W1 + W7) * x5;\n    x8 = W3 * (x6 + x7);\n    x6 = x8 - (W3 - W5) * x6;\n    x7 = x8 - (W3 + W5) * x7;\n    x8 = x0 + x1;\n    x0 -= x1;\n    x1 = W6 * (x3 + x2);\n    x2 = x1 - (W2 + W6) * x2;\n    x3 = x1 + (W2 - W6) * x3;\n    x1 = x4 + x6;\n    x4 -= x6;\n    x6 = x5 + x7;\n    x5 -= x7;\n    x7 = x8 + x3;\n    x8 -= x3;\n    x3 = x0 + x2;\n    x0 -= x2;\n    x2 = (181 * (x4 + x5) + 128) >> 8;\n    x4 = (181 * (x4 - x5) + 128) >> 8;\n    blk[0] = (x7 + x1) >> 8;\n    blk[1] = (x3 + x2) >> 8;\n    blk[2] = (x0 + x4) >> 8;\n    blk[3] = (x8 + x6) >> 8;\n    blk[4] = (x8 - x6) >> 8;\n    blk[5] = (x0 - x4) >> 8;\n    blk[6] = (x3 - x2) >> 8;\n    blk[7] = (x7 - x1) >> 8;\n}\n\nNJ_INLINE void njColIDCT(const int* blk, unsigned char *out, int stride) {\n    int x0, x1, x2, x3, x4, x5, x6, x7, x8;\n    if (!((x1 = blk[8*4] << 8)\n        | (x2 = blk[8*6])\n        | (x3 = blk[8*2])\n        | (x4 = blk[8*1])\n        | (x5 = blk[8*7])\n        | (x6 = blk[8*5])\n        | (x7 = blk[8*3])))\n    {\n        x1 = njClip(((blk[0] + 32) >> 6) + 128);\n        for (x0 = 8;  x0;  --x0) {\n            *out = (unsigned char) x1;\n            out += stride;\n        }\n        return;\n    }\n    x0 = (blk[0] << 8) + 8192;\n    x8 = W7 * (x4 + x5) + 4;\n    x4 = (x8 + (W1 - W7) * x4) >> 3;\n    x5 = (x8 - (W1 + W7) * x5) >> 3;\n    x8 = W3 * (x6 + x7) + 4;\n    x6 = (x8 - (W3 - W5) * x6) >> 3;\n    x7 = (x8 - (W3 + W5) * x7) >> 3;\n    x8 = x0 + x1;\n    x0 -= x1;\n    x1 = W6 * (x3 + x2) + 4;\n    x2 = (x1 - (W2 + W6) * x2) >> 3;\n    x3 = (x1 + (W2 - W6) * x3) >> 3;\n    x1 = x4 + x6;\n    x4 -= x6;\n    x6 = x5 + x7;\n    x5 -= x7;\n    x7 = x8 + x3;\n    x8 -= x3;\n    x3 = x0 + x2;\n    x0 -= x2;\n    x2 = (181 * (x4 + x5) + 128) >> 8;\n    x4 = (181 * (x4 - x5) + 128) >> 8;\n    *out = njClip(((x7 + x1) >> 14) + 128);  out += stride;\n    *out = njClip(((x3 + x2) >> 14) + 128);  out += stride;\n    *out = njClip(((x0 + x4) >> 14) + 128);  out += stride;\n    *out = njClip(((x8 + x6) >> 14) + 128);  out += stride;\n    *out = njClip(((x8 - x6) >> 14) + 128);  out += stride;\n    *out = njClip(((x0 - x4) >> 14) + 128);  out += stride;\n    *out = njClip(((x3 - x2) >> 14) + 128);  out += stride;\n    *out = njClip(((x7 - x1) >> 14) + 128);\n}\n\n#define njThrow(e) do { nj.error = e; return; } while (0)\n#define njCheckError() do { if (nj.error) return; } while (0)\n\nstatic int njShowBits(int bits) {\n    unsigned char newbyte;\n    if (!bits) return 0;\n    while (nj.bufbits < bits) {\n        if (nj.size <= 0) {\n            nj.buf = (nj.buf << 8) | 0xFF;\n            nj.bufbits += 8;\n            continue;\n        }\n        newbyte = *nj.pos++;\n        nj.size--;\n        nj.bufbits += 8;\n        nj.buf = (nj.buf << 8) | newbyte;\n        if (newbyte == 0xFF) {\n            if (nj.size) {\n                unsigned char marker = *nj.pos++;\n                nj.size--;\n                switch (marker) {\n                    case 0x00:\n                    case 0xFF:\n                        break;\n                    case 0xD9: nj.size = 0; break;\n                    default:\n                        if ((marker & 0xF8) != 0xD0)\n                            nj.error = NJ_SYNTAX_ERROR;\n                        else {\n                            nj.buf = (nj.buf << 8) | marker;\n                            nj.bufbits += 8;\n                        }\n                }\n            } else\n                nj.error = NJ_SYNTAX_ERROR;\n        }\n    }\n    return (nj.buf >> (nj.bufbits - bits)) & ((1 << bits) - 1);\n}\n\nNJ_INLINE void njSkipBits(int bits) {\n    if (nj.bufbits < bits)\n        (void) njShowBits(bits);\n    nj.bufbits -= bits;\n}\n\nNJ_INLINE int njGetBits(int bits) {\n    int res = njShowBits(bits);\n    njSkipBits(bits);\n    return res;\n}\n\nNJ_INLINE void njByteAlign(void) {\n    nj.bufbits &= 0xF8;\n}\n\nstatic void njSkip(int count) {\n    nj.pos += count;\n    nj.size -= count;\n    nj.length -= count;\n    if (nj.size < 0) nj.error = NJ_SYNTAX_ERROR;\n}\n\nNJ_INLINE unsigned short njDecode16(const unsigned char *pos) {\n    return (pos[0] << 8) | pos[1];\n}\n\nstatic void njDecodeLength(void) {\n    if (nj.size < 2) njThrow(NJ_SYNTAX_ERROR);\n    nj.length = njDecode16(nj.pos);\n    if (nj.length > nj.size) njThrow(NJ_SYNTAX_ERROR);\n    njSkip(2);\n}\n\nNJ_INLINE void njSkipMarker(void) {\n    njDecodeLength();\n    njSkip(nj.length);\n}\n\nNJ_INLINE void njDecodeSOF(void) {\n    int i, ssxmax = 0, ssymax = 0;\n    nj_component_t* c;\n    njDecodeLength();\n    njCheckError();\n    if (nj.length < 9) njThrow(NJ_SYNTAX_ERROR);\n    if (nj.pos[0] != 8) njThrow(NJ_UNSUPPORTED);\n    nj.height = njDecode16(nj.pos+1);\n    nj.width = njDecode16(nj.pos+3);\n    if (!nj.width || !nj.height) njThrow(NJ_SYNTAX_ERROR);\n    nj.ncomp = nj.pos[5];\n    njSkip(6);\n    switch (nj.ncomp) {\n        case 1:\n        case 3:\n            break;\n        default:\n            njThrow(NJ_UNSUPPORTED);\n    }\n    if (nj.length < (nj.ncomp * 3)) njThrow(NJ_SYNTAX_ERROR);\n    for (i = 0, c = nj.comp;  i < nj.ncomp;  ++i, ++c) {\n        c->cid = nj.pos[0];\n        if (!(c->ssx = nj.pos[1] >> 4)) njThrow(NJ_SYNTAX_ERROR);\n        if (c->ssx & (c->ssx - 1)) njThrow(NJ_UNSUPPORTED);  // non-power of two\n        if (!(c->ssy = nj.pos[1] & 15)) njThrow(NJ_SYNTAX_ERROR);\n        if (c->ssy & (c->ssy - 1)) njThrow(NJ_UNSUPPORTED);  // non-power of two\n        if ((c->qtsel = nj.pos[2]) & 0xFC) njThrow(NJ_SYNTAX_ERROR);\n        njSkip(3);\n        nj.qtused |= 1 << c->qtsel;\n        if (c->ssx > ssxmax) ssxmax = c->ssx;\n        if (c->ssy > ssymax) ssymax = c->ssy;\n    }\n    if (nj.ncomp == 1) {\n        c = nj.comp;\n        c->ssx = c->ssy = ssxmax = ssymax = 1;\n    }\n    nj.mbsizex = ssxmax << 3;\n    nj.mbsizey = ssymax << 3;\n    nj.mbwidth = (nj.width + nj.mbsizex - 1) / nj.mbsizex;\n    nj.mbheight = (nj.height + nj.mbsizey - 1) / nj.mbsizey;\n    for (i = 0, c = nj.comp;  i < nj.ncomp;  ++i, ++c) {\n        c->width = (nj.width * c->ssx + ssxmax - 1) / ssxmax;\n        c->height = (nj.height * c->ssy + ssymax - 1) / ssymax;\n        c->stride = nj.mbwidth * c->ssx << 3;\n        if (((c->width < 3) && (c->ssx != ssxmax)) || ((c->height < 3) && (c->ssy != ssymax))) njThrow(NJ_UNSUPPORTED);\n        if (!(c->pixels = (unsigned char*) njAllocMem(c->stride * nj.mbheight * c->ssy << 3))) njThrow(NJ_OUT_OF_MEM);\n    }\n    if (nj.ncomp == 3) {\n        nj.rgb = (unsigned char*) njAllocMem(nj.width * nj.height * nj.ncomp);\n        if (!nj.rgb) njThrow(NJ_OUT_OF_MEM);\n    }\n    njSkip(nj.length);\n}\n\nNJ_INLINE void njDecodeDHT(void) {\n    int codelen, currcnt, remain, spread, i, j;\n    nj_vlc_code_t *vlc;\n    static unsigned char counts[16];\n    njDecodeLength();\n    njCheckError();\n    while (nj.length >= 17) {\n        i = nj.pos[0];\n        if (i & 0xEC) njThrow(NJ_SYNTAX_ERROR);\n        if (i & 0x02) njThrow(NJ_UNSUPPORTED);\n        i = (i | (i >> 3)) & 3;  // combined DC/AC + tableid value\n        for (codelen = 1;  codelen <= 16;  ++codelen)\n            counts[codelen - 1] = nj.pos[codelen];\n        njSkip(17);\n        vlc = &nj.vlctab[i][0];\n        remain = spread = 65536;\n        for (codelen = 1;  codelen <= 16;  ++codelen) {\n            spread >>= 1;\n            currcnt = counts[codelen - 1];\n            if (!currcnt) continue;\n            if (nj.length < currcnt) njThrow(NJ_SYNTAX_ERROR);\n            remain -= currcnt << (16 - codelen);\n            if (remain < 0) njThrow(NJ_SYNTAX_ERROR);\n            for (i = 0;  i < currcnt;  ++i) {\n                register unsigned char code = nj.pos[i];\n                for (j = spread;  j;  --j) {\n                    vlc->bits = (unsigned char) codelen;\n                    vlc->code = code;\n                    ++vlc;\n                }\n            }\n            njSkip(currcnt);\n        }\n        while (remain--) {\n            vlc->bits = 0;\n            ++vlc;\n        }\n    }\n    if (nj.length) njThrow(NJ_SYNTAX_ERROR);\n}\n\nNJ_INLINE void njDecodeDQT(void) {\n    int i;\n    unsigned char *t;\n    njDecodeLength();\n    njCheckError();\n    while (nj.length >= 65) {\n        i = nj.pos[0];\n        if (i & 0xFC) njThrow(NJ_SYNTAX_ERROR);\n        nj.qtavail |= 1 << i;\n        t = &nj.qtab[i][0];\n        for (i = 0;  i < 64;  ++i)\n            t[i] = nj.pos[i + 1];\n        njSkip(65);\n    }\n    if (nj.length) njThrow(NJ_SYNTAX_ERROR);\n}\n\nNJ_INLINE void njDecodeDRI(void) {\n    njDecodeLength();\n    njCheckError();\n    if (nj.length < 2) njThrow(NJ_SYNTAX_ERROR);\n    nj.rstinterval = njDecode16(nj.pos);\n    njSkip(nj.length);\n}\n\nstatic int njGetVLC(nj_vlc_code_t* vlc, unsigned char* code) {\n    int value = njShowBits(16);\n    int bits = vlc[value].bits;\n    if (!bits) { nj.error = NJ_SYNTAX_ERROR; return 0; }\n    njSkipBits(bits);\n    value = vlc[value].code;\n    if (code) *code = (unsigned char) value;\n    bits = value & 15;\n    if (!bits) return 0;\n    value = njGetBits(bits);\n    if (value < (1 << (bits - 1)))\n        value += ((-1) << bits) + 1;\n    return value;\n}\n\nNJ_INLINE void njDecodeBlock(nj_component_t* c, unsigned char* out) {\n    unsigned char code = 0;\n    int value, coef = 0;\n    njFillMem(nj.block, 0, sizeof(nj.block));\n    c->dcpred += njGetVLC(&nj.vlctab[c->dctabsel][0], NULL);\n    nj.block[0] = (c->dcpred) * nj.qtab[c->qtsel][0];\n    do {\n        value = njGetVLC(&nj.vlctab[c->actabsel][0], &code);\n        if (!code) break;  // EOB\n        if (!(code & 0x0F) && (code != 0xF0)) njThrow(NJ_SYNTAX_ERROR);\n        coef += (code >> 4) + 1;\n        if (coef > 63) njThrow(NJ_SYNTAX_ERROR);\n        nj.block[(int) njZZ[coef]] = value * nj.qtab[c->qtsel][coef];\n    } while (coef < 63);\n    for (coef = 0;  coef < 64;  coef += 8)\n        njRowIDCT(&nj.block[coef]);\n    for (coef = 0;  coef < 8;  ++coef)\n        njColIDCT(&nj.block[coef], &out[coef], c->stride);\n}\n\nNJ_INLINE void njDecodeScan(void) {\n    int i, mbx, mby, sbx, sby;\n    int rstcount = nj.rstinterval, nextrst = 0;\n    nj_component_t* c;\n    njDecodeLength();\n    njCheckError();\n    if (nj.length < (4 + 2 * nj.ncomp)) njThrow(NJ_SYNTAX_ERROR);\n    if (nj.pos[0] != nj.ncomp) njThrow(NJ_UNSUPPORTED);\n    njSkip(1);\n    for (i = 0, c = nj.comp;  i < nj.ncomp;  ++i, ++c) {\n        if (nj.pos[0] != c->cid) njThrow(NJ_SYNTAX_ERROR);\n        if (nj.pos[1] & 0xEE) njThrow(NJ_SYNTAX_ERROR);\n        c->dctabsel = nj.pos[1] >> 4;\n        c->actabsel = (nj.pos[1] & 1) | 2;\n        njSkip(2);\n    }\n    if (nj.pos[0] || (nj.pos[1] != 63) || nj.pos[2]) njThrow(NJ_UNSUPPORTED);\n    njSkip(nj.length);\n    for (mbx = mby = 0;;) {\n        for (i = 0, c = nj.comp;  i < nj.ncomp;  ++i, ++c)\n            for (sby = 0;  sby < c->ssy;  ++sby)\n                for (sbx = 0;  sbx < c->ssx;  ++sbx) {\n                    njDecodeBlock(c, &c->pixels[((mby * c->ssy + sby) * c->stride + mbx * c->ssx + sbx) << 3]);\n                    njCheckError();\n                }\n        if (++mbx >= nj.mbwidth) {\n            mbx = 0;\n            if (++mby >= nj.mbheight) break;\n        }\n        if (nj.rstinterval && !(--rstcount)) {\n            njByteAlign();\n            i = njGetBits(16);\n            if (((i & 0xFFF8) != 0xFFD0) || ((i & 7) != nextrst)) njThrow(NJ_SYNTAX_ERROR);\n            nextrst = (nextrst + 1) & 7;\n            rstcount = nj.rstinterval;\n            for (i = 0;  i < 3;  ++i)\n                nj.comp[i].dcpred = 0;\n        }\n    }\n    nj.error = __NJ_FINISHED;\n}\n\n#if NJ_CHROMA_FILTER\n\n#define CF4A (-9)\n#define CF4B (111)\n#define CF4C (29)\n#define CF4D (-3)\n#define CF3A (28)\n#define CF3B (109)\n#define CF3C (-9)\n#define CF3X (104)\n#define CF3Y (27)\n#define CF3Z (-3)\n#define CF2A (139)\n#define CF2B (-11)\n#define CF(x) njClip(((x) + 64) >> 7)\n\nNJ_INLINE void njUpsampleH(nj_component_t* c) {\n    const int xmax = c->width - 3;\n    unsigned char *out, *lin, *lout;\n    int x, y;\n    out = (unsigned char*) njAllocMem((c->width * c->height) << 1);\n    if (!out) njThrow(NJ_OUT_OF_MEM);\n    lin = c->pixels;\n    lout = out;\n    for (y = c->height;  y;  --y) {\n        lout[0] = CF(CF2A * lin[0] + CF2B * lin[1]);\n        lout[1] = CF(CF3X * lin[0] + CF3Y * lin[1] + CF3Z * lin[2]);\n        lout[2] = CF(CF3A * lin[0] + CF3B * lin[1] + CF3C * lin[2]);\n        for (x = 0;  x < xmax;  ++x) {\n            lout[(x << 1) + 3] = CF(CF4A * lin[x] + CF4B * lin[x + 1] + CF4C * lin[x + 2] + CF4D * lin[x + 3]);\n            lout[(x << 1) + 4] = CF(CF4D * lin[x] + CF4C * lin[x + 1] + CF4B * lin[x + 2] + CF4A * lin[x + 3]);\n        }\n        lin += c->stride;\n        lout += c->width << 1;\n        lout[-3] = CF(CF3A * lin[-1] + CF3B * lin[-2] + CF3C * lin[-3]);\n        lout[-2] = CF(CF3X * lin[-1] + CF3Y * lin[-2] + CF3Z * lin[-3]);\n        lout[-1] = CF(CF2A * lin[-1] + CF2B * lin[-2]);\n    }\n    c->width <<= 1;\n    c->stride = c->width;\n    njFreeMem((void*)c->pixels);\n    c->pixels = out;\n}\n\nNJ_INLINE void njUpsampleV(nj_component_t* c) {\n    const int w = c->width, s1 = c->stride, s2 = s1 + s1;\n    unsigned char *out, *cin, *cout;\n    int x, y;\n    out = (unsigned char*) njAllocMem((c->width * c->height) << 1);\n    if (!out) njThrow(NJ_OUT_OF_MEM);\n    for (x = 0;  x < w;  ++x) {\n        cin = &c->pixels[x];\n        cout = &out[x];\n        *cout = CF(CF2A * cin[0] + CF2B * cin[s1]);  cout += w;\n        *cout = CF(CF3X * cin[0] + CF3Y * cin[s1] + CF3Z * cin[s2]);  cout += w;\n        *cout = CF(CF3A * cin[0] + CF3B * cin[s1] + CF3C * cin[s2]);  cout += w;\n        cin += s1;\n        for (y = c->height - 3;  y;  --y) {\n            *cout = CF(CF4A * cin[-s1] + CF4B * cin[0] + CF4C * cin[s1] + CF4D * cin[s2]);  cout += w;\n            *cout = CF(CF4D * cin[-s1] + CF4C * cin[0] + CF4B * cin[s1] + CF4A * cin[s2]);  cout += w;\n            cin += s1;\n        }\n        cin += s1;\n        *cout = CF(CF3A * cin[0] + CF3B * cin[-s1] + CF3C * cin[-s2]);  cout += w;\n        *cout = CF(CF3X * cin[0] + CF3Y * cin[-s1] + CF3Z * cin[-s2]);  cout += w;\n        *cout = CF(CF2A * cin[0] + CF2B * cin[-s1]);\n    }\n    c->height <<= 1;\n    c->stride = c->width;\n    njFreeMem((void*) c->pixels);\n    c->pixels = out;\n}\n\n#else\n\nNJ_INLINE void njUpsample(nj_component_t* c) {\n    int x, y, xshift = 0, yshift = 0;\n    unsigned char *out, *lin, *lout;\n    while (c->width < nj.width) { c->width <<= 1; ++xshift; }\n    while (c->height < nj.height) { c->height <<= 1; ++yshift; }\n    out = (unsigned char*) njAllocMem(c->width * c->height);\n    if (!out) njThrow(NJ_OUT_OF_MEM);\n    lin = c->pixels;\n    lout = out;\n    for (y = 0;  y < c->height;  ++y) {\n        lin = &c->pixels[(y >> yshift) * c->stride];\n        for (x = 0;  x < c->width;  ++x)\n            lout[x] = lin[x >> xshift];\n        lout += c->width;\n    }\n    c->stride = c->width;\n    njFreeMem((void*) c->pixels);\n    c->pixels = out;\n}\n\n#endif\n\nNJ_INLINE void njConvert(void) {\n    int i;\n    nj_component_t* c;\n    for (i = 0, c = nj.comp;  i < nj.ncomp;  ++i, ++c) {\n        #if NJ_CHROMA_FILTER\n            while ((c->width < nj.width) || (c->height < nj.height)) {\n                if (c->width < nj.width) njUpsampleH(c);\n                njCheckError();\n                if (c->height < nj.height) njUpsampleV(c);\n                njCheckError();\n            }\n        #else\n            if ((c->width < nj.width) || (c->height < nj.height))\n                njUpsample(c);\n        #endif\n        if ((c->width < nj.width) || (c->height < nj.height)) njThrow(NJ_INTERNAL_ERR);\n    }\n    if (nj.ncomp == 3) {\n        // convert to RGB\n        int x, yy;\n        unsigned char *prgb = nj.rgb;\n        const unsigned char *py  = nj.comp[0].pixels;\n        const unsigned char *pcb = nj.comp[1].pixels;\n        const unsigned char *pcr = nj.comp[2].pixels;\n        for (yy = nj.height;  yy;  --yy) {\n            for (x = 0;  x < nj.width;  ++x) {\n                register int y = py[x] << 8;\n                register int cb = pcb[x] - 128;\n                register int cr = pcr[x] - 128;\n                *prgb++ = njClip((y            + 359 * cr + 128) >> 8);\n                *prgb++ = njClip((y -  88 * cb - 183 * cr + 128) >> 8);\n                *prgb++ = njClip((y + 454 * cb            + 128) >> 8);\n            }\n            py += nj.comp[0].stride;\n            pcb += nj.comp[1].stride;\n            pcr += nj.comp[2].stride;\n        }\n    } else if (nj.comp[0].width != nj.comp[0].stride) {\n        // grayscale -> only remove stride\n        unsigned char *pin = &nj.comp[0].pixels[nj.comp[0].stride];\n        unsigned char *pout = &nj.comp[0].pixels[nj.comp[0].width];\n        int y;\n        for (y = nj.comp[0].height - 1;  y;  --y) {\n            njCopyMem(pout, pin, nj.comp[0].width);\n            pin += nj.comp[0].stride;\n            pout += nj.comp[0].width;\n        }\n        nj.comp[0].stride = nj.comp[0].width;\n    }\n}\n\nvoid njInit(void) {\n    njFillMem(&nj, 0, sizeof(nj_context_t));\n}\n\nvoid njDone(void) {\n    int i;\n    for (i = 0;  i < 3;  ++i)\n        if (nj.comp[i].pixels) njFreeMem((void*) nj.comp[i].pixels);\n    if (nj.rgb) njFreeMem((void*) nj.rgb);\n    njInit();\n}\n\nnj_result_t njDecode(const void* jpeg, const int size) {\n    njDone();\n    nj.pos = (const unsigned char*) jpeg;\n    nj.size = size & 0x7FFFFFFF;\n    if (nj.size < 2) return NJ_NO_JPEG;\n    if ((nj.pos[0] ^ 0xFF) | (nj.pos[1] ^ 0xD8)) return NJ_NO_JPEG;\n    njSkip(2);\n    while (!nj.error) {\n        if ((nj.size < 2) || (nj.pos[0] != 0xFF)) return NJ_SYNTAX_ERROR;\n        njSkip(2);\n        switch (nj.pos[-1]) {\n            case 0xC0: njDecodeSOF();  break;\n            case 0xC4: njDecodeDHT();  break;\n            case 0xDB: njDecodeDQT();  break;\n            case 0xDD: njDecodeDRI();  break;\n            case 0xDA: njDecodeScan(); break;\n            case 0xFE: njSkipMarker(); break;\n            default:\n                if ((nj.pos[-1] & 0xF0) == 0xE0)\n                    njSkipMarker();\n                else\n                    return NJ_UNSUPPORTED;\n        }\n    }\n    if (nj.error != __NJ_FINISHED) return nj.error;\n    nj.error = NJ_OK;\n    njConvert();\n    return nj.error;\n}\n\nint njGetWidth(void)            { return nj.width; }\nint njGetHeight(void)           { return nj.height; }\nint njIsColor(void)             { return (nj.ncomp != 1); }\nunsigned char* njGetImage(void) { return (nj.ncomp == 1) ? nj.comp[0].pixels : nj.rgb; }\nint njGetImageSize(void)        { return nj.width * nj.height * nj.ncomp; }\n\n#endif // _NJ_INCLUDE_HEADER_ONLY\n"
  },
  {
    "path": "src/stb/stb_image.h",
    "content": "/* stb_image - v2.27 - public domain image loader - http://nothings.org/stb\n                                  no warranty implied; use at your own risk\n\n   Do this:\n      #define STB_IMAGE_IMPLEMENTATION\n   before you include this file in *one* C or C++ file to create the implementation.\n\n   // i.e. it should look like this:\n   #include ...\n   #include ...\n   #include ...\n   #define STB_IMAGE_IMPLEMENTATION\n   #include \"stb_image.h\"\n\n   You can #define STBI_ASSERT(x) before the #include to avoid using assert.h.\n   And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free\n\n\n   QUICK NOTES:\n      Primarily of interest to game developers and other people who can\n          avoid problematic images and only need the trivial interface\n\n      JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib)\n      PNG 1/2/4/8/16-bit-per-channel\n\n      TGA (not sure what subset, if a subset)\n      BMP non-1bpp, non-RLE\n      PSD (composited view only, no extra channels, 8/16 bit-per-channel)\n\n      GIF (*comp always reports as 4-channel)\n      HDR (radiance rgbE format)\n      PIC (Softimage PIC)\n      PNM (PPM and PGM binary only)\n\n      Animated GIF still needs a proper API, but here's one way to do it:\n          http://gist.github.com/urraka/685d9a6340b26b830d49\n\n      - decode from memory or through FILE (define STBI_NO_STDIO to remove code)\n      - decode from arbitrary I/O callbacks\n      - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON)\n\n   Full documentation under \"DOCUMENTATION\" below.\n\n\nLICENSE\n\n  See end of file for license information.\n\nRECENT REVISION HISTORY:\n\n      2.27  (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes\n      2.26  (2020-07-13) many minor fixes\n      2.25  (2020-02-02) fix warnings\n      2.24  (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically\n      2.23  (2019-08-11) fix clang static analysis warning\n      2.22  (2019-03-04) gif fixes, fix warnings\n      2.21  (2019-02-25) fix typo in comment\n      2.20  (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings\n      2.16  (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes\n      2.15  (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-12-04) experimental 16-bit API, only for PNG so far; fixes\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64\n                         RGB-format JPEG; remove white matting in PSD;\n                         allocate large structures on the stack;\n                         correct channel count for PNG & BMP\n      2.10  (2016-01-22) avoid warning introduced in 2.09\n      2.09  (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED\n\n   See end of file for full revision history.\n\n\n ============================    Contributors    =========================\n\n Image formats                          Extensions, features\n    Sean Barrett (jpeg, png, bmp)          Jetro Lauha (stbi_info)\n    Nicolas Schulz (hdr, psd)              Martin \"SpartanJ\" Golini (stbi_info)\n    Jonathan Dummer (tga)                  James \"moose2000\" Brown (iPhone PNG)\n    Jean-Marc Lienher (gif)                Ben \"Disch\" Wenger (io callbacks)\n    Tom Seddon (pic)                       Omar Cornut (1/2/4-bit PNG)\n    Thatcher Ulrich (psd)                  Nicolas Guillemot (vertical flip)\n    Ken Miller (pgm, ppm)                  Richard Mitton (16-bit PSD)\n    github:urraka (animated gif)           Junggon Kim (PNM comments)\n    Christopher Forseth (animated gif)     Daniel Gibson (16-bit TGA)\n                                           socks-the-fox (16-bit PNG)\n                                           Jeremy Sawicki (handle all ImageNet JPGs)\n Optimizations & bugfixes                  Mikhail Morozov (1-bit BMP)\n    Fabian \"ryg\" Giesen                    Anael Seghezzi (is-16-bit query)\n    Arseny Kapoulkine                      Simon Breuss (16-bit PNM)\n    John-Mark Allen\n    Carmelo J Fdez-Aguera\n\n Bug & warning fixes\n    Marc LeBlanc            David Woo          Guillaume George     Martins Mozeiko\n    Christpher Lloyd        Jerry Jansson      Joseph Thomson       Blazej Dariusz Roszkowski\n    Phil Jordan                                Dave Moore           Roy Eltham\n    Hayaki Saito            Nathan Reed        Won Chun\n    Luke Graham             Johan Duparc       Nick Verigakis       the Horde3D community\n    Thomas Ruf              Ronny Chevalier                         github:rlyeh\n    Janez Zemva             John Bartholomew   Michal Cichon        github:romigrou\n    Jonathan Blow           Ken Hamada         Tero Hanninen        github:svdijk\n    Eugene Golushkov        Laurent Gomila     Cort Stratton        github:snagar\n    Aruelien Pocheville     Sergio Gonzalez    Thibault Reuille     github:Zelex\n    Cass Everitt            Ryamond Barbiero                        github:grim210\n    Paul Du Bois            Engin Manap        Aldo Culquicondor    github:sammyhw\n    Philipp Wiesemann       Dale Weiler        Oriol Ferrer Mesia   github:phprus\n    Josh Tobin                                 Matthew Gregan       github:poppolopoppo\n    Julian Raschke          Gregory Mullen     Christian Floisand   github:darealshinji\n    Baldur Karlsson         Kevin Schmidt      JR Smith             github:Michaelangel007\n                            Brad Weinberger    Matvey Cherevko      github:mosra\n    Luca Sas                Alexander Veselov  Zack Middleton       [reserved]\n    Ryan C. Gordon          [reserved]                              [reserved]\n                     DO NOT ADD YOUR NAME HERE\n\n                     Jacko Dirks\n\n  To add your name to the credits, pick a random blank space in the middle and fill it.\n  80% of merge conflicts on stb PRs are due to people adding their name at the end\n  of the credits.\n*/\n\n#ifndef STBI_INCLUDE_STB_IMAGE_H\n#define STBI_INCLUDE_STB_IMAGE_H\n\n// DOCUMENTATION\n//\n// Limitations:\n//    - no 12-bit-per-channel JPEG\n//    - no JPEGs with arithmetic coding\n//    - GIF always returns *comp=4\n//\n// Basic usage (see HDR discussion below for HDR usage):\n//    int x,y,n;\n//    unsigned char *data = stbi_load(filename, &x, &y, &n, 0);\n//    // ... process data if not NULL ...\n//    // ... x = width, y = height, n = # 8-bit components per pixel ...\n//    // ... replace '0' with '1'..'4' to force that many components per pixel\n//    // ... but 'n' will always be the number that it would have been if you said 0\n//    stbi_image_free(data)\n//\n// Standard parameters:\n//    int *x                 -- outputs image width in pixels\n//    int *y                 -- outputs image height in pixels\n//    int *channels_in_file  -- outputs # of image components in image file\n//    int desired_channels   -- if non-zero, # of image components requested in result\n//\n// The return value from an image loader is an 'unsigned char *' which points\n// to the pixel data, or NULL on an allocation failure or if the image is\n// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels,\n// with each pixel consisting of N interleaved 8-bit components; the first\n// pixel pointed to is top-left-most in the image. There is no padding between\n// image scanlines or between pixels, regardless of format. The number of\n// components N is 'desired_channels' if desired_channels is non-zero, or\n// *channels_in_file otherwise. If desired_channels is non-zero,\n// *channels_in_file has the number of components that _would_ have been\n// output otherwise. E.g. if you set desired_channels to 4, you will always\n// get RGBA output, but you can check *channels_in_file to see if it's trivially\n// opaque because e.g. there were only 3 channels in the source image.\n//\n// An output image with N components has the following components interleaved\n// in this order in each pixel:\n//\n//     N=#comp     components\n//       1           grey\n//       2           grey, alpha\n//       3           red, green, blue\n//       4           red, green, blue, alpha\n//\n// If image loading fails for any reason, the return value will be NULL,\n// and *x, *y, *channels_in_file will be unchanged. The function\n// stbi_failure_reason() can be queried for an extremely brief, end-user\n// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS\n// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly\n// more user-friendly ones.\n//\n// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized.\n//\n// To query the width, height and component count of an image without having to\n// decode the full file, you can use the stbi_info family of functions:\n//\n//   int x,y,n,ok;\n//   ok = stbi_info(filename, &x, &y, &n);\n//   // returns ok=1 and sets x, y, n if image is a supported format,\n//   // 0 otherwise.\n//\n// Note that stb_image pervasively uses ints in its public API for sizes,\n// including sizes of memory buffers. This is now part of the API and thus\n// hard to change without causing breakage. As a result, the various image\n// loaders all have certain limits on image size; these differ somewhat\n// by format but generally boil down to either just under 2GB or just under\n// 1GB. When the decoded image would be larger than this, stb_image decoding\n// will fail.\n//\n// Additionally, stb_image will reject image files that have any of their\n// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS,\n// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit,\n// the only way to have an image with such dimensions load correctly\n// is for it to have a rather extreme aspect ratio. Either way, the\n// assumption here is that such larger images are likely to be malformed\n// or malicious. If you do need to load an image with individual dimensions\n// larger than that, and it still fits in the overall size limit, you can\n// #define STBI_MAX_DIMENSIONS on your own to be something larger.\n//\n// ===========================================================================\n//\n// UNICODE:\n//\n//   If compiling for Windows and you wish to use Unicode filenames, compile\n//   with\n//       #define STBI_WINDOWS_UTF8\n//   and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert\n//   Windows wchar_t filenames to utf8.\n//\n// ===========================================================================\n//\n// Philosophy\n//\n// stb libraries are designed with the following priorities:\n//\n//    1. easy to use\n//    2. easy to maintain\n//    3. good performance\n//\n// Sometimes I let \"good performance\" creep up in priority over \"easy to maintain\",\n// and for best performance I may provide less-easy-to-use APIs that give higher\n// performance, in addition to the easy-to-use ones. Nevertheless, it's important\n// to keep in mind that from the standpoint of you, a client of this library,\n// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all.\n//\n// Some secondary priorities arise directly from the first two, some of which\n// provide more explicit reasons why performance can't be emphasized.\n//\n//    - Portable (\"ease of use\")\n//    - Small source code footprint (\"easy to maintain\")\n//    - No dependencies (\"ease of use\")\n//\n// ===========================================================================\n//\n// I/O callbacks\n//\n// I/O callbacks allow you to read from arbitrary sources, like packaged\n// files or some other source. Data read from callbacks are processed\n// through a small internal buffer (currently 128 bytes) to try to reduce\n// overhead.\n//\n// The three functions you must define are \"read\" (reads some bytes of data),\n// \"skip\" (skips some bytes of data), \"eof\" (reports if the stream is at the end).\n//\n// ===========================================================================\n//\n// SIMD support\n//\n// The JPEG decoder will try to automatically use SIMD kernels on x86 when\n// supported by the compiler. For ARM Neon support, you must explicitly\n// request it.\n//\n// (The old do-it-yourself SIMD API is no longer supported in the current\n// code.)\n//\n// On x86, SSE2 will automatically be used when available based on a run-time\n// test; if not, the generic C versions are used as a fall-back. On ARM targets,\n// the typical path is to have separate builds for NEON and non-NEON devices\n// (at least this is true for iOS and Android). Therefore, the NEON support is\n// toggled by a build flag: define STBI_NEON to get NEON loops.\n//\n// If for some reason you do not want to use any of SIMD code, or if\n// you have issues compiling it, you can disable it entirely by\n// defining STBI_NO_SIMD.\n//\n// ===========================================================================\n//\n// HDR image support   (disable by defining STBI_NO_HDR)\n//\n// stb_image supports loading HDR images in general, and currently the Radiance\n// .HDR file format specifically. You can still load any file through the existing\n// interface; if you attempt to load an HDR file, it will be automatically remapped\n// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1;\n// both of these constants can be reconfigured through this interface:\n//\n//     stbi_hdr_to_ldr_gamma(2.2f);\n//     stbi_hdr_to_ldr_scale(1.0f);\n//\n// (note, do not use _inverse_ constants; stbi_image will invert them\n// appropriately).\n//\n// Additionally, there is a new, parallel interface for loading files as\n// (linear) floats to preserve the full dynamic range:\n//\n//    float *data = stbi_loadf(filename, &x, &y, &n, 0);\n//\n// If you load LDR images through this interface, those images will\n// be promoted to floating point values, run through the inverse of\n// constants corresponding to the above:\n//\n//     stbi_ldr_to_hdr_scale(1.0f);\n//     stbi_ldr_to_hdr_gamma(2.2f);\n//\n// Finally, given a filename (or an open file or memory block--see header\n// file for details) containing image data, you can query for the \"most\n// appropriate\" interface to use (that is, whether the image is HDR or\n// not), using:\n//\n//     stbi_is_hdr(char *filename);\n//\n// ===========================================================================\n//\n// iPhone PNG support:\n//\n// We optionally support converting iPhone-formatted PNGs (which store\n// premultiplied BGRA) back to RGB, even though they're internally encoded\n// differently. To enable this conversion, call\n// stbi_convert_iphone_png_to_rgb(1).\n//\n// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per\n// pixel to remove any premultiplied alpha *only* if the image file explicitly\n// says there's premultiplied data (currently only happens in iPhone images,\n// and only if iPhone convert-to-rgb processing is on).\n//\n// ===========================================================================\n//\n// ADDITIONAL CONFIGURATION\n//\n//  - You can suppress implementation of any of the decoders to reduce\n//    your code footprint by #defining one or more of the following\n//    symbols before creating the implementation.\n//\n//        STBI_NO_JPEG\n//        STBI_NO_PNG\n//        STBI_NO_BMP\n//        STBI_NO_PSD\n//        STBI_NO_TGA\n//        STBI_NO_GIF\n//        STBI_NO_HDR\n//        STBI_NO_PIC\n//        STBI_NO_PNM   (.ppm and .pgm)\n//\n//  - You can request *only* certain decoders and suppress all other ones\n//    (this will be more forward-compatible, as addition of new decoders\n//    doesn't require you to disable them explicitly):\n//\n//        STBI_ONLY_JPEG\n//        STBI_ONLY_PNG\n//        STBI_ONLY_BMP\n//        STBI_ONLY_PSD\n//        STBI_ONLY_TGA\n//        STBI_ONLY_GIF\n//        STBI_ONLY_HDR\n//        STBI_ONLY_PIC\n//        STBI_ONLY_PNM   (.ppm and .pgm)\n//\n//   - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still\n//     want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB\n//\n//  - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater\n//    than that size (in either width or height) without further processing.\n//    This is to let programs in the wild set an upper bound to prevent\n//    denial-of-service attacks on untrusted data, as one could generate a\n//    valid image of gigantic dimensions and force stb_image to allocate a\n//    huge block of memory and spend disproportionate time decoding it. By\n//    default this is set to (1 << 24), which is 16777216, but that's still\n//    very big.\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif // STBI_NO_STDIO\n\n#define STBI_VERSION 1\n\nenum\n{\n   STBI_default = 0, // only used for desired_channels\n\n   STBI_grey       = 1,\n   STBI_grey_alpha = 2,\n   STBI_rgb        = 3,\n   STBI_rgb_alpha  = 4\n};\n\n#include <stdlib.h>\ntypedef unsigned char stbi_uc;\ntypedef unsigned short stbi_us;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef STBIDEF\n#ifdef STB_IMAGE_STATIC\n#define STBIDEF static\n#else\n#define STBIDEF extern\n#endif\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// PRIMARY API - works on images of any type\n//\n\n//\n// load image by filename, open file, or memory buffer\n//\n\ntypedef struct\n{\n   int      (*read)  (void *user,char *data,int size);   // fill 'data' with 'size' bytes.  return number of bytes actually read\n   void     (*skip)  (void *user,int n);                 // skip the next 'n' bytes, or 'unget' the last -n bytes if negative\n   int      (*eof)   (void *user);                       // returns nonzero if we are at end of file/data\n} stbi_io_callbacks;\n\n////////////////////////////////////\n//\n// 8-bits-per-channel interface\n//\n\nSTBIDEF stbi_uc *stbi_load_from_memory   (stbi_uc           const *buffer, int len   , int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk  , void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_uc *stbi_load            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n// for stbi_load_from_file, file pointer is left pointing immediately after image\n#endif\n\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\n#endif\n\n#ifdef STBI_WINDOWS_UTF8\nSTBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input);\n#endif\n\n////////////////////////////////////\n//\n// 16-bits-per-channel interface\n//\n\nSTBIDEF stbi_us *stbi_load_16_from_memory   (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_us *stbi_load_16          (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n#endif\n\n////////////////////////////////////\n//\n// float-per-channel interface\n//\n#ifndef STBI_NO_LINEAR\n   STBIDEF float *stbi_loadf_from_memory     (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_callbacks  (stbi_io_callbacks const *clbk, void *user, int *x, int *y,  int *channels_in_file, int desired_channels);\n\n   #ifndef STBI_NO_STDIO\n   STBIDEF float *stbi_loadf            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n   #endif\n#endif\n\n#ifndef STBI_NO_HDR\n   STBIDEF void   stbi_hdr_to_ldr_gamma(float gamma);\n   STBIDEF void   stbi_hdr_to_ldr_scale(float scale);\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_LINEAR\n   STBIDEF void   stbi_ldr_to_hdr_gamma(float gamma);\n   STBIDEF void   stbi_ldr_to_hdr_scale(float scale);\n#endif // STBI_NO_LINEAR\n\n// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR\nSTBIDEF int    stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user);\nSTBIDEF int    stbi_is_hdr_from_memory(stbi_uc const *buffer, int len);\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename);\nSTBIDEF int      stbi_is_hdr_from_file(FILE *f);\n#endif // STBI_NO_STDIO\n\n\n// get a VERY brief reason for failure\n// on most compilers (and ALL modern mainstream compilers) this is threadsafe\nSTBIDEF const char *stbi_failure_reason  (void);\n\n// free the loaded image -- this is just free()\nSTBIDEF void     stbi_image_free      (void *retval_from_stbi_load);\n\n// get image dimensions & components without fully decoding\nSTBIDEF int      stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len);\nSTBIDEF int      stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_info               (char const *filename,     int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_file     (FILE *f,                  int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit          (char const *filename);\nSTBIDEF int      stbi_is_16_bit_from_file(FILE *f);\n#endif\n\n\n\n// for image formats that explicitly notate that they have premultiplied alpha,\n// we just return the colors as stored in the file. set this flag to force\n// unpremultiplication. results are undefined if the unpremultiply overflow.\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply);\n\n// indicate whether we should process iphone images back to canonical format,\n// or just pass them through \"as-is\"\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert);\n\n// flip the image vertically, so the first pixel in the output array is the bottom left\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip);\n\n// as above, but only applies to images loaded on the thread that calls the function\n// this function is only available if your compiler supports thread-local variables;\n// calling it will fail to link if your compiler doesn't\nSTBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply);\nSTBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert);\nSTBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip);\n\n// ZLIB client - used by PNG, available for other purposes\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen);\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header);\nSTBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n//\n//\n////   end header file   /////////////////////////////////////////////////////\n#endif // STBI_INCLUDE_STB_IMAGE_H\n\n#ifdef STB_IMAGE_IMPLEMENTATION\n\n#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \\\n  || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \\\n  || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \\\n  || defined(STBI_ONLY_ZLIB)\n   #ifndef STBI_ONLY_JPEG\n   #define STBI_NO_JPEG\n   #endif\n   #ifndef STBI_ONLY_PNG\n   #define STBI_NO_PNG\n   #endif\n   #ifndef STBI_ONLY_BMP\n   #define STBI_NO_BMP\n   #endif\n   #ifndef STBI_ONLY_PSD\n   #define STBI_NO_PSD\n   #endif\n   #ifndef STBI_ONLY_TGA\n   #define STBI_NO_TGA\n   #endif\n   #ifndef STBI_ONLY_GIF\n   #define STBI_NO_GIF\n   #endif\n   #ifndef STBI_ONLY_HDR\n   #define STBI_NO_HDR\n   #endif\n   #ifndef STBI_ONLY_PIC\n   #define STBI_NO_PIC\n   #endif\n   #ifndef STBI_ONLY_PNM\n   #define STBI_NO_PNM\n   #endif\n#endif\n\n#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB)\n#define STBI_NO_ZLIB\n#endif\n\n\n#include <stdarg.h>\n#include <stddef.h> // ptrdiff_t on osx\n#include <stdlib.h>\n#include <string.h>\n#include <limits.h>\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\n#include <math.h>  // ldexp, pow\n#endif\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif\n\n#ifndef STBI_ASSERT\n#include <assert.h>\n#define STBI_ASSERT(x) assert(x)\n#endif\n\n#ifdef __cplusplus\n#define STBI_EXTERN extern \"C\"\n#else\n#define STBI_EXTERN extern\n#endif\n\n\n#ifndef _MSC_VER\n   #ifdef __cplusplus\n   #define stbi_inline inline\n   #else\n   #define stbi_inline\n   #endif\n#else\n   #define stbi_inline __forceinline\n#endif\n\n#ifndef STBI_NO_THREAD_LOCALS\n   #if defined(__cplusplus) &&  __cplusplus >= 201103L\n      #define STBI_THREAD_LOCAL       thread_local\n   #elif defined(__GNUC__) && __GNUC__ < 5\n      #define STBI_THREAD_LOCAL       __thread\n   #elif defined(_MSC_VER)\n      #define STBI_THREAD_LOCAL       __declspec(thread)\n   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__)\n      #define STBI_THREAD_LOCAL       _Thread_local\n   #endif\n\n   #ifndef STBI_THREAD_LOCAL\n      #if defined(__GNUC__)\n        #define STBI_THREAD_LOCAL       __thread\n      #endif\n   #endif\n#endif\n\n#ifdef _MSC_VER\ntypedef unsigned short stbi__uint16;\ntypedef   signed short stbi__int16;\ntypedef unsigned int   stbi__uint32;\ntypedef   signed int   stbi__int32;\n#else\n#include <stdint.h>\ntypedef uint16_t stbi__uint16;\ntypedef int16_t  stbi__int16;\ntypedef uint32_t stbi__uint32;\ntypedef int32_t  stbi__int32;\n#endif\n\n// should produce compiler error if size is wrong\ntypedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1];\n\n#ifdef _MSC_VER\n#define STBI_NOTUSED(v)  (void)(v)\n#else\n#define STBI_NOTUSED(v)  (void)sizeof(v)\n#endif\n\n#ifdef _MSC_VER\n#define STBI_HAS_LROTL\n#endif\n\n#ifdef STBI_HAS_LROTL\n   #define stbi_lrot(x,y)  _lrotl(x,y)\n#else\n   #define stbi_lrot(x,y)  (((x) << (y)) | ((x) >> (-(y) & 31)))\n#endif\n\n#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED))\n// ok\n#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED).\"\n#endif\n\n#ifndef STBI_MALLOC\n#define STBI_MALLOC(sz)           malloc(sz)\n#define STBI_REALLOC(p,newsz)     realloc(p,newsz)\n#define STBI_FREE(p)              free(p)\n#endif\n\n#ifndef STBI_REALLOC_SIZED\n#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz)\n#endif\n\n// x86/x64 detection\n#if defined(__x86_64__) || defined(_M_X64)\n#define STBI__X64_TARGET\n#elif defined(__i386) || defined(_M_IX86)\n#define STBI__X86_TARGET\n#endif\n\n#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD)\n// gcc doesn't support sse2 intrinsics unless you compile with -msse2,\n// which in turn means it gets to use SSE2 everywhere. This is unfortunate,\n// but previous attempts to provide the SSE2 functions with runtime\n// detection caused numerous issues. The way architecture extensions are\n// exposed in GCC/Clang is, sadly, not really suited for one-file libs.\n// New behavior: if compiled with -msse2, we use SSE2 without any\n// detection; if not, we don't use it at all.\n#define STBI_NO_SIMD\n#endif\n\n#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD)\n// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET\n//\n// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the\n// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant.\n// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not\n// simultaneously enabling \"-mstackrealign\".\n//\n// See https://github.com/nothings/stb/issues/81 for more information.\n//\n// So default to no SSE2 on 32-bit MinGW. If you've read this far and added\n// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2.\n#define STBI_NO_SIMD\n#endif\n\n#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET))\n#define STBI_SSE2\n#include <emmintrin.h>\n\n#ifdef _MSC_VER\n\n#if _MSC_VER >= 1400  // not VC6\n#include <intrin.h> // __cpuid\nstatic int stbi__cpuid3(void)\n{\n   int info[4];\n   __cpuid(info,1);\n   return info[3];\n}\n#else\nstatic int stbi__cpuid3(void)\n{\n   int res;\n   __asm {\n      mov  eax,1\n      cpuid\n      mov  res,edx\n   }\n   return res;\n}\n#endif\n\n#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name\n\n#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2)\nstatic int stbi__sse2_available(void)\n{\n   int info3 = stbi__cpuid3();\n   return ((info3 >> 26) & 1) != 0;\n}\n#endif\n\n#else // assume GCC-style if not VC++\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n\n#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2)\nstatic int stbi__sse2_available(void)\n{\n   // If we're even attempting to compile this on GCC/Clang, that means\n   // -msse2 is on, which means the compiler is allowed to use SSE2\n   // instructions at will, and so are we.\n   return 1;\n}\n#endif\n\n#endif\n#endif\n\n// ARM NEON\n#if defined(STBI_NO_SIMD) && defined(STBI_NEON)\n#undef STBI_NEON\n#endif\n\n#ifdef STBI_NEON\n#include <arm_neon.h>\n#ifdef _MSC_VER\n#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name\n#else\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n#endif\n#endif\n\n#ifndef STBI_SIMD_ALIGN\n#define STBI_SIMD_ALIGN(type, name) type name\n#endif\n\n#ifndef STBI_MAX_DIMENSIONS\n#define STBI_MAX_DIMENSIONS (1 << 24)\n#endif\n\n///////////////////////////////////////////////\n//\n//  stbi__context struct and start_xxx functions\n\n// stbi__context structure is our basic context used by all images, so it\n// contains all the IO context, plus some basic image information\ntypedef struct\n{\n   stbi__uint32 img_x, img_y;\n   int img_n, img_out_n;\n\n   stbi_io_callbacks io;\n   void *io_user_data;\n\n   int read_from_callbacks;\n   int buflen;\n   stbi_uc buffer_start[128];\n   int callback_already_read;\n\n   stbi_uc *img_buffer, *img_buffer_end;\n   stbi_uc *img_buffer_original, *img_buffer_original_end;\n} stbi__context;\n\n\nstatic void stbi__refill_buffer(stbi__context *s);\n\n// initialize a memory-decode context\nstatic void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len)\n{\n   s->io.read = NULL;\n   s->read_from_callbacks = 0;\n   s->callback_already_read = 0;\n   s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer;\n   s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len;\n}\n\n// initialize a callback-based context\nstatic void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user)\n{\n   s->io = *c;\n   s->io_user_data = user;\n   s->buflen = sizeof(s->buffer_start);\n   s->read_from_callbacks = 1;\n   s->callback_already_read = 0;\n   s->img_buffer = s->img_buffer_original = s->buffer_start;\n   stbi__refill_buffer(s);\n   s->img_buffer_original_end = s->img_buffer_end;\n}\n\n#ifndef STBI_NO_STDIO\n\nstatic int stbi__stdio_read(void *user, char *data, int size)\n{\n   return (int) fread(data,1,size,(FILE*) user);\n}\n\nstatic void stbi__stdio_skip(void *user, int n)\n{\n   int ch;\n   fseek((FILE*) user, n, SEEK_CUR);\n   ch = fgetc((FILE*) user);  /* have to read a byte to reset feof()'s flag */\n   if (ch != EOF) {\n      ungetc(ch, (FILE *) user);  /* push byte back onto stream if valid. */\n   }\n}\n\nstatic int stbi__stdio_eof(void *user)\n{\n   return feof((FILE*) user) || ferror((FILE *) user);\n}\n\nstatic stbi_io_callbacks stbi__stdio_callbacks =\n{\n   stbi__stdio_read,\n   stbi__stdio_skip,\n   stbi__stdio_eof,\n};\n\nstatic void stbi__start_file(stbi__context *s, FILE *f)\n{\n   stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f);\n}\n\n//static void stop_file(stbi__context *s) { }\n\n#endif // !STBI_NO_STDIO\n\nstatic void stbi__rewind(stbi__context *s)\n{\n   // conceptually rewind SHOULD rewind to the beginning of the stream,\n   // but we just rewind to the beginning of the initial buffer, because\n   // we only use it after doing 'test', which only ever looks at at most 92 bytes\n   s->img_buffer = s->img_buffer_original;\n   s->img_buffer_end = s->img_buffer_original_end;\n}\n\nenum\n{\n   STBI_ORDER_RGB,\n   STBI_ORDER_BGR\n};\n\ntypedef struct\n{\n   int bits_per_channel;\n   int num_channels;\n   int channel_order;\n} stbi__result_info;\n\n#ifndef STBI_NO_JPEG\nstatic int      stbi__jpeg_test(stbi__context *s);\nstatic void    *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNG\nstatic int      stbi__png_test(stbi__context *s);\nstatic void    *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__png_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__png_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_BMP\nstatic int      stbi__bmp_test(stbi__context *s);\nstatic void    *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_TGA\nstatic int      stbi__tga_test(stbi__context *s);\nstatic void    *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__tga_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int      stbi__psd_test(stbi__context *s);\nstatic void    *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc);\nstatic int      stbi__psd_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__psd_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic int      stbi__hdr_test(stbi__context *s);\nstatic float   *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int      stbi__pic_test(stbi__context *s);\nstatic void    *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pic_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_GIF\nstatic int      stbi__gif_test(stbi__context *s);\nstatic void    *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic void    *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\nstatic int      stbi__gif_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNM\nstatic int      stbi__pnm_test(stbi__context *s);\nstatic void    *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__pnm_is16(stbi__context *s);\n#endif\n\nstatic\n#ifdef STBI_THREAD_LOCAL\nSTBI_THREAD_LOCAL\n#endif\nconst char *stbi__g_failure_reason;\n\nSTBIDEF const char *stbi_failure_reason(void)\n{\n   return stbi__g_failure_reason;\n}\n\n#ifndef STBI_NO_FAILURE_STRINGS\nstatic int stbi__err(const char *str)\n{\n   stbi__g_failure_reason = str;\n   return 0;\n}\n#endif\n\nstatic void *stbi__malloc(size_t size)\n{\n    return STBI_MALLOC(size);\n}\n\n// stb_image uses ints pervasively, including for offset calculations.\n// therefore the largest decoded image size we can support with the\n// current code, even on 64-bit targets, is INT_MAX. this is not a\n// significant limitation for the intended use case.\n//\n// we do, however, need to make sure our size calculations don't\n// overflow. hence a few helper functions for size calculations that\n// multiply integers together, making sure that they're non-negative\n// and no overflow occurs.\n\n// return 1 if the sum is valid, 0 on overflow.\n// negative terms are considered invalid.\nstatic int stbi__addsizes_valid(int a, int b)\n{\n   if (b < 0) return 0;\n   // now 0 <= b <= INT_MAX, hence also\n   // 0 <= INT_MAX - b <= INTMAX.\n   // And \"a + b <= INT_MAX\" (which might overflow) is the\n   // same as a <= INT_MAX - b (no overflow)\n   return a <= INT_MAX - b;\n}\n\n// returns 1 if the product is valid, 0 on overflow.\n// negative factors are considered invalid.\nstatic int stbi__mul2sizes_valid(int a, int b)\n{\n   if (a < 0 || b < 0) return 0;\n   if (b == 0) return 1; // mul-by-0 is always safe\n   // portable way to check for no overflows in a*b\n   return a <= INT_MAX/b;\n}\n\n#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR)\n// returns 1 if \"a*b + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad2sizes_valid(int a, int b, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add);\n}\n#endif\n\n// returns 1 if \"a*b*c + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad3sizes_valid(int a, int b, int c, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__addsizes_valid(a*b*c, add);\n}\n\n// returns 1 if \"a*b*c*d + add\" has no negative terms/factors and doesn't overflow\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM)\nstatic int stbi__mad4sizes_valid(int a, int b, int c, int d, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add);\n}\n#endif\n\n#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR)\n// mallocs with size overflow checking\nstatic void *stbi__malloc_mad2(int a, int b, int add)\n{\n   if (!stbi__mad2sizes_valid(a, b, add)) return NULL;\n   return stbi__malloc(a*b + add);\n}\n#endif\n\nstatic void *stbi__malloc_mad3(int a, int b, int c, int add)\n{\n   if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL;\n   return stbi__malloc(a*b*c + add);\n}\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM)\nstatic void *stbi__malloc_mad4(int a, int b, int c, int d, int add)\n{\n   if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL;\n   return stbi__malloc(a*b*c*d + add);\n}\n#endif\n\n// stbi__err - error\n// stbi__errpf - error returning pointer to float\n// stbi__errpuc - error returning pointer to unsigned char\n\n#ifdef STBI_NO_FAILURE_STRINGS\n   #define stbi__err(x,y)  0\n#elif defined(STBI_FAILURE_USERMSG)\n   #define stbi__err(x,y)  stbi__err(y)\n#else\n   #define stbi__err(x,y)  stbi__err(x)\n#endif\n\n#define stbi__errpf(x,y)   ((float *)(size_t) (stbi__err(x,y)?NULL:NULL))\n#define stbi__errpuc(x,y)  ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL))\n\nSTBIDEF void stbi_image_free(void *retval_from_stbi_load)\n{\n   STBI_FREE(retval_from_stbi_load);\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp);\n#endif\n\nstatic int stbi__vertically_flip_on_load_global = 0;\n\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)\n{\n   stbi__vertically_flip_on_load_global = flag_true_if_should_flip;\n}\n\n#ifndef STBI_THREAD_LOCAL\n#define stbi__vertically_flip_on_load  stbi__vertically_flip_on_load_global\n#else\nstatic STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set;\n\nSTBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip)\n{\n   stbi__vertically_flip_on_load_local = flag_true_if_should_flip;\n   stbi__vertically_flip_on_load_set = 1;\n}\n\n#define stbi__vertically_flip_on_load  (stbi__vertically_flip_on_load_set       \\\n                                         ? stbi__vertically_flip_on_load_local  \\\n                                         : stbi__vertically_flip_on_load_global)\n#endif // STBI_THREAD_LOCAL\n\nstatic void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields\n   ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed\n   ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order\n   ri->num_channels = 0;\n\n   // test the formats with a very explicit header first (at least a FOURCC\n   // or distinctive magic number first)\n   #ifndef STBI_NO_PNG\n   if (stbi__png_test(s))  return stbi__png_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_test(s))  return stbi__bmp_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_test(s))  return stbi__gif_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_test(s))  return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc);\n   #else\n   STBI_NOTUSED(bpc);\n   #endif\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_test(s))  return stbi__pic_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   // then the formats that can end up attempting to load with just 1 or 2\n   // bytes matching expectations; these are prone to false positives, so\n   // try them later\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_test(s))  return stbi__pnm_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri);\n      return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);\n   }\n   #endif\n\n   #ifndef STBI_NO_TGA\n   // test tga last because it's a crappy test!\n   if (stbi__tga_test(s))\n      return stbi__tga_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   return stbi__errpuc(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi_uc *reduced;\n\n   reduced = (stbi_uc *) stbi__malloc(img_len);\n   if (reduced == NULL) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling\n\n   STBI_FREE(orig);\n   return reduced;\n}\n\nstatic stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi__uint16 *enlarged;\n\n   enlarged = (stbi__uint16 *) stbi__malloc(img_len*2);\n   if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff\n\n   STBI_FREE(orig);\n   return enlarged;\n}\n\nstatic void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel)\n{\n   int row;\n   size_t bytes_per_row = (size_t)w * bytes_per_pixel;\n   stbi_uc temp[2048];\n   stbi_uc *bytes = (stbi_uc *)image;\n\n   for (row = 0; row < (h>>1); row++) {\n      stbi_uc *row0 = bytes + row*bytes_per_row;\n      stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row;\n      // swap row0 with row1\n      size_t bytes_left = bytes_per_row;\n      while (bytes_left) {\n         size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp);\n         memcpy(temp, row0, bytes_copy);\n         memcpy(row0, row1, bytes_copy);\n         memcpy(row1, temp, bytes_copy);\n         row0 += bytes_copy;\n         row1 += bytes_copy;\n         bytes_left -= bytes_copy;\n      }\n   }\n}\n\n#ifndef STBI_NO_GIF\nstatic void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel)\n{\n   int slice;\n   int slice_size = w * h * bytes_per_pixel;\n\n   stbi_uc *bytes = (stbi_uc *)image;\n   for (slice = 0; slice < z; ++slice) {\n      stbi__vertical_flip(bytes, w, h, bytes_per_pixel);\n      bytes += slice_size;\n   }\n}\n#endif\n\nstatic unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8);\n\n   if (result == NULL)\n      return NULL;\n\n   // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.\n   STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);\n\n   if (ri.bits_per_channel != 8) {\n      result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 8;\n   }\n\n   // @TODO: move stbi__convert_format to here\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc));\n   }\n\n   return (unsigned char *) result;\n}\n\nstatic stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16);\n\n   if (result == NULL)\n      return NULL;\n\n   // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.\n   STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);\n\n   if (ri.bits_per_channel != 16) {\n      result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 16;\n   }\n\n   // @TODO: move stbi__convert_format16 to here\n   // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16));\n   }\n\n   return (stbi__uint16 *) result;\n}\n\n#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR)\nstatic void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp)\n{\n   if (stbi__vertically_flip_on_load && result != NULL) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(float));\n   }\n}\n#endif\n\n#ifndef STBI_NO_STDIO\n\n#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8)\nSTBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide);\nSTBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default);\n#endif\n\n#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8)\nSTBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)\n{\n\treturn WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);\n}\n#endif\n\nstatic FILE *stbi__fopen(char const *filename, char const *mode)\n{\n   FILE *f;\n#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8)\n   wchar_t wMode[64];\n   wchar_t wFilename[1024];\n\tif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename)))\n      return 0;\n\n\tif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode)))\n      return 0;\n\n#if defined(_MSC_VER) && _MSC_VER >= 1400\n\tif (0 != _wfopen_s(&f, wFilename, wMode))\n\t\tf = 0;\n#else\n   f = _wfopen(wFilename, wMode);\n#endif\n\n#elif defined(_MSC_VER) && _MSC_VER >= 1400\n   if (0 != fopen_s(&f, filename, mode))\n      f=0;\n#else\n   f = fopen(filename, mode);\n#endif\n   return f;\n}\n\n\nSTBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   unsigned char *result;\n   if (!f) return stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__uint16 *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   stbi__uint16 *result;\n   if (!f) return (stbi_us *) stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file_16(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\n\n#endif //!STBI_NO_STDIO\n\nSTBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n\n   result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp);\n   if (stbi__vertically_flip_on_load) {\n      stbi__vertical_flip_slices( result, *x, *y, *z, *comp );\n   }\n\n   return result;\n}\n#endif\n\n#ifndef STBI_NO_LINEAR\nstatic float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *data;\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      stbi__result_info ri;\n      float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri);\n      if (hdr_data)\n         stbi__float_postprocess(hdr_data,x,y,comp,req_comp);\n      return hdr_data;\n   }\n   #endif\n   data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);\n   if (data)\n      return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);\n   return stbi__errpf(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nSTBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   float *result;\n   FILE *f = stbi__fopen(filename, \"rb\");\n   if (!f) return stbi__errpf(\"can't fopen\", \"Unable to open file\");\n   result = stbi_loadf_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_file(&s,f);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n#endif // !STBI_NO_STDIO\n\n#endif // !STBI_NO_LINEAR\n\n// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is\n// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always\n// reports false!\n\nSTBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(buffer);\n   STBI_NOTUSED(len);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   int result=0;\n   if (f) {\n      result = stbi_is_hdr_from_file(f);\n      fclose(f);\n   }\n   return result;\n}\n\nSTBIDEF int stbi_is_hdr_from_file(FILE *f)\n{\n   #ifndef STBI_NO_HDR\n   long pos = ftell(f);\n   int res;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   res = stbi__hdr_test(&s);\n   fseek(f, pos, SEEK_SET);\n   return res;\n   #else\n   STBI_NOTUSED(f);\n   return 0;\n   #endif\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int      stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(clbk);\n   STBI_NOTUSED(user);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f;\n\nSTBIDEF void   stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; }\nSTBIDEF void   stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; }\n#endif\n\nstatic float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f;\n\nSTBIDEF void   stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; }\nSTBIDEF void   stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; }\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// Common code used by all image loaders\n//\n\nenum\n{\n   STBI__SCAN_load=0,\n   STBI__SCAN_type,\n   STBI__SCAN_header\n};\n\nstatic void stbi__refill_buffer(stbi__context *s)\n{\n   int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen);\n   s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original);\n   if (n == 0) {\n      // at end of file, treat same as if from memory, but need to handle case\n      // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file\n      s->read_from_callbacks = 0;\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start+1;\n      *s->img_buffer = 0;\n   } else {\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start + n;\n   }\n}\n\nstbi_inline static stbi_uc stbi__get8(stbi__context *s)\n{\n   if (s->img_buffer < s->img_buffer_end)\n      return *s->img_buffer++;\n   if (s->read_from_callbacks) {\n      stbi__refill_buffer(s);\n      return *s->img_buffer++;\n   }\n   return 0;\n}\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\nstbi_inline static int stbi__at_eof(stbi__context *s)\n{\n   if (s->io.read) {\n      if (!(s->io.eof)(s->io_user_data)) return 0;\n      // if feof() is true, check if buffer = end\n      // special case: we've only got the special 0 character at the end\n      if (s->read_from_callbacks == 0) return 1;\n   }\n\n   return s->img_buffer >= s->img_buffer_end;\n}\n#endif\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic void stbi__skip(stbi__context *s, int n)\n{\n   if (n == 0) return;  // already there!\n   if (n < 0) {\n      s->img_buffer = s->img_buffer_end;\n      return;\n   }\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         s->img_buffer = s->img_buffer_end;\n         (s->io.skip)(s->io_user_data, n - blen);\n         return;\n      }\n   }\n   s->img_buffer += n;\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM)\n// nothing\n#else\nstatic int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)\n{\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         int res, count;\n\n         memcpy(buffer, s->img_buffer, blen);\n\n         count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen);\n         res = (count == (n-blen));\n         s->img_buffer = s->img_buffer_end;\n         return res;\n      }\n   }\n\n   if (s->img_buffer+n <= s->img_buffer_end) {\n      memcpy(buffer, s->img_buffer, n);\n      s->img_buffer += n;\n      return 1;\n   } else\n      return 0;\n}\n#endif\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic int stbi__get16be(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return (z << 8) + stbi__get8(s);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic stbi__uint32 stbi__get32be(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16be(s);\n   return (z << 16) + stbi__get16be(s);\n}\n#endif\n\n#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF)\n// nothing\n#else\nstatic int stbi__get16le(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return z + (stbi__get8(s) << 8);\n}\n#endif\n\n#ifndef STBI_NO_BMP\nstatic stbi__uint32 stbi__get32le(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16le(s);\n   z += (stbi__uint32)stbi__get16le(s) << 16;\n   return z;\n}\n#endif\n\n#define STBI__BYTECAST(x)  ((stbi_uc) ((x) & 255))  // truncate int to byte without warnings\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\n//////////////////////////////////////////////////////////////////////////////\n//\n//  generic converter from built-in img_n to req_comp\n//    individual types do this automatically as much as possible (e.g. jpeg\n//    does all cases internally since it needs to colorspace convert anyway,\n//    and it never has alpha, so very few cases ). png can automatically\n//    interleave an alpha=255 channel, but falls back to this for other cases\n//\n//  assume data buffer is malloced, so malloc a new one and free that one\n//  only failure mode is malloc failing\n\nstatic stbi_uc stbi__compute_y(int r, int g, int b)\n{\n   return (stbi_uc) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\nstatic unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   unsigned char *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      unsigned char *src  = data + j * x * img_n   ;\n      unsigned char *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                  } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1];                  } break;\n         STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255;    } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];                    } break;\n         default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc(\"unsupported\", \"Unsupported format conversion\");\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD)\n// nothing\n#else\nstatic stbi__uint16 stbi__compute_y_16(int r, int g, int b)\n{\n   return (stbi__uint16) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD)\n// nothing\n#else\nstatic stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   stbi__uint16 *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      stbi__uint16 *src  = data + j * x * img_n   ;\n      stbi__uint16 *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                     } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1];                     } break;\n         STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];                       } break;\n         default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc(\"unsupported\", \"Unsupported format conversion\");\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n#endif\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp)\n{\n   int i,k,n;\n   float *output;\n   if (!data) return NULL;\n   output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpf(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale);\n      }\n   }\n   if (n < comp) {\n      for (i=0; i < x*y; ++i) {\n         output[i*comp + n] = data[i*comp + n]/255.0f;\n      }\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n#ifndef STBI_NO_HDR\n#define stbi__float2int(x)   ((int) (x))\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp)\n{\n   int i,k,n;\n   stbi_uc *output;\n   if (!data) return NULL;\n   output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n      if (k < comp) {\n         float z = data[i*comp+k] * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n//  \"baseline\" JPEG/JFIF decoder\n//\n//    simple implementation\n//      - doesn't support delayed output of y-dimension\n//      - simple interface (only one output format: 8-bit interleaved RGB)\n//      - doesn't try to recover corrupt jpegs\n//      - doesn't allow partial loading, loading multiple at once\n//      - still fast on x86 (copying globals into locals doesn't help x86)\n//      - allocates lots of intermediate memory (full size of all components)\n//        - non-interleaved case requires this anyway\n//        - allows good upsampling (see next)\n//    high-quality\n//      - upsampled channels are bilinearly interpolated, even across blocks\n//      - quality integer IDCT derived from IJG's 'slow'\n//    performance\n//      - fast huffman; reasonable integer IDCT\n//      - some SIMD kernels for common paths on targets with SSE2/NEON\n//      - uses a lot of intermediate memory, could cache poorly\n\n#ifndef STBI_NO_JPEG\n\n// huffman decoding acceleration\n#define FAST_BITS   9  // larger handles more cases; smaller stomps less cache\n\ntypedef struct\n{\n   stbi_uc  fast[1 << FAST_BITS];\n   // weirdly, repacking this into AoS is a 10% speed loss, instead of a win\n   stbi__uint16 code[256];\n   stbi_uc  values[256];\n   stbi_uc  size[257];\n   unsigned int maxcode[18];\n   int    delta[17];   // old 'firstsymbol' - old 'firstcode'\n} stbi__huffman;\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi__huffman huff_dc[4];\n   stbi__huffman huff_ac[4];\n   stbi__uint16 dequant[4][64];\n   stbi__int16 fast_ac[4][1 << FAST_BITS];\n\n// sizes for components, interleaved MCUs\n   int img_h_max, img_v_max;\n   int img_mcu_x, img_mcu_y;\n   int img_mcu_w, img_mcu_h;\n\n// definition of jpeg image component\n   struct\n   {\n      int id;\n      int h,v;\n      int tq;\n      int hd,ha;\n      int dc_pred;\n\n      int x,y,w2,h2;\n      stbi_uc *data;\n      void *raw_data, *raw_coeff;\n      stbi_uc *linebuf;\n      short   *coeff;   // progressive only\n      int      coeff_w, coeff_h; // number of 8x8 coefficient blocks\n   } img_comp[4];\n\n   stbi__uint32   code_buffer; // jpeg entropy-coded buffer\n   int            code_bits;   // number of valid bits\n   unsigned char  marker;      // marker seen while filling entropy buffer\n   int            nomore;      // flag if we saw a marker so must stop\n\n   int            progressive;\n   int            spec_start;\n   int            spec_end;\n   int            succ_high;\n   int            succ_low;\n   int            eob_run;\n   int            jfif;\n   int            app14_color_transform; // Adobe APP14 tag\n   int            rgb;\n\n   int scan_n, order[4];\n   int restart_interval, todo;\n\n// kernels\n   void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]);\n   void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step);\n   stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs);\n} stbi__jpeg;\n\nstatic int stbi__build_huffman(stbi__huffman *h, int *count)\n{\n   int i,j,k=0;\n   unsigned int code;\n   // build size list for each symbol (from JPEG spec)\n   for (i=0; i < 16; ++i)\n      for (j=0; j < count[i]; ++j)\n         h->size[k++] = (stbi_uc) (i+1);\n   h->size[k] = 0;\n\n   // compute actual symbols (from jpeg spec)\n   code = 0;\n   k = 0;\n   for(j=1; j <= 16; ++j) {\n      // compute delta to add to code to compute symbol id\n      h->delta[j] = k - code;\n      if (h->size[k] == j) {\n         while (h->size[k] == j)\n            h->code[k++] = (stbi__uint16) (code++);\n         if (code-1 >= (1u << j)) return stbi__err(\"bad code lengths\",\"Corrupt JPEG\");\n      }\n      // compute largest code + 1 for this size, preshifted as needed later\n      h->maxcode[j] = code << (16-j);\n      code <<= 1;\n   }\n   h->maxcode[j] = 0xffffffff;\n\n   // build non-spec acceleration table; 255 is flag for not-accelerated\n   memset(h->fast, 255, 1 << FAST_BITS);\n   for (i=0; i < k; ++i) {\n      int s = h->size[i];\n      if (s <= FAST_BITS) {\n         int c = h->code[i] << (FAST_BITS-s);\n         int m = 1 << (FAST_BITS-s);\n         for (j=0; j < m; ++j) {\n            h->fast[c+j] = (stbi_uc) i;\n         }\n      }\n   }\n   return 1;\n}\n\n// build a table that decodes both magnitude and value of small ACs in\n// one go.\nstatic void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)\n{\n   int i;\n   for (i=0; i < (1 << FAST_BITS); ++i) {\n      stbi_uc fast = h->fast[i];\n      fast_ac[i] = 0;\n      if (fast < 255) {\n         int rs = h->values[fast];\n         int run = (rs >> 4) & 15;\n         int magbits = rs & 15;\n         int len = h->size[fast];\n\n         if (magbits && len + magbits <= FAST_BITS) {\n            // magnitude code followed by receive_extend code\n            int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits);\n            int m = 1 << (magbits - 1);\n            if (k < m) k += (~0U << magbits) + 1;\n            // if the result is small enough, we can fit it in fast_ac table\n            if (k >= -128 && k <= 127)\n               fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits));\n         }\n      }\n   }\n}\n\nstatic void stbi__grow_buffer_unsafe(stbi__jpeg *j)\n{\n   do {\n      unsigned int b = j->nomore ? 0 : stbi__get8(j->s);\n      if (b == 0xff) {\n         int c = stbi__get8(j->s);\n         while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes\n         if (c != 0) {\n            j->marker = (unsigned char) c;\n            j->nomore = 1;\n            return;\n         }\n      }\n      j->code_buffer |= b << (24 - j->code_bits);\n      j->code_bits += 8;\n   } while (j->code_bits <= 24);\n}\n\n// (1 << n) - 1\nstatic const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};\n\n// decode a jpeg huffman value from the bitstream\nstbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h)\n{\n   unsigned int temp;\n   int c,k;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   // look at the top FAST_BITS and determine what symbol ID it is,\n   // if the code is <= FAST_BITS\n   c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n   k = h->fast[c];\n   if (k < 255) {\n      int s = h->size[k];\n      if (s > j->code_bits)\n         return -1;\n      j->code_buffer <<= s;\n      j->code_bits -= s;\n      return h->values[k];\n   }\n\n   // naive test is to shift the code_buffer down so k bits are\n   // valid, then test against maxcode. To speed this up, we've\n   // preshifted maxcode left so that it has (16-k) 0s at the\n   // end; in other words, regardless of the number of bits, it\n   // wants to be compared against something shifted to have 16;\n   // that way we don't need to shift inside the loop.\n   temp = j->code_buffer >> 16;\n   for (k=FAST_BITS+1 ; ; ++k)\n      if (temp < h->maxcode[k])\n         break;\n   if (k == 17) {\n      // error! code not found\n      j->code_bits -= 16;\n      return -1;\n   }\n\n   if (k > j->code_bits)\n      return -1;\n\n   // convert the huffman code to the symbol id\n   c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];\n   STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]);\n\n   // convert the id to a symbol\n   j->code_bits -= k;\n   j->code_buffer <<= k;\n   return h->values[c];\n}\n\n// bias[n] = (-1<<n) + 1\nstatic const int stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};\n\n// combined JPEG 'receive' and JPEG 'extend', since baseline\n// always extends everything it receives.\nstbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   int sgn;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n\n   sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative)\n   k = stbi_lrot(j->code_buffer, n);\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k + (stbi__jbias[n] & (sgn - 1));\n}\n\n// get some unsigned bits\nstbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n   k = stbi_lrot(j->code_buffer, n);\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k;\n}\n\nstbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)\n{\n   unsigned int k;\n   if (j->code_bits < 1) stbi__grow_buffer_unsafe(j);\n   k = j->code_buffer;\n   j->code_buffer <<= 1;\n   --j->code_bits;\n   return k & 0x80000000;\n}\n\n// given a value that's at position X in the zigzag stream,\n// where does it appear in the 8x8 matrix coded as row-major?\nstatic const stbi_uc stbi__jpeg_dezigzag[64+15] =\n{\n    0,  1,  8, 16,  9,  2,  3, 10,\n   17, 24, 32, 25, 18, 11,  4,  5,\n   12, 19, 26, 33, 40, 48, 41, 34,\n   27, 20, 13,  6,  7, 14, 21, 28,\n   35, 42, 49, 56, 57, 50, 43, 36,\n   29, 22, 15, 23, 30, 37, 44, 51,\n   58, 59, 52, 45, 38, 31, 39, 46,\n   53, 60, 61, 54, 47, 55, 62, 63,\n   // let corrupt input sample past end\n   63, 63, 63, 63, 63, 63, 63, 63,\n   63, 63, 63, 63, 63, 63, 63\n};\n\n// decode one 64-entry block--\nstatic int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant)\n{\n   int diff,dc,k;\n   int t;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n   t = stbi__jpeg_huff_decode(j, hdc);\n   if (t < 0 || t > 15) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n\n   // 0 all the ac values now so we can do it 32-bits at a time\n   memset(data,0,64*sizeof(data[0]));\n\n   diff = t ? stbi__extend_receive(j, t) : 0;\n   dc = j->img_comp[b].dc_pred + diff;\n   j->img_comp[b].dc_pred = dc;\n   data[0] = (short) (dc * dequant[0]);\n\n   // decode AC components, see JPEG spec\n   k = 1;\n   do {\n      unsigned int zig;\n      int c,r,s;\n      if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n      c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n      r = fac[c];\n      if (r) { // fast-AC path\n         k += (r >> 4) & 15; // run\n         s = r & 15; // combined length\n         j->code_buffer <<= s;\n         j->code_bits -= s;\n         // decode into unzigzag'd location\n         zig = stbi__jpeg_dezigzag[k++];\n         data[zig] = (short) ((r >> 8) * dequant[zig]);\n      } else {\n         int rs = stbi__jpeg_huff_decode(j, hac);\n         if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n         s = rs & 15;\n         r = rs >> 4;\n         if (s == 0) {\n            if (rs != 0xf0) break; // end block\n            k += 16;\n         } else {\n            k += r;\n            // decode into unzigzag'd location\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]);\n         }\n      }\n   } while (k < 64);\n   return 1;\n}\n\nstatic int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b)\n{\n   int diff,dc;\n   int t;\n   if (j->spec_end != 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   if (j->succ_high == 0) {\n      // first scan for DC coefficient, must be first\n      memset(data,0,64*sizeof(data[0])); // 0 all the ac values now\n      t = stbi__jpeg_huff_decode(j, hdc);\n      if (t < 0 || t > 15) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n      diff = t ? stbi__extend_receive(j, t) : 0;\n\n      dc = j->img_comp[b].dc_pred + diff;\n      j->img_comp[b].dc_pred = dc;\n      data[0] = (short) (dc * (1 << j->succ_low));\n   } else {\n      // refinement scan for DC coefficient\n      if (stbi__jpeg_get_bit(j))\n         data[0] += (short) (1 << j->succ_low);\n   }\n   return 1;\n}\n\n// @OPTIMIZE: store non-zigzagged during the decode passes,\n// and only de-zigzag when dequantizing\nstatic int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac)\n{\n   int k;\n   if (j->spec_start == 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->succ_high == 0) {\n      int shift = j->succ_low;\n\n      if (j->eob_run) {\n         --j->eob_run;\n         return 1;\n      }\n\n      k = j->spec_start;\n      do {\n         unsigned int zig;\n         int c,r,s;\n         if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n         c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n         r = fac[c];\n         if (r) { // fast-AC path\n            k += (r >> 4) & 15; // run\n            s = r & 15; // combined length\n            j->code_buffer <<= s;\n            j->code_bits -= s;\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) ((r >> 8) * (1 << shift));\n         } else {\n            int rs = stbi__jpeg_huff_decode(j, hac);\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r);\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  --j->eob_run;\n                  break;\n               }\n               k += 16;\n            } else {\n               k += r;\n               zig = stbi__jpeg_dezigzag[k++];\n               data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift));\n            }\n         }\n      } while (k <= j->spec_end);\n   } else {\n      // refinement scan for these AC coefficients\n\n      short bit = (short) (1 << j->succ_low);\n\n      if (j->eob_run) {\n         --j->eob_run;\n         for (k = j->spec_start; k <= j->spec_end; ++k) {\n            short *p = &data[stbi__jpeg_dezigzag[k]];\n            if (*p != 0)\n               if (stbi__jpeg_get_bit(j))\n                  if ((*p & bit)==0) {\n                     if (*p > 0)\n                        *p += bit;\n                     else\n                        *p -= bit;\n                  }\n         }\n      } else {\n         k = j->spec_start;\n         do {\n            int r,s;\n            int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r) - 1;\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  r = 64; // force end of block\n               } else {\n                  // r=15 s=0 should write 16 0s, so we just do\n                  // a run of 15 0s and then write s (which is 0),\n                  // so we don't have to do anything special here\n               }\n            } else {\n               if (s != 1) return stbi__err(\"bad huffman code\", \"Corrupt JPEG\");\n               // sign bit\n               if (stbi__jpeg_get_bit(j))\n                  s = bit;\n               else\n                  s = -bit;\n            }\n\n            // advance by r\n            while (k <= j->spec_end) {\n               short *p = &data[stbi__jpeg_dezigzag[k++]];\n               if (*p != 0) {\n                  if (stbi__jpeg_get_bit(j))\n                     if ((*p & bit)==0) {\n                        if (*p > 0)\n                           *p += bit;\n                        else\n                           *p -= bit;\n                     }\n               } else {\n                  if (r == 0) {\n                     *p = (short) s;\n                     break;\n                  }\n                  --r;\n               }\n            }\n         } while (k <= j->spec_end);\n      }\n   }\n   return 1;\n}\n\n// take a -128..127 value and stbi__clamp it and convert to 0..255\nstbi_inline static stbi_uc stbi__clamp(int x)\n{\n   // trick to use a single test to catch both cases\n   if ((unsigned int) x > 255) {\n      if (x < 0) return 0;\n      if (x > 255) return 255;\n   }\n   return (stbi_uc) x;\n}\n\n#define stbi__f2f(x)  ((int) (((x) * 4096 + 0.5)))\n#define stbi__fsh(x)  ((x) * 4096)\n\n// derived from jidctint -- DCT_ISLOW\n#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \\\n   int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \\\n   p2 = s2;                                    \\\n   p3 = s6;                                    \\\n   p1 = (p2+p3) * stbi__f2f(0.5411961f);       \\\n   t2 = p1 + p3*stbi__f2f(-1.847759065f);      \\\n   t3 = p1 + p2*stbi__f2f( 0.765366865f);      \\\n   p2 = s0;                                    \\\n   p3 = s4;                                    \\\n   t0 = stbi__fsh(p2+p3);                      \\\n   t1 = stbi__fsh(p2-p3);                      \\\n   x0 = t0+t3;                                 \\\n   x3 = t0-t3;                                 \\\n   x1 = t1+t2;                                 \\\n   x2 = t1-t2;                                 \\\n   t0 = s7;                                    \\\n   t1 = s5;                                    \\\n   t2 = s3;                                    \\\n   t3 = s1;                                    \\\n   p3 = t0+t2;                                 \\\n   p4 = t1+t3;                                 \\\n   p1 = t0+t3;                                 \\\n   p2 = t1+t2;                                 \\\n   p5 = (p3+p4)*stbi__f2f( 1.175875602f);      \\\n   t0 = t0*stbi__f2f( 0.298631336f);           \\\n   t1 = t1*stbi__f2f( 2.053119869f);           \\\n   t2 = t2*stbi__f2f( 3.072711026f);           \\\n   t3 = t3*stbi__f2f( 1.501321110f);           \\\n   p1 = p5 + p1*stbi__f2f(-0.899976223f);      \\\n   p2 = p5 + p2*stbi__f2f(-2.562915447f);      \\\n   p3 = p3*stbi__f2f(-1.961570560f);           \\\n   p4 = p4*stbi__f2f(-0.390180644f);           \\\n   t3 += p1+p4;                                \\\n   t2 += p2+p3;                                \\\n   t1 += p2+p4;                                \\\n   t0 += p1+p3;\n\nstatic void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])\n{\n   int i,val[64],*v=val;\n   stbi_uc *o;\n   short *d = data;\n\n   // columns\n   for (i=0; i < 8; ++i,++d, ++v) {\n      // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing\n      if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0\n           && d[40]==0 && d[48]==0 && d[56]==0) {\n         //    no shortcut                 0     seconds\n         //    (1|2|3|4|5|6|7)==0          0     seconds\n         //    all separate               -0.047 seconds\n         //    1 && 2|3 && 4|5 && 6|7:    -0.047 seconds\n         int dcterm = d[0]*4;\n         v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;\n      } else {\n         STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56])\n         // constants scaled things up by 1<<12; let's bring them back\n         // down, but keep 2 extra bits of precision\n         x0 += 512; x1 += 512; x2 += 512; x3 += 512;\n         v[ 0] = (x0+t3) >> 10;\n         v[56] = (x0-t3) >> 10;\n         v[ 8] = (x1+t2) >> 10;\n         v[48] = (x1-t2) >> 10;\n         v[16] = (x2+t1) >> 10;\n         v[40] = (x2-t1) >> 10;\n         v[24] = (x3+t0) >> 10;\n         v[32] = (x3-t0) >> 10;\n      }\n   }\n\n   for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) {\n      // no fast case since the first 1D IDCT spread components out\n      STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7])\n      // constants scaled things up by 1<<12, plus we had 1<<2 from first\n      // loop, plus horizontal and vertical each scale by sqrt(8) so together\n      // we've got an extra 1<<3, so 1<<17 total we need to remove.\n      // so we want to round that, which means adding 0.5 * 1<<17,\n      // aka 65536. Also, we'll end up with -128 to 127 that we want\n      // to encode as 0..255 by adding 128, so we'll add that before the shift\n      x0 += 65536 + (128<<17);\n      x1 += 65536 + (128<<17);\n      x2 += 65536 + (128<<17);\n      x3 += 65536 + (128<<17);\n      // tried computing the shifts into temps, or'ing the temps to see\n      // if any were out of range, but that was slower\n      o[0] = stbi__clamp((x0+t3) >> 17);\n      o[7] = stbi__clamp((x0-t3) >> 17);\n      o[1] = stbi__clamp((x1+t2) >> 17);\n      o[6] = stbi__clamp((x1-t2) >> 17);\n      o[2] = stbi__clamp((x2+t1) >> 17);\n      o[5] = stbi__clamp((x2-t1) >> 17);\n      o[3] = stbi__clamp((x3+t0) >> 17);\n      o[4] = stbi__clamp((x3-t0) >> 17);\n   }\n}\n\n#ifdef STBI_SSE2\n// sse2 integer IDCT. not the fastest possible implementation but it\n// produces bit-identical results to the generic C version so it's\n// fully \"transparent\".\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   // This is constructed to match our regular (generic) integer IDCT exactly.\n   __m128i row0, row1, row2, row3, row4, row5, row6, row7;\n   __m128i tmp;\n\n   // dot product constant: even elems=x, odd elems=y\n   #define dct_const(x,y)  _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y))\n\n   // out(0) = c0[even]*x + c0[odd]*y   (c0, x, y 16-bit, out 32-bit)\n   // out(1) = c1[even]*x + c1[odd]*y\n   #define dct_rot(out0,out1, x,y,c0,c1) \\\n      __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \\\n      __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \\\n      __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \\\n      __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \\\n      __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \\\n      __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)\n\n   // out = in << 12  (in 16-bit, out 32-bit)\n   #define dct_widen(out, in) \\\n      __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \\\n      __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)\n\n   // wide add\n   #define dct_wadd(out, a, b) \\\n      __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_add_epi32(a##_h, b##_h)\n\n   // wide sub\n   #define dct_wsub(out, a, b) \\\n      __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)\n\n   // butterfly a/b, add bias, then shift by \"s\" and pack\n   #define dct_bfly32o(out0, out1, a,b,bias,s) \\\n      { \\\n         __m128i abiased_l = _mm_add_epi32(a##_l, bias); \\\n         __m128i abiased_h = _mm_add_epi32(a##_h, bias); \\\n         dct_wadd(sum, abiased, b); \\\n         dct_wsub(dif, abiased, b); \\\n         out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \\\n         out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \\\n      }\n\n   // 8-bit interleave step (for transposes)\n   #define dct_interleave8(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi8(a, b); \\\n      b = _mm_unpackhi_epi8(tmp, b)\n\n   // 16-bit interleave step (for transposes)\n   #define dct_interleave16(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi16(a, b); \\\n      b = _mm_unpackhi_epi16(tmp, b)\n\n   #define dct_pass(bias,shift) \\\n      { \\\n         /* even part */ \\\n         dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \\\n         __m128i sum04 = _mm_add_epi16(row0, row4); \\\n         __m128i dif04 = _mm_sub_epi16(row0, row4); \\\n         dct_widen(t0e, sum04); \\\n         dct_widen(t1e, dif04); \\\n         dct_wadd(x0, t0e, t3e); \\\n         dct_wsub(x3, t0e, t3e); \\\n         dct_wadd(x1, t1e, t2e); \\\n         dct_wsub(x2, t1e, t2e); \\\n         /* odd part */ \\\n         dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \\\n         dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \\\n         __m128i sum17 = _mm_add_epi16(row1, row7); \\\n         __m128i sum35 = _mm_add_epi16(row3, row5); \\\n         dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \\\n         dct_wadd(x4, y0o, y4o); \\\n         dct_wadd(x5, y1o, y5o); \\\n         dct_wadd(x6, y2o, y5o); \\\n         dct_wadd(x7, y3o, y4o); \\\n         dct_bfly32o(row0,row7, x0,x7,bias,shift); \\\n         dct_bfly32o(row1,row6, x1,x6,bias,shift); \\\n         dct_bfly32o(row2,row5, x2,x5,bias,shift); \\\n         dct_bfly32o(row3,row4, x3,x4,bias,shift); \\\n      }\n\n   __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));\n   __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f));\n   __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f));\n   __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));\n   __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f));\n   __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f));\n   __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f));\n   __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f));\n\n   // rounding biases in column/row passes, see stbi__idct_block for explanation.\n   __m128i bias_0 = _mm_set1_epi32(512);\n   __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17));\n\n   // load\n   row0 = _mm_load_si128((const __m128i *) (data + 0*8));\n   row1 = _mm_load_si128((const __m128i *) (data + 1*8));\n   row2 = _mm_load_si128((const __m128i *) (data + 2*8));\n   row3 = _mm_load_si128((const __m128i *) (data + 3*8));\n   row4 = _mm_load_si128((const __m128i *) (data + 4*8));\n   row5 = _mm_load_si128((const __m128i *) (data + 5*8));\n   row6 = _mm_load_si128((const __m128i *) (data + 6*8));\n   row7 = _mm_load_si128((const __m128i *) (data + 7*8));\n\n   // column pass\n   dct_pass(bias_0, 10);\n\n   {\n      // 16bit 8x8 transpose pass 1\n      dct_interleave16(row0, row4);\n      dct_interleave16(row1, row5);\n      dct_interleave16(row2, row6);\n      dct_interleave16(row3, row7);\n\n      // transpose pass 2\n      dct_interleave16(row0, row2);\n      dct_interleave16(row1, row3);\n      dct_interleave16(row4, row6);\n      dct_interleave16(row5, row7);\n\n      // transpose pass 3\n      dct_interleave16(row0, row1);\n      dct_interleave16(row2, row3);\n      dct_interleave16(row4, row5);\n      dct_interleave16(row6, row7);\n   }\n\n   // row pass\n   dct_pass(bias_1, 17);\n\n   {\n      // pack\n      __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7\n      __m128i p1 = _mm_packus_epi16(row2, row3);\n      __m128i p2 = _mm_packus_epi16(row4, row5);\n      __m128i p3 = _mm_packus_epi16(row6, row7);\n\n      // 8bit 8x8 transpose pass 1\n      dct_interleave8(p0, p2); // a0e0a1e1...\n      dct_interleave8(p1, p3); // c0g0c1g1...\n\n      // transpose pass 2\n      dct_interleave8(p0, p1); // a0c0e0g0...\n      dct_interleave8(p2, p3); // b0d0f0h0...\n\n      // transpose pass 3\n      dct_interleave8(p0, p2); // a0b0c0d0...\n      dct_interleave8(p1, p3); // a4b4c4d4...\n\n      // store\n      _mm_storel_epi64((__m128i *) out, p0); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p2); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p1); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p3); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e));\n   }\n\n#undef dct_const\n#undef dct_rot\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_interleave8\n#undef dct_interleave16\n#undef dct_pass\n}\n\n#endif // STBI_SSE2\n\n#ifdef STBI_NEON\n\n// NEON integer IDCT. should produce bit-identical\n// results to the generic C version.\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   int16x8_t row0, row1, row2, row3, row4, row5, row6, row7;\n\n   int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f));\n   int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f));\n   int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f));\n   int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f));\n   int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f));\n   int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f));\n   int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f));\n   int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f));\n   int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f));\n   int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f));\n   int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f));\n   int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f));\n\n#define dct_long_mul(out, inq, coeff) \\\n   int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff)\n\n#define dct_long_mac(out, acc, inq, coeff) \\\n   int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff)\n\n#define dct_widen(out, inq) \\\n   int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \\\n   int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12)\n\n// wide add\n#define dct_wadd(out, a, b) \\\n   int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vaddq_s32(a##_h, b##_h)\n\n// wide sub\n#define dct_wsub(out, a, b) \\\n   int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vsubq_s32(a##_h, b##_h)\n\n// butterfly a/b, then shift using \"shiftop\" by \"s\" and pack\n#define dct_bfly32o(out0,out1, a,b,shiftop,s) \\\n   { \\\n      dct_wadd(sum, a, b); \\\n      dct_wsub(dif, a, b); \\\n      out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \\\n      out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \\\n   }\n\n#define dct_pass(shiftop, shift) \\\n   { \\\n      /* even part */ \\\n      int16x8_t sum26 = vaddq_s16(row2, row6); \\\n      dct_long_mul(p1e, sum26, rot0_0); \\\n      dct_long_mac(t2e, p1e, row6, rot0_1); \\\n      dct_long_mac(t3e, p1e, row2, rot0_2); \\\n      int16x8_t sum04 = vaddq_s16(row0, row4); \\\n      int16x8_t dif04 = vsubq_s16(row0, row4); \\\n      dct_widen(t0e, sum04); \\\n      dct_widen(t1e, dif04); \\\n      dct_wadd(x0, t0e, t3e); \\\n      dct_wsub(x3, t0e, t3e); \\\n      dct_wadd(x1, t1e, t2e); \\\n      dct_wsub(x2, t1e, t2e); \\\n      /* odd part */ \\\n      int16x8_t sum15 = vaddq_s16(row1, row5); \\\n      int16x8_t sum17 = vaddq_s16(row1, row7); \\\n      int16x8_t sum35 = vaddq_s16(row3, row5); \\\n      int16x8_t sum37 = vaddq_s16(row3, row7); \\\n      int16x8_t sumodd = vaddq_s16(sum17, sum35); \\\n      dct_long_mul(p5o, sumodd, rot1_0); \\\n      dct_long_mac(p1o, p5o, sum17, rot1_1); \\\n      dct_long_mac(p2o, p5o, sum35, rot1_2); \\\n      dct_long_mul(p3o, sum37, rot2_0); \\\n      dct_long_mul(p4o, sum15, rot2_1); \\\n      dct_wadd(sump13o, p1o, p3o); \\\n      dct_wadd(sump24o, p2o, p4o); \\\n      dct_wadd(sump23o, p2o, p3o); \\\n      dct_wadd(sump14o, p1o, p4o); \\\n      dct_long_mac(x4, sump13o, row7, rot3_0); \\\n      dct_long_mac(x5, sump24o, row5, rot3_1); \\\n      dct_long_mac(x6, sump23o, row3, rot3_2); \\\n      dct_long_mac(x7, sump14o, row1, rot3_3); \\\n      dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \\\n      dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \\\n      dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \\\n      dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \\\n   }\n\n   // load\n   row0 = vld1q_s16(data + 0*8);\n   row1 = vld1q_s16(data + 1*8);\n   row2 = vld1q_s16(data + 2*8);\n   row3 = vld1q_s16(data + 3*8);\n   row4 = vld1q_s16(data + 4*8);\n   row5 = vld1q_s16(data + 5*8);\n   row6 = vld1q_s16(data + 6*8);\n   row7 = vld1q_s16(data + 7*8);\n\n   // add DC bias\n   row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0));\n\n   // column pass\n   dct_pass(vrshrn_n_s32, 10);\n\n   // 16bit 8x8 transpose\n   {\n// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively.\n// whether compilers actually get this is another story, sadly.\n#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); }\n#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); }\n\n      // pass 1\n      dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6\n      dct_trn16(row2, row3);\n      dct_trn16(row4, row5);\n      dct_trn16(row6, row7);\n\n      // pass 2\n      dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4\n      dct_trn32(row1, row3);\n      dct_trn32(row4, row6);\n      dct_trn32(row5, row7);\n\n      // pass 3\n      dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0\n      dct_trn64(row1, row5);\n      dct_trn64(row2, row6);\n      dct_trn64(row3, row7);\n\n#undef dct_trn16\n#undef dct_trn32\n#undef dct_trn64\n   }\n\n   // row pass\n   // vrshrn_n_s32 only supports shifts up to 16, we need\n   // 17. so do a non-rounding shift of 16 first then follow\n   // up with a rounding shift by 1.\n   dct_pass(vshrn_n_s32, 16);\n\n   {\n      // pack and round\n      uint8x8_t p0 = vqrshrun_n_s16(row0, 1);\n      uint8x8_t p1 = vqrshrun_n_s16(row1, 1);\n      uint8x8_t p2 = vqrshrun_n_s16(row2, 1);\n      uint8x8_t p3 = vqrshrun_n_s16(row3, 1);\n      uint8x8_t p4 = vqrshrun_n_s16(row4, 1);\n      uint8x8_t p5 = vqrshrun_n_s16(row5, 1);\n      uint8x8_t p6 = vqrshrun_n_s16(row6, 1);\n      uint8x8_t p7 = vqrshrun_n_s16(row7, 1);\n\n      // again, these can translate into one instruction, but often don't.\n#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); }\n#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); }\n\n      // sadly can't use interleaved stores here since we only write\n      // 8 bytes to each scan line!\n\n      // 8x8 8-bit transpose pass 1\n      dct_trn8_8(p0, p1);\n      dct_trn8_8(p2, p3);\n      dct_trn8_8(p4, p5);\n      dct_trn8_8(p6, p7);\n\n      // pass 2\n      dct_trn8_16(p0, p2);\n      dct_trn8_16(p1, p3);\n      dct_trn8_16(p4, p6);\n      dct_trn8_16(p5, p7);\n\n      // pass 3\n      dct_trn8_32(p0, p4);\n      dct_trn8_32(p1, p5);\n      dct_trn8_32(p2, p6);\n      dct_trn8_32(p3, p7);\n\n      // store\n      vst1_u8(out, p0); out += out_stride;\n      vst1_u8(out, p1); out += out_stride;\n      vst1_u8(out, p2); out += out_stride;\n      vst1_u8(out, p3); out += out_stride;\n      vst1_u8(out, p4); out += out_stride;\n      vst1_u8(out, p5); out += out_stride;\n      vst1_u8(out, p6); out += out_stride;\n      vst1_u8(out, p7);\n\n#undef dct_trn8_8\n#undef dct_trn8_16\n#undef dct_trn8_32\n   }\n\n#undef dct_long_mul\n#undef dct_long_mac\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_pass\n}\n\n#endif // STBI_NEON\n\n#define STBI__MARKER_none  0xff\n// if there's a pending marker from the entropy stream, return that\n// otherwise, fetch from the stream and get a marker. if there's no\n// marker, return 0xff, which is never a valid marker value\nstatic stbi_uc stbi__get_marker(stbi__jpeg *j)\n{\n   stbi_uc x;\n   if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; }\n   x = stbi__get8(j->s);\n   if (x != 0xff) return STBI__MARKER_none;\n   while (x == 0xff)\n      x = stbi__get8(j->s); // consume repeated 0xff fill bytes\n   return x;\n}\n\n// in each scan, we'll have scan_n components, and the order\n// of the components is specified by order[]\n#define STBI__RESTART(x)     ((x) >= 0xd0 && (x) <= 0xd7)\n\n// after a restart interval, stbi__jpeg_reset the entropy decoder and\n// the dc prediction\nstatic void stbi__jpeg_reset(stbi__jpeg *j)\n{\n   j->code_bits = 0;\n   j->code_buffer = 0;\n   j->nomore = 0;\n   j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0;\n   j->marker = STBI__MARKER_none;\n   j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;\n   j->eob_run = 0;\n   // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,\n   // since we don't even allow 1<<30 pixels\n}\n\nstatic int stbi__parse_entropy_coded_data(stbi__jpeg *z)\n{\n   stbi__jpeg_reset(z);\n   if (!z->progressive) {\n      if (z->scan_n == 1) {\n         int i,j;\n         STBI_SIMD_ALIGN(short, data[64]);\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               int ha = z->img_comp[n].ha;\n               if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  // if it's NOT a restart, then just bail, so we get corrupt data\n                  // rather than no data\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         STBI_SIMD_ALIGN(short, data[64]);\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x)*8;\n                        int y2 = (j*z->img_comp[n].v + y)*8;\n                        int ha = z->img_comp[n].ha;\n                        if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n                        z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data);\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   } else {\n      if (z->scan_n == 1) {\n         int i,j;\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               if (z->spec_start == 0) {\n                  if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                     return 0;\n               } else {\n                  int ha = z->img_comp[n].ha;\n                  if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha]))\n                     return 0;\n               }\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x);\n                        int y2 = (j*z->img_comp[n].v + y);\n                        short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w);\n                        if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                           return 0;\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   }\n}\n\nstatic void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant)\n{\n   int i;\n   for (i=0; i < 64; ++i)\n      data[i] *= dequant[i];\n}\n\nstatic void stbi__jpeg_finish(stbi__jpeg *z)\n{\n   if (z->progressive) {\n      // dequantize and idct the data\n      int i,j,n;\n      for (n=0; n < z->s->img_n; ++n) {\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]);\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n            }\n         }\n      }\n   }\n}\n\nstatic int stbi__process_marker(stbi__jpeg *z, int m)\n{\n   int L;\n   switch (m) {\n      case STBI__MARKER_none: // no marker found\n         return stbi__err(\"expected marker\",\"Corrupt JPEG\");\n\n      case 0xDD: // DRI - specify restart interval\n         if (stbi__get16be(z->s) != 4) return stbi__err(\"bad DRI len\",\"Corrupt JPEG\");\n         z->restart_interval = stbi__get16be(z->s);\n         return 1;\n\n      case 0xDB: // DQT - define quantization table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            int q = stbi__get8(z->s);\n            int p = q >> 4, sixteen = (p != 0);\n            int t = q & 15,i;\n            if (p != 0 && p != 1) return stbi__err(\"bad DQT type\",\"Corrupt JPEG\");\n            if (t > 3) return stbi__err(\"bad DQT table\",\"Corrupt JPEG\");\n\n            for (i=0; i < 64; ++i)\n               z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s));\n            L -= (sixteen ? 129 : 65);\n         }\n         return L==0;\n\n      case 0xC4: // DHT - define huffman table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            stbi_uc *v;\n            int sizes[16],i,n=0;\n            int q = stbi__get8(z->s);\n            int tc = q >> 4;\n            int th = q & 15;\n            if (tc > 1 || th > 3) return stbi__err(\"bad DHT header\",\"Corrupt JPEG\");\n            for (i=0; i < 16; ++i) {\n               sizes[i] = stbi__get8(z->s);\n               n += sizes[i];\n            }\n            L -= 17;\n            if (tc == 0) {\n               if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0;\n               v = z->huff_dc[th].values;\n            } else {\n               if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0;\n               v = z->huff_ac[th].values;\n            }\n            for (i=0; i < n; ++i)\n               v[i] = stbi__get8(z->s);\n            if (tc != 0)\n               stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th);\n            L -= n;\n         }\n         return L==0;\n   }\n\n   // check for comment block or APP blocks\n   if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {\n      L = stbi__get16be(z->s);\n      if (L < 2) {\n         if (m == 0xFE)\n            return stbi__err(\"bad COM len\",\"Corrupt JPEG\");\n         else\n            return stbi__err(\"bad APP len\",\"Corrupt JPEG\");\n      }\n      L -= 2;\n\n      if (m == 0xE0 && L >= 5) { // JFIF APP0 segment\n         static const unsigned char tag[5] = {'J','F','I','F','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 5; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 5;\n         if (ok)\n            z->jfif = 1;\n      } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment\n         static const unsigned char tag[6] = {'A','d','o','b','e','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 6; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 6;\n         if (ok) {\n            stbi__get8(z->s); // version\n            stbi__get16be(z->s); // flags0\n            stbi__get16be(z->s); // flags1\n            z->app14_color_transform = stbi__get8(z->s); // color transform\n            L -= 6;\n         }\n      }\n\n      stbi__skip(z->s, L);\n      return 1;\n   }\n\n   return stbi__err(\"unknown marker\",\"Corrupt JPEG\");\n}\n\n// after we see SOS\nstatic int stbi__process_scan_header(stbi__jpeg *z)\n{\n   int i;\n   int Ls = stbi__get16be(z->s);\n   z->scan_n = stbi__get8(z->s);\n   if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err(\"bad SOS component count\",\"Corrupt JPEG\");\n   if (Ls != 6+2*z->scan_n) return stbi__err(\"bad SOS len\",\"Corrupt JPEG\");\n   for (i=0; i < z->scan_n; ++i) {\n      int id = stbi__get8(z->s), which;\n      int q = stbi__get8(z->s);\n      for (which = 0; which < z->s->img_n; ++which)\n         if (z->img_comp[which].id == id)\n            break;\n      if (which == z->s->img_n) return 0; // no match\n      z->img_comp[which].hd = q >> 4;   if (z->img_comp[which].hd > 3) return stbi__err(\"bad DC huff\",\"Corrupt JPEG\");\n      z->img_comp[which].ha = q & 15;   if (z->img_comp[which].ha > 3) return stbi__err(\"bad AC huff\",\"Corrupt JPEG\");\n      z->order[i] = which;\n   }\n\n   {\n      int aa;\n      z->spec_start = stbi__get8(z->s);\n      z->spec_end   = stbi__get8(z->s); // should be 63, but might be 0\n      aa = stbi__get8(z->s);\n      z->succ_high = (aa >> 4);\n      z->succ_low  = (aa & 15);\n      if (z->progressive) {\n         if (z->spec_start > 63 || z->spec_end > 63  || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13)\n            return stbi__err(\"bad SOS\", \"Corrupt JPEG\");\n      } else {\n         if (z->spec_start != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         if (z->succ_high != 0 || z->succ_low != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         z->spec_end = 63;\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why)\n{\n   int i;\n   for (i=0; i < ncomp; ++i) {\n      if (z->img_comp[i].raw_data) {\n         STBI_FREE(z->img_comp[i].raw_data);\n         z->img_comp[i].raw_data = NULL;\n         z->img_comp[i].data = NULL;\n      }\n      if (z->img_comp[i].raw_coeff) {\n         STBI_FREE(z->img_comp[i].raw_coeff);\n         z->img_comp[i].raw_coeff = 0;\n         z->img_comp[i].coeff = 0;\n      }\n      if (z->img_comp[i].linebuf) {\n         STBI_FREE(z->img_comp[i].linebuf);\n         z->img_comp[i].linebuf = NULL;\n      }\n   }\n   return why;\n}\n\nstatic int stbi__process_frame_header(stbi__jpeg *z, int scan)\n{\n   stbi__context *s = z->s;\n   int Lf,p,i,q, h_max=1,v_max=1,c;\n   Lf = stbi__get16be(s);         if (Lf < 11) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\"); // JPEG\n   p  = stbi__get8(s);            if (p != 8) return stbi__err(\"only 8-bit\",\"JPEG format not supported: 8-bit only\"); // JPEG baseline\n   s->img_y = stbi__get16be(s);   if (s->img_y == 0) return stbi__err(\"no header height\", \"JPEG format not supported: delayed height\"); // Legal, but we don't handle it--but neither does IJG\n   s->img_x = stbi__get16be(s);   if (s->img_x == 0) return stbi__err(\"0 width\",\"Corrupt JPEG\"); // JPEG requires\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   c = stbi__get8(s);\n   if (c != 3 && c != 1 && c != 4) return stbi__err(\"bad component count\",\"Corrupt JPEG\");\n   s->img_n = c;\n   for (i=0; i < c; ++i) {\n      z->img_comp[i].data = NULL;\n      z->img_comp[i].linebuf = NULL;\n   }\n\n   if (Lf != 8+3*s->img_n) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\");\n\n   z->rgb = 0;\n   for (i=0; i < s->img_n; ++i) {\n      static const unsigned char rgb[3] = { 'R', 'G', 'B' };\n      z->img_comp[i].id = stbi__get8(s);\n      if (s->img_n == 3 && z->img_comp[i].id == rgb[i])\n         ++z->rgb;\n      q = stbi__get8(s);\n      z->img_comp[i].h = (q >> 4);  if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err(\"bad H\",\"Corrupt JPEG\");\n      z->img_comp[i].v = q & 15;    if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err(\"bad V\",\"Corrupt JPEG\");\n      z->img_comp[i].tq = stbi__get8(s);  if (z->img_comp[i].tq > 3) return stbi__err(\"bad TQ\",\"Corrupt JPEG\");\n   }\n\n   if (scan != STBI__SCAN_load) return 1;\n\n   if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err(\"too large\", \"Image too large to decode\");\n\n   for (i=0; i < s->img_n; ++i) {\n      if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h;\n      if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v;\n   }\n\n   // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios\n   // and I've never seen a non-corrupted JPEG file actually use them\n   for (i=0; i < s->img_n; ++i) {\n      if (h_max % z->img_comp[i].h != 0) return stbi__err(\"bad H\",\"Corrupt JPEG\");\n      if (v_max % z->img_comp[i].v != 0) return stbi__err(\"bad V\",\"Corrupt JPEG\");\n   }\n\n   // compute interleaved mcu info\n   z->img_h_max = h_max;\n   z->img_v_max = v_max;\n   z->img_mcu_w = h_max * 8;\n   z->img_mcu_h = v_max * 8;\n   // these sizes can't be more than 17 bits\n   z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w;\n   z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h;\n\n   for (i=0; i < s->img_n; ++i) {\n      // number of effective pixels (e.g. for non-interleaved MCU)\n      z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max;\n      z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max;\n      // to simplify generation, we'll allocate enough memory to decode\n      // the bogus oversized data from using interleaved MCUs and their\n      // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't\n      // discard the extra data until colorspace conversion\n      //\n      // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier)\n      // so these muls can't overflow with 32-bit ints (which we require)\n      z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;\n      z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;\n      z->img_comp[i].coeff = 0;\n      z->img_comp[i].raw_coeff = 0;\n      z->img_comp[i].linebuf = NULL;\n      z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15);\n      if (z->img_comp[i].raw_data == NULL)\n         return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n      // align blocks for idct using mmx/sse\n      z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15);\n      if (z->progressive) {\n         // w2, h2 are multiples of 8 (see above)\n         z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8;\n         z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8;\n         z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15);\n         if (z->img_comp[i].raw_coeff == NULL)\n            return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n         z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15);\n      }\n   }\n\n   return 1;\n}\n\n// use comparisons since in some cases we handle more than one case (e.g. SOF)\n#define stbi__DNL(x)         ((x) == 0xdc)\n#define stbi__SOI(x)         ((x) == 0xd8)\n#define stbi__EOI(x)         ((x) == 0xd9)\n#define stbi__SOF(x)         ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2)\n#define stbi__SOS(x)         ((x) == 0xda)\n\n#define stbi__SOF_progressive(x)   ((x) == 0xc2)\n\nstatic int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)\n{\n   int m;\n   z->jfif = 0;\n   z->app14_color_transform = -1; // valid values are 0,1,2\n   z->marker = STBI__MARKER_none; // initialize cached marker to empty\n   m = stbi__get_marker(z);\n   if (!stbi__SOI(m)) return stbi__err(\"no SOI\",\"Corrupt JPEG\");\n   if (scan == STBI__SCAN_type) return 1;\n   m = stbi__get_marker(z);\n   while (!stbi__SOF(m)) {\n      if (!stbi__process_marker(z,m)) return 0;\n      m = stbi__get_marker(z);\n      while (m == STBI__MARKER_none) {\n         // some files have extra padding after their blocks, so ok, we'll scan\n         if (stbi__at_eof(z->s)) return stbi__err(\"no SOF\", \"Corrupt JPEG\");\n         m = stbi__get_marker(z);\n      }\n   }\n   z->progressive = stbi__SOF_progressive(m);\n   if (!stbi__process_frame_header(z, scan)) return 0;\n   return 1;\n}\n\n// decode image to YCbCr format\nstatic int stbi__decode_jpeg_image(stbi__jpeg *j)\n{\n   int m;\n   for (m = 0; m < 4; m++) {\n      j->img_comp[m].raw_data = NULL;\n      j->img_comp[m].raw_coeff = NULL;\n   }\n   j->restart_interval = 0;\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0;\n   m = stbi__get_marker(j);\n   while (!stbi__EOI(m)) {\n      if (stbi__SOS(m)) {\n         if (!stbi__process_scan_header(j)) return 0;\n         if (!stbi__parse_entropy_coded_data(j)) return 0;\n         if (j->marker == STBI__MARKER_none ) {\n            // handle 0s at the end of image data from IP Kamera 9060\n            while (!stbi__at_eof(j->s)) {\n               int x = stbi__get8(j->s);\n               if (x == 255) {\n                  j->marker = stbi__get8(j->s);\n                  break;\n               }\n            }\n            // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0\n         }\n      } else if (stbi__DNL(m)) {\n         int Ld = stbi__get16be(j->s);\n         stbi__uint32 NL = stbi__get16be(j->s);\n         if (Ld != 4) return stbi__err(\"bad DNL len\", \"Corrupt JPEG\");\n         if (NL != j->s->img_y) return stbi__err(\"bad DNL height\", \"Corrupt JPEG\");\n      } else {\n         if (!stbi__process_marker(j, m)) return 0;\n      }\n      m = stbi__get_marker(j);\n   }\n   if (j->progressive)\n      stbi__jpeg_finish(j);\n   return 1;\n}\n\n// static jfif-centered resampling (across block boundaries)\n\ntypedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1,\n                                    int w, int hs);\n\n#define stbi__div4(x) ((stbi_uc) ((x) >> 2))\n\nstatic stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   STBI_NOTUSED(out);\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(w);\n   STBI_NOTUSED(hs);\n   return in_near;\n}\n\nstatic stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples vertically for every one in input\n   int i;\n   STBI_NOTUSED(hs);\n   for (i=0; i < w; ++i)\n      out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2);\n   return out;\n}\n\nstatic stbi_uc*  stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples horizontally for every one in input\n   int i;\n   stbi_uc *input = in_near;\n\n   if (w == 1) {\n      // if only one sample, can't do any interpolation\n      out[0] = out[1] = input[0];\n      return out;\n   }\n\n   out[0] = input[0];\n   out[1] = stbi__div4(input[0]*3 + input[1] + 2);\n   for (i=1; i < w-1; ++i) {\n      int n = 3*input[i]+2;\n      out[i*2+0] = stbi__div4(n+input[i-1]);\n      out[i*2+1] = stbi__div4(n+input[i+1]);\n   }\n   out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2);\n   out[i*2+1] = input[w-1];\n\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#define stbi__div16(x) ((stbi_uc) ((x) >> 4))\n\nstatic stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i,t0,t1;\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   out[0] = stbi__div4(t1+2);\n   for (i=1; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i=0,t0,t1;\n\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   // process groups of 8 pixels for as long as we can.\n   // note we can't handle the last pixel in a row in this loop\n   // because we need to handle the filter boundary conditions.\n   for (; i < ((w-1) & ~7); i += 8) {\n#if defined(STBI_SSE2)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      __m128i zero  = _mm_setzero_si128();\n      __m128i farb  = _mm_loadl_epi64((__m128i *) (in_far + i));\n      __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i));\n      __m128i farw  = _mm_unpacklo_epi8(farb, zero);\n      __m128i nearw = _mm_unpacklo_epi8(nearb, zero);\n      __m128i diff  = _mm_sub_epi16(farw, nearw);\n      __m128i nears = _mm_slli_epi16(nearw, 2);\n      __m128i curr  = _mm_add_epi16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      __m128i prv0 = _mm_slli_si128(curr, 2);\n      __m128i nxt0 = _mm_srli_si128(curr, 2);\n      __m128i prev = _mm_insert_epi16(prv0, t1, 0);\n      __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      __m128i bias  = _mm_set1_epi16(8);\n      __m128i curs = _mm_slli_epi16(curr, 2);\n      __m128i prvd = _mm_sub_epi16(prev, curr);\n      __m128i nxtd = _mm_sub_epi16(next, curr);\n      __m128i curb = _mm_add_epi16(curs, bias);\n      __m128i even = _mm_add_epi16(prvd, curb);\n      __m128i odd  = _mm_add_epi16(nxtd, curb);\n\n      // interleave even and odd pixels, then undo scaling.\n      __m128i int0 = _mm_unpacklo_epi16(even, odd);\n      __m128i int1 = _mm_unpackhi_epi16(even, odd);\n      __m128i de0  = _mm_srli_epi16(int0, 4);\n      __m128i de1  = _mm_srli_epi16(int1, 4);\n\n      // pack and write output\n      __m128i outv = _mm_packus_epi16(de0, de1);\n      _mm_storeu_si128((__m128i *) (out + i*2), outv);\n#elif defined(STBI_NEON)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      uint8x8_t farb  = vld1_u8(in_far + i);\n      uint8x8_t nearb = vld1_u8(in_near + i);\n      int16x8_t diff  = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));\n      int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));\n      int16x8_t curr  = vaddq_s16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      int16x8_t prv0 = vextq_s16(curr, curr, 7);\n      int16x8_t nxt0 = vextq_s16(curr, curr, 1);\n      int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);\n      int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      int16x8_t curs = vshlq_n_s16(curr, 2);\n      int16x8_t prvd = vsubq_s16(prev, curr);\n      int16x8_t nxtd = vsubq_s16(next, curr);\n      int16x8_t even = vaddq_s16(curs, prvd);\n      int16x8_t odd  = vaddq_s16(curs, nxtd);\n\n      // undo scaling and round, then store with even/odd phases interleaved\n      uint8x8x2_t o;\n      o.val[0] = vqrshrun_n_s16(even, 4);\n      o.val[1] = vqrshrun_n_s16(odd,  4);\n      vst2_u8(out + i*2, o);\n#endif\n\n      // \"previous\" value for next iter\n      t1 = 3*in_near[i+7] + in_far[i+7];\n   }\n\n   t0 = t1;\n   t1 = 3*in_near[i] + in_far[i];\n   out[i*2] = stbi__div16(3*t1 + t0 + 8);\n\n   for (++i; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n#endif\n\nstatic stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // resample with nearest-neighbor\n   int i,j;\n   STBI_NOTUSED(in_far);\n   for (i=0; i < w; ++i)\n      for (j=0; j < hs; ++j)\n         out[i*hs+j] = in_near[i];\n   return out;\n}\n\n// this is a reduced-precision calculation of YCbCr-to-RGB introduced\n// to make sure the code produces the same results in both SIMD and scalar\n#define stbi__float2fixed(x)  (((int) ((x) * 4096.0f + 0.5f)) << 8)\nstatic void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step)\n{\n   int i;\n   for (i=0; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed +  cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                     +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step)\n{\n   int i = 0;\n\n#ifdef STBI_SSE2\n   // step == 3 is pretty ugly on the final interleave, and i'm not convinced\n   // it's useful in practice (you wouldn't use it for textures, for example).\n   // so just accelerate step == 4 case.\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      __m128i signflip  = _mm_set1_epi8(-0x80);\n      __m128i cr_const0 = _mm_set1_epi16(   (short) ( 1.40200f*4096.0f+0.5f));\n      __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f));\n      __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f));\n      __m128i cb_const1 = _mm_set1_epi16(   (short) ( 1.77200f*4096.0f+0.5f));\n      __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128);\n      __m128i xw = _mm_set1_epi16(255); // alpha channel\n\n      for (; i+7 < count; i += 8) {\n         // load\n         __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i));\n         __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i));\n         __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i));\n         __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128\n         __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128\n\n         // unpack to short (and left-shift cr, cb by 8)\n         __m128i yw  = _mm_unpacklo_epi8(y_bias, y_bytes);\n         __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);\n         __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);\n\n         // color transform\n         __m128i yws = _mm_srli_epi16(yw, 4);\n         __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);\n         __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);\n         __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);\n         __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);\n         __m128i rws = _mm_add_epi16(cr0, yws);\n         __m128i gwt = _mm_add_epi16(cb0, yws);\n         __m128i bws = _mm_add_epi16(yws, cb1);\n         __m128i gws = _mm_add_epi16(gwt, cr1);\n\n         // descale\n         __m128i rw = _mm_srai_epi16(rws, 4);\n         __m128i bw = _mm_srai_epi16(bws, 4);\n         __m128i gw = _mm_srai_epi16(gws, 4);\n\n         // back to byte, set up for transpose\n         __m128i brb = _mm_packus_epi16(rw, bw);\n         __m128i gxb = _mm_packus_epi16(gw, xw);\n\n         // transpose to interleave channels\n         __m128i t0 = _mm_unpacklo_epi8(brb, gxb);\n         __m128i t1 = _mm_unpackhi_epi8(brb, gxb);\n         __m128i o0 = _mm_unpacklo_epi16(t0, t1);\n         __m128i o1 = _mm_unpackhi_epi16(t0, t1);\n\n         // store\n         _mm_storeu_si128((__m128i *) (out + 0), o0);\n         _mm_storeu_si128((__m128i *) (out + 16), o1);\n         out += 32;\n      }\n   }\n#endif\n\n#ifdef STBI_NEON\n   // in this version, step=3 support would be easy to add. but is there demand?\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      uint8x8_t signflip = vdup_n_u8(0x80);\n      int16x8_t cr_const0 = vdupq_n_s16(   (short) ( 1.40200f*4096.0f+0.5f));\n      int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f));\n      int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f));\n      int16x8_t cb_const1 = vdupq_n_s16(   (short) ( 1.77200f*4096.0f+0.5f));\n\n      for (; i+7 < count; i += 8) {\n         // load\n         uint8x8_t y_bytes  = vld1_u8(y + i);\n         uint8x8_t cr_bytes = vld1_u8(pcr + i);\n         uint8x8_t cb_bytes = vld1_u8(pcb + i);\n         int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));\n         int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));\n\n         // expand to s16\n         int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));\n         int16x8_t crw = vshll_n_s8(cr_biased, 7);\n         int16x8_t cbw = vshll_n_s8(cb_biased, 7);\n\n         // color transform\n         int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);\n         int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);\n         int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);\n         int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);\n         int16x8_t rws = vaddq_s16(yws, cr0);\n         int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);\n         int16x8_t bws = vaddq_s16(yws, cb1);\n\n         // undo scaling, round, convert to byte\n         uint8x8x4_t o;\n         o.val[0] = vqrshrun_n_s16(rws, 4);\n         o.val[1] = vqrshrun_n_s16(gws, 4);\n         o.val[2] = vqrshrun_n_s16(bws, 4);\n         o.val[3] = vdup_n_u8(255);\n\n         // store, interleaving r/g/b/a\n         vst4_u8(out, o);\n         out += 8*4;\n      }\n   }\n#endif\n\n   for (; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed + cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                   +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n#endif\n\n// set up the kernels\nstatic void stbi__setup_jpeg(stbi__jpeg *j)\n{\n   j->idct_block_kernel = stbi__idct_block;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2;\n\n#ifdef STBI_SSE2\n   if (stbi__sse2_available()) {\n      j->idct_block_kernel = stbi__idct_simd;\n      j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n      j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n   }\n#endif\n\n#ifdef STBI_NEON\n   j->idct_block_kernel = stbi__idct_simd;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n#endif\n}\n\n// clean up the temporary component buffers\nstatic void stbi__cleanup_jpeg(stbi__jpeg *j)\n{\n   stbi__free_jpeg_components(j, j->s->img_n, 0);\n}\n\ntypedef struct\n{\n   resample_row_func resample;\n   stbi_uc *line0,*line1;\n   int hs,vs;   // expansion factor in each axis\n   int w_lores; // horizontal pixels pre-expansion\n   int ystep;   // how far through vertical expansion we are\n   int ypos;    // which pre-expansion row we're on\n} stbi__resample;\n\n// fast 0..255 * 0..255 => 0..255 rounded multiplication\nstatic stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y)\n{\n   unsigned int t = x*y + 128;\n   return (stbi_uc) ((t + (t >>8)) >> 8);\n}\n\nstatic stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp)\n{\n   int n, decode_n, is_rgb;\n   z->s->img_n = 0; // make stbi__cleanup_jpeg safe\n\n   // validate req_comp\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n\n   // load a jpeg image from whichever source, but leave in YCbCr format\n   if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; }\n\n   // determine actual number of components to generate\n   n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1;\n\n   is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif));\n\n   if (z->s->img_n == 3 && n < 3 && !is_rgb)\n      decode_n = 1;\n   else\n      decode_n = z->s->img_n;\n\n   // nothing to do if no components requested; check this now to avoid\n   // accessing uninitialized coutput[0] later\n   if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; }\n\n   // resample and color-convert\n   {\n      int k;\n      unsigned int i,j;\n      stbi_uc *output;\n      stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL };\n\n      stbi__resample res_comp[4];\n\n      for (k=0; k < decode_n; ++k) {\n         stbi__resample *r = &res_comp[k];\n\n         // allocate line buffer big enough for upsampling off the edges\n         // with upsample factor of 4\n         z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3);\n         if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n         r->hs      = z->img_h_max / z->img_comp[k].h;\n         r->vs      = z->img_v_max / z->img_comp[k].v;\n         r->ystep   = r->vs >> 1;\n         r->w_lores = (z->s->img_x + r->hs-1) / r->hs;\n         r->ypos    = 0;\n         r->line0   = r->line1 = z->img_comp[k].data;\n\n         if      (r->hs == 1 && r->vs == 1) r->resample = resample_row_1;\n         else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2;\n         else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2;\n         else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel;\n         else                               r->resample = stbi__resample_row_generic;\n      }\n\n      // can't error after this so, this is safe\n      output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1);\n      if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n      // now go ahead and resample\n      for (j=0; j < z->s->img_y; ++j) {\n         stbi_uc *out = output + n * z->s->img_x * j;\n         for (k=0; k < decode_n; ++k) {\n            stbi__resample *r = &res_comp[k];\n            int y_bot = r->ystep >= (r->vs >> 1);\n            coutput[k] = r->resample(z->img_comp[k].linebuf,\n                                     y_bot ? r->line1 : r->line0,\n                                     y_bot ? r->line0 : r->line1,\n                                     r->w_lores, r->hs);\n            if (++r->ystep >= r->vs) {\n               r->ystep = 0;\n               r->line0 = r->line1;\n               if (++r->ypos < z->img_comp[k].y)\n                  r->line1 += z->img_comp[k].w2;\n            }\n         }\n         if (n >= 3) {\n            stbi_uc *y = coutput[0];\n            if (z->s->img_n == 3) {\n               if (is_rgb) {\n                  for (i=0; i < z->s->img_x; ++i) {\n                     out[0] = y[i];\n                     out[1] = coutput[1][i];\n                     out[2] = coutput[2][i];\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else {\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else if (z->s->img_n == 4) {\n               if (z->app14_color_transform == 0) { // CMYK\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(coutput[0][i], m);\n                     out[1] = stbi__blinn_8x8(coutput[1][i], m);\n                     out[2] = stbi__blinn_8x8(coutput[2][i], m);\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else if (z->app14_color_transform == 2) { // YCCK\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(255 - out[0], m);\n                     out[1] = stbi__blinn_8x8(255 - out[1], m);\n                     out[2] = stbi__blinn_8x8(255 - out[2], m);\n                     out += n;\n                  }\n               } else { // YCbCr + alpha?  Ignore the fourth channel for now\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = out[1] = out[2] = y[i];\n                  out[3] = 255; // not used if n==3\n                  out += n;\n               }\n         } else {\n            if (is_rgb) {\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i)\n                     *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n               else {\n                  for (i=0; i < z->s->img_x; ++i, out += 2) {\n                     out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n                     out[1] = 255;\n                  }\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 0) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  stbi_uc m = coutput[3][i];\n                  stbi_uc r = stbi__blinn_8x8(coutput[0][i], m);\n                  stbi_uc g = stbi__blinn_8x8(coutput[1][i], m);\n                  stbi_uc b = stbi__blinn_8x8(coutput[2][i], m);\n                  out[0] = stbi__compute_y(r, g, b);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 2) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else {\n               stbi_uc *y = coutput[0];\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i) out[i] = y[i];\n               else\n                  for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; }\n            }\n         }\n      }\n      stbi__cleanup_jpeg(z);\n      *out_x = z->s->img_x;\n      *out_y = z->s->img_y;\n      if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output\n      return output;\n   }\n}\n\nstatic void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   unsigned char* result;\n   stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg));\n   if (!j) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   STBI_NOTUSED(ri);\n   j->s = s;\n   stbi__setup_jpeg(j);\n   result = load_jpeg_image(j, x,y,comp,req_comp);\n   STBI_FREE(j);\n   return result;\n}\n\nstatic int stbi__jpeg_test(stbi__context *s)\n{\n   int r;\n   stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg));\n   if (!j) return stbi__err(\"outofmem\", \"Out of memory\");\n   j->s = s;\n   stbi__setup_jpeg(j);\n   r = stbi__decode_jpeg_header(j, STBI__SCAN_type);\n   stbi__rewind(s);\n   STBI_FREE(j);\n   return r;\n}\n\nstatic int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)\n{\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {\n      stbi__rewind( j->s );\n      return 0;\n   }\n   if (x) *x = j->s->img_x;\n   if (y) *y = j->s->img_y;\n   if (comp) *comp = j->s->img_n >= 3 ? 3 : 1;\n   return 1;\n}\n\nstatic int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int result;\n   stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg)));\n   if (!j) return stbi__err(\"outofmem\", \"Out of memory\");\n   j->s = s;\n   result = stbi__jpeg_info_raw(j, x, y, comp);\n   STBI_FREE(j);\n   return result;\n}\n#endif\n\n// public domain zlib decode    v0.2  Sean Barrett 2006-11-18\n//    simple implementation\n//      - all input must be provided in an upfront buffer\n//      - all output is written to a single output buffer (can malloc/realloc)\n//    performance\n//      - fast huffman\n\n#ifndef STBI_NO_ZLIB\n\n// fast-way is faster to check than jpeg huffman, but slow way is slower\n#define STBI__ZFAST_BITS  9 // accelerate all cases in default tables\n#define STBI__ZFAST_MASK  ((1 << STBI__ZFAST_BITS) - 1)\n#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet\n\n// zlib-style huffman encoding\n// (jpegs packs from left, zlib from right, so can't share code)\ntypedef struct\n{\n   stbi__uint16 fast[1 << STBI__ZFAST_BITS];\n   stbi__uint16 firstcode[16];\n   int maxcode[17];\n   stbi__uint16 firstsymbol[16];\n   stbi_uc  size[STBI__ZNSYMS];\n   stbi__uint16 value[STBI__ZNSYMS];\n} stbi__zhuffman;\n\nstbi_inline static int stbi__bitreverse16(int n)\n{\n  n = ((n & 0xAAAA) >>  1) | ((n & 0x5555) << 1);\n  n = ((n & 0xCCCC) >>  2) | ((n & 0x3333) << 2);\n  n = ((n & 0xF0F0) >>  4) | ((n & 0x0F0F) << 4);\n  n = ((n & 0xFF00) >>  8) | ((n & 0x00FF) << 8);\n  return n;\n}\n\nstbi_inline static int stbi__bit_reverse(int v, int bits)\n{\n   STBI_ASSERT(bits <= 16);\n   // to bit reverse n bits, reverse 16 and shift\n   // e.g. 11 bits, bit reverse and shift away 5\n   return stbi__bitreverse16(v) >> (16-bits);\n}\n\nstatic int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num)\n{\n   int i,k=0;\n   int code, next_code[16], sizes[17];\n\n   // DEFLATE spec for generating codes\n   memset(sizes, 0, sizeof(sizes));\n   memset(z->fast, 0, sizeof(z->fast));\n   for (i=0; i < num; ++i)\n      ++sizes[sizelist[i]];\n   sizes[0] = 0;\n   for (i=1; i < 16; ++i)\n      if (sizes[i] > (1 << i))\n         return stbi__err(\"bad sizes\", \"Corrupt PNG\");\n   code = 0;\n   for (i=1; i < 16; ++i) {\n      next_code[i] = code;\n      z->firstcode[i] = (stbi__uint16) code;\n      z->firstsymbol[i] = (stbi__uint16) k;\n      code = (code + sizes[i]);\n      if (sizes[i])\n         if (code-1 >= (1 << i)) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n      z->maxcode[i] = code << (16-i); // preshift for inner loop\n      code <<= 1;\n      k += sizes[i];\n   }\n   z->maxcode[16] = 0x10000; // sentinel\n   for (i=0; i < num; ++i) {\n      int s = sizelist[i];\n      if (s) {\n         int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];\n         stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i);\n         z->size [c] = (stbi_uc     ) s;\n         z->value[c] = (stbi__uint16) i;\n         if (s <= STBI__ZFAST_BITS) {\n            int j = stbi__bit_reverse(next_code[s],s);\n            while (j < (1 << STBI__ZFAST_BITS)) {\n               z->fast[j] = fastv;\n               j += (1 << s);\n            }\n         }\n         ++next_code[s];\n      }\n   }\n   return 1;\n}\n\n// zlib-from-memory implementation for PNG reading\n//    because PNG allows splitting the zlib stream arbitrarily,\n//    and it's annoying structurally to have PNG call ZLIB call PNG,\n//    we require PNG read all the IDATs and combine them into a single\n//    memory buffer\n\ntypedef struct\n{\n   stbi_uc *zbuffer, *zbuffer_end;\n   int num_bits;\n   stbi__uint32 code_buffer;\n\n   char *zout;\n   char *zout_start;\n   char *zout_end;\n   int   z_expandable;\n\n   stbi__zhuffman z_length, z_distance;\n} stbi__zbuf;\n\nstbi_inline static int stbi__zeof(stbi__zbuf *z)\n{\n   return (z->zbuffer >= z->zbuffer_end);\n}\n\nstbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)\n{\n   return stbi__zeof(z) ? 0 : *z->zbuffer++;\n}\n\nstatic void stbi__fill_bits(stbi__zbuf *z)\n{\n   do {\n      if (z->code_buffer >= (1U << z->num_bits)) {\n        z->zbuffer = z->zbuffer_end;  /* treat this as EOF so we fail. */\n        return;\n      }\n      z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits;\n      z->num_bits += 8;\n   } while (z->num_bits <= 24);\n}\n\nstbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n)\n{\n   unsigned int k;\n   if (z->num_bits < n) stbi__fill_bits(z);\n   k = z->code_buffer & ((1 << n) - 1);\n   z->code_buffer >>= n;\n   z->num_bits -= n;\n   return k;\n}\n\nstatic int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s,k;\n   // not resolved by fast table, so compute it the slow way\n   // use jpeg approach, which requires MSbits at top\n   k = stbi__bit_reverse(a->code_buffer, 16);\n   for (s=STBI__ZFAST_BITS+1; ; ++s)\n      if (k < z->maxcode[s])\n         break;\n   if (s >= 16) return -1; // invalid code!\n   // code size is s, so:\n   b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s];\n   if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere!\n   if (z->size[b] != s) return -1;  // was originally an assert, but report failure instead.\n   a->code_buffer >>= s;\n   a->num_bits -= s;\n   return z->value[b];\n}\n\nstbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s;\n   if (a->num_bits < 16) {\n      if (stbi__zeof(a)) {\n         return -1;   /* report error for unexpected end of data. */\n      }\n      stbi__fill_bits(a);\n   }\n   b = z->fast[a->code_buffer & STBI__ZFAST_MASK];\n   if (b) {\n      s = b >> 9;\n      a->code_buffer >>= s;\n      a->num_bits -= s;\n      return b & 511;\n   }\n   return stbi__zhuffman_decode_slowpath(a, z);\n}\n\nstatic int stbi__zexpand(stbi__zbuf *z, char *zout, int n)  // need to make room for n bytes\n{\n   char *q;\n   unsigned int cur, limit, old_limit;\n   z->zout = zout;\n   if (!z->z_expandable) return stbi__err(\"output buffer limit\",\"Corrupt PNG\");\n   cur   = (unsigned int) (z->zout - z->zout_start);\n   limit = old_limit = (unsigned) (z->zout_end - z->zout_start);\n   if (UINT_MAX - cur < (unsigned) n) return stbi__err(\"outofmem\", \"Out of memory\");\n   while (cur + n > limit) {\n      if(limit > UINT_MAX / 2) return stbi__err(\"outofmem\", \"Out of memory\");\n      limit *= 2;\n   }\n   q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);\n   STBI_NOTUSED(old_limit);\n   if (q == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n   z->zout_start = q;\n   z->zout       = q + cur;\n   z->zout_end   = q + limit;\n   return 1;\n}\n\nstatic const int stbi__zlength_base[31] = {\n   3,4,5,6,7,8,9,10,11,13,\n   15,17,19,23,27,31,35,43,51,59,\n   67,83,99,115,131,163,195,227,258,0,0 };\n\nstatic const int stbi__zlength_extra[31]=\n{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };\n\nstatic const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,\n257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};\n\nstatic const int stbi__zdist_extra[32] =\n{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};\n\nstatic int stbi__parse_huffman_block(stbi__zbuf *a)\n{\n   char *zout = a->zout;\n   for(;;) {\n      int z = stbi__zhuffman_decode(a, &a->z_length);\n      if (z < 256) {\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\"); // error in huffman codes\n         if (zout >= a->zout_end) {\n            if (!stbi__zexpand(a, zout, 1)) return 0;\n            zout = a->zout;\n         }\n         *zout++ = (char) z;\n      } else {\n         stbi_uc *p;\n         int len,dist;\n         if (z == 256) {\n            a->zout = zout;\n            return 1;\n         }\n         z -= 257;\n         len = stbi__zlength_base[z];\n         if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]);\n         z = stbi__zhuffman_decode(a, &a->z_distance);\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\");\n         dist = stbi__zdist_base[z];\n         if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]);\n         if (zout - a->zout_start < dist) return stbi__err(\"bad dist\",\"Corrupt PNG\");\n         if (zout + len > a->zout_end) {\n            if (!stbi__zexpand(a, zout, len)) return 0;\n            zout = a->zout;\n         }\n         p = (stbi_uc *) (zout - dist);\n         if (dist == 1) { // run of one byte; common in images.\n            stbi_uc v = *p;\n            if (len) { do *zout++ = v; while (--len); }\n         } else {\n            if (len) { do *zout++ = *p++; while (--len); }\n         }\n      }\n   }\n}\n\nstatic int stbi__compute_huffman_codes(stbi__zbuf *a)\n{\n   static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };\n   stbi__zhuffman z_codelength;\n   stbi_uc lencodes[286+32+137];//padding for maximum single op\n   stbi_uc codelength_sizes[19];\n   int i,n;\n\n   int hlit  = stbi__zreceive(a,5) + 257;\n   int hdist = stbi__zreceive(a,5) + 1;\n   int hclen = stbi__zreceive(a,4) + 4;\n   int ntot  = hlit + hdist;\n\n   memset(codelength_sizes, 0, sizeof(codelength_sizes));\n   for (i=0; i < hclen; ++i) {\n      int s = stbi__zreceive(a,3);\n      codelength_sizes[length_dezigzag[i]] = (stbi_uc) s;\n   }\n   if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0;\n\n   n = 0;\n   while (n < ntot) {\n      int c = stbi__zhuffman_decode(a, &z_codelength);\n      if (c < 0 || c >= 19) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n      if (c < 16)\n         lencodes[n++] = (stbi_uc) c;\n      else {\n         stbi_uc fill = 0;\n         if (c == 16) {\n            c = stbi__zreceive(a,2)+3;\n            if (n == 0) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n            fill = lencodes[n-1];\n         } else if (c == 17) {\n            c = stbi__zreceive(a,3)+3;\n         } else if (c == 18) {\n            c = stbi__zreceive(a,7)+11;\n         } else {\n            return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n         }\n         if (ntot - n < c) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n         memset(lencodes+n, fill, c);\n         n += c;\n      }\n   }\n   if (n != ntot) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n   if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0;\n   if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0;\n   return 1;\n}\n\nstatic int stbi__parse_uncompressed_block(stbi__zbuf *a)\n{\n   stbi_uc header[4];\n   int len,nlen,k;\n   if (a->num_bits & 7)\n      stbi__zreceive(a, a->num_bits & 7); // discard\n   // drain the bit-packed data into header\n   k = 0;\n   while (a->num_bits > 0) {\n      header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check\n      a->code_buffer >>= 8;\n      a->num_bits -= 8;\n   }\n   if (a->num_bits < 0) return stbi__err(\"zlib corrupt\",\"Corrupt PNG\");\n   // now fill header the normal way\n   while (k < 4)\n      header[k++] = stbi__zget8(a);\n   len  = header[1] * 256 + header[0];\n   nlen = header[3] * 256 + header[2];\n   if (nlen != (len ^ 0xffff)) return stbi__err(\"zlib corrupt\",\"Corrupt PNG\");\n   if (a->zbuffer + len > a->zbuffer_end) return stbi__err(\"read past buffer\",\"Corrupt PNG\");\n   if (a->zout + len > a->zout_end)\n      if (!stbi__zexpand(a, a->zout, len)) return 0;\n   memcpy(a->zout, a->zbuffer, len);\n   a->zbuffer += len;\n   a->zout += len;\n   return 1;\n}\n\nstatic int stbi__parse_zlib_header(stbi__zbuf *a)\n{\n   int cmf   = stbi__zget8(a);\n   int cm    = cmf & 15;\n   /* int cinfo = cmf >> 4; */\n   int flg   = stbi__zget8(a);\n   if (stbi__zeof(a)) return stbi__err(\"bad zlib header\",\"Corrupt PNG\"); // zlib spec\n   if ((cmf*256+flg) % 31 != 0) return stbi__err(\"bad zlib header\",\"Corrupt PNG\"); // zlib spec\n   if (flg & 32) return stbi__err(\"no preset dict\",\"Corrupt PNG\"); // preset dictionary not allowed in png\n   if (cm != 8) return stbi__err(\"bad compression\",\"Corrupt PNG\"); // DEFLATE required for png\n   // window = 1 << (8 + cinfo)... but who cares, we fully buffer output\n   return 1;\n}\n\nstatic const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] =\n{\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8\n};\nstatic const stbi_uc stbi__zdefault_distance[32] =\n{\n   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5\n};\n/*\nInit algorithm:\n{\n   int i;   // use <= to match clearly with spec\n   for (i=0; i <= 143; ++i)     stbi__zdefault_length[i]   = 8;\n   for (   ; i <= 255; ++i)     stbi__zdefault_length[i]   = 9;\n   for (   ; i <= 279; ++i)     stbi__zdefault_length[i]   = 7;\n   for (   ; i <= 287; ++i)     stbi__zdefault_length[i]   = 8;\n\n   for (i=0; i <=  31; ++i)     stbi__zdefault_distance[i] = 5;\n}\n*/\n\nstatic int stbi__parse_zlib(stbi__zbuf *a, int parse_header)\n{\n   int final, type;\n   if (parse_header)\n      if (!stbi__parse_zlib_header(a)) return 0;\n   a->num_bits = 0;\n   a->code_buffer = 0;\n   do {\n      final = stbi__zreceive(a,1);\n      type = stbi__zreceive(a,2);\n      if (type == 0) {\n         if (!stbi__parse_uncompressed_block(a)) return 0;\n      } else if (type == 3) {\n         return 0;\n      } else {\n         if (type == 1) {\n            // use fixed code lengths\n            if (!stbi__zbuild_huffman(&a->z_length  , stbi__zdefault_length  , STBI__ZNSYMS)) return 0;\n            if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance,  32)) return 0;\n         } else {\n            if (!stbi__compute_huffman_codes(a)) return 0;\n         }\n         if (!stbi__parse_huffman_block(a)) return 0;\n      }\n   } while (!final);\n   return 1;\n}\n\nstatic int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header)\n{\n   a->zout_start = obuf;\n   a->zout       = obuf;\n   a->zout_end   = obuf + olen;\n   a->z_expandable = exp;\n\n   return stbi__parse_zlib(a, parse_header);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, 1)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen)\n{\n   return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 1))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(16384);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer+len;\n   if (stbi__do_zlib(&a, p, 16384, 1, 0)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 0))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n#endif\n\n// public domain \"baseline\" PNG decoder   v0.10  Sean Barrett 2006-11-18\n//    simple implementation\n//      - only 8-bit samples\n//      - no CRC checking\n//      - allocates lots of intermediate memory\n//        - avoids problem of streaming data between subsystems\n//        - avoids explicit window management\n//    performance\n//      - uses stb_zlib, a PD zlib implementation with fast huffman decoding\n\n#ifndef STBI_NO_PNG\ntypedef struct\n{\n   stbi__uint32 length;\n   stbi__uint32 type;\n} stbi__pngchunk;\n\nstatic stbi__pngchunk stbi__get_chunk_header(stbi__context *s)\n{\n   stbi__pngchunk c;\n   c.length = stbi__get32be(s);\n   c.type   = stbi__get32be(s);\n   return c;\n}\n\nstatic int stbi__check_png_header(stbi__context *s)\n{\n   static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 };\n   int i;\n   for (i=0; i < 8; ++i)\n      if (stbi__get8(s) != png_sig[i]) return stbi__err(\"bad png sig\",\"Not a PNG\");\n   return 1;\n}\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi_uc *idata, *expanded, *out;\n   int depth;\n} stbi__png;\n\n\nenum {\n   STBI__F_none=0,\n   STBI__F_sub=1,\n   STBI__F_up=2,\n   STBI__F_avg=3,\n   STBI__F_paeth=4,\n   // synthetic filters used for first scanline to avoid needing a dummy row of 0s\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic stbi_uc first_row_filter[5] =\n{\n   STBI__F_none,\n   STBI__F_sub,\n   STBI__F_none,\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic int stbi__paeth(int a, int b, int c)\n{\n   int p = a + b - c;\n   int pa = abs(p-a);\n   int pb = abs(p-b);\n   int pc = abs(p-c);\n   if (pa <= pb && pa <= pc) return a;\n   if (pb <= pc) return b;\n   return c;\n}\n\nstatic const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 };\n\n// create the png data from post-deflated data\nstatic int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color)\n{\n   int bytes = (depth == 16? 2 : 1);\n   stbi__context *s = a->s;\n   stbi__uint32 i,j,stride = x*out_n*bytes;\n   stbi__uint32 img_len, img_width_bytes;\n   int k;\n   int img_n = s->img_n; // copy it into a local for later\n\n   int output_bytes = out_n*bytes;\n   int filter_bytes = img_n*bytes;\n   int width = x;\n\n   STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1);\n   a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into\n   if (!a->out) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err(\"too large\", \"Corrupt PNG\");\n   img_width_bytes = (((img_n * x * depth) + 7) >> 3);\n   img_len = (img_width_bytes + 1) * y;\n\n   // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,\n   // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),\n   // so just check for raw_len < img_len always.\n   if (raw_len < img_len) return stbi__err(\"not enough pixels\",\"Corrupt PNG\");\n\n   for (j=0; j < y; ++j) {\n      stbi_uc *cur = a->out + stride*j;\n      stbi_uc *prior;\n      int filter = *raw++;\n\n      if (filter > 4)\n         return stbi__err(\"invalid filter\",\"Corrupt PNG\");\n\n      if (depth < 8) {\n         if (img_width_bytes > x) return stbi__err(\"invalid width\",\"Corrupt PNG\");\n         cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place\n         filter_bytes = 1;\n         width = img_width_bytes;\n      }\n      prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above\n\n      // if first row, use special filter that doesn't sample previous row\n      if (j == 0) filter = first_row_filter[filter];\n\n      // handle first byte explicitly\n      for (k=0; k < filter_bytes; ++k) {\n         switch (filter) {\n            case STBI__F_none       : cur[k] = raw[k]; break;\n            case STBI__F_sub        : cur[k] = raw[k]; break;\n            case STBI__F_up         : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;\n            case STBI__F_avg        : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break;\n            case STBI__F_paeth      : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break;\n            case STBI__F_avg_first  : cur[k] = raw[k]; break;\n            case STBI__F_paeth_first: cur[k] = raw[k]; break;\n         }\n      }\n\n      if (depth == 8) {\n         if (img_n != out_n)\n            cur[img_n] = 255; // first pixel\n         raw += img_n;\n         cur += out_n;\n         prior += out_n;\n      } else if (depth == 16) {\n         if (img_n != out_n) {\n            cur[filter_bytes]   = 255; // first pixel top byte\n            cur[filter_bytes+1] = 255; // first pixel bottom byte\n         }\n         raw += filter_bytes;\n         cur += output_bytes;\n         prior += output_bytes;\n      } else {\n         raw += 1;\n         cur += 1;\n         prior += 1;\n      }\n\n      // this is a little gross, so that we don't switch per-pixel or per-component\n      if (depth < 8 || img_n == out_n) {\n         int nk = (width - 1)*filter_bytes;\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (k=0; k < nk; ++k)\n         switch (filter) {\n            // \"none\" filter turns into a memcpy here; make that explicit.\n            case STBI__F_none:         memcpy(cur, raw, nk); break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n         raw += nk;\n      } else {\n         STBI_ASSERT(img_n+1 == out_n);\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \\\n                   for (k=0; k < filter_bytes; ++k)\n         switch (filter) {\n            STBI__CASE(STBI__F_none)         { cur[k] = raw[k]; } break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n\n         // the loop above sets the high byte of the pixels' alpha, but for\n         // 16 bit png files we also need the low byte set. we'll do that here.\n         if (depth == 16) {\n            cur = a->out + stride*j; // start at the beginning of the row again\n            for (i=0; i < x; ++i,cur+=output_bytes) {\n               cur[filter_bytes+1] = 255;\n            }\n         }\n      }\n   }\n\n   // we make a separate pass to expand bits to pixels; for performance,\n   // this could run two scanlines behind the above code, so it won't\n   // intefere with filtering but will still be in the cache.\n   if (depth < 8) {\n      for (j=0; j < y; ++j) {\n         stbi_uc *cur = a->out + stride*j;\n         stbi_uc *in  = a->out + stride*j + x*out_n - img_width_bytes;\n         // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit\n         // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop\n         stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range\n\n         // note that the final byte might overshoot and write more data than desired.\n         // we can allocate enough data that this never writes out of memory, but it\n         // could also overwrite the next scanline. can it overwrite non-empty data\n         // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel.\n         // so we need to explicitly clamp the final ones\n\n         if (depth == 4) {\n            for (k=x*img_n; k >= 2; k-=2, ++in) {\n               *cur++ = scale * ((*in >> 4)       );\n               *cur++ = scale * ((*in     ) & 0x0f);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 4)       );\n         } else if (depth == 2) {\n            for (k=x*img_n; k >= 4; k-=4, ++in) {\n               *cur++ = scale * ((*in >> 6)       );\n               *cur++ = scale * ((*in >> 4) & 0x03);\n               *cur++ = scale * ((*in >> 2) & 0x03);\n               *cur++ = scale * ((*in     ) & 0x03);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 6)       );\n            if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03);\n            if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03);\n         } else if (depth == 1) {\n            for (k=x*img_n; k >= 8; k-=8, ++in) {\n               *cur++ = scale * ((*in >> 7)       );\n               *cur++ = scale * ((*in >> 6) & 0x01);\n               *cur++ = scale * ((*in >> 5) & 0x01);\n               *cur++ = scale * ((*in >> 4) & 0x01);\n               *cur++ = scale * ((*in >> 3) & 0x01);\n               *cur++ = scale * ((*in >> 2) & 0x01);\n               *cur++ = scale * ((*in >> 1) & 0x01);\n               *cur++ = scale * ((*in     ) & 0x01);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 7)       );\n            if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01);\n            if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01);\n            if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01);\n            if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01);\n            if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01);\n            if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01);\n         }\n         if (img_n != out_n) {\n            int q;\n            // insert alpha = 255\n            cur = a->out + stride*j;\n            if (img_n == 1) {\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*2+1] = 255;\n                  cur[q*2+0] = cur[q];\n               }\n            } else {\n               STBI_ASSERT(img_n == 3);\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*4+3] = 255;\n                  cur[q*4+2] = cur[q*3+2];\n                  cur[q*4+1] = cur[q*3+1];\n                  cur[q*4+0] = cur[q*3+0];\n               }\n            }\n         }\n      }\n   } else if (depth == 16) {\n      // force the image data from big-endian to platform-native.\n      // this is done in a separate pass due to the decoding relying\n      // on the data being untouched, but could probably be done\n      // per-line during decode if care is taken.\n      stbi_uc *cur = a->out;\n      stbi__uint16 *cur16 = (stbi__uint16*)cur;\n\n      for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) {\n         *cur16 = (cur[0] << 8) | cur[1];\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced)\n{\n   int bytes = (depth == 16 ? 2 : 1);\n   int out_bytes = out_n * bytes;\n   stbi_uc *final;\n   int p;\n   if (!interlaced)\n      return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color);\n\n   // de-interlacing\n   final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0);\n   if (!final) return stbi__err(\"outofmem\", \"Out of memory\");\n   for (p=0; p < 7; ++p) {\n      int xorig[] = { 0,4,0,2,0,1,0 };\n      int yorig[] = { 0,0,4,0,2,0,1 };\n      int xspc[]  = { 8,8,4,4,2,2,1 };\n      int yspc[]  = { 8,8,8,4,4,2,2 };\n      int i,j,x,y;\n      // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1\n      x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p];\n      y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p];\n      if (x && y) {\n         stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y;\n         if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) {\n            STBI_FREE(final);\n            return 0;\n         }\n         for (j=0; j < y; ++j) {\n            for (i=0; i < x; ++i) {\n               int out_y = j*yspc[p]+yorig[p];\n               int out_x = i*xspc[p]+xorig[p];\n               memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes,\n                      a->out + (j*x+i)*out_bytes, out_bytes);\n            }\n         }\n         STBI_FREE(a->out);\n         image_data += img_len;\n         image_data_len -= img_len;\n      }\n   }\n   a->out = final;\n\n   return 1;\n}\n\nstatic int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 255 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i=0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 255);\n         p += 2;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi__uint16 *p = (stbi__uint16*) z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 65535 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i = 0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 65535);\n         p += 2;\n      }\n   } else {\n      for (i = 0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n)\n{\n   stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y;\n   stbi_uc *p, *temp_out, *orig = a->out;\n\n   p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0);\n   if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   // between here and free(out) below, exitting would leak\n   temp_out = p;\n\n   if (pal_img_n == 3) {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p += 3;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p[3] = palette[n+3];\n         p += 4;\n      }\n   }\n   STBI_FREE(a->out);\n   a->out = temp_out;\n\n   STBI_NOTUSED(len);\n\n   return 1;\n}\n\nstatic int stbi__unpremultiply_on_load_global = 0;\nstatic int stbi__de_iphone_flag_global = 0;\n\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)\n{\n   stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply;\n}\n\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)\n{\n   stbi__de_iphone_flag_global = flag_true_if_should_convert;\n}\n\n#ifndef STBI_THREAD_LOCAL\n#define stbi__unpremultiply_on_load  stbi__unpremultiply_on_load_global\n#define stbi__de_iphone_flag  stbi__de_iphone_flag_global\n#else\nstatic STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set;\nstatic STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set;\n\nSTBIDEF void stbi__unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply)\n{\n   stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply;\n   stbi__unpremultiply_on_load_set = 1;\n}\n\nSTBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert)\n{\n   stbi__de_iphone_flag_local = flag_true_if_should_convert;\n   stbi__de_iphone_flag_set = 1;\n}\n\n#define stbi__unpremultiply_on_load  (stbi__unpremultiply_on_load_set           \\\n                                       ? stbi__unpremultiply_on_load_local      \\\n                                       : stbi__unpremultiply_on_load_global)\n#define stbi__de_iphone_flag  (stbi__de_iphone_flag_set                         \\\n                                ? stbi__de_iphone_flag_local                    \\\n                                : stbi__de_iphone_flag_global)\n#endif // STBI_THREAD_LOCAL\n\nstatic void stbi__de_iphone(stbi__png *z)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   if (s->img_out_n == 3) {  // convert bgr to rgb\n      for (i=0; i < pixel_count; ++i) {\n         stbi_uc t = p[0];\n         p[0] = p[2];\n         p[2] = t;\n         p += 3;\n      }\n   } else {\n      STBI_ASSERT(s->img_out_n == 4);\n      if (stbi__unpremultiply_on_load) {\n         // convert bgr to rgb and unpremultiply\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc a = p[3];\n            stbi_uc t = p[0];\n            if (a) {\n               stbi_uc half = a / 2;\n               p[0] = (p[2] * 255 + half) / a;\n               p[1] = (p[1] * 255 + half) / a;\n               p[2] = ( t   * 255 + half) / a;\n            } else {\n               p[0] = p[2];\n               p[2] = t;\n            }\n            p += 4;\n         }\n      } else {\n         // convert bgr to rgb\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc t = p[0];\n            p[0] = p[2];\n            p[2] = t;\n            p += 4;\n         }\n      }\n   }\n}\n\n#define STBI__PNG_TYPE(a,b,c,d)  (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d))\n\nstatic int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)\n{\n   stbi_uc palette[1024], pal_img_n=0;\n   stbi_uc has_trans=0, tc[3]={0};\n   stbi__uint16 tc16[3];\n   stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0;\n   int first=1,k,interlace=0, color=0, is_iphone=0;\n   stbi__context *s = z->s;\n\n   z->expanded = NULL;\n   z->idata = NULL;\n   z->out = NULL;\n\n   if (!stbi__check_png_header(s)) return 0;\n\n   if (scan == STBI__SCAN_type) return 1;\n\n   for (;;) {\n      stbi__pngchunk c = stbi__get_chunk_header(s);\n      switch (c.type) {\n         case STBI__PNG_TYPE('C','g','B','I'):\n            is_iphone = 1;\n            stbi__skip(s, c.length);\n            break;\n         case STBI__PNG_TYPE('I','H','D','R'): {\n            int comp,filter;\n            if (!first) return stbi__err(\"multiple IHDR\",\"Corrupt PNG\");\n            first = 0;\n            if (c.length != 13) return stbi__err(\"bad IHDR len\",\"Corrupt PNG\");\n            s->img_x = stbi__get32be(s);\n            s->img_y = stbi__get32be(s);\n            if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            z->depth = stbi__get8(s);  if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16)  return stbi__err(\"1/2/4/8/16-bit only\",\"PNG not supported: 1/2/4/8/16-bit only\");\n            color = stbi__get8(s);  if (color > 6)         return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3 && z->depth == 16)                  return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            comp  = stbi__get8(s);  if (comp) return stbi__err(\"bad comp method\",\"Corrupt PNG\");\n            filter= stbi__get8(s);  if (filter) return stbi__err(\"bad filter method\",\"Corrupt PNG\");\n            interlace = stbi__get8(s); if (interlace>1) return stbi__err(\"bad interlace method\",\"Corrupt PNG\");\n            if (!s->img_x || !s->img_y) return stbi__err(\"0-pixel image\",\"Corrupt PNG\");\n            if (!pal_img_n) {\n               s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);\n               if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err(\"too large\", \"Image too large to decode\");\n               if (scan == STBI__SCAN_header) return 1;\n            } else {\n               // if paletted, then pal_n is our final components, and\n               // img_n is # components to decompress/filter.\n               s->img_n = 1;\n               if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err(\"too large\",\"Corrupt PNG\");\n               // if SCAN_header, have to scan to see if we have a tRNS\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('P','L','T','E'):  {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (c.length > 256*3) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            pal_len = c.length / 3;\n            if (pal_len * 3 != c.length) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            for (i=0; i < pal_len; ++i) {\n               palette[i*4+0] = stbi__get8(s);\n               palette[i*4+1] = stbi__get8(s);\n               palette[i*4+2] = stbi__get8(s);\n               palette[i*4+3] = 255;\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('t','R','N','S'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (z->idata) return stbi__err(\"tRNS after IDAT\",\"Corrupt PNG\");\n            if (pal_img_n) {\n               if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; }\n               if (pal_len == 0) return stbi__err(\"tRNS before PLTE\",\"Corrupt PNG\");\n               if (c.length > pal_len) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               pal_img_n = 4;\n               for (i=0; i < c.length; ++i)\n                  palette[i*4+3] = stbi__get8(s);\n            } else {\n               if (!(s->img_n & 1)) return stbi__err(\"tRNS with alpha\",\"Corrupt PNG\");\n               if (c.length != (stbi__uint32) s->img_n*2) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               has_trans = 1;\n               if (z->depth == 16) {\n                  for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is\n               } else {\n                  for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger\n               }\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','D','A','T'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (pal_img_n && !pal_len) return stbi__err(\"no PLTE\",\"Corrupt PNG\");\n            if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; }\n            if ((int)(ioff + c.length) < (int)ioff) return 0;\n            if (ioff + c.length > idata_limit) {\n               stbi__uint32 idata_limit_old = idata_limit;\n               stbi_uc *p;\n               if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096;\n               while (ioff + c.length > idata_limit)\n                  idata_limit *= 2;\n               STBI_NOTUSED(idata_limit_old);\n               p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n               z->idata = p;\n            }\n            if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err(\"outofdata\",\"Corrupt PNG\");\n            ioff += c.length;\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','E','N','D'): {\n            stbi__uint32 raw_len, bpl;\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (scan != STBI__SCAN_load) return 1;\n            if (z->idata == NULL) return stbi__err(\"no IDAT\",\"Corrupt PNG\");\n            // initial guess for decoded data size to avoid unnecessary reallocs\n            bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component\n            raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */;\n            z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone);\n            if (z->expanded == NULL) return 0; // zlib should set error\n            STBI_FREE(z->idata); z->idata = NULL;\n            if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans)\n               s->img_out_n = s->img_n+1;\n            else\n               s->img_out_n = s->img_n;\n            if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0;\n            if (has_trans) {\n               if (z->depth == 16) {\n                  if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0;\n               } else {\n                  if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0;\n               }\n            }\n            if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2)\n               stbi__de_iphone(z);\n            if (pal_img_n) {\n               // pal_img_n == 3 or 4\n               s->img_n = pal_img_n; // record the actual colors we had\n               s->img_out_n = pal_img_n;\n               if (req_comp >= 3) s->img_out_n = req_comp;\n               if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n))\n                  return 0;\n            } else if (has_trans) {\n               // non-paletted image with tRNS -> source image has (constant) alpha\n               ++s->img_n;\n            }\n            STBI_FREE(z->expanded); z->expanded = NULL;\n            // end of PNG chunk, read and skip CRC\n            stbi__get32be(s);\n            return 1;\n         }\n\n         default:\n            // if critical, fail\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if ((c.type & (1 << 29)) == 0) {\n               #ifndef STBI_NO_FAILURE_STRINGS\n               // not threadsafe\n               static char invalid_chunk[] = \"XXXX PNG chunk not known\";\n               invalid_chunk[0] = STBI__BYTECAST(c.type >> 24);\n               invalid_chunk[1] = STBI__BYTECAST(c.type >> 16);\n               invalid_chunk[2] = STBI__BYTECAST(c.type >>  8);\n               invalid_chunk[3] = STBI__BYTECAST(c.type >>  0);\n               #endif\n               return stbi__err(invalid_chunk, \"PNG not supported: unknown PNG chunk type\");\n            }\n            stbi__skip(s, c.length);\n            break;\n      }\n      // end of PNG chunk, read and skip CRC\n      stbi__get32be(s);\n   }\n}\n\nstatic void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri)\n{\n   void *result=NULL;\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n   if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {\n      if (p->depth <= 8)\n         ri->bits_per_channel = 8;\n      else if (p->depth == 16)\n         ri->bits_per_channel = 16;\n      else\n         return stbi__errpuc(\"bad bits_per_channel\", \"PNG not supported: unsupported color depth\");\n      result = p->out;\n      p->out = NULL;\n      if (req_comp && req_comp != p->s->img_out_n) {\n         if (ri->bits_per_channel == 8)\n            result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         else\n            result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         p->s->img_out_n = req_comp;\n         if (result == NULL) return result;\n      }\n      *x = p->s->img_x;\n      *y = p->s->img_y;\n      if (n) *n = p->s->img_n;\n   }\n   STBI_FREE(p->out);      p->out      = NULL;\n   STBI_FREE(p->expanded); p->expanded = NULL;\n   STBI_FREE(p->idata);    p->idata    = NULL;\n\n   return result;\n}\n\nstatic void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__do_png(&p, x,y,comp,req_comp, ri);\n}\n\nstatic int stbi__png_test(stbi__context *s)\n{\n   int r;\n   r = stbi__check_png_header(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)\n{\n   if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {\n      stbi__rewind( p->s );\n      return 0;\n   }\n   if (x) *x = p->s->img_x;\n   if (y) *y = p->s->img_y;\n   if (comp) *comp = p->s->img_n;\n   return 1;\n}\n\nstatic int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__png_info_raw(&p, x, y, comp);\n}\n\nstatic int stbi__png_is16(stbi__context *s)\n{\n   stbi__png p;\n   p.s = s;\n   if (!stbi__png_info_raw(&p, NULL, NULL, NULL))\n\t   return 0;\n   if (p.depth != 16) {\n      stbi__rewind(p.s);\n      return 0;\n   }\n   return 1;\n}\n#endif\n\n// Microsoft/Windows BMP image\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_test_raw(stbi__context *s)\n{\n   int r;\n   int sz;\n   if (stbi__get8(s) != 'B') return 0;\n   if (stbi__get8(s) != 'M') return 0;\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   stbi__get32le(s); // discard data offset\n   sz = stbi__get32le(s);\n   r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);\n   return r;\n}\n\nstatic int stbi__bmp_test(stbi__context *s)\n{\n   int r = stbi__bmp_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\n\n// returns 0..31 for the highest set bit\nstatic int stbi__high_bit(unsigned int z)\n{\n   int n=0;\n   if (z == 0) return -1;\n   if (z >= 0x10000) { n += 16; z >>= 16; }\n   if (z >= 0x00100) { n +=  8; z >>=  8; }\n   if (z >= 0x00010) { n +=  4; z >>=  4; }\n   if (z >= 0x00004) { n +=  2; z >>=  2; }\n   if (z >= 0x00002) { n +=  1;/* >>=  1;*/ }\n   return n;\n}\n\nstatic int stbi__bitcount(unsigned int a)\n{\n   a = (a & 0x55555555) + ((a >>  1) & 0x55555555); // max 2\n   a = (a & 0x33333333) + ((a >>  2) & 0x33333333); // max 4\n   a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits\n   a = (a + (a >> 8)); // max 16 per 8 bits\n   a = (a + (a >> 16)); // max 32 per 8 bits\n   return a & 0xff;\n}\n\n// extract an arbitrarily-aligned N-bit value (N=bits)\n// from v, and then make it 8-bits long and fractionally\n// extend it to full full range.\nstatic int stbi__shiftsigned(unsigned int v, int shift, int bits)\n{\n   static unsigned int mul_table[9] = {\n      0,\n      0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/,\n      0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/,\n   };\n   static unsigned int shift_table[9] = {\n      0, 0,0,1,0,2,4,6,0,\n   };\n   if (shift < 0)\n      v <<= -shift;\n   else\n      v >>= shift;\n   STBI_ASSERT(v < 256);\n   v >>= (8-bits);\n   STBI_ASSERT(bits >= 0 && bits <= 8);\n   return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits];\n}\n\ntypedef struct\n{\n   int bpp, offset, hsz;\n   unsigned int mr,mg,mb,ma, all_a;\n   int extra_read;\n} stbi__bmp_data;\n\nstatic int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress)\n{\n   // BI_BITFIELDS specifies masks explicitly, don't override\n   if (compress == 3)\n      return 1;\n\n   if (compress == 0) {\n      if (info->bpp == 16) {\n         info->mr = 31u << 10;\n         info->mg = 31u <<  5;\n         info->mb = 31u <<  0;\n      } else if (info->bpp == 32) {\n         info->mr = 0xffu << 16;\n         info->mg = 0xffu <<  8;\n         info->mb = 0xffu <<  0;\n         info->ma = 0xffu << 24;\n         info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0\n      } else {\n         // otherwise, use defaults, which is all-0\n         info->mr = info->mg = info->mb = info->ma = 0;\n      }\n      return 1;\n   }\n   return 0; // error\n}\n\nstatic void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info)\n{\n   int hsz;\n   if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc(\"not BMP\", \"Corrupt BMP\");\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   info->offset = stbi__get32le(s);\n   info->hsz = hsz = stbi__get32le(s);\n   info->mr = info->mg = info->mb = info->ma = 0;\n   info->extra_read = 14;\n\n   if (info->offset < 0) return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n\n   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc(\"unknown BMP\", \"BMP type not supported: unknown\");\n   if (hsz == 12) {\n      s->img_x = stbi__get16le(s);\n      s->img_y = stbi__get16le(s);\n   } else {\n      s->img_x = stbi__get32le(s);\n      s->img_y = stbi__get32le(s);\n   }\n   if (stbi__get16le(s) != 1) return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n   info->bpp = stbi__get16le(s);\n   if (hsz != 12) {\n      int compress = stbi__get32le(s);\n      if (compress == 1 || compress == 2) return stbi__errpuc(\"BMP RLE\", \"BMP type not supported: RLE\");\n      if (compress >= 4) return stbi__errpuc(\"BMP JPEG/PNG\", \"BMP type not supported: unsupported compression\"); // this includes PNG/JPEG modes\n      if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc(\"bad BMP\", \"bad BMP\"); // bitfields requires 16 or 32 bits/pixel\n      stbi__get32le(s); // discard sizeof\n      stbi__get32le(s); // discard hres\n      stbi__get32le(s); // discard vres\n      stbi__get32le(s); // discard colorsused\n      stbi__get32le(s); // discard max important\n      if (hsz == 40 || hsz == 56) {\n         if (hsz == 56) {\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n         }\n         if (info->bpp == 16 || info->bpp == 32) {\n            if (compress == 0) {\n               stbi__bmp_set_mask_defaults(info, compress);\n            } else if (compress == 3) {\n               info->mr = stbi__get32le(s);\n               info->mg = stbi__get32le(s);\n               info->mb = stbi__get32le(s);\n               info->extra_read += 12;\n               // not documented, but generated by photoshop and handled by mspaint\n               if (info->mr == info->mg && info->mg == info->mb) {\n                  // ?!?!?\n                  return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n               }\n            } else\n               return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         }\n      } else {\n         // V4/V5 header\n         int i;\n         if (hsz != 108 && hsz != 124)\n            return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         info->mr = stbi__get32le(s);\n         info->mg = stbi__get32le(s);\n         info->mb = stbi__get32le(s);\n         info->ma = stbi__get32le(s);\n         if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs\n            stbi__bmp_set_mask_defaults(info, compress);\n         stbi__get32le(s); // discard color space\n         for (i=0; i < 12; ++i)\n            stbi__get32le(s); // discard color space parameters\n         if (hsz == 124) {\n            stbi__get32le(s); // discard rendering intent\n            stbi__get32le(s); // discard offset of profile data\n            stbi__get32le(s); // discard size of profile data\n            stbi__get32le(s); // discard reserved\n         }\n      }\n   }\n   return (void *) 1;\n}\n\n\nstatic void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   unsigned int mr=0,mg=0,mb=0,ma=0, all_a;\n   stbi_uc pal[256][4];\n   int psize=0,i,j,width;\n   int flip_vertically, pad, target;\n   stbi__bmp_data info;\n   STBI_NOTUSED(ri);\n\n   info.all_a = 255;\n   if (stbi__bmp_parse_header(s, &info) == NULL)\n      return NULL; // error code already set\n\n   flip_vertically = ((int) s->img_y) > 0;\n   s->img_y = abs((int) s->img_y);\n\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   mr = info.mr;\n   mg = info.mg;\n   mb = info.mb;\n   ma = info.ma;\n   all_a = info.all_a;\n\n   if (info.hsz == 12) {\n      if (info.bpp < 24)\n         psize = (info.offset - info.extra_read - 24) / 3;\n   } else {\n      if (info.bpp < 16)\n         psize = (info.offset - info.extra_read - info.hsz) >> 2;\n   }\n   if (psize == 0) {\n      if (info.offset != s->callback_already_read + (s->img_buffer - s->img_buffer_original)) {\n        return stbi__errpuc(\"bad offset\", \"Corrupt BMP\");\n      }\n   }\n\n   if (info.bpp == 24 && ma == 0xff000000)\n      s->img_n = 3;\n   else\n      s->img_n = ma ? 4 : 3;\n   if (req_comp && req_comp >= 3) // we can directly decode 3 or 4\n      target = req_comp;\n   else\n      target = s->img_n; // if they want monochrome, we'll post-convert\n\n   // sanity-check size\n   if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt BMP\");\n\n   out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   if (info.bpp < 16) {\n      int z=0;\n      if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc(\"invalid\", \"Corrupt BMP\"); }\n      for (i=0; i < psize; ++i) {\n         pal[i][2] = stbi__get8(s);\n         pal[i][1] = stbi__get8(s);\n         pal[i][0] = stbi__get8(s);\n         if (info.hsz != 12) stbi__get8(s);\n         pal[i][3] = 255;\n      }\n      stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4));\n      if (info.bpp == 1) width = (s->img_x + 7) >> 3;\n      else if (info.bpp == 4) width = (s->img_x + 1) >> 1;\n      else if (info.bpp == 8) width = s->img_x;\n      else { STBI_FREE(out); return stbi__errpuc(\"bad bpp\", \"Corrupt BMP\"); }\n      pad = (-width)&3;\n      if (info.bpp == 1) {\n         for (j=0; j < (int) s->img_y; ++j) {\n            int bit_offset = 7, v = stbi__get8(s);\n            for (i=0; i < (int) s->img_x; ++i) {\n               int color = (v>>bit_offset)&0x1;\n               out[z++] = pal[color][0];\n               out[z++] = pal[color][1];\n               out[z++] = pal[color][2];\n               if (target == 4) out[z++] = 255;\n               if (i+1 == (int) s->img_x) break;\n               if((--bit_offset) < 0) {\n                  bit_offset = 7;\n                  v = stbi__get8(s);\n               }\n            }\n            stbi__skip(s, pad);\n         }\n      } else {\n         for (j=0; j < (int) s->img_y; ++j) {\n            for (i=0; i < (int) s->img_x; i += 2) {\n               int v=stbi__get8(s),v2=0;\n               if (info.bpp == 4) {\n                  v2 = v & 15;\n                  v >>= 4;\n               }\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n               if (i+1 == (int) s->img_x) break;\n               v = (info.bpp == 8) ? stbi__get8(s) : v2;\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n            }\n            stbi__skip(s, pad);\n         }\n      }\n   } else {\n      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;\n      int z = 0;\n      int easy=0;\n      stbi__skip(s, info.offset - info.extra_read - info.hsz);\n      if (info.bpp == 24) width = 3 * s->img_x;\n      else if (info.bpp == 16) width = 2*s->img_x;\n      else /* bpp = 32 and pad = 0 */ width=0;\n      pad = (-width) & 3;\n      if (info.bpp == 24) {\n         easy = 1;\n      } else if (info.bpp == 32) {\n         if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)\n            easy = 2;\n      }\n      if (!easy) {\n         if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc(\"bad masks\", \"Corrupt BMP\"); }\n         // right shift amt to put high bit in position #7\n         rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr);\n         gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg);\n         bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb);\n         ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma);\n         if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc(\"bad masks\", \"Corrupt BMP\"); }\n      }\n      for (j=0; j < (int) s->img_y; ++j) {\n         if (easy) {\n            for (i=0; i < (int) s->img_x; ++i) {\n               unsigned char a;\n               out[z+2] = stbi__get8(s);\n               out[z+1] = stbi__get8(s);\n               out[z+0] = stbi__get8(s);\n               z += 3;\n               a = (easy == 2 ? stbi__get8(s) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = a;\n            }\n         } else {\n            int bpp = info.bpp;\n            for (i=0; i < (int) s->img_x; ++i) {\n               stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s));\n               unsigned int a;\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount));\n               a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = STBI__BYTECAST(a);\n            }\n         }\n         stbi__skip(s, pad);\n      }\n   }\n\n   // if alpha channel is all 0s, replace with all 255s\n   if (target == 4 && all_a == 0)\n      for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4)\n         out[i] = 255;\n\n   if (flip_vertically) {\n      stbi_uc t;\n      for (j=0; j < (int) s->img_y>>1; ++j) {\n         stbi_uc *p1 = out +      j     *s->img_x*target;\n         stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target;\n         for (i=0; i < (int) s->img_x*target; ++i) {\n            t = p1[i]; p1[i] = p2[i]; p2[i] = t;\n         }\n      }\n   }\n\n   if (req_comp && req_comp != target) {\n      out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n   return out;\n}\n#endif\n\n// Targa Truevision - TGA\n// by Jonathan Dummer\n#ifndef STBI_NO_TGA\n// returns STBI_rgb or whatever, 0 on error\nstatic int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16)\n{\n   // only RGB or RGBA (incl. 16bit) or grey allowed\n   if (is_rgb16) *is_rgb16 = 0;\n   switch(bits_per_pixel) {\n      case 8:  return STBI_grey;\n      case 16: if(is_grey) return STBI_grey_alpha;\n               // fallthrough\n      case 15: if(is_rgb16) *is_rgb16 = 1;\n               return STBI_rgb;\n      case 24: // fallthrough\n      case 32: return bits_per_pixel/8;\n      default: return 0;\n   }\n}\n\nstatic int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)\n{\n    int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;\n    int sz, tga_colormap_type;\n    stbi__get8(s);                   // discard Offset\n    tga_colormap_type = stbi__get8(s); // colormap type\n    if( tga_colormap_type > 1 ) {\n        stbi__rewind(s);\n        return 0;      // only RGB or indexed allowed\n    }\n    tga_image_type = stbi__get8(s); // image type\n    if ( tga_colormap_type == 1 ) { // colormapped (paletted) image\n        if (tga_image_type != 1 && tga_image_type != 9) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n        sz = stbi__get8(s);    //   check bits per palette color entry\n        if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip image x and y origin\n        tga_colormap_bpp = sz;\n    } else { // \"normal\" image w/o colormap - only RGB or grey allowed, +/- RLE\n        if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) {\n            stbi__rewind(s);\n            return 0; // only RGB or grey allowed, +/- RLE\n        }\n        stbi__skip(s,9); // skip colormap specification and image x/y origin\n        tga_colormap_bpp = 0;\n    }\n    tga_w = stbi__get16le(s);\n    if( tga_w < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test width\n    }\n    tga_h = stbi__get16le(s);\n    if( tga_h < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test height\n    }\n    tga_bits_per_pixel = stbi__get8(s); // bits per pixel\n    stbi__get8(s); // ignore alpha bits\n    if (tga_colormap_bpp != 0) {\n        if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) {\n            // when using a colormap, tga_bits_per_pixel is the size of the indexes\n            // I don't think anything but 8 or 16bit indexes makes sense\n            stbi__rewind(s);\n            return 0;\n        }\n        tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);\n    } else {\n        tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);\n    }\n    if(!tga_comp) {\n      stbi__rewind(s);\n      return 0;\n    }\n    if (x) *x = tga_w;\n    if (y) *y = tga_h;\n    if (comp) *comp = tga_comp;\n    return 1;                   // seems to have passed everything\n}\n\nstatic int stbi__tga_test(stbi__context *s)\n{\n   int res = 0;\n   int sz, tga_color_type;\n   stbi__get8(s);      //   discard Offset\n   tga_color_type = stbi__get8(s);   //   color type\n   if ( tga_color_type > 1 ) goto errorEnd;   //   only RGB or indexed allowed\n   sz = stbi__get8(s);   //   image type\n   if ( tga_color_type == 1 ) { // colormapped (paletted) image\n      if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9\n      stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n      sz = stbi__get8(s);    //   check bits per palette color entry\n      if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n      stbi__skip(s,4);       // skip image x and y origin\n   } else { // \"normal\" image w/o colormap\n      if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE\n      stbi__skip(s,9); // skip colormap specification and image x/y origin\n   }\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test width\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test height\n   sz = stbi__get8(s);   //   bits per pixel\n   if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index\n   if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n\n   res = 1; // if we got this far, everything's good and we can return 1 instead of 0\n\nerrorEnd:\n   stbi__rewind(s);\n   return res;\n}\n\n// read 16bit value and convert to 24bit RGB\nstatic void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out)\n{\n   stbi__uint16 px = (stbi__uint16)stbi__get16le(s);\n   stbi__uint16 fiveBitMask = 31;\n   // we have 3 channels with 5bits each\n   int r = (px >> 10) & fiveBitMask;\n   int g = (px >> 5) & fiveBitMask;\n   int b = px & fiveBitMask;\n   // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later\n   out[0] = (stbi_uc)((r * 255)/31);\n   out[1] = (stbi_uc)((g * 255)/31);\n   out[2] = (stbi_uc)((b * 255)/31);\n\n   // some people claim that the most significant bit might be used for alpha\n   // (possibly if an alpha-bit is set in the \"image descriptor byte\")\n   // but that only made 16bit test images completely translucent..\n   // so let's treat all 15 and 16bit TGAs as RGB with no alpha.\n}\n\nstatic void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   //   read in the TGA header stuff\n   int tga_offset = stbi__get8(s);\n   int tga_indexed = stbi__get8(s);\n   int tga_image_type = stbi__get8(s);\n   int tga_is_RLE = 0;\n   int tga_palette_start = stbi__get16le(s);\n   int tga_palette_len = stbi__get16le(s);\n   int tga_palette_bits = stbi__get8(s);\n   int tga_x_origin = stbi__get16le(s);\n   int tga_y_origin = stbi__get16le(s);\n   int tga_width = stbi__get16le(s);\n   int tga_height = stbi__get16le(s);\n   int tga_bits_per_pixel = stbi__get8(s);\n   int tga_comp, tga_rgb16=0;\n   int tga_inverted = stbi__get8(s);\n   // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?)\n   //   image data\n   unsigned char *tga_data;\n   unsigned char *tga_palette = NULL;\n   int i, j;\n   unsigned char raw_data[4] = {0};\n   int RLE_count = 0;\n   int RLE_repeating = 0;\n   int read_next_pixel = 1;\n   STBI_NOTUSED(ri);\n   STBI_NOTUSED(tga_x_origin); // @TODO\n   STBI_NOTUSED(tga_y_origin); // @TODO\n\n   if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   //   do a tiny bit of precessing\n   if ( tga_image_type >= 8 )\n   {\n      tga_image_type -= 8;\n      tga_is_RLE = 1;\n   }\n   tga_inverted = 1 - ((tga_inverted >> 5) & 1);\n\n   //   If I'm paletted, then I'll use the number of bits from the palette\n   if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16);\n   else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16);\n\n   if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency\n      return stbi__errpuc(\"bad format\", \"Can't find out TGA pixelformat\");\n\n   //   tga info\n   *x = tga_width;\n   *y = tga_height;\n   if (comp) *comp = tga_comp;\n\n   if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt TGA\");\n\n   tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);\n   if (!tga_data) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   // skip to the data's starting position (offset usually = 0)\n   stbi__skip(s, tga_offset );\n\n   if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) {\n      for (i=0; i < tga_height; ++i) {\n         int row = tga_inverted ? tga_height -i - 1 : i;\n         stbi_uc *tga_row = tga_data + row*tga_width*tga_comp;\n         stbi__getn(s, tga_row, tga_width * tga_comp);\n      }\n   } else  {\n      //   do I need to load a palette?\n      if ( tga_indexed)\n      {\n         if (tga_palette_len == 0) {  /* you have to have at least one entry! */\n            STBI_FREE(tga_data);\n            return stbi__errpuc(\"bad palette\", \"Corrupt TGA\");\n         }\n\n         //   any data to skip? (offset usually = 0)\n         stbi__skip(s, tga_palette_start );\n         //   load the palette\n         tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);\n         if (!tga_palette) {\n            STBI_FREE(tga_data);\n            return stbi__errpuc(\"outofmem\", \"Out of memory\");\n         }\n         if (tga_rgb16) {\n            stbi_uc *pal_entry = tga_palette;\n            STBI_ASSERT(tga_comp == STBI_rgb);\n            for (i=0; i < tga_palette_len; ++i) {\n               stbi__tga_read_rgb16(s, pal_entry);\n               pal_entry += tga_comp;\n            }\n         } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {\n               STBI_FREE(tga_data);\n               STBI_FREE(tga_palette);\n               return stbi__errpuc(\"bad palette\", \"Corrupt TGA\");\n         }\n      }\n      //   load the data\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         //   if I'm in RLE mode, do I need to get a RLE stbi__pngchunk?\n         if ( tga_is_RLE )\n         {\n            if ( RLE_count == 0 )\n            {\n               //   yep, get the next byte as a RLE command\n               int RLE_cmd = stbi__get8(s);\n               RLE_count = 1 + (RLE_cmd & 127);\n               RLE_repeating = RLE_cmd >> 7;\n               read_next_pixel = 1;\n            } else if ( !RLE_repeating )\n            {\n               read_next_pixel = 1;\n            }\n         } else\n         {\n            read_next_pixel = 1;\n         }\n         //   OK, if I need to read a pixel, do it now\n         if ( read_next_pixel )\n         {\n            //   load however much data we did have\n            if ( tga_indexed )\n            {\n               // read in index, then perform the lookup\n               int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s);\n               if ( pal_idx >= tga_palette_len ) {\n                  // invalid index\n                  pal_idx = 0;\n               }\n               pal_idx *= tga_comp;\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = tga_palette[pal_idx+j];\n               }\n            } else if(tga_rgb16) {\n               STBI_ASSERT(tga_comp == STBI_rgb);\n               stbi__tga_read_rgb16(s, raw_data);\n            } else {\n               //   read in the data raw\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = stbi__get8(s);\n               }\n            }\n            //   clear the reading flag for the next pixel\n            read_next_pixel = 0;\n         } // end of reading a pixel\n\n         // copy data\n         for (j = 0; j < tga_comp; ++j)\n           tga_data[i*tga_comp+j] = raw_data[j];\n\n         //   in case we're in RLE mode, keep counting down\n         --RLE_count;\n      }\n      //   do I need to invert the image?\n      if ( tga_inverted )\n      {\n         for (j = 0; j*2 < tga_height; ++j)\n         {\n            int index1 = j * tga_width * tga_comp;\n            int index2 = (tga_height - 1 - j) * tga_width * tga_comp;\n            for (i = tga_width * tga_comp; i > 0; --i)\n            {\n               unsigned char temp = tga_data[index1];\n               tga_data[index1] = tga_data[index2];\n               tga_data[index2] = temp;\n               ++index1;\n               ++index2;\n            }\n         }\n      }\n      //   clear my palette, if I had one\n      if ( tga_palette != NULL )\n      {\n         STBI_FREE( tga_palette );\n      }\n   }\n\n   // swap RGB - if the source data was RGB16, it already is in the right order\n   if (tga_comp >= 3 && !tga_rgb16)\n   {\n      unsigned char* tga_pixel = tga_data;\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         unsigned char temp = tga_pixel[0];\n         tga_pixel[0] = tga_pixel[2];\n         tga_pixel[2] = temp;\n         tga_pixel += tga_comp;\n      }\n   }\n\n   // convert to target component count\n   if (req_comp && req_comp != tga_comp)\n      tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);\n\n   //   the things I do to get rid of an error message, and yet keep\n   //   Microsoft's C compilers happy... [8^(\n   tga_palette_start = tga_palette_len = tga_palette_bits =\n         tga_x_origin = tga_y_origin = 0;\n   STBI_NOTUSED(tga_palette_start);\n   //   OK, done\n   return tga_data;\n}\n#endif\n\n// *************************************************************************************************\n// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_test(stbi__context *s)\n{\n   int r = (stbi__get32be(s) == 0x38425053);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount)\n{\n   int count, nleft, len;\n\n   count = 0;\n   while ((nleft = pixelCount - count) > 0) {\n      len = stbi__get8(s);\n      if (len == 128) {\n         // No-op.\n      } else if (len < 128) {\n         // Copy next len+1 bytes literally.\n         len++;\n         if (len > nleft) return 0; // corrupt data\n         count += len;\n         while (len) {\n            *p = stbi__get8(s);\n            p += 4;\n            len--;\n         }\n      } else if (len > 128) {\n         stbi_uc   val;\n         // Next -len+1 bytes in the dest are replicated from next source byte.\n         // (Interpret len as a negative 8-bit int.)\n         len = 257 - len;\n         if (len > nleft) return 0; // corrupt data\n         val = stbi__get8(s);\n         count += len;\n         while (len) {\n            *p = val;\n            p += 4;\n            len--;\n         }\n      }\n   }\n\n   return 1;\n}\n\nstatic void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   int pixelCount;\n   int channelCount, compression;\n   int channel, i;\n   int bitdepth;\n   int w,h;\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   if (stbi__get32be(s) != 0x38425053)   // \"8BPS\"\n      return stbi__errpuc(\"not PSD\", \"Corrupt PSD image\");\n\n   // Check file type version.\n   if (stbi__get16be(s) != 1)\n      return stbi__errpuc(\"wrong version\", \"Unsupported version of PSD image\");\n\n   // Skip 6 reserved bytes.\n   stbi__skip(s, 6 );\n\n   // Read the number of channels (R, G, B, A, etc).\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16)\n      return stbi__errpuc(\"wrong channel count\", \"Unsupported number of channels in PSD image\");\n\n   // Read the rows and columns of the image.\n   h = stbi__get32be(s);\n   w = stbi__get32be(s);\n\n   if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   // Make sure the depth is 8 bits.\n   bitdepth = stbi__get16be(s);\n   if (bitdepth != 8 && bitdepth != 16)\n      return stbi__errpuc(\"unsupported bit depth\", \"PSD bit depth is not 8 or 16 bit\");\n\n   // Make sure the color mode is RGB.\n   // Valid options are:\n   //   0: Bitmap\n   //   1: Grayscale\n   //   2: Indexed color\n   //   3: RGB color\n   //   4: CMYK color\n   //   7: Multichannel\n   //   8: Duotone\n   //   9: Lab color\n   if (stbi__get16be(s) != 3)\n      return stbi__errpuc(\"wrong color format\", \"PSD is not in RGB color format\");\n\n   // Skip the Mode Data.  (It's the palette for indexed color; other info for other modes.)\n   stbi__skip(s,stbi__get32be(s) );\n\n   // Skip the image resources.  (resolution, pen tool paths, etc)\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Skip the reserved data.\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Find out if the data is compressed.\n   // Known values:\n   //   0: no compression\n   //   1: RLE compressed\n   compression = stbi__get16be(s);\n   if (compression > 1)\n      return stbi__errpuc(\"bad compression\", \"PSD has an unknown compression format\");\n\n   // Check size\n   if (!stbi__mad3sizes_valid(4, w, h, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt PSD\");\n\n   // Create the destination image.\n\n   if (!compression && bitdepth == 16 && bpc == 16) {\n      out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0);\n      ri->bits_per_channel = 16;\n   } else\n      out = (stbi_uc *) stbi__malloc(4 * w*h);\n\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   pixelCount = w*h;\n\n   // Initialize the data to zero.\n   //memset( out, 0, pixelCount * 4 );\n\n   // Finally, the image data.\n   if (compression) {\n      // RLE as used by .PSD and .TIFF\n      // Loop until you get the number of unpacked bytes you are expecting:\n      //     Read the next source byte into n.\n      //     If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.\n      //     Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.\n      //     Else if n is 128, noop.\n      // Endloop\n\n      // The RLE-compressed data is preceded by a 2-byte data count for each row in the data,\n      // which we're going to just skip.\n      stbi__skip(s, h * channelCount * 2 );\n\n      // Read the RLE data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         stbi_uc *p;\n\n         p = out+channel;\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            for (i = 0; i < pixelCount; i++, p += 4)\n               *p = (channel == 3 ? 255 : 0);\n         } else {\n            // Read the RLE data.\n            if (!stbi__psd_decode_rle(s, p, pixelCount)) {\n               STBI_FREE(out);\n               return stbi__errpuc(\"corrupt\", \"bad RLE data\");\n            }\n         }\n      }\n\n   } else {\n      // We're at the raw image data.  It's each channel in order (Red, Green, Blue, Alpha, ...)\n      // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.\n\n      // Read the data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            if (bitdepth == 16 && bpc == 16) {\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               stbi__uint16 val = channel == 3 ? 65535 : 0;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = val;\n            } else {\n               stbi_uc *p = out+channel;\n               stbi_uc val = channel == 3 ? 255 : 0;\n               for (i = 0; i < pixelCount; i++, p += 4)\n                  *p = val;\n            }\n         } else {\n            if (ri->bits_per_channel == 16) {    // output bpc\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = (stbi__uint16) stbi__get16be(s);\n            } else {\n               stbi_uc *p = out+channel;\n               if (bitdepth == 16) {  // input bpc\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = (stbi_uc) (stbi__get16be(s) >> 8);\n               } else {\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = stbi__get8(s);\n               }\n            }\n         }\n      }\n   }\n\n   // remove weird white matte from PSD\n   if (channelCount >= 4) {\n      if (ri->bits_per_channel == 16) {\n         for (i=0; i < w*h; ++i) {\n            stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 65535) {\n               float a = pixel[3] / 65535.0f;\n               float ra = 1.0f / a;\n               float inv_a = 65535.0f * (1 - ra);\n               pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a);\n               pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a);\n               pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a);\n            }\n         }\n      } else {\n         for (i=0; i < w*h; ++i) {\n            unsigned char *pixel = out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 255) {\n               float a = pixel[3] / 255.0f;\n               float ra = 1.0f / a;\n               float inv_a = 255.0f * (1 - ra);\n               pixel[0] = (unsigned char) (pixel[0]*ra + inv_a);\n               pixel[1] = (unsigned char) (pixel[1]*ra + inv_a);\n               pixel[2] = (unsigned char) (pixel[2]*ra + inv_a);\n            }\n         }\n      }\n   }\n\n   // convert to desired output format\n   if (req_comp && req_comp != 4) {\n      if (ri->bits_per_channel == 16)\n         out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h);\n      else\n         out = stbi__convert_format(out, 4, req_comp, w, h);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   if (comp) *comp = 4;\n   *y = h;\n   *x = w;\n\n   return out;\n}\n#endif\n\n// *************************************************************************************************\n// Softimage PIC loader\n// by Tom Seddon\n//\n// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format\n// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_is4(stbi__context *s,const char *str)\n{\n   int i;\n   for (i=0; i<4; ++i)\n      if (stbi__get8(s) != (stbi_uc)str[i])\n         return 0;\n\n   return 1;\n}\n\nstatic int stbi__pic_test_core(stbi__context *s)\n{\n   int i;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\"))\n      return 0;\n\n   for(i=0;i<84;++i)\n      stbi__get8(s);\n\n   if (!stbi__pic_is4(s,\"PICT\"))\n      return 0;\n\n   return 1;\n}\n\ntypedef struct\n{\n   stbi_uc size,type,channel;\n} stbi__pic_packet;\n\nstatic stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)\n{\n   int mask=0x80, i;\n\n   for (i=0; i<4; ++i, mask>>=1) {\n      if (channel & mask) {\n         if (stbi__at_eof(s)) return stbi__errpuc(\"bad file\",\"PIC file too short\");\n         dest[i]=stbi__get8(s);\n      }\n   }\n\n   return dest;\n}\n\nstatic void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src)\n{\n   int mask=0x80,i;\n\n   for (i=0;i<4; ++i, mask>>=1)\n      if (channel&mask)\n         dest[i]=src[i];\n}\n\nstatic stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result)\n{\n   int act_comp=0,num_packets=0,y,chained;\n   stbi__pic_packet packets[10];\n\n   // this will (should...) cater for even some bizarre stuff like having data\n    // for the same channel in multiple packets.\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return stbi__errpuc(\"bad format\",\"too many packets\");\n\n      packet = &packets[num_packets++];\n\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s))          return stbi__errpuc(\"bad file\",\"file too short (reading packets)\");\n      if (packet->size != 8)  return stbi__errpuc(\"bad format\",\"packet isn't 8bpp\");\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?\n\n   for(y=0; y<height; ++y) {\n      int packet_idx;\n\n      for(packet_idx=0; packet_idx < num_packets; ++packet_idx) {\n         stbi__pic_packet *packet = &packets[packet_idx];\n         stbi_uc *dest = result+y*width*4;\n\n         switch (packet->type) {\n            default:\n               return stbi__errpuc(\"bad format\",\"packet has bad compression type\");\n\n            case 0: {//uncompressed\n               int x;\n\n               for(x=0;x<width;++x, dest+=4)\n                  if (!stbi__readval(s,packet->channel,dest))\n                     return 0;\n               break;\n            }\n\n            case 1://Pure RLE\n               {\n                  int left=width, i;\n\n                  while (left>0) {\n                     stbi_uc count,value[4];\n\n                     count=stbi__get8(s);\n                     if (stbi__at_eof(s))   return stbi__errpuc(\"bad file\",\"file too short (pure read count)\");\n\n                     if (count > left)\n                        count = (stbi_uc) left;\n\n                     if (!stbi__readval(s,packet->channel,value))  return 0;\n\n                     for(i=0; i<count; ++i,dest+=4)\n                        stbi__copyval(packet->channel,dest,value);\n                     left -= count;\n                  }\n               }\n               break;\n\n            case 2: {//Mixed RLE\n               int left=width;\n               while (left>0) {\n                  int count = stbi__get8(s), i;\n                  if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (mixed read count)\");\n\n                  if (count >= 128) { // Repeated\n                     stbi_uc value[4];\n\n                     if (count==128)\n                        count = stbi__get16be(s);\n                     else\n                        count -= 127;\n                     if (count > left)\n                        return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     if (!stbi__readval(s,packet->channel,value))\n                        return 0;\n\n                     for(i=0;i<count;++i, dest += 4)\n                        stbi__copyval(packet->channel,dest,value);\n                  } else { // Raw\n                     ++count;\n                     if (count>left) return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     for(i=0;i<count;++i, dest+=4)\n                        if (!stbi__readval(s,packet->channel,dest))\n                           return 0;\n                  }\n                  left-=count;\n               }\n               break;\n            }\n         }\n      }\n   }\n\n   return result;\n}\n\nstatic void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *result;\n   int i, x,y, internal_comp;\n   STBI_NOTUSED(ri);\n\n   if (!comp) comp = &internal_comp;\n\n   for (i=0; i<92; ++i)\n      stbi__get8(s);\n\n   x = stbi__get16be(s);\n   y = stbi__get16be(s);\n\n   if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (pic header)\");\n   if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc(\"too large\", \"PIC image too large to decode\");\n\n   stbi__get32be(s); //skip `ratio'\n   stbi__get16be(s); //skip `fields'\n   stbi__get16be(s); //skip `pad'\n\n   // intermediate buffer is RGBA\n   result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0);\n   if (!result) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   memset(result, 0xff, x*y*4);\n\n   if (!stbi__pic_load_core(s,x,y,comp, result)) {\n      STBI_FREE(result);\n      result=0;\n   }\n   *px = x;\n   *py = y;\n   if (req_comp == 0) req_comp = *comp;\n   result=stbi__convert_format(result,4,req_comp,x,y);\n\n   return result;\n}\n\nstatic int stbi__pic_test(stbi__context *s)\n{\n   int r = stbi__pic_test_core(s);\n   stbi__rewind(s);\n   return r;\n}\n#endif\n\n// *************************************************************************************************\n// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb\n\n#ifndef STBI_NO_GIF\ntypedef struct\n{\n   stbi__int16 prefix;\n   stbi_uc first;\n   stbi_uc suffix;\n} stbi__gif_lzw;\n\ntypedef struct\n{\n   int w,h;\n   stbi_uc *out;                 // output buffer (always 4 components)\n   stbi_uc *background;          // The current \"background\" as far as a gif is concerned\n   stbi_uc *history;\n   int flags, bgindex, ratio, transparent, eflags;\n   stbi_uc  pal[256][4];\n   stbi_uc lpal[256][4];\n   stbi__gif_lzw codes[8192];\n   stbi_uc *color_table;\n   int parse, step;\n   int lflags;\n   int start_x, start_y;\n   int max_x, max_y;\n   int cur_x, cur_y;\n   int line_size;\n   int delay;\n} stbi__gif;\n\nstatic int stbi__gif_test_raw(stbi__context *s)\n{\n   int sz;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0;\n   sz = stbi__get8(s);\n   if (sz != '9' && sz != '7') return 0;\n   if (stbi__get8(s) != 'a') return 0;\n   return 1;\n}\n\nstatic int stbi__gif_test(stbi__context *s)\n{\n   int r = stbi__gif_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp)\n{\n   int i;\n   for (i=0; i < num_entries; ++i) {\n      pal[i][2] = stbi__get8(s);\n      pal[i][1] = stbi__get8(s);\n      pal[i][0] = stbi__get8(s);\n      pal[i][3] = transp == i ? 0 : 255;\n   }\n}\n\nstatic int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info)\n{\n   stbi_uc version;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8')\n      return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   version = stbi__get8(s);\n   if (version != '7' && version != '9')    return stbi__err(\"not GIF\", \"Corrupt GIF\");\n   if (stbi__get8(s) != 'a')                return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   stbi__g_failure_reason = \"\";\n   g->w = stbi__get16le(s);\n   g->h = stbi__get16le(s);\n   g->flags = stbi__get8(s);\n   g->bgindex = stbi__get8(s);\n   g->ratio = stbi__get8(s);\n   g->transparent = -1;\n\n   if (g->w > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   if (g->h > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n\n   if (comp != 0) *comp = 4;  // can't actually tell whether it's 3 or 4 until we parse the comments\n\n   if (is_info) return 1;\n\n   if (g->flags & 0x80)\n      stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1);\n\n   return 1;\n}\n\nstatic int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif));\n   if (!g) return stbi__err(\"outofmem\", \"Out of memory\");\n   if (!stbi__gif_header(s, g, comp, 1)) {\n      STBI_FREE(g);\n      stbi__rewind( s );\n      return 0;\n   }\n   if (x) *x = g->w;\n   if (y) *y = g->h;\n   STBI_FREE(g);\n   return 1;\n}\n\nstatic void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)\n{\n   stbi_uc *p, *c;\n   int idx;\n\n   // recurse to decode the prefixes, since the linked-list is backwards,\n   // and working backwards through an interleaved image would be nasty\n   if (g->codes[code].prefix >= 0)\n      stbi__out_gif_code(g, g->codes[code].prefix);\n\n   if (g->cur_y >= g->max_y) return;\n\n   idx = g->cur_x + g->cur_y;\n   p = &g->out[idx];\n   g->history[idx / 4] = 1;\n\n   c = &g->color_table[g->codes[code].suffix * 4];\n   if (c[3] > 128) { // don't render transparent pixels;\n      p[0] = c[2];\n      p[1] = c[1];\n      p[2] = c[0];\n      p[3] = c[3];\n   }\n   g->cur_x += 4;\n\n   if (g->cur_x >= g->max_x) {\n      g->cur_x = g->start_x;\n      g->cur_y += g->step;\n\n      while (g->cur_y >= g->max_y && g->parse > 0) {\n         g->step = (1 << g->parse) * g->line_size;\n         g->cur_y = g->start_y + (g->step >> 1);\n         --g->parse;\n      }\n   }\n}\n\nstatic stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)\n{\n   stbi_uc lzw_cs;\n   stbi__int32 len, init_code;\n   stbi__uint32 first;\n   stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;\n   stbi__gif_lzw *p;\n\n   lzw_cs = stbi__get8(s);\n   if (lzw_cs > 12) return NULL;\n   clear = 1 << lzw_cs;\n   first = 1;\n   codesize = lzw_cs + 1;\n   codemask = (1 << codesize) - 1;\n   bits = 0;\n   valid_bits = 0;\n   for (init_code = 0; init_code < clear; init_code++) {\n      g->codes[init_code].prefix = -1;\n      g->codes[init_code].first = (stbi_uc) init_code;\n      g->codes[init_code].suffix = (stbi_uc) init_code;\n   }\n\n   // support no starting clear code\n   avail = clear+2;\n   oldcode = -1;\n\n   len = 0;\n   for(;;) {\n      if (valid_bits < codesize) {\n         if (len == 0) {\n            len = stbi__get8(s); // start new block\n            if (len == 0)\n               return g->out;\n         }\n         --len;\n         bits |= (stbi__int32) stbi__get8(s) << valid_bits;\n         valid_bits += 8;\n      } else {\n         stbi__int32 code = bits & codemask;\n         bits >>= codesize;\n         valid_bits -= codesize;\n         // @OPTIMIZE: is there some way we can accelerate the non-clear path?\n         if (code == clear) {  // clear code\n            codesize = lzw_cs + 1;\n            codemask = (1 << codesize) - 1;\n            avail = clear + 2;\n            oldcode = -1;\n            first = 0;\n         } else if (code == clear + 1) { // end of stream code\n            stbi__skip(s, len);\n            while ((len = stbi__get8(s)) > 0)\n               stbi__skip(s,len);\n            return g->out;\n         } else if (code <= avail) {\n            if (first) {\n               return stbi__errpuc(\"no clear code\", \"Corrupt GIF\");\n            }\n\n            if (oldcode >= 0) {\n               p = &g->codes[avail++];\n               if (avail > 8192) {\n                  return stbi__errpuc(\"too many codes\", \"Corrupt GIF\");\n               }\n\n               p->prefix = (stbi__int16) oldcode;\n               p->first = g->codes[oldcode].first;\n               p->suffix = (code == avail) ? p->first : g->codes[code].first;\n            } else if (code == avail)\n               return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n\n            stbi__out_gif_code(g, (stbi__uint16) code);\n\n            if ((avail & codemask) == 0 && avail <= 0x0FFF) {\n               codesize++;\n               codemask = (1 << codesize) - 1;\n            }\n\n            oldcode = code;\n         } else {\n            return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n         }\n      }\n   }\n}\n\n// this function is designed to support animated gifs, although stb_image doesn't support it\n// two back is the image from two frames ago, used for a very specific disposal format\nstatic stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back)\n{\n   int dispose;\n   int first_frame;\n   int pi;\n   int pcount;\n   STBI_NOTUSED(req_comp);\n\n   // on first frame, any non-written pixels get the background colour (non-transparent)\n   first_frame = 0;\n   if (g->out == 0) {\n      if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header\n      if (!stbi__mad3sizes_valid(4, g->w, g->h, 0))\n         return stbi__errpuc(\"too large\", \"GIF image is too large\");\n      pcount = g->w * g->h;\n      g->out = (stbi_uc *) stbi__malloc(4 * pcount);\n      g->background = (stbi_uc *) stbi__malloc(4 * pcount);\n      g->history = (stbi_uc *) stbi__malloc(pcount);\n      if (!g->out || !g->background || !g->history)\n         return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n      // image is treated as \"transparent\" at the start - ie, nothing overwrites the current background;\n      // background colour is only used for pixels that are not rendered first frame, after that \"background\"\n      // color refers to the color that was there the previous frame.\n      memset(g->out, 0x00, 4 * pcount);\n      memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent)\n      memset(g->history, 0x00, pcount);        // pixels that were affected previous frame\n      first_frame = 1;\n   } else {\n      // second frame - how do we dispose of the previous one?\n      dispose = (g->eflags & 0x1C) >> 2;\n      pcount = g->w * g->h;\n\n      if ((dispose == 3) && (two_back == 0)) {\n         dispose = 2; // if I don't have an image to revert back to, default to the old background\n      }\n\n      if (dispose == 3) { // use previous graphic\n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 );\n            }\n         }\n      } else if (dispose == 2) {\n         // restore what was changed last frame to background before that frame;\n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 );\n            }\n         }\n      } else {\n         // This is a non-disposal case eithe way, so just\n         // leave the pixels as is, and they will become the new background\n         // 1: do not dispose\n         // 0:  not specified.\n      }\n\n      // background is what out is after the undoing of the previou frame;\n      memcpy( g->background, g->out, 4 * g->w * g->h );\n   }\n\n   // clear my history;\n   memset( g->history, 0x00, g->w * g->h );        // pixels that were affected previous frame\n\n   for (;;) {\n      int tag = stbi__get8(s);\n      switch (tag) {\n         case 0x2C: /* Image Descriptor */\n         {\n            stbi__int32 x, y, w, h;\n            stbi_uc *o;\n\n            x = stbi__get16le(s);\n            y = stbi__get16le(s);\n            w = stbi__get16le(s);\n            h = stbi__get16le(s);\n            if (((x + w) > (g->w)) || ((y + h) > (g->h)))\n               return stbi__errpuc(\"bad Image Descriptor\", \"Corrupt GIF\");\n\n            g->line_size = g->w * 4;\n            g->start_x = x * 4;\n            g->start_y = y * g->line_size;\n            g->max_x   = g->start_x + w * 4;\n            g->max_y   = g->start_y + h * g->line_size;\n            g->cur_x   = g->start_x;\n            g->cur_y   = g->start_y;\n\n            // if the width of the specified rectangle is 0, that means\n            // we may not see *any* pixels or the image is malformed;\n            // to make sure this is caught, move the current y down to\n            // max_y (which is what out_gif_code checks).\n            if (w == 0)\n               g->cur_y = g->max_y;\n\n            g->lflags = stbi__get8(s);\n\n            if (g->lflags & 0x40) {\n               g->step = 8 * g->line_size; // first interlaced spacing\n               g->parse = 3;\n            } else {\n               g->step = g->line_size;\n               g->parse = 0;\n            }\n\n            if (g->lflags & 0x80) {\n               stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1);\n               g->color_table = (stbi_uc *) g->lpal;\n            } else if (g->flags & 0x80) {\n               g->color_table = (stbi_uc *) g->pal;\n            } else\n               return stbi__errpuc(\"missing color table\", \"Corrupt GIF\");\n\n            o = stbi__process_gif_raster(s, g);\n            if (!o) return NULL;\n\n            // if this was the first frame,\n            pcount = g->w * g->h;\n            if (first_frame && (g->bgindex > 0)) {\n               // if first frame, any pixel not drawn to gets the background color\n               for (pi = 0; pi < pcount; ++pi) {\n                  if (g->history[pi] == 0) {\n                     g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be;\n                     memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 );\n                  }\n               }\n            }\n\n            return o;\n         }\n\n         case 0x21: // Comment Extension.\n         {\n            int len;\n            int ext = stbi__get8(s);\n            if (ext == 0xF9) { // Graphic Control Extension.\n               len = stbi__get8(s);\n               if (len == 4) {\n                  g->eflags = stbi__get8(s);\n                  g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths.\n\n                  // unset old transparent\n                  if (g->transparent >= 0) {\n                     g->pal[g->transparent][3] = 255;\n                  }\n                  if (g->eflags & 0x01) {\n                     g->transparent = stbi__get8(s);\n                     if (g->transparent >= 0) {\n                        g->pal[g->transparent][3] = 0;\n                     }\n                  } else {\n                     // don't need transparent\n                     stbi__skip(s, 1);\n                     g->transparent = -1;\n                  }\n               } else {\n                  stbi__skip(s, len);\n                  break;\n               }\n            }\n            while ((len = stbi__get8(s)) != 0) {\n               stbi__skip(s, len);\n            }\n            break;\n         }\n\n         case 0x3B: // gif stream termination code\n            return (stbi_uc *) s; // using '1' causes warning on some compilers\n\n         default:\n            return stbi__errpuc(\"unknown code\", \"Corrupt GIF\");\n      }\n   }\n}\n\nstatic void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays)\n{\n   STBI_FREE(g->out);\n   STBI_FREE(g->history);\n   STBI_FREE(g->background);\n\n   if (out) STBI_FREE(out);\n   if (delays && *delays) STBI_FREE(*delays);\n   return stbi__errpuc(\"outofmem\", \"Out of memory\");\n}\n\nstatic void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   if (stbi__gif_test(s)) {\n      int layers = 0;\n      stbi_uc *u = 0;\n      stbi_uc *out = 0;\n      stbi_uc *two_back = 0;\n      stbi__gif g;\n      int stride;\n      int out_size = 0;\n      int delays_size = 0;\n\n      STBI_NOTUSED(out_size);\n      STBI_NOTUSED(delays_size);\n\n      memset(&g, 0, sizeof(g));\n      if (delays) {\n         *delays = 0;\n      }\n\n      do {\n         u = stbi__gif_load_next(s, &g, comp, req_comp, two_back);\n         if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n\n         if (u) {\n            *x = g.w;\n            *y = g.h;\n            ++layers;\n            stride = g.w * g.h * 4;\n\n            if (out) {\n               void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride );\n               if (!tmp)\n                  return stbi__load_gif_main_outofmem(&g, out, delays);\n               else {\n                   out = (stbi_uc*) tmp;\n                   out_size = layers * stride;\n               }\n\n               if (delays) {\n                  int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers );\n                  if (!new_delays)\n                     return stbi__load_gif_main_outofmem(&g, out, delays);\n                  *delays = new_delays;\n                  delays_size = layers * sizeof(int);\n               }\n            } else {\n               out = (stbi_uc*)stbi__malloc( layers * stride );\n               if (!out)\n                  return stbi__load_gif_main_outofmem(&g, out, delays);\n               out_size = layers * stride;\n               if (delays) {\n                  *delays = (int*) stbi__malloc( layers * sizeof(int) );\n                  if (!*delays)\n                     return stbi__load_gif_main_outofmem(&g, out, delays);\n                  delays_size = layers * sizeof(int);\n               }\n            }\n            memcpy( out + ((layers - 1) * stride), u, stride );\n            if (layers >= 2) {\n               two_back = out - 2 * stride;\n            }\n\n            if (delays) {\n               (*delays)[layers - 1U] = g.delay;\n            }\n         }\n      } while (u != 0);\n\n      // free temp buffer;\n      STBI_FREE(g.out);\n      STBI_FREE(g.history);\n      STBI_FREE(g.background);\n\n      // do the final conversion after loading everything;\n      if (req_comp && req_comp != 4)\n         out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h);\n\n      *z = layers;\n      return out;\n   } else {\n      return stbi__errpuc(\"not GIF\", \"Image was not as a gif type.\");\n   }\n}\n\nstatic void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *u = 0;\n   stbi__gif g;\n   memset(&g, 0, sizeof(g));\n   STBI_NOTUSED(ri);\n\n   u = stbi__gif_load_next(s, &g, comp, req_comp, 0);\n   if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n   if (u) {\n      *x = g.w;\n      *y = g.h;\n\n      // moved conversion to after successful load so that the same\n      // can be done for multiple frames.\n      if (req_comp && req_comp != 4)\n         u = stbi__convert_format(u, 4, req_comp, g.w, g.h);\n   } else if (g.out) {\n      // if there was an error and we allocated an image buffer, free it!\n      STBI_FREE(g.out);\n   }\n\n   // free buffers needed for multiple frame loading;\n   STBI_FREE(g.history);\n   STBI_FREE(g.background);\n\n   return u;\n}\n\nstatic int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   return stbi__gif_info_raw(s,x,y,comp);\n}\n#endif\n\n// *************************************************************************************************\n// Radiance RGBE HDR loader\n// originally by Nicolas Schulz\n#ifndef STBI_NO_HDR\nstatic int stbi__hdr_test_core(stbi__context *s, const char *signature)\n{\n   int i;\n   for (i=0; signature[i]; ++i)\n      if (stbi__get8(s) != signature[i])\n          return 0;\n   stbi__rewind(s);\n   return 1;\n}\n\nstatic int stbi__hdr_test(stbi__context* s)\n{\n   int r = stbi__hdr_test_core(s, \"#?RADIANCE\\n\");\n   stbi__rewind(s);\n   if(!r) {\n       r = stbi__hdr_test_core(s, \"#?RGBE\\n\");\n       stbi__rewind(s);\n   }\n   return r;\n}\n\n#define STBI__HDR_BUFLEN  1024\nstatic char *stbi__hdr_gettoken(stbi__context *z, char *buffer)\n{\n   int len=0;\n   char c = '\\0';\n\n   c = (char) stbi__get8(z);\n\n   while (!stbi__at_eof(z) && c != '\\n') {\n      buffer[len++] = c;\n      if (len == STBI__HDR_BUFLEN-1) {\n         // flush to end of line\n         while (!stbi__at_eof(z) && stbi__get8(z) != '\\n')\n            ;\n         break;\n      }\n      c = (char) stbi__get8(z);\n   }\n\n   buffer[len] = 0;\n   return buffer;\n}\n\nstatic void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)\n{\n   if ( input[3] != 0 ) {\n      float f1;\n      // Exponent\n      f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8));\n      if (req_comp <= 2)\n         output[0] = (input[0] + input[1] + input[2]) * f1 / 3;\n      else {\n         output[0] = input[0] * f1;\n         output[1] = input[1] * f1;\n         output[2] = input[2] * f1;\n      }\n      if (req_comp == 2) output[1] = 1;\n      if (req_comp == 4) output[3] = 1;\n   } else {\n      switch (req_comp) {\n         case 4: output[3] = 1; /* fallthrough */\n         case 3: output[0] = output[1] = output[2] = 0;\n                 break;\n         case 2: output[1] = 1; /* fallthrough */\n         case 1: output[0] = 0;\n                 break;\n      }\n   }\n}\n\nstatic float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int width, height;\n   stbi_uc *scanline;\n   float *hdr_data;\n   int len;\n   unsigned char count, value;\n   int i, j, k, c1,c2, z;\n   const char *headerToken;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   headerToken = stbi__hdr_gettoken(s,buffer);\n   if (strcmp(headerToken, \"#?RADIANCE\") != 0 && strcmp(headerToken, \"#?RGBE\") != 0)\n      return stbi__errpf(\"not HDR\", \"Corrupt HDR image\");\n\n   // Parse header\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid)    return stbi__errpf(\"unsupported format\", \"Unsupported HDR format\");\n\n   // Parse width and height\n   // can't use sscanf() if we're not using stdio!\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   height = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   width = (int) strtol(token, NULL, 10);\n\n   if (height > STBI_MAX_DIMENSIONS) return stbi__errpf(\"too large\",\"Very large image (corrupt?)\");\n   if (width > STBI_MAX_DIMENSIONS) return stbi__errpf(\"too large\",\"Very large image (corrupt?)\");\n\n   *x = width;\n   *y = height;\n\n   if (comp) *comp = 3;\n   if (req_comp == 0) req_comp = 3;\n\n   if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0))\n      return stbi__errpf(\"too large\", \"HDR image is too large\");\n\n   // Read data\n   hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0);\n   if (!hdr_data)\n      return stbi__errpf(\"outofmem\", \"Out of memory\");\n\n   // Load image data\n   // image data is stored as some number of sca\n   if ( width < 8 || width >= 32768) {\n      // Read flat data\n      for (j=0; j < height; ++j) {\n         for (i=0; i < width; ++i) {\n            stbi_uc rgbe[4];\n           main_decode_loop:\n            stbi__getn(s, rgbe, 4);\n            stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp);\n         }\n      }\n   } else {\n      // Read RLE-encoded data\n      scanline = NULL;\n\n      for (j = 0; j < height; ++j) {\n         c1 = stbi__get8(s);\n         c2 = stbi__get8(s);\n         len = stbi__get8(s);\n         if (c1 != 2 || c2 != 2 || (len & 0x80)) {\n            // not run-length encoded, so we have to actually use THIS data as a decoded\n            // pixel (note this can't be a valid pixel--one of RGB must be >= 128)\n            stbi_uc rgbe[4];\n            rgbe[0] = (stbi_uc) c1;\n            rgbe[1] = (stbi_uc) c2;\n            rgbe[2] = (stbi_uc) len;\n            rgbe[3] = (stbi_uc) stbi__get8(s);\n            stbi__hdr_convert(hdr_data, rgbe, req_comp);\n            i = 1;\n            j = 0;\n            STBI_FREE(scanline);\n            goto main_decode_loop; // yes, this makes no sense\n         }\n         len <<= 8;\n         len |= stbi__get8(s);\n         if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"invalid decoded scanline length\", \"corrupt HDR\"); }\n         if (scanline == NULL) {\n            scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0);\n            if (!scanline) {\n               STBI_FREE(hdr_data);\n               return stbi__errpf(\"outofmem\", \"Out of memory\");\n            }\n         }\n\n         for (k = 0; k < 4; ++k) {\n            int nleft;\n            i = 0;\n            while ((nleft = width - i) > 0) {\n               count = stbi__get8(s);\n               if (count > 128) {\n                  // Run\n                  value = stbi__get8(s);\n                  count -= 128;\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = value;\n               } else {\n                  // Dump\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = stbi__get8(s);\n               }\n            }\n         }\n         for (i=0; i < width; ++i)\n            stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp);\n      }\n      if (scanline)\n         STBI_FREE(scanline);\n   }\n\n   return hdr_data;\n}\n\nstatic int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int dummy;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (stbi__hdr_test(s) == 0) {\n       stbi__rewind( s );\n       return 0;\n   }\n\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *y = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *x = (int) strtol(token, NULL, 10);\n   *comp = 3;\n   return 1;\n}\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   void *p;\n   stbi__bmp_data info;\n\n   info.all_a = 255;\n   p = stbi__bmp_parse_header(s, &info);\n   if (p == NULL) {\n      stbi__rewind( s );\n      return 0;\n   }\n   if (x) *x = s->img_x;\n   if (y) *y = s->img_y;\n   if (comp) {\n      if (info.bpp == 24 && info.ma == 0xff000000)\n         *comp = 3;\n      else\n         *comp = info.ma ? 4 : 3;\n   }\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int channelCount, dummy, depth;\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *y = stbi__get32be(s);\n   *x = stbi__get32be(s);\n   depth = stbi__get16be(s);\n   if (depth != 8 && depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 3) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *comp = 4;\n   return 1;\n}\n\nstatic int stbi__psd_is16(stbi__context *s)\n{\n   int channelCount, depth;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   STBI_NOTUSED(stbi__get32be(s));\n   STBI_NOTUSED(stbi__get32be(s));\n   depth = stbi__get16be(s);\n   if (depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int act_comp=0,num_packets=0,chained,dummy;\n   stbi__pic_packet packets[10];\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\")) {\n      stbi__rewind(s);\n      return 0;\n   }\n\n   stbi__skip(s, 88);\n\n   *x = stbi__get16be(s);\n   *y = stbi__get16be(s);\n   if (stbi__at_eof(s)) {\n      stbi__rewind( s);\n      return 0;\n   }\n   if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) {\n      stbi__rewind( s );\n      return 0;\n   }\n\n   stbi__skip(s, 8);\n\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return 0;\n\n      packet = &packets[num_packets++];\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s)) {\n          stbi__rewind( s );\n          return 0;\n      }\n      if (packet->size != 8) {\n          stbi__rewind( s );\n          return 0;\n      }\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3);\n\n   return 1;\n}\n#endif\n\n// *************************************************************************************************\n// Portable Gray Map and Portable Pixel Map loader\n// by Ken Miller\n//\n// PGM: http://netpbm.sourceforge.net/doc/pgm.html\n// PPM: http://netpbm.sourceforge.net/doc/ppm.html\n//\n// Known limitations:\n//    Does not support comments in the header section\n//    Does not support ASCII image data (formats P2 and P3)\n\n#ifndef STBI_NO_PNM\n\nstatic int      stbi__pnm_test(stbi__context *s)\n{\n   char p, t;\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n\nstatic void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n);\n   if (ri->bits_per_channel == 0)\n      return 0;\n\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n\n   if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0))\n      return stbi__errpuc(\"too large\", \"PNM too large\");\n\n   out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8));\n\n   if (req_comp && req_comp != s->img_n) {\n      out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n   return out;\n}\n\nstatic int      stbi__pnm_isspace(char c)\n{\n   return c == ' ' || c == '\\t' || c == '\\n' || c == '\\v' || c == '\\f' || c == '\\r';\n}\n\nstatic void     stbi__pnm_skip_whitespace(stbi__context *s, char *c)\n{\n   for (;;) {\n      while (!stbi__at_eof(s) && stbi__pnm_isspace(*c))\n         *c = (char) stbi__get8(s);\n\n      if (stbi__at_eof(s) || *c != '#')\n         break;\n\n      while (!stbi__at_eof(s) && *c != '\\n' && *c != '\\r' )\n         *c = (char) stbi__get8(s);\n   }\n}\n\nstatic int      stbi__pnm_isdigit(char c)\n{\n   return c >= '0' && c <= '9';\n}\n\nstatic int      stbi__pnm_getinteger(stbi__context *s, char *c)\n{\n   int value = 0;\n\n   while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {\n      value = value*10 + (*c - '0');\n      *c = (char) stbi__get8(s);\n   }\n\n   return value;\n}\n\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int maxv, dummy;\n   char c, p, t;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   stbi__rewind(s);\n\n   // Get identifier\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind(s);\n       return 0;\n   }\n\n   *comp = (t == '6') ? 3 : 1;  // '5' is 1-component .pgm; '6' is 3-component .ppm\n\n   c = (char) stbi__get8(s);\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *x = stbi__pnm_getinteger(s, &c); // read width\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *y = stbi__pnm_getinteger(s, &c); // read height\n   stbi__pnm_skip_whitespace(s, &c);\n\n   maxv = stbi__pnm_getinteger(s, &c);  // read max value\n   if (maxv > 65535)\n      return stbi__err(\"max value > 65535\", \"PPM image supports only 8-bit and 16-bit images\");\n   else if (maxv > 255)\n      return 16;\n   else\n      return 8;\n}\n\nstatic int stbi__pnm_is16(stbi__context *s)\n{\n   if (stbi__pnm_info(s, NULL, NULL, NULL) == 16)\n\t   return 1;\n   return 0;\n}\n#endif\n\nstatic int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)\n{\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_info(s, x, y, comp)) return 1;\n   #endif\n\n   #ifndef STBI_NO_PNG\n   if (stbi__png_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_info(s, x, y, comp))  return 1;\n   #endif\n\n   // test tga last because it's a crappy test!\n   #ifndef STBI_NO_TGA\n   if (stbi__tga_info(s, x, y, comp))\n       return 1;\n   #endif\n   return stbi__err(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic int stbi__is_16_main(stbi__context *s)\n{\n   #ifndef STBI_NO_PNG\n   if (stbi__png_is16(s))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_is16(s))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_is16(s))  return 1;\n   #endif\n   return 0;\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_info_from_file(f, x, y, comp);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__info_main(&s,x,y,comp);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n\nSTBIDEF int stbi_is_16_bit(char const *filename)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_is_16_bit_from_file(f);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_is_16_bit_from_file(FILE *f)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__is_16_main(&s);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__is_16_main(&s);\n}\n\nSTBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__is_16_main(&s);\n}\n\n#endif // STB_IMAGE_IMPLEMENTATION\n\n/*\n   revision history:\n      2.20  (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug\n                         1-bit BMP\n                         *_is_16_bit api\n                         avoid warnings\n      2.16  (2017-07-23) all functions have 16-bit variants;\n                         STBI_NO_STDIO works again;\n                         compilation fixes;\n                         fix rounding in unpremultiply;\n                         optimize vertical flip;\n                         disable raw_len validation;\n                         documentation fixes\n      2.15  (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode;\n                         warning fixes; disable run-time SSE detection on gcc;\n                         uniform handling of optional \"return\" values;\n                         thread-safe initialization of zlib tables\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-11-29) add 16-bit API, only supported for PNG right now\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) allocate large structures on the stack\n                         remove white matting for transparent PSD\n                         fix reported channel count for PNG & BMP\n                         re-enable SSE2 in non-gcc 64-bit\n                         support RGB-formatted JPEG\n                         read 16-bit PNGs (only as 8-bit)\n      2.10  (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED\n      2.09  (2016-01-16) allow comments in PNM files\n                         16-bit-per-pixel TGA (not bit-per-component)\n                         info() for TGA could break due to .hdr handling\n                         info() for BMP to shares code instead of sloppy parse\n                         can use STBI_REALLOC_SIZED if allocator doesn't support realloc\n                         code cleanup\n      2.08  (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA\n      2.07  (2015-09-13) fix compiler warnings\n                         partial animated GIF support\n                         limited 16-bpc PSD support\n                         #ifdef unused functions\n                         bug with < 92 byte PIC,PNM,HDR,TGA\n      2.06  (2015-04-19) fix bug where PSD returns wrong '*comp' value\n      2.05  (2015-04-19) fix bug in progressive JPEG handling, fix warning\n      2.04  (2015-04-15) try to re-enable SIMD on MinGW 64-bit\n      2.03  (2015-04-12) extra corruption checking (mmozeiko)\n                         stbi_set_flip_vertically_on_load (nguillemot)\n                         fix NEON support; fix mingw support\n      2.02  (2015-01-19) fix incorrect assert, fix warning\n      2.01  (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2\n      2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG\n      2.00  (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg)\n                         progressive JPEG (stb)\n                         PGM/PPM support (Ken Miller)\n                         STBI_MALLOC,STBI_REALLOC,STBI_FREE\n                         GIF bugfix -- seemingly never worked\n                         STBI_NO_*, STBI_ONLY_*\n      1.48  (2014-12-14) fix incorrectly-named assert()\n      1.47  (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb)\n                         optimize PNG (ryg)\n                         fix bug in interlaced PNG with user-specified channel count (stb)\n      1.46  (2014-08-26)\n              fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG\n      1.45  (2014-08-16)\n              fix MSVC-ARM internal compiler error by wrapping malloc\n      1.44  (2014-08-07)\n              various warning fixes from Ronny Chevalier\n      1.43  (2014-07-15)\n              fix MSVC-only compiler problem in code changed in 1.42\n      1.42  (2014-07-09)\n              don't define _CRT_SECURE_NO_WARNINGS (affects user code)\n              fixes to stbi__cleanup_jpeg path\n              added STBI_ASSERT to avoid requiring assert.h\n      1.41  (2014-06-25)\n              fix search&replace from 1.36 that messed up comments/error messages\n      1.40  (2014-06-22)\n              fix gcc struct-initialization warning\n      1.39  (2014-06-15)\n              fix to TGA optimization when req_comp != number of components in TGA;\n              fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite)\n              add support for BMP version 5 (more ignored fields)\n      1.38  (2014-06-06)\n              suppress MSVC warnings on integer casts truncating values\n              fix accidental rename of 'skip' field of I/O\n      1.37  (2014-06-04)\n              remove duplicate typedef\n      1.36  (2014-06-03)\n              convert to header file single-file library\n              if de-iphone isn't set, load iphone images color-swapped instead of returning NULL\n      1.35  (2014-05-27)\n              various warnings\n              fix broken STBI_SIMD path\n              fix bug where stbi_load_from_file no longer left file pointer in correct place\n              fix broken non-easy path for 32-bit BMP (possibly never used)\n              TGA optimization by Arseny Kapoulkine\n      1.34  (unknown)\n              use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case\n      1.33  (2011-07-14)\n              make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements\n      1.32  (2011-07-13)\n              support for \"info\" function for all supported filetypes (SpartanJ)\n      1.31  (2011-06-20)\n              a few more leak fixes, bug in PNG handling (SpartanJ)\n      1.30  (2011-06-11)\n              added ability to load files via callbacks to accomidate custom input streams (Ben Wenger)\n              removed deprecated format-specific test/load functions\n              removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway\n              error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha)\n              fix inefficiency in decoding 32-bit BMP (David Woo)\n      1.29  (2010-08-16)\n              various warning fixes from Aurelien Pocheville\n      1.28  (2010-08-01)\n              fix bug in GIF palette transparency (SpartanJ)\n      1.27  (2010-08-01)\n              cast-to-stbi_uc to fix warnings\n      1.26  (2010-07-24)\n              fix bug in file buffering for PNG reported by SpartanJ\n      1.25  (2010-07-17)\n              refix trans_data warning (Won Chun)\n      1.24  (2010-07-12)\n              perf improvements reading from files on platforms with lock-heavy fgetc()\n              minor perf improvements for jpeg\n              deprecated type-specific functions so we'll get feedback if they're needed\n              attempt to fix trans_data warning (Won Chun)\n      1.23    fixed bug in iPhone support\n      1.22  (2010-07-10)\n              removed image *writing* support\n              stbi_info support from Jetro Lauha\n              GIF support from Jean-Marc Lienher\n              iPhone PNG-extensions from James Brown\n              warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva)\n      1.21    fix use of 'stbi_uc' in header (reported by jon blow)\n      1.20    added support for Softimage PIC, by Tom Seddon\n      1.19    bug in interlaced PNG corruption check (found by ryg)\n      1.18  (2008-08-02)\n              fix a threading bug (local mutable static)\n      1.17    support interlaced PNG\n      1.16    major bugfix - stbi__convert_format converted one too many pixels\n      1.15    initialize some fields for thread safety\n      1.14    fix threadsafe conversion bug\n              header-file-only version (#define STBI_HEADER_FILE_ONLY before including)\n      1.13    threadsafe\n      1.12    const qualifiers in the API\n      1.11    Support installable IDCT, colorspace conversion routines\n      1.10    Fixes for 64-bit (don't use \"unsigned long\")\n              optimized upsampling by Fabian \"ryg\" Giesen\n      1.09    Fix format-conversion for PSD code (bad global variables!)\n      1.08    Thatcher Ulrich's PSD code integrated by Nicolas Schulz\n      1.07    attempt to fix C++ warning/errors again\n      1.06    attempt to fix C++ warning/errors again\n      1.05    fix TGA loading to return correct *comp and use good luminance calc\n      1.04    default float alpha is 1, not 255; use 'void *' for stbi_image_free\n      1.03    bugfixes to STBI_NO_STDIO, STBI_NO_HDR\n      1.02    support for (subset of) HDR files, float interface for preferred access to them\n      1.01    fix bug: possible bug in handling right-side up bmps... not sure\n              fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all\n      1.00    interface to zlib that skips zlib header\n      0.99    correct handling of alpha in palette\n      0.98    TGA loader by lonesock; dynamically add loaders (untested)\n      0.97    jpeg errors on too large a file; also catch another malloc failure\n      0.96    fix detection of invalid v value - particleman@mollyrocket forum\n      0.95    during header scan, seek to markers in case of padding\n      0.94    STBI_NO_STDIO to disable stdio usage; rename all #defines the same\n      0.93    handle jpegtran output; verbose errors\n      0.92    read 4,8,16,24,32-bit BMP files of several formats\n      0.91    output 24-bit Windows 3.0 BMP files\n      0.90    fix a few more warnings; bump version number to approach 1.0\n      0.61    bugfixes due to Marc LeBlanc, Christopher Lloyd\n      0.60    fix compiling as c++\n      0.59    fix warnings: merge Dave Moore's -Wall fixes\n      0.58    fix bug: zlib uncompressed mode len/nlen was wrong endian\n      0.57    fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available\n      0.56    fix bug: zlib uncompressed mode len vs. nlen\n      0.55    fix bug: restart_interval not initialized to 0\n      0.54    allow NULL for 'int *comp'\n      0.53    fix bug in png 3->4; speedup png decoding\n      0.52    png handles req_comp=3,4 directly; minor cleanup; jpeg comments\n      0.51    obey req_comp requests, 1-component jpegs return as 1-component,\n              on 'test' only check type, not whether we support this variant\n      0.50  (2006-11-19)\n              first released version\n*/\n\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  }
]