added support for GL_ARB_draw_buffers
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 2 Oct 2004 16:39:09 +0000 (16:39 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 2 Oct 2004 16:39:09 +0000 (16:39 +0000)
60 files changed:
src/mesa/drivers/common/driverfuncs.c
src/mesa/drivers/dri/i810/i810context.c
src/mesa/drivers/dri/i810/i810ioctl.c
src/mesa/drivers/dri/i810/i810state.c
src/mesa/drivers/dri/i830/i830_context.c
src/mesa/drivers/dri/i830/i830_state.c
src/mesa/drivers/dri/i915/intel_context.c
src/mesa/drivers/dri/i915/intel_state.c
src/mesa/drivers/dri/mach64/mach64_lock.c
src/mesa/drivers/dri/mach64/mach64_state.c
src/mesa/drivers/dri/mga/mgastate.c
src/mesa/drivers/dri/r128/r128_lock.c
src/mesa/drivers/dri/r128/r128_state.c
src/mesa/drivers/dri/r200/r200_lock.c
src/mesa/drivers/dri/r200/r200_state.c
src/mesa/drivers/dri/radeon/radeon_lock.c
src/mesa/drivers/dri/radeon/radeon_state.c
src/mesa/drivers/dri/savage/savage_xmesa.c
src/mesa/drivers/dri/savage/savagestate.c
src/mesa/drivers/dri/sis/sis_lock.c
src/mesa/drivers/dri/sis/sis_state.c
src/mesa/drivers/dri/sis/sis_tris.c
src/mesa/drivers/dri/tdfx/tdfx_pixels.c
src/mesa/drivers/dri/tdfx/tdfx_render.c
src/mesa/drivers/dri/tdfx/tdfx_span.c
src/mesa/drivers/dri/tdfx/tdfx_state.c
src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_ioctl.c
src/mesa/drivers/dri/unichrome/via_span.c
src/mesa/drivers/dri/unichrome/via_state.c
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/x11/xm_api.c
src/mesa/drivers/x11/xm_dd.c
src/mesa/drivers/x11/xm_line.c
src/mesa/drivers/x11/xm_tri.c
src/mesa/glapi/gl_API.xml
src/mesa/glapi/glapioffsets.h
src/mesa/glapi/glapitable.h
src/mesa/glapi/glapitemp.h
src/mesa/glapi/glprocs.h
src/mesa/main/attrib.c
src/mesa/main/blend.c
src/mesa/main/buffers.c
src/mesa/main/buffers.h
src/mesa/main/config.h
src/mesa/main/context.c
src/mesa/main/dd.h
src/mesa/main/dlist.c
src/mesa/main/extensions.c
src/mesa/main/extensions.h
src/mesa/main/get.c
src/mesa/main/glheader.h
src/mesa/main/mtypes.h
src/mesa/main/state.c
src/mesa/swrast/s_alphabuf.c
src/mesa/swrast/s_buffers.c
src/mesa/swrast/s_context.c
src/mesa/swrast/s_copypix.c
src/mesa/swrast/s_span.c
src/mesa/swrast/swrast.h

index a51f6505f398bc4d5aec5299e43c2b561b38bd7c..643a8c1b017bf06599898684263cb823213e408e 100644 (file)
@@ -126,6 +126,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
    driver->ColorMaterial = NULL;
    driver->CullFace = NULL;
    driver->DrawBuffer = _swrast_DrawBuffer;
+   driver->DrawBuffers = _swrast_DrawBuffers;
    driver->FrontFace = NULL;
    driver->DepthFunc = NULL;
    driver->DepthMask = NULL;
index 0822b6b8b14a8ee70bdbb576a0f30ea3846090f2..7db354d193f97100eb0c66659c4253e594a204d3 100644 (file)
@@ -384,7 +384,7 @@ void i810XMesaSetBackClipRects( i810ContextPtr imesa )
 
 static void i810XMesaWindowMoved( i810ContextPtr imesa )
 {
-   switch (imesa->glCtx->Color._DrawDestMask) {
+   switch (imesa->glCtx->Color._DrawDestMask[0]) {
    case DD_FRONT_LEFT_BIT:
       i810XMesaSetFrontClipRects( imesa );
       break;
@@ -448,7 +448,7 @@ i810UpdatePageFlipping( i810ContextPtr imesa )
    GLcontext *ctx = imesa->glCtx;
    int front = 0;
 
-   switch (ctx->Color._DrawDestMask) {
+   switch (ctx->Color._DrawDestMask[0]) {
    case DD_FRONT_LEFT_BIT:
       front = 1;
       break;
index 1e49d1782e403ecd0771fdc8b517db464c95adb5..c62e58178997c2e2b73a1f7306ffbaad70e51f74 100644 (file)
@@ -225,7 +225,7 @@ void i810PageFlip( const __DRIdrawablePrivate *dPriv )
    }
 
   /*  i810SetDrawBuffer( imesa->glCtx, imesa->glCtx->Color.DriverDrawBuffer );*/
-  i810DrawBuffer( imesa->glCtx, imesa->glCtx->Color.DrawBuffer );
+  i810DrawBuffer( imesa->glCtx, imesa->glCtx->Color.DrawBuffer[0] );
   imesa->upload_cliprects = GL_TRUE;
   imesa->lastSwap = tmp;
   return;
index 4a1c15f8afc6950c1641b1a860dbafee32d4c587..35fad6529c98eeedd9646239c48c5cd468812f84 100644 (file)
@@ -284,7 +284,7 @@ void i810DrawBuffer(GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
      front = 1;
      break;
index d5d8e0a9d43062ef152d84177b099c8d8c400c5c..b69f11a0c0d4cf1b02984dcb3e352a1b467bf454 100644 (file)
@@ -468,7 +468,7 @@ void i830XMesaSetBackClipRects( i830ContextPtr imesa )
 
 static void i830XMesaWindowMoved( i830ContextPtr imesa )
 {
-   switch (imesa->glCtx->Color._DrawDestMask) {
+   switch (imesa->glCtx->Color._DrawDestMask[0]) {
    case DD_FRONT_LEFT_BIT:
       i830XMesaSetFrontClipRects( imesa );
       break;
index 3fe645aa8fd36b507c16bca29b1cf5fa9f13b800..12cec35c3da5da0c7e6a5cf532682d1e5ad065d7 100644 (file)
@@ -803,7 +803,7 @@ static void i830DrawBuffer(GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       I830_FIREVERTICES(imesa);
       I830_STATECHANGE(imesa, I830_UPLOAD_BUFFERS);
index e637d38a11c28a7fd3d4ae6d5f3537f530fd54fc..c1559e9567eaa247babcc904af62edfd55438684 100644 (file)
@@ -491,7 +491,7 @@ void intelSetBackClipRects( intelContextPtr intel )
 
 void intelWindowMoved( intelContextPtr intel )
 {
-   switch (intel->ctx.Color._DrawDestMask) {
+   switch (intel->ctx.Color._DrawDestMask[0]) {
    case DD_FRONT_LEFT_BIT:
       intelSetFrontClipRects( intel );
       break;
@@ -683,5 +683,5 @@ void intelInitState( GLcontext *ctx )
                          ctx->Stencil.ZPassFunc[0]);
 
 
-   ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer );
+   ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] );
 }
index 46633c553e3d97b5f0609faad0ce5d5db5378232..44ef775465a4bc24403fd01e41e24fde22e6d061 100644 (file)
@@ -43,7 +43,7 @@ static void intelDrawBuffer(GLcontext *ctx, GLenum mode )
    intelScreenPrivate *screen = intel->intelScreen;
    int front = 0;
  
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       front = 1;
       FALLBACK( intel, INTEL_FALLBACK_DRAW_BUFFER, GL_FALSE );
index 0b4f61abc27c2e2471675debca4fede6b476e876..ea926944ed4fb131c4ae1aae2859178ad75440fc 100644 (file)
@@ -69,7 +69,7 @@ void mach64GetLock( mach64ContextPtr mmesa, GLuint flags )
 
    if ( mmesa->lastStamp != dPriv->lastStamp ) {
       mmesa->lastStamp = dPriv->lastStamp;
-      if (mmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT)
+      if (mmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT)
          mach64SetCliprects( mmesa->glCtx, GL_BACK_LEFT );
       else
          mach64SetCliprects( mmesa->glCtx, GL_FRONT_LEFT );
index 99c8bad6c1d378e8b92e879649453298b11b2da1..91f588bb78811746bdd92812c56b01897484a014 100644 (file)
@@ -729,7 +729,7 @@ static void mach64DDDrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       FALLBACK( mmesa, MACH64_FALLBACK_DRAW_BUFFER, GL_FALSE );
       mach64SetCliprects( ctx, GL_FRONT_LEFT );
index fd00de43c212c904b8bf689571d20b582a0f49c0..6e63294f65e713386ad71ef37dc8ce253e89468a 100644 (file)
@@ -822,7 +822,7 @@ static void mgaDDDrawBuffer(GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       mmesa->setup.dstorg = mmesa->mgaScreen->frontOffset;
       mmesa->dirty |= MGA_UPLOAD_CONTEXT;
index 876db765755bcf656e1b8421b2f5a1eab1bda1db..f4b43d56c106c4305de879ea64f247ee4423302f 100644 (file)
@@ -52,7 +52,7 @@ r128UpdatePageFlipping( r128ContextPtr rmesa )
 
    rmesa->doPageFlip = rmesa->sarea->pfAllowPageFlip;
 
-   use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT);
+   use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT);
    use_back ^= (rmesa->sarea->pfCurrentPage == 1);
 
    if ( R128_DEBUG & DEBUG_VERBOSE_API )
index cd3e4181b335fe2679504e9da6805f83519939f2..4e43629f49b249f22cc3f5201baa226ea64ef816 100644 (file)
@@ -713,7 +713,7 @@ static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       FALLBACK( rmesa, R128_FALLBACK_DRAW_BUFFER, GL_FALSE );
       break;
index 539a4be619b17dcef25e173dcb3ae9530b4ad73d..ef4fed527149234cae98661f66cb29a614c8a337 100644 (file)
@@ -53,7 +53,7 @@ r200UpdatePageFlipping( r200ContextPtr rmesa )
    int use_back;
    rmesa->doPageFlip = rmesa->sarea->pfState;
 
-   use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT);
+   use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT);
    use_back ^= (rmesa->sarea->pfCurrentPage == 1);
    
    if (use_back) {
@@ -101,7 +101,7 @@ void r200GetLock( r200ContextPtr rmesa, GLuint flags )
 
    if ( rmesa->lastStamp != dPriv->lastStamp ) {
       r200UpdatePageFlipping( rmesa );
-      if (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT)
+      if (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT)
          r200SetCliprects( rmesa, GL_BACK_LEFT );
       else
          r200SetCliprects( rmesa, GL_FRONT_LEFT );
index c6c436743f5421d12c7976f899f41da9380d96c1..dd547f9957a3d1ee7bcf26965272cad6e272eca0 100644 (file)
@@ -1751,7 +1751,7 @@ static void r200DrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE );
       r200SetCliprects( rmesa, GL_FRONT_LEFT );
index 3bcd68d3e42d664cb0a2d88a0e0fa59141c0a964..937a284e104d5cde052d0752ab2f46829c10eac7 100644 (file)
@@ -56,7 +56,7 @@ radeonUpdatePageFlipping( radeonContextPtr rmesa )
 
    rmesa->doPageFlip = rmesa->sarea->pfState;
 
-   use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT);
+   use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT);
    use_back ^= (rmesa->sarea->pfCurrentPage == 1);
 
    if ( RADEON_DEBUG & DEBUG_VERBOSE )
@@ -108,7 +108,7 @@ void radeonGetLock( radeonContextPtr rmesa, GLuint flags )
 
    if ( rmesa->lastStamp != dPriv->lastStamp ) {
       radeonUpdatePageFlipping( rmesa );
-      if (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT)
+      if (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT)
          radeonSetCliprects( rmesa, GL_BACK_LEFT );
       else
          radeonSetCliprects( rmesa, GL_FRONT_LEFT );
index 3bd2a88d4208bec6df8f6a2b706bce0ba02ab0ad..bc94882a660e1fe9544dddd004f72690aaf3bd81 100644 (file)
@@ -1612,7 +1612,7 @@ static void radeonDrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       FALLBACK( rmesa, RADEON_FALLBACK_DRAW_BUFFER, GL_FALSE );
       radeonSetCliprects( rmesa, GL_FRONT_LEFT );
index f1fd5eacf0bff069da8a9c72d36c606ad6d80dba..a6ef167a7d6c17727f846f1adb074519ebcc6142 100644 (file)
@@ -598,7 +598,7 @@ static void savageXMesaWindowMoved( savageContextPtr imesa )
    if (0)
       fprintf(stderr, "savageXMesaWindowMoved\n\n");
 
-   switch (imesa->glCtx->Color._DrawDestMask) {
+   switch (imesa->glCtx->Color._DrawDestMask[0]) {
    case DD_FRONT_LEFT_BIT:
       savageXMesaSetFrontClipRects( imesa );
       break;
index e5c8b96eec3f07ac2f233a1c1fbe41b9b334352a..e03c2e340cc54796aca5cb266ce18af09498fea8 100644 (file)
@@ -638,7 +638,7 @@ static void savageDDDrawBuffer(GLcontext *ctx, GLenum mode )
     /*
      * _DrawDestMask is easier to cope with than <mode>.
      */
-    switch ( ctx->Color._DrawDestMask ) {
+    switch ( ctx->Color._DrawDestMask[0] ) {
     case DD_FRONT_LEFT_BIT:
         imesa->IsDouble = GL_FALSE;
       
@@ -1768,7 +1768,7 @@ void savageDDInitState( savageContextPtr imesa ) {
         imesa->regs.s4.zBufOffset.ni.zDepthSelect = 1;      
     }
  
-    if (imesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT) {
+    if (imesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT) {
         if(imesa->IsFullScreen)
         {
             imesa->toggle = TARGET_BACK;
index 5e6a0d468d89344bd8f2387b62b9eab45b7cc927..f598e52d921ad2d587df18ac8962436f433c897d 100644 (file)
@@ -65,7 +65,7 @@ sisGetLock( sisContextPtr smesa, GLuint flags )
    if ( smesa->lastStamp != dPriv->lastStamp ) {
       sisUpdateBufferSize( smesa );
       sisUpdateClipping( smesa->glCtx );
-      sisDDDrawBuffer( smesa->glCtx, smesa->glCtx->Color.DrawBuffer );
+      sisDDDrawBuffer( smesa->glCtx, smesa->glCtx->Color.DrawBuffer[0] );
       smesa->lastStamp = dPriv->lastStamp;
    }
 
index 4b1d2b00178db6c1509bcc3622555d0c9d081457..422059b86b1a473a3e3caa2ee21ba99a7ae69667 100644 (file)
@@ -510,7 +510,7 @@ void sisDDDrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
    case DD_BACK_LEFT_BIT:
       FALLBACK( smesa, SIS_FALLBACK_DRAW_BUFFER, GL_FALSE );
index 04c750e5509e338fb0a684c5e215d35bbe73cbfe..45a92e5e92b00cdb75142df1f3ed753ad7ea0b0c 100644 (file)
@@ -805,7 +805,7 @@ static void sisRenderStart( GLcontext *ctx )
    GLuint AGPParseSet = smesa->AGPParseSet;
    GLboolean tex_fallback = GL_FALSE;
 
-   if (ctx->Color._DrawDestMask == DD_FRONT_LEFT_BIT && 
+   if (ctx->Color._DrawDestMask[0] == DD_FRONT_LEFT_BIT && 
       smesa->driDrawable->numClipRects != 0)
    {
       multipass_cliprect(ctx, 0);
index 803c8c5c1ccc761e70d9c56cbce10edb50ade628..aaee401d7abc578f2c85092856353c759ebf8060 100644 (file)
@@ -255,7 +255,7 @@ tdfx_bitmap_R5G6B5(GLcontext * ctx, GLint px, GLint py,
        * to the front or back buffer.  This compile-time test seems to do
        * the job for now.
        */
-      const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT)
+      const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT)
         ? (fxMesa->screen_width) : (info.strideInBytes / 2);
       GLint row;
       /* compute dest address of bottom-left pixel in bitmap */
@@ -407,7 +407,7 @@ tdfx_bitmap_R8G8B8A8(GLcontext * ctx, GLint px, GLint py,
       GLuint *dst;
       GLint row;
 
-      if (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) {
+      if (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) {
         dstStride = fxMesa->screen_width;
         dst =
            (GLuint *) info.lfbPtr + (winY - py) * dstStride + (winX +
@@ -508,7 +508,7 @@ tdfx_readpixels_R5G6B5(GLcontext * ctx, GLint x, GLint y,
                    fxMesa->ReadBuffer,
                    GR_LFBWRITEMODE_ANY,
                    GR_ORIGIN_UPPER_LEFT, FXFALSE, &info)) {
-        const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer ==
+        const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer[0] ==
             GL_FRONT) ? (fxMesa->screen_width) : (info.strideInBytes / 2);
         const GLushort *src = (const GLushort *) info.lfbPtr
            + scrY * srcStride + scrX;
@@ -567,7 +567,7 @@ tdfx_readpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y,
                     GR_LFBWRITEMODE_ANY,
                     GR_ORIGIN_UPPER_LEFT, FXFALSE, &info))
       {
-         const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT)
+         const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT)
             ? (fxMesa->screen_width) : (info.strideInBytes / 4);
          const GLuint *src = (const GLuint *) info.lfbPtr
             + scrY * srcStride + scrX;
@@ -646,7 +646,7 @@ tdfx_drawpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y,
       }
 
       /* look for clipmasks, giveup if region obscured */
-      if (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) {
+      if (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) {
          if (!inClipRects_Region(fxMesa, scrX, scrY, width, height)) {
             UNLOCK_HARDWARE(fxMesa);
            _swrast_DrawPixels( ctx, x, y, width, height, format, type, 
@@ -661,7 +661,7 @@ tdfx_drawpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y,
                     GR_LFBWRITEMODE_8888,
                     GR_ORIGIN_UPPER_LEFT, FXTRUE, &info))
       {
-         const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT)
+         const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT)
             ? (fxMesa->screen_width * 4) : (info.strideInBytes);
          GLubyte *dst = (GLubyte *) info.lfbPtr
             + scrY * dstStride + scrX * 4;
index 1c552894699e5b8a75bce257ea9ad94a568076af..3ce91b9257b78c27b8e0325aee4ecfc21f3e4fa5 100644 (file)
@@ -278,7 +278,7 @@ static void tdfxClear( GLcontext *ctx,
                                         fxMesa->Color.ClearAlpha,
                                         fxMesa->Depth.Clear);
         FX_grColorMaskv_NoLock(ctx, true4);
-        if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT)
+        if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT)
             fxMesa->Glide.grRenderBuffer(GR_BUFFER_FRONTBUFFER);
         if (!ctx->Depth.Test || !ctx->Depth.Mask)
            fxMesa->Glide.grDepthMask(FXFALSE);
@@ -298,7 +298,7 @@ static void tdfxClear( GLcontext *ctx,
                fxMesa->Glide.grDepthMask(FXTRUE);
             }
             FX_grColorMaskv_NoLock(ctx, true4);
-            if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT)
+            if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT)
                fxMesa->Glide.grRenderBuffer(GR_BUFFER_FRONTBUFFER);
          }
       }
index 0d2bc811e04dd71761923de64ae267f7af219152..1bcec634131ec64c3a71f6f251eee809a1fa8dca 100644 (file)
@@ -49,7 +49,7 @@
 #define LOCAL_VARS                                                     \
    __DRIdrawablePrivate *dPriv = fxMesa->driDrawable;                  \
    tdfxScreenPrivate *fxPriv = fxMesa->fxScreen;                       \
-   GLuint pitch = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT)         \
+   GLuint pitch = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT)         \
                ? (fxMesa->screen_width * BYTESPERPIXEL) :               \
                (info.strideInBytes);                                    \
    GLuint height = fxMesa->height;                                     \
index 7f1ce3c004d3859b0e2cd3b7767b45507c06fdf3..818a9bc23f4321960118a10a18a179182e23f2af 100644 (file)
@@ -1033,7 +1033,7 @@ static void tdfxDDDrawBuffer( GLcontext *ctx, GLenum mode )
    /*
     * _DrawDestMask is easier to cope with than <mode>.
     */
-   switch ( ctx->Color._DrawDestMask ) {
+   switch ( ctx->Color._DrawDestMask[0] ) {
    case DD_FRONT_LEFT_BIT:
       fxMesa->DrawBuffer = fxMesa->ReadBuffer = GR_BUFFER_FRONTBUFFER;
       fxMesa->new_state |= TDFX_NEW_RENDER;
index 4ebf393ac87cfb407bc44342d67b8bffd45c552a..13648854f3363ad93815bc724fd99f2f6ab5d66c 100644 (file)
@@ -719,7 +719,7 @@ void viaXMesaWindowMoved(viaContextPtr vmesa)
     GLuint side = 0;
     __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
     
-    switch (vmesa->glCtx->Color._DrawDestMask) {
+    switch (vmesa->glCtx->Color._DrawDestMask[0]) {
     case __GL_FRONT_BUFFER_MASK: 
         viaXMesaSetFrontClipRects(vmesa);
         break;
index eaa5a726e53c0b8b04cc0a9a6981d0c6fc84e1c2..6021efefedf3f149225bfd5799dcf56af20e2ba0 100644 (file)
@@ -463,7 +463,7 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
     
     if(vmesa->currentPage) {
        vmesa->currentPage = 0;
-       if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+       if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
                ctx->Driver.DrawBuffer(ctx, GL_BACK);
        }
        else {
@@ -472,7 +472,7 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
     }
     else {
        vmesa->currentPage = 1;
-       if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+       if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
                ctx->Driver.DrawBuffer(ctx, GL_BACK);
        }
        else {
@@ -1112,7 +1112,7 @@ void viaFillStencilDepthBuffer(viaContextPtr vmesa, GLuint pixel)
        }
     }
 
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        viaFlushPrimsLocked(vmesa);
     }
 }
@@ -1180,7 +1180,7 @@ void viaFillStencilBuffer(viaContextPtr vmesa, GLuint pixel)
        }
     }
 
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        viaFlushPrimsLocked(vmesa);
     }
 }
@@ -1265,7 +1265,7 @@ void viaFillDepthBuffer(viaContextPtr vmesa, GLuint pixel)
        }
     }
     
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        viaFlushPrimsLocked(vmesa);
     }
 }
@@ -1556,9 +1556,9 @@ int flush_agp(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd)
 
     /*=* [DBG] make draw to front buffer *=*/
     if(DRAW_FRONT)
-       vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK;
+       vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK;
     
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        
        *vb++ = HC_HEADER2;
        *vb++ = (HC_ParaType_NotTex << 16);
@@ -1807,9 +1807,9 @@ int flush_agp_saam(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd)
 
     /*=* [DBG] make draw to front buffer *=*/
     if(DRAW_FRONT)
-       vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK;
+       vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK;
     
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        
        *vb++ = HC_HEADER2;
        *vb++ = (HC_ParaType_NotTex << 16);
@@ -2035,7 +2035,7 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
     
     /*=* [DBG] make draw to front buffer *=*/
     if(DRAW_FRONT)
-       vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK;
+       vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK;
     
     
     /*=* John Sheng [2003.6.20] fix pci *=*/
@@ -2064,7 +2064,7 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
        *vmesa->regTranSpace = 0x46800408;
        vmesa->VQEnable = 0;
     }
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
        *vb++ = HC_HEADER2;
        *vb++ = (HC_ParaType_NotTex << 16);
        
index fcb977187587e26ec61c046db0c80ed1b63fb97e..4fdb1aa96630e91c7e11e3d711c66097b7c3aeec 100644 (file)
     GLushort p;                                                        \
     char *buf, *read_buf;                                              \
     p = 0;                                                             \
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {  \
+    if (vmesa->glCtx->Color._DrawDestMask[0][0] == __GL_BACK_BUFFER_MASK) {    \
        buf = (char *)(vmesa->drawMap);                                 \
        read_buf = (char *)(vmesa->readMap);                            \
     }                                                                  \
     GLuint p;                                                          \
     char *buf, *read_buf;                                              \
     p = 0;                                                             \
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {  \
+    if (vmesa->glCtx->Color._DrawDestMask[0][0] == __GL_BACK_BUFFER_MASK) {    \
        buf = (char *)(vmesa->drawMap);                                 \
        read_buf = (char *)(vmesa->readMap);                            \
     }                                                                  \
index f5b97de52c7aacf9178d2d7e2fed983750353bbd..79ce4cbe88d514fe11d2273ad5ed5490fc7c6654 100644 (file)
@@ -336,7 +336,7 @@ static void viaBitmap( GLcontext *ctx, GLint px, GLint py,
     /*=* John Sheng [2003.7.18] texenv *=*/
     /*if (!vmesa->drawMap && !vmesa->readMap) {*/
     if (1) {
-       if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+       if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
            viaDrawBuffer(ctx, GL_BACK);
        }
        else {
@@ -497,7 +497,7 @@ void viaInitState(GLcontext *ctx)
     vmesa->regCmdB = HC_ACMD_HCmdB | HC_HVPMSK_X | HC_HVPMSK_Y | HC_HVPMSK_Z;
     vmesa->regEnable = HC_HenCW_MASK;
 
-    if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) {
+    if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) {
         vmesa->drawMap = vmesa->back.map;
         vmesa->readMap = vmesa->back.map;
     }
index 3af3b7cd3dfe4c44462e16acbbb5aff2fcc3a9e9..74d0dc008ca224906ae42fbac50c5833d3c4ef57 100644 (file)
@@ -1944,8 +1944,8 @@ fx_check_IsInHardware(GLcontext * ctx)
       return FX_FALLBACK_STENCIL;
    }
 
-   if (ctx->Color._DrawDestMask != DD_FRONT_LEFT_BIT &&
-       ctx->Color._DrawDestMask != DD_BACK_LEFT_BIT) {
+   if (ctx->Color._DrawDestMask[0] != DD_FRONT_LEFT_BIT &&
+       ctx->Color._DrawDestMask[0] != DD_BACK_LEFT_BIT) {
       return FX_FALLBACK_DRAW_BUFFER;
    }
 
index eada47409566e197cddcf2165294cd5f247d91da..4a8a92a0c8e521d20e7e24269d0dbe3dcce6e7e6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -1667,6 +1667,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
    _mesa_enable_1_3_extensions(mesaCtx);
    _mesa_enable_1_4_extensions(mesaCtx);
    _mesa_enable_1_5_extensions(mesaCtx);
+   _mesa_enable_2_0_extensions(mesaCtx);
 
    /* finish up xmesa context initializations */
    c->swapbytes = CHECK_BYTE_ORDER(v) ? GL_FALSE : GL_TRUE;
index ebd75cd3bc9d7c342e46ba444d9adc2e3c128865..4a290c84db7fbe6245f2c51966f70c4df58050bc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -986,7 +986,7 @@ xmesa_CopyPixels( GLcontext *ctx,
    if (swrast->NewState)
       _swrast_validate_derived( ctx );
 
-   if (ctx->Color.DrawBuffer == GL_FRONT &&
+   if (ctx->Color.DrawBuffer[0] == GL_FRONT &&
        ctx->Pixel.ReadBuffer == GL_FRONT &&
        drawBuffer &&  /* buffer != 0 means it's a Window or Pixmap */
        readBuffer &&
@@ -1104,7 +1104,7 @@ void xmesa_update_state( GLcontext *ctx, GLuint new_state )
       break;
    }
 
-   if (ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) {
+   if (ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) {
       xmesa_update_span_funcs(ctx);
    }
 }
index a5352d614747883828dc1fd861565cacd8f5eec1..ccb54a391cb9f10632d043d64ed059bc357f321b 100644 (file)
@@ -1,9 +1,8 @@
-
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.3
  *
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -492,7 +491,7 @@ static swrast_line_func get_line_func( GLcontext *ctx )
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
    int depth = GET_VISUAL_DEPTH(xmesa->xm_visual);
 
-   if ((ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0)
+   if ((ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0)
       return (swrast_line_func) NULL;
    if (ctx->RenderMode != GL_RENDER)      return (swrast_line_func) NULL;
    if (ctx->Line.SmoothFlag)              return (swrast_line_func) NULL;
index f018a6acacbaeb6b562ebe97fad9ddaed8c3e4c0..01585b05b4d5bb82ee7e4ccf95ed4bb0693fe530 100644 (file)
@@ -1,9 +1,8 @@
-
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.3
  *
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -1313,7 +1312,7 @@ static swrast_tri_func get_triangle_func( GLcontext *ctx )
    triFuncName = NULL;
 #endif
 
-   if ((ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0)
+   if ((ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0)
       return (swrast_tri_func) NULL;
    if (ctx->RenderMode != GL_RENDER)  return (swrast_tri_func) NULL;
    if (ctx->Polygon.SmoothFlag)       return (swrast_tri_func) NULL;
index cc58b394f087e553283dd7f95fe38f8892d936c0..5dc7cf91d0644c1b796e0581672c1fabf9cd0387 100644 (file)
     <!-- No new functions, types, enums. -->
 </category>
 
+<category name="GL_ARB_draw_buffers" number="37">
+    <enum name="MAX_DRAW_BUFFERS_ARB"                     value="0x8824"/>
+    <enum name="DRAW_BUFFER0_ARB"                         value="0x8825"/>
+    <enum name="DRAW_BUFFER1_ARB"                         value="0x8826"/>
+    <enum name="DRAW_BUFFER2_ARB"                         value="0x8827"/>
+    <enum name="DRAW_BUFFER3_ARB"                         value="0x8828"/>
+    <enum name="DRAW_BUFFER4_ARB"                         value="0x8829"/>
+    <enum name="DRAW_BUFFER5_ARB"                         value="0x882A"/>
+    <enum name="DRAW_BUFFER6_ARB"                         value="0x882B"/>
+    <enum name="DRAW_BUFFER7_ARB"                         value="0x882C"/>
+    <enum name="DRAW_BUFFER8_ARB"                         value="0x882D"/>
+    <enum name="DRAW_BUFFER9_ARB"                         value="0x882E"/>
+    <enum name="DRAW_BUFFER10_ARB"                        value="0x882F"/>
+    <enum name="DRAW_BUFFER11_ARB"                        value="0x8830"/>
+    <enum name="DRAW_BUFFER12_ARB"                        value="0x8831"/>
+    <enum name="DRAW_BUFFER13_ARB"                        value="0x8832"/>
+    <enum name="DRAW_BUFFER14_ARB"                        value="0x8833"/>
+    <enum name="DRAW_BUFFER15_ARB"                        value="0x8834"/>
+
+    <function name="DrawBuffersARB" offset="413">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="bufs" type="const GLenum *" count="n"/>
+        <!-- no GLX yet -->
+    </function>
+</category>
 
 
 <!-- Non-ARB extensions sorted by extension number. -->
 </category>
 
 <category name="GL_ATI_draw_buffers" number="277">
-    <function name="DrawBuffersATI" offset="?">
+    <function name="DrawBuffersATI" alias="DrawBuffersARB">
         <param name="n" type="GLsizei" counter="true"/>
         <param name="bufs" type="const GLenum *" count="n"/>
        <!-- GLX protocol is not fully defined for this extension. -->
     </function>
 </category>
 
-<category name="unused">
-    <function name="__unused413" offset="413">
-        <glx ignore="true"/>
-    </function>
-</category>
-
 </OpenGLAPI>
index b5e8fd5af91261593beaa7b9a5cc1f334fc74c30..2b2888b6b1f647a6ee8b1e4076ce04052c1fa04b 100644 (file)
 #define _gloffset_MultTransposeMatrixfARB 410
 #define _gloffset_MultTransposeMatrixdARB 411
 #define _gloffset_SampleCoverageARB 412
-#define _gloffset___unused413 413
+#define _gloffset_DrawBuffersARB 413
 #define _gloffset_PolygonOffsetEXT 414
 #define _gloffset_GetTexFilterFuncSGIS 415
 #define _gloffset_TexFilterFuncSGIS 416
index b4d5476159804c7077cec537e2bd26e39cb0272f..68f4ff6ecca0f1881210ed999e647625a5f34d62 100644 (file)
@@ -448,7 +448,7 @@ struct _glapi_table
    void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 410 */
    void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 411 */
    void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 412 */
-   void (GLAPIENTRYP __unused413)(void); /* 413 */
+   void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 413 */
    void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 414 */
    void (GLAPIENTRYP GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights); /* 415 */
    void (GLAPIENTRYP TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights); /* 416 */
index 579494ce817a63621f3554be4909b74f52f0d2e8..da1a59789b94f0b97b3e6221511d1cd78fd84e49 100644 (file)
@@ -2136,9 +2136,9 @@ KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
    DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
 }
 
-KEYWORD1 void KEYWORD2 NAME(__unused413)(void)
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs)
 {
-   DISPATCH(__unused413, (), (F, "gl__unused413();\n"));
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
@@ -4636,6 +4636,11 @@ KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
    DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern));
 }
 
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
+{
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
+}
+
 KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA)
 {
    DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA));
@@ -5083,7 +5088,7 @@ static void * DISPATCH_TABLE_NAME[] = {
    TABLE_ENTRY(MultTransposeMatrixfARB),
    TABLE_ENTRY(MultTransposeMatrixdARB),
    TABLE_ENTRY(SampleCoverageARB),
-   TABLE_ENTRY(__unused413),
+   TABLE_ENTRY(DrawBuffersARB),
    TABLE_ENTRY(PolygonOffsetEXT),
    TABLE_ENTRY(GetTexFilterFuncSGIS),
    TABLE_ENTRY(TexFilterFuncSGIS),
@@ -5696,6 +5701,7 @@ static const void * const UNUSED_TABLE_NAME[] = {
    TABLE_ENTRY(DrawRangeElementsEXT),
    TABLE_ENTRY(SampleMaskEXT),
    TABLE_ENTRY(SamplePatternEXT),
+   TABLE_ENTRY(DrawBuffersATI),
    TABLE_ENTRY(BlendEquationSeparateATI),
    TABLE_ENTRY(BlendFuncSeparateINGR),
    TABLE_ENTRY(PointParameterfSGIS),
index 3c12bd4b10d9e72741a1702d3d2593313536dc3d..d953f604d969d8c07291ae1f682cf159384e655b 100644 (file)
@@ -45,925 +45,926 @@ typedef struct {
 #endif
 
 
-static const char gl_string_table[] = {
-    'g','l', 'N', 'e', 'w', 'L', 'i', 's', 't', '\0',
-    'g','l', 'E', 'n', 'd', 'L', 'i', 's', 't', '\0',
-    'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', '\0',
-    'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', 's', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'L', 'i', 's', 't', 's', '\0',
-    'g','l', 'G', 'e', 'n', 'L', 'i', 's', 't', 's', '\0',
-    'g','l', 'L', 'i', 's', 't', 'B', 'a', 's', 'e', '\0',
-    'g','l', 'B', 'e', 'g', 'i', 'n', '\0',
-    'g','l', 'B', 'i', 't', 'm', 'a', 'p', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', 'v', '\0',
-    'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', '\0',
-    'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'v', '\0',
-    'g','l', 'E', 'n', 'd', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'd', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'd', 'v', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'f', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'f', 'v', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'i', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'i', 'v', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 's', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 's', 'v', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', 'v', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', 'v', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', 'v', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', 'v', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', 'v', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', '\0',
-    'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', 'v', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'd', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'd', 'v', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'f', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'f', 'v', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'i', '\0',
-    'g','l', 'R', 'e', 'c', 't', 'i', 'v', '\0',
-    'g','l', 'R', 'e', 'c', 't', 's', '\0',
-    'g','l', 'R', 'e', 'c', 't', 's', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', 'v', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', 'v', '\0',
-    'g','l', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', '\0',
-    'g','l', 'C', 'u', 'l', 'l', 'F', 'a', 'c', 'e', '\0',
-    'g','l', 'F', 'o', 'g', 'f', '\0',
-    'g','l', 'F', 'o', 'g', 'f', 'v', '\0',
-    'g','l', 'F', 'o', 'g', 'i', '\0',
-    'g','l', 'F', 'o', 'g', 'i', 'v', '\0',
-    'g','l', 'F', 'r', 'o', 'n', 't', 'F', 'a', 'c', 'e', '\0',
-    'g','l', 'H', 'i', 'n', 't', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'f', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'i', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', '\0',
-    'g','l', 'L', 'i', 'n', 'e', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0',
-    'g','l', 'L', 'i', 'n', 'e', 'W', 'i', 'd', 't', 'h', '\0',
-    'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', '\0',
-    'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0',
-    'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', '\0',
-    'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'S', 'i', 'z', 'e', '\0',
-    'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'M', 'o', 'd', 'e', '\0',
-    'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0',
-    'g','l', 'S', 'c', 'i', 's', 's', 'o', 'r', '\0',
-    'g','l', 'S', 'h', 'a', 'd', 'e', 'M', 'o', 'd', 'e', 'l', '\0',
-    'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', '\0',
-    'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0',
-    'g','l', 'F', 'e', 'e', 'd', 'b', 'a', 'c', 'k', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'S', 'e', 'l', 'e', 'c', 't', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'R', 'e', 'n', 'd', 'e', 'r', 'M', 'o', 'd', 'e', '\0',
-    'g','l', 'I', 'n', 'i', 't', 'N', 'a', 'm', 'e', 's', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'N', 'a', 'm', 'e', '\0',
-    'g','l', 'P', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', 'h', '\0',
-    'g','l', 'P', 'o', 'p', 'N', 'a', 'm', 'e', '\0',
-    'g','l', 'P', 'u', 's', 'h', 'N', 'a', 'm', 'e', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', 'A', 'c', 'c', 'u', 'm', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', 'I', 'n', 'd', 'e', 'x', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', 'C', 'o', 'l', 'o', 'r', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', 'S', 't', 'e', 'n', 'c', 'i', 'l', '\0',
-    'g','l', 'C', 'l', 'e', 'a', 'r', 'D', 'e', 'p', 't', 'h', '\0',
-    'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'M', 'a', 's', 'k', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 's', 'k', '\0',
-    'g','l', 'D', 'e', 'p', 't', 'h', 'M', 'a', 's', 'k', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 's', 'k', '\0',
-    'g','l', 'A', 'c', 'c', 'u', 'm', '\0',
-    'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'E', 'n', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'F', 'i', 'n', 'i', 's', 'h', '\0',
-    'g','l', 'F', 'l', 'u', 's', 'h', '\0',
-    'g','l', 'P', 'o', 'p', 'A', 't', 't', 'r', 'i', 'b', '\0',
-    'g','l', 'P', 'u', 's', 'h', 'A', 't', 't', 'r', 'i', 'b', '\0',
-    'g','l', 'M', 'a', 'p', '1', 'd', '\0',
-    'g','l', 'M', 'a', 'p', '1', 'f', '\0',
-    'g','l', 'M', 'a', 'p', '2', 'd', '\0',
-    'g','l', 'M', 'a', 'p', '2', 'f', '\0',
-    'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'd', '\0',
-    'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'f', '\0',
-    'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'd', '\0',
-    'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'f', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '1', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '1', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '2', '\0',
-    'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '2', '\0',
-    'g','l', 'A', 'l', 'p', 'h', 'a', 'F', 'u', 'n', 'c', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', '\0',
-    'g','l', 'L', 'o', 'g', 'i', 'c', 'O', 'p', '\0',
-    'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'u', 'n', 'c', '\0',
-    'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'O', 'p', '\0',
-    'g','l', 'D', 'e', 'p', 't', 'h', 'F', 'u', 'n', 'c', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'Z', 'o', 'o', 'm', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'f', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'i', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'f', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'i', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0',
-    'g','l', 'R', 'e', 'a', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'P', 'i', 'x', 'e', 'l', 's', '\0',
-    'g','l', 'R', 'e', 'a', 'd', 'P', 'i', 'x', 'e', 'l', 's', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'P', 'i', 'x', 'e', 'l', 's', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0',
-    'g','l', 'G', 'e', 't', 'D', 'o', 'u', 'b', 'l', 'e', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'E', 'r', 'r', 'o', 'r', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'l', 'o', 'a', 't', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'I', 'n', 't', 'e', 'g', 'e', 'r', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'd', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0',
-    'g','l', 'G', 'e', 't', 'S', 't', 'r', 'i', 'n', 'g', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'I', 's', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\0',
-    'g','l', 'I', 's', 'L', 'i', 's', 't', '\0',
-    'g','l', 'D', 'e', 'p', 't', 'h', 'R', 'a', 'n', 'g', 'e', '\0',
-    'g','l', 'F', 'r', 'u', 's', 't', 'u', 'm', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0',
-    'g','l', 'M', 'a', 't', 'r', 'i', 'x', 'M', 'o', 'd', 'e', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0',
-    'g','l', 'O', 'r', 't', 'h', 'o', '\0',
-    'g','l', 'P', 'o', 'p', 'M', 'a', 't', 'r', 'i', 'x', '\0',
-    'g','l', 'P', 'u', 's', 'h', 'M', 'a', 't', 'r', 'i', 'x', '\0',
-    'g','l', 'R', 'o', 't', 'a', 't', 'e', 'd', '\0',
-    'g','l', 'R', 'o', 't', 'a', 't', 'e', 'f', '\0',
-    'g','l', 'S', 'c', 'a', 'l', 'e', 'd', '\0',
-    'g','l', 'S', 'c', 'a', 'l', 'e', 'f', '\0',
-    'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'd', '\0',
-    'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'f', '\0',
-    'g','l', 'V', 'i', 'e', 'w', 'p', 'o', 'r', 't', '\0',
-    'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0',
-    'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', 'v', '\0',
-    'g','l', 'I', 'n', 't', 'e', 'r', 'l', 'e', 'a', 'v', 'e', 'd', 'A', 'r', 'r', 'a', 'y', 's', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0',
-    'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0',
-    'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0',
-    'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'P', 'o', 'p', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0',
-    'g','l', 'P', 'u', 's', 'h', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\0',
-    'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0',
-    'g','l', 'M', 'i', 'n', 'm', 'a', 'x', '\0',
-    'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0',
-    'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0',
-    'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0',
-    'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', 'A', 'R', 'B', '\0',
-    'g','l', '_', '_', 'u', 'n', 'u', 's', 'e', 'd', '4', '1', '3', '\0',
-    'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'G', 'e', 't', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'G', 'e', 't', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'P', 'o', 'l', 'l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'R', 'e', 'a', 'd', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'S', 't', 'a', 'r', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'S', 't', 'o', 'p', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'm', 'e', 'Z', 'o', 'o', 'm', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'T', 'a', 'g', 'S', 'a', 'm', 'p', 'l', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'R', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'P', 'l', 'a', 'n', 'e', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'l', 'u', 's', 'h', 'R', 'a', 's', 't', 'e', 'r', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'L', 'i', 'g', 'h', 't', 'E', 'n', 'v', 'i', 'S', 'G', 'I', 'X', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'E', 'X', 'T', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'F', 'l', 'u', 's', 'h', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0',
-    'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'N', 'V', '\0',
-    'g','l', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'R', 'e', 's', 'i', 'z', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'v', 'M', 'E', 'S', 'A', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'E', 'X', 'T', '\0',
-    'g','l', 'I', 'n', 'd', 'e', 'x', 'F', 'u', 'n', 'c', 'E', 'X', 'T', '\0',
-    'g','l', 'L', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'U', 'n', 'l', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'H', 'i', 'n', 't', 'P', 'G', 'I', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'E', 'X', 'T', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'E', 'X', 'T', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'b', 'u', 'f', 'f', 'e', 'r', 'M', 'a', 's', 'k', '3', 'D', 'F', 'X', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', 'A', 'R', 'B', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'A', 'r', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'N', 'V', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0',
-    'g','l', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'N', 'V', '\0',
-    'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0',
-    'g','l', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 's', 'v', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'u', 'b', 'v', 'N', 'V', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'a', 'c', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 'n', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0',
-    'g','l', 'I', 's', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0',
-    'g','l', 'T', 'e', 's', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'i', 'v', 'N', 'V', '\0',
-    'g','l', 'F', 'i', 'n', 'i', 's', 'h', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0',
-    'g','l', 'S', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'b', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'b', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'A', 'R', 'B', '\0',
-    'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0',
-    'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0',
-    'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0',
-    'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0',
-    'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0',
-    'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0',
-    'g','l', 'D', 'e', 'p', 't', 'h', 'B', 'o', 'u', 'n', 'd', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0',
-    'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0',
-    'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'I', 'B', 'M', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'I', 'B', 'M', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0',
-    'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0',
-    'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0',
-    'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0',
-    'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', '\0',
-    'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0',
-    'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0',
-    'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', '\0',
-    'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0',
-    'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0',
-    'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0',
-    'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0',
-    'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', '\0',
-    'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', '\0',
-    'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', '\0',
-    'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0',
-    'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0',
-    'g','l', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0',
-    'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0',
-    'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0',
-    'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', 'E', 'X', 'T', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'E', 'X', 'T', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0',
-    'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'E', 'X', 'T', '\0',
-    'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'E', 'X', 'T', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'A', 'T', 'I', '\0',
-    'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'I', 'N', 'G', 'R', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0',
-    'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0',
-};
+static const char gl_string_table[] =
+    "glNewList\0"
+    "glEndList\0"
+    "glCallList\0"
+    "glCallLists\0"
+    "glDeleteLists\0"
+    "glGenLists\0"
+    "glListBase\0"
+    "glBegin\0"
+    "glBitmap\0"
+    "glColor3b\0"
+    "glColor3bv\0"
+    "glColor3d\0"
+    "glColor3dv\0"
+    "glColor3f\0"
+    "glColor3fv\0"
+    "glColor3i\0"
+    "glColor3iv\0"
+    "glColor3s\0"
+    "glColor3sv\0"
+    "glColor3ub\0"
+    "glColor3ubv\0"
+    "glColor3ui\0"
+    "glColor3uiv\0"
+    "glColor3us\0"
+    "glColor3usv\0"
+    "glColor4b\0"
+    "glColor4bv\0"
+    "glColor4d\0"
+    "glColor4dv\0"
+    "glColor4f\0"
+    "glColor4fv\0"
+    "glColor4i\0"
+    "glColor4iv\0"
+    "glColor4s\0"
+    "glColor4sv\0"
+    "glColor4ub\0"
+    "glColor4ubv\0"
+    "glColor4ui\0"
+    "glColor4uiv\0"
+    "glColor4us\0"
+    "glColor4usv\0"
+    "glEdgeFlag\0"
+    "glEdgeFlagv\0"
+    "glEnd\0"
+    "glIndexd\0"
+    "glIndexdv\0"
+    "glIndexf\0"
+    "glIndexfv\0"
+    "glIndexi\0"
+    "glIndexiv\0"
+    "glIndexs\0"
+    "glIndexsv\0"
+    "glNormal3b\0"
+    "glNormal3bv\0"
+    "glNormal3d\0"
+    "glNormal3dv\0"
+    "glNormal3f\0"
+    "glNormal3fv\0"
+    "glNormal3i\0"
+    "glNormal3iv\0"
+    "glNormal3s\0"
+    "glNormal3sv\0"
+    "glRasterPos2d\0"
+    "glRasterPos2dv\0"
+    "glRasterPos2f\0"
+    "glRasterPos2fv\0"
+    "glRasterPos2i\0"
+    "glRasterPos2iv\0"
+    "glRasterPos2s\0"
+    "glRasterPos2sv\0"
+    "glRasterPos3d\0"
+    "glRasterPos3dv\0"
+    "glRasterPos3f\0"
+    "glRasterPos3fv\0"
+    "glRasterPos3i\0"
+    "glRasterPos3iv\0"
+    "glRasterPos3s\0"
+    "glRasterPos3sv\0"
+    "glRasterPos4d\0"
+    "glRasterPos4dv\0"
+    "glRasterPos4f\0"
+    "glRasterPos4fv\0"
+    "glRasterPos4i\0"
+    "glRasterPos4iv\0"
+    "glRasterPos4s\0"
+    "glRasterPos4sv\0"
+    "glRectd\0"
+    "glRectdv\0"
+    "glRectf\0"
+    "glRectfv\0"
+    "glRecti\0"
+    "glRectiv\0"
+    "glRects\0"
+    "glRectsv\0"
+    "glTexCoord1d\0"
+    "glTexCoord1dv\0"
+    "glTexCoord1f\0"
+    "glTexCoord1fv\0"
+    "glTexCoord1i\0"
+    "glTexCoord1iv\0"
+    "glTexCoord1s\0"
+    "glTexCoord1sv\0"
+    "glTexCoord2d\0"
+    "glTexCoord2dv\0"
+    "glTexCoord2f\0"
+    "glTexCoord2fv\0"
+    "glTexCoord2i\0"
+    "glTexCoord2iv\0"
+    "glTexCoord2s\0"
+    "glTexCoord2sv\0"
+    "glTexCoord3d\0"
+    "glTexCoord3dv\0"
+    "glTexCoord3f\0"
+    "glTexCoord3fv\0"
+    "glTexCoord3i\0"
+    "glTexCoord3iv\0"
+    "glTexCoord3s\0"
+    "glTexCoord3sv\0"
+    "glTexCoord4d\0"
+    "glTexCoord4dv\0"
+    "glTexCoord4f\0"
+    "glTexCoord4fv\0"
+    "glTexCoord4i\0"
+    "glTexCoord4iv\0"
+    "glTexCoord4s\0"
+    "glTexCoord4sv\0"
+    "glVertex2d\0"
+    "glVertex2dv\0"
+    "glVertex2f\0"
+    "glVertex2fv\0"
+    "glVertex2i\0"
+    "glVertex2iv\0"
+    "glVertex2s\0"
+    "glVertex2sv\0"
+    "glVertex3d\0"
+    "glVertex3dv\0"
+    "glVertex3f\0"
+    "glVertex3fv\0"
+    "glVertex3i\0"
+    "glVertex3iv\0"
+    "glVertex3s\0"
+    "glVertex3sv\0"
+    "glVertex4d\0"
+    "glVertex4dv\0"
+    "glVertex4f\0"
+    "glVertex4fv\0"
+    "glVertex4i\0"
+    "glVertex4iv\0"
+    "glVertex4s\0"
+    "glVertex4sv\0"
+    "glClipPlane\0"
+    "glColorMaterial\0"
+    "glCullFace\0"
+    "glFogf\0"
+    "glFogfv\0"
+    "glFogi\0"
+    "glFogiv\0"
+    "glFrontFace\0"
+    "glHint\0"
+    "glLightf\0"
+    "glLightfv\0"
+    "glLighti\0"
+    "glLightiv\0"
+    "glLightModelf\0"
+    "glLightModelfv\0"
+    "glLightModeli\0"
+    "glLightModeliv\0"
+    "glLineStipple\0"
+    "glLineWidth\0"
+    "glMaterialf\0"
+    "glMaterialfv\0"
+    "glMateriali\0"
+    "glMaterialiv\0"
+    "glPointSize\0"
+    "glPolygonMode\0"
+    "glPolygonStipple\0"
+    "glScissor\0"
+    "glShadeModel\0"
+    "glTexParameterf\0"
+    "glTexParameterfv\0"
+    "glTexParameteri\0"
+    "glTexParameteriv\0"
+    "glTexImage1D\0"
+    "glTexImage2D\0"
+    "glTexEnvf\0"
+    "glTexEnvfv\0"
+    "glTexEnvi\0"
+    "glTexEnviv\0"
+    "glTexGend\0"
+    "glTexGendv\0"
+    "glTexGenf\0"
+    "glTexGenfv\0"
+    "glTexGeni\0"
+    "glTexGeniv\0"
+    "glFeedbackBuffer\0"
+    "glSelectBuffer\0"
+    "glRenderMode\0"
+    "glInitNames\0"
+    "glLoadName\0"
+    "glPassThrough\0"
+    "glPopName\0"
+    "glPushName\0"
+    "glDrawBuffer\0"
+    "glClear\0"
+    "glClearAccum\0"
+    "glClearIndex\0"
+    "glClearColor\0"
+    "glClearStencil\0"
+    "glClearDepth\0"
+    "glStencilMask\0"
+    "glColorMask\0"
+    "glDepthMask\0"
+    "glIndexMask\0"
+    "glAccum\0"
+    "glDisable\0"
+    "glEnable\0"
+    "glFinish\0"
+    "glFlush\0"
+    "glPopAttrib\0"
+    "glPushAttrib\0"
+    "glMap1d\0"
+    "glMap1f\0"
+    "glMap2d\0"
+    "glMap2f\0"
+    "glMapGrid1d\0"
+    "glMapGrid1f\0"
+    "glMapGrid2d\0"
+    "glMapGrid2f\0"
+    "glEvalCoord1d\0"
+    "glEvalCoord1dv\0"
+    "glEvalCoord1f\0"
+    "glEvalCoord1fv\0"
+    "glEvalCoord2d\0"
+    "glEvalCoord2dv\0"
+    "glEvalCoord2f\0"
+    "glEvalCoord2fv\0"
+    "glEvalMesh1\0"
+    "glEvalPoint1\0"
+    "glEvalMesh2\0"
+    "glEvalPoint2\0"
+    "glAlphaFunc\0"
+    "glBlendFunc\0"
+    "glLogicOp\0"
+    "glStencilFunc\0"
+    "glStencilOp\0"
+    "glDepthFunc\0"
+    "glPixelZoom\0"
+    "glPixelTransferf\0"
+    "glPixelTransferi\0"
+    "glPixelStoref\0"
+    "glPixelStorei\0"
+    "glPixelMapfv\0"
+    "glPixelMapuiv\0"
+    "glPixelMapusv\0"
+    "glReadBuffer\0"
+    "glCopyPixels\0"
+    "glReadPixels\0"
+    "glDrawPixels\0"
+    "glGetBooleanv\0"
+    "glGetClipPlane\0"
+    "glGetDoublev\0"
+    "glGetError\0"
+    "glGetFloatv\0"
+    "glGetIntegerv\0"
+    "glGetLightfv\0"
+    "glGetLightiv\0"
+    "glGetMapdv\0"
+    "glGetMapfv\0"
+    "glGetMapiv\0"
+    "glGetMaterialfv\0"
+    "glGetMaterialiv\0"
+    "glGetPixelMapfv\0"
+    "glGetPixelMapuiv\0"
+    "glGetPixelMapusv\0"
+    "glGetPolygonStipple\0"
+    "glGetString\0"
+    "glGetTexEnvfv\0"
+    "glGetTexEnviv\0"
+    "glGetTexGendv\0"
+    "glGetTexGenfv\0"
+    "glGetTexGeniv\0"
+    "glGetTexImage\0"
+    "glGetTexParameterfv\0"
+    "glGetTexParameteriv\0"
+    "glGetTexLevelParameterfv\0"
+    "glGetTexLevelParameteriv\0"
+    "glIsEnabled\0"
+    "glIsList\0"
+    "glDepthRange\0"
+    "glFrustum\0"
+    "glLoadIdentity\0"
+    "glLoadMatrixf\0"
+    "glLoadMatrixd\0"
+    "glMatrixMode\0"
+    "glMultMatrixf\0"
+    "glMultMatrixd\0"
+    "glOrtho\0"
+    "glPopMatrix\0"
+    "glPushMatrix\0"
+    "glRotated\0"
+    "glRotatef\0"
+    "glScaled\0"
+    "glScalef\0"
+    "glTranslated\0"
+    "glTranslatef\0"
+    "glViewport\0"
+    "glArrayElement\0"
+    "glBindTexture\0"
+    "glColorPointer\0"
+    "glDisableClientState\0"
+    "glDrawArrays\0"
+    "glDrawElements\0"
+    "glEdgeFlagPointer\0"
+    "glEnableClientState\0"
+    "glIndexPointer\0"
+    "glIndexub\0"
+    "glIndexubv\0"
+    "glInterleavedArrays\0"
+    "glNormalPointer\0"
+    "glPolygonOffset\0"
+    "glTexCoordPointer\0"
+    "glVertexPointer\0"
+    "glAreTexturesResident\0"
+    "glCopyTexImage1D\0"
+    "glCopyTexImage2D\0"
+    "glCopyTexSubImage1D\0"
+    "glCopyTexSubImage2D\0"
+    "glDeleteTextures\0"
+    "glGenTextures\0"
+    "glGetPointerv\0"
+    "glIsTexture\0"
+    "glPrioritizeTextures\0"
+    "glTexSubImage1D\0"
+    "glTexSubImage2D\0"
+    "glPopClientAttrib\0"
+    "glPushClientAttrib\0"
+    "glBlendColor\0"
+    "glBlendEquation\0"
+    "glDrawRangeElements\0"
+    "glColorTable\0"
+    "glColorTableParameterfv\0"
+    "glColorTableParameteriv\0"
+    "glCopyColorTable\0"
+    "glGetColorTable\0"
+    "glGetColorTableParameterfv\0"
+    "glGetColorTableParameteriv\0"
+    "glColorSubTable\0"
+    "glCopyColorSubTable\0"
+    "glConvolutionFilter1D\0"
+    "glConvolutionFilter2D\0"
+    "glConvolutionParameterf\0"
+    "glConvolutionParameterfv\0"
+    "glConvolutionParameteri\0"
+    "glConvolutionParameteriv\0"
+    "glCopyConvolutionFilter1D\0"
+    "glCopyConvolutionFilter2D\0"
+    "glGetConvolutionFilter\0"
+    "glGetConvolutionParameterfv\0"
+    "glGetConvolutionParameteriv\0"
+    "glGetSeparableFilter\0"
+    "glSeparableFilter2D\0"
+    "glGetHistogram\0"
+    "glGetHistogramParameterfv\0"
+    "glGetHistogramParameteriv\0"
+    "glGetMinmax\0"
+    "glGetMinmaxParameterfv\0"
+    "glGetMinmaxParameteriv\0"
+    "glHistogram\0"
+    "glMinmax\0"
+    "glResetHistogram\0"
+    "glResetMinmax\0"
+    "glTexImage3D\0"
+    "glTexSubImage3D\0"
+    "glCopyTexSubImage3D\0"
+    "glActiveTextureARB\0"
+    "glClientActiveTextureARB\0"
+    "glMultiTexCoord1dARB\0"
+    "glMultiTexCoord1dvARB\0"
+    "glMultiTexCoord1fARB\0"
+    "glMultiTexCoord1fvARB\0"
+    "glMultiTexCoord1iARB\0"
+    "glMultiTexCoord1ivARB\0"
+    "glMultiTexCoord1sARB\0"
+    "glMultiTexCoord1svARB\0"
+    "glMultiTexCoord2dARB\0"
+    "glMultiTexCoord2dvARB\0"
+    "glMultiTexCoord2fARB\0"
+    "glMultiTexCoord2fvARB\0"
+    "glMultiTexCoord2iARB\0"
+    "glMultiTexCoord2ivARB\0"
+    "glMultiTexCoord2sARB\0"
+    "glMultiTexCoord2svARB\0"
+    "glMultiTexCoord3dARB\0"
+    "glMultiTexCoord3dvARB\0"
+    "glMultiTexCoord3fARB\0"
+    "glMultiTexCoord3fvARB\0"
+    "glMultiTexCoord3iARB\0"
+    "glMultiTexCoord3ivARB\0"
+    "glMultiTexCoord3sARB\0"
+    "glMultiTexCoord3svARB\0"
+    "glMultiTexCoord4dARB\0"
+    "glMultiTexCoord4dvARB\0"
+    "glMultiTexCoord4fARB\0"
+    "glMultiTexCoord4fvARB\0"
+    "glMultiTexCoord4iARB\0"
+    "glMultiTexCoord4ivARB\0"
+    "glMultiTexCoord4sARB\0"
+    "glMultiTexCoord4svARB\0"
+    "glLoadTransposeMatrixfARB\0"
+    "glLoadTransposeMatrixdARB\0"
+    "glMultTransposeMatrixfARB\0"
+    "glMultTransposeMatrixdARB\0"
+    "glSampleCoverageARB\0"
+    "glDrawBuffersARB\0"
+    "glPolygonOffsetEXT\0"
+    "glGetTexFilterFuncSGIS\0"
+    "glTexFilterFuncSGIS\0"
+    "glGetHistogramEXT\0"
+    "glGetHistogramParameterfvEXT\0"
+    "glGetHistogramParameterivEXT\0"
+    "glGetMinmaxEXT\0"
+    "glGetMinmaxParameterfvEXT\0"
+    "glGetMinmaxParameterivEXT\0"
+    "glGetConvolutionFilterEXT\0"
+    "glGetConvolutionParameterfvEXT\0"
+    "glGetConvolutionParameterivEXT\0"
+    "glGetSeparableFilterEXT\0"
+    "glGetColorTableSGI\0"
+    "glGetColorTableParameterfvSGI\0"
+    "glGetColorTableParameterivSGI\0"
+    "glPixelTexGenSGIX\0"
+    "glPixelTexGenParameteriSGIS\0"
+    "glPixelTexGenParameterivSGIS\0"
+    "glPixelTexGenParameterfSGIS\0"
+    "glPixelTexGenParameterfvSGIS\0"
+    "glGetPixelTexGenParameterivSGIS\0"
+    "glGetPixelTexGenParameterfvSGIS\0"
+    "glTexImage4DSGIS\0"
+    "glTexSubImage4DSGIS\0"
+    "glAreTexturesResidentEXT\0"
+    "glGenTexturesEXT\0"
+    "glIsTextureEXT\0"
+    "glDetailTexFuncSGIS\0"
+    "glGetDetailTexFuncSGIS\0"
+    "glSharpenTexFuncSGIS\0"
+    "glGetSharpenTexFuncSGIS\0"
+    "glSampleMaskSGIS\0"
+    "glSamplePatternSGIS\0"
+    "glColorPointerEXT\0"
+    "glEdgeFlagPointerEXT\0"
+    "glIndexPointerEXT\0"
+    "glNormalPointerEXT\0"
+    "glTexCoordPointerEXT\0"
+    "glVertexPointerEXT\0"
+    "glSpriteParameterfSGIX\0"
+    "glSpriteParameterfvSGIX\0"
+    "glSpriteParameteriSGIX\0"
+    "glSpriteParameterivSGIX\0"
+    "glPointParameterfEXT\0"
+    "glPointParameterfvEXT\0"
+    "glGetInstrumentsSGIX\0"
+    "glInstrumentsBufferSGIX\0"
+    "glPollInstrumentsSGIX\0"
+    "glReadInstrumentsSGIX\0"
+    "glStartInstrumentsSGIX\0"
+    "glStopInstrumentsSGIX\0"
+    "glFrameZoomSGIX\0"
+    "glTagSampleBufferSGIX\0"
+    "glReferencePlaneSGIX\0"
+    "glFlushRasterSGIX\0"
+    "glGetListParameterfvSGIX\0"
+    "glGetListParameterivSGIX\0"
+    "glListParameterfSGIX\0"
+    "glListParameterfvSGIX\0"
+    "glListParameteriSGIX\0"
+    "glListParameterivSGIX\0"
+    "glFragmentColorMaterialSGIX\0"
+    "glFragmentLightfSGIX\0"
+    "glFragmentLightfvSGIX\0"
+    "glFragmentLightiSGIX\0"
+    "glFragmentLightivSGIX\0"
+    "glFragmentLightModelfSGIX\0"
+    "glFragmentLightModelfvSGIX\0"
+    "glFragmentLightModeliSGIX\0"
+    "glFragmentLightModelivSGIX\0"
+    "glFragmentMaterialfSGIX\0"
+    "glFragmentMaterialfvSGIX\0"
+    "glFragmentMaterialiSGIX\0"
+    "glFragmentMaterialivSGIX\0"
+    "glGetFragmentLightfvSGIX\0"
+    "glGetFragmentLightivSGIX\0"
+    "glGetFragmentMaterialfvSGIX\0"
+    "glGetFragmentMaterialivSGIX\0"
+    "glLightEnviSGIX\0"
+    "glVertexWeightfEXT\0"
+    "glVertexWeightfvEXT\0"
+    "glVertexWeightPointerEXT\0"
+    "glFlushVertexArrayRangeNV\0"
+    "glVertexArrayRangeNV\0"
+    "glCombinerParameterfvNV\0"
+    "glCombinerParameterfNV\0"
+    "glCombinerParameterivNV\0"
+    "glCombinerParameteriNV\0"
+    "glCombinerInputNV\0"
+    "glCombinerOutputNV\0"
+    "glFinalCombinerInputNV\0"
+    "glGetCombinerInputParameterfvNV\0"
+    "glGetCombinerInputParameterivNV\0"
+    "glGetCombinerOutputParameterfvNV\0"
+    "glGetCombinerOutputParameterivNV\0"
+    "glGetFinalCombinerInputParameterfvNV\0"
+    "glGetFinalCombinerInputParameterivNV\0"
+    "glResizeBuffersMESA\0"
+    "glWindowPos2dMESA\0"
+    "glWindowPos2dvMESA\0"
+    "glWindowPos2fMESA\0"
+    "glWindowPos2fvMESA\0"
+    "glWindowPos2iMESA\0"
+    "glWindowPos2ivMESA\0"
+    "glWindowPos2sMESA\0"
+    "glWindowPos2svMESA\0"
+    "glWindowPos3dMESA\0"
+    "glWindowPos3dvMESA\0"
+    "glWindowPos3fMESA\0"
+    "glWindowPos3fvMESA\0"
+    "glWindowPos3iMESA\0"
+    "glWindowPos3ivMESA\0"
+    "glWindowPos3sMESA\0"
+    "glWindowPos3svMESA\0"
+    "glWindowPos4dMESA\0"
+    "glWindowPos4dvMESA\0"
+    "glWindowPos4fMESA\0"
+    "glWindowPos4fvMESA\0"
+    "glWindowPos4iMESA\0"
+    "glWindowPos4ivMESA\0"
+    "glWindowPos4sMESA\0"
+    "glWindowPos4svMESA\0"
+    "glBlendFuncSeparateEXT\0"
+    "glIndexMaterialEXT\0"
+    "glIndexFuncEXT\0"
+    "glLockArraysEXT\0"
+    "glUnlockArraysEXT\0"
+    "glCullParameterdvEXT\0"
+    "glCullParameterfvEXT\0"
+    "glHintPGI\0"
+    "glFogCoordfEXT\0"
+    "glFogCoordfvEXT\0"
+    "glFogCoorddEXT\0"
+    "glFogCoorddvEXT\0"
+    "glFogCoordPointerEXT\0"
+    "glGetColorTableEXT\0"
+    "glGetColorTableParameterivEXT\0"
+    "glGetColorTableParameterfvEXT\0"
+    "glTbufferMask3DFX\0"
+    "glCompressedTexImage3DARB\0"
+    "glCompressedTexImage2DARB\0"
+    "glCompressedTexImage1DARB\0"
+    "glCompressedTexSubImage3DARB\0"
+    "glCompressedTexSubImage2DARB\0"
+    "glCompressedTexSubImage1DARB\0"
+    "glGetCompressedTexImageARB\0"
+    "glSecondaryColor3bEXT\0"
+    "glSecondaryColor3bvEXT\0"
+    "glSecondaryColor3dEXT\0"
+    "glSecondaryColor3dvEXT\0"
+    "glSecondaryColor3fEXT\0"
+    "glSecondaryColor3fvEXT\0"
+    "glSecondaryColor3iEXT\0"
+    "glSecondaryColor3ivEXT\0"
+    "glSecondaryColor3sEXT\0"
+    "glSecondaryColor3svEXT\0"
+    "glSecondaryColor3ubEXT\0"
+    "glSecondaryColor3ubvEXT\0"
+    "glSecondaryColor3uiEXT\0"
+    "glSecondaryColor3uivEXT\0"
+    "glSecondaryColor3usEXT\0"
+    "glSecondaryColor3usvEXT\0"
+    "glSecondaryColorPointerEXT\0"
+    "glAreProgramsResidentNV\0"
+    "glBindProgramNV\0"
+    "glDeleteProgramsNV\0"
+    "glExecuteProgramNV\0"
+    "glGenProgramsNV\0"
+    "glGetProgramParameterdvNV\0"
+    "glGetProgramParameterfvNV\0"
+    "glGetProgramivNV\0"
+    "glGetProgramStringNV\0"
+    "glGetTrackMatrixivNV\0"
+    "glGetVertexAttribdvNV\0"
+    "glGetVertexAttribfvNV\0"
+    "glGetVertexAttribivNV\0"
+    "glGetVertexAttribPointervNV\0"
+    "glIsProgramNV\0"
+    "glLoadProgramNV\0"
+    "glProgramParameter4dNV\0"
+    "glProgramParameter4dvNV\0"
+    "glProgramParameter4fNV\0"
+    "glProgramParameter4fvNV\0"
+    "glProgramParameters4dvNV\0"
+    "glProgramParameters4fvNV\0"
+    "glRequestResidentProgramsNV\0"
+    "glTrackMatrixNV\0"
+    "glVertexAttribPointerNV\0"
+    "glVertexAttrib1dNV\0"
+    "glVertexAttrib1dvNV\0"
+    "glVertexAttrib1fNV\0"
+    "glVertexAttrib1fvNV\0"
+    "glVertexAttrib1sNV\0"
+    "glVertexAttrib1svNV\0"
+    "glVertexAttrib2dNV\0"
+    "glVertexAttrib2dvNV\0"
+    "glVertexAttrib2fNV\0"
+    "glVertexAttrib2fvNV\0"
+    "glVertexAttrib2sNV\0"
+    "glVertexAttrib2svNV\0"
+    "glVertexAttrib3dNV\0"
+    "glVertexAttrib3dvNV\0"
+    "glVertexAttrib3fNV\0"
+    "glVertexAttrib3fvNV\0"
+    "glVertexAttrib3sNV\0"
+    "glVertexAttrib3svNV\0"
+    "glVertexAttrib4dNV\0"
+    "glVertexAttrib4dvNV\0"
+    "glVertexAttrib4fNV\0"
+    "glVertexAttrib4fvNV\0"
+    "glVertexAttrib4sNV\0"
+    "glVertexAttrib4svNV\0"
+    "glVertexAttrib4ubNV\0"
+    "glVertexAttrib4ubvNV\0"
+    "glVertexAttribs1dvNV\0"
+    "glVertexAttribs1fvNV\0"
+    "glVertexAttribs1svNV\0"
+    "glVertexAttribs2dvNV\0"
+    "glVertexAttribs2fvNV\0"
+    "glVertexAttribs2svNV\0"
+    "glVertexAttribs3dvNV\0"
+    "glVertexAttribs3fvNV\0"
+    "glVertexAttribs3svNV\0"
+    "glVertexAttribs4dvNV\0"
+    "glVertexAttribs4fvNV\0"
+    "glVertexAttribs4svNV\0"
+    "glVertexAttribs4ubvNV\0"
+    "glPointParameteriNV\0"
+    "glPointParameterivNV\0"
+    "glMultiDrawArraysEXT\0"
+    "glMultiDrawElementsEXT\0"
+    "glActiveStencilFaceEXT\0"
+    "glDeleteFencesNV\0"
+    "glGenFencesNV\0"
+    "glIsFenceNV\0"
+    "glTestFenceNV\0"
+    "glGetFenceivNV\0"
+    "glFinishFenceNV\0"
+    "glSetFenceNV\0"
+    "glVertexAttrib4bvARB\0"
+    "glVertexAttrib4ivARB\0"
+    "glVertexAttrib4ubvARB\0"
+    "glVertexAttrib4usvARB\0"
+    "glVertexAttrib4uivARB\0"
+    "glVertexAttrib4NbvARB\0"
+    "glVertexAttrib4NsvARB\0"
+    "glVertexAttrib4NivARB\0"
+    "glVertexAttrib4NusvARB\0"
+    "glVertexAttrib4NuivARB\0"
+    "glVertexAttribPointerARB\0"
+    "glEnableVertexAttribArrayARB\0"
+    "glDisableVertexAttribArrayARB\0"
+    "glProgramStringARB\0"
+    "glProgramEnvParameter4dARB\0"
+    "glProgramEnvParameter4dvARB\0"
+    "glProgramEnvParameter4fARB\0"
+    "glProgramEnvParameter4fvARB\0"
+    "glProgramLocalParameter4dARB\0"
+    "glProgramLocalParameter4dvARB\0"
+    "glProgramLocalParameter4fARB\0"
+    "glProgramLocalParameter4fvARB\0"
+    "glGetProgramEnvParameterdvARB\0"
+    "glGetProgramEnvParameterfvARB\0"
+    "glGetProgramLocalParameterdvARB\0"
+    "glGetProgramLocalParameterfvARB\0"
+    "glGetProgramivARB\0"
+    "glGetProgramStringARB\0"
+    "glProgramNamedParameter4fNV\0"
+    "glProgramNamedParameter4dNV\0"
+    "glProgramNamedParameter4fvNV\0"
+    "glProgramNamedParameter4dvNV\0"
+    "glGetProgramNamedParameterfvNV\0"
+    "glGetProgramNamedParameterdvNV\0"
+    "glBindBufferARB\0"
+    "glBufferDataARB\0"
+    "glBufferSubDataARB\0"
+    "glDeleteBuffersARB\0"
+    "glGenBuffersARB\0"
+    "glGetBufferParameterivARB\0"
+    "glGetBufferPointervARB\0"
+    "glGetBufferSubDataARB\0"
+    "glIsBufferARB\0"
+    "glMapBufferARB\0"
+    "glUnmapBufferARB\0"
+    "glDepthBoundsEXT\0"
+    "glGenQueriesARB\0"
+    "glDeleteQueriesARB\0"
+    "glIsQueryARB\0"
+    "glBeginQueryARB\0"
+    "glEndQueryARB\0"
+    "glGetQueryivARB\0"
+    "glGetQueryObjectivARB\0"
+    "glGetQueryObjectuivARB\0"
+    "glMultiModeDrawArraysIBM\0"
+    "glMultiModeDrawElementsIBM\0"
+    "glBlendEquationSeparateEXT\0"
+    "glActiveTexture\0"
+    "glClientActiveTexture\0"
+    "glMultiTexCoord1d\0"
+    "glMultiTexCoord1dv\0"
+    "glMultiTexCoord1f\0"
+    "glMultiTexCoord1fv\0"
+    "glMultiTexCoord1i\0"
+    "glMultiTexCoord1iv\0"
+    "glMultiTexCoord1s\0"
+    "glMultiTexCoord1sv\0"
+    "glMultiTexCoord2d\0"
+    "glMultiTexCoord2dv\0"
+    "glMultiTexCoord2f\0"
+    "glMultiTexCoord2fv\0"
+    "glMultiTexCoord2i\0"
+    "glMultiTexCoord2iv\0"
+    "glMultiTexCoord2s\0"
+    "glMultiTexCoord2sv\0"
+    "glMultiTexCoord3d\0"
+    "glMultiTexCoord3dv\0"
+    "glMultiTexCoord3f\0"
+    "glMultiTexCoord3fv\0"
+    "glMultiTexCoord3i\0"
+    "glMultiTexCoord3iv\0"
+    "glMultiTexCoord3s\0"
+    "glMultiTexCoord3sv\0"
+    "glMultiTexCoord4d\0"
+    "glMultiTexCoord4dv\0"
+    "glMultiTexCoord4f\0"
+    "glMultiTexCoord4fv\0"
+    "glMultiTexCoord4i\0"
+    "glMultiTexCoord4iv\0"
+    "glMultiTexCoord4s\0"
+    "glMultiTexCoord4sv\0"
+    "glLoadTransposeMatrixf\0"
+    "glLoadTransposeMatrixd\0"
+    "glMultTransposeMatrixf\0"
+    "glMultTransposeMatrixd\0"
+    "glSampleCoverage\0"
+    "glCompressedTexImage3D\0"
+    "glCompressedTexImage2D\0"
+    "glCompressedTexImage1D\0"
+    "glCompressedTexSubImage3D\0"
+    "glCompressedTexSubImage2D\0"
+    "glCompressedTexSubImage1D\0"
+    "glGetCompressedTexImage\0"
+    "glBlendFuncSeparate\0"
+    "glFogCoordf\0"
+    "glFogCoordfv\0"
+    "glFogCoordd\0"
+    "glFogCoorddv\0"
+    "glFogCoordPointer\0"
+    "glMultiDrawArrays\0"
+    "glMultiDrawElements\0"
+    "glPointParameterf\0"
+    "glPointParameterfv\0"
+    "glPointParameteri\0"
+    "glPointParameteriv\0"
+    "glSecondaryColor3b\0"
+    "glSecondaryColor3bv\0"
+    "glSecondaryColor3d\0"
+    "glSecondaryColor3dv\0"
+    "glSecondaryColor3f\0"
+    "glSecondaryColor3fv\0"
+    "glSecondaryColor3i\0"
+    "glSecondaryColor3iv\0"
+    "glSecondaryColor3s\0"
+    "glSecondaryColor3sv\0"
+    "glSecondaryColor3ub\0"
+    "glSecondaryColor3ubv\0"
+    "glSecondaryColor3ui\0"
+    "glSecondaryColor3uiv\0"
+    "glSecondaryColor3us\0"
+    "glSecondaryColor3usv\0"
+    "glSecondaryColorPointer\0"
+    "glWindowPos2d\0"
+    "glWindowPos2dv\0"
+    "glWindowPos2f\0"
+    "glWindowPos2fv\0"
+    "glWindowPos2i\0"
+    "glWindowPos2iv\0"
+    "glWindowPos2s\0"
+    "glWindowPos2sv\0"
+    "glWindowPos3d\0"
+    "glWindowPos3dv\0"
+    "glWindowPos3f\0"
+    "glWindowPos3fv\0"
+    "glWindowPos3i\0"
+    "glWindowPos3iv\0"
+    "glWindowPos3s\0"
+    "glWindowPos3sv\0"
+    "glBindBuffer\0"
+    "glBufferData\0"
+    "glBufferSubData\0"
+    "glDeleteBuffers\0"
+    "glGenBuffers\0"
+    "glGetBufferParameteriv\0"
+    "glGetBufferPointerv\0"
+    "glGetBufferSubData\0"
+    "glIsBuffer\0"
+    "glMapBuffer\0"
+    "glUnmapBuffer\0"
+    "glGenQueries\0"
+    "glDeleteQueries\0"
+    "glIsQuery\0"
+    "glBeginQuery\0"
+    "glEndQuery\0"
+    "glGetQueryiv\0"
+    "glGetQueryObjectiv\0"
+    "glGetQueryObjectuiv\0"
+    "glPointParameterfARB\0"
+    "glPointParameterfvARB\0"
+    "glWindowPos2dARB\0"
+    "glWindowPos2fARB\0"
+    "glWindowPos2iARB\0"
+    "glWindowPos2sARB\0"
+    "glWindowPos2dvARB\0"
+    "glWindowPos2fvARB\0"
+    "glWindowPos2ivARB\0"
+    "glWindowPos2svARB\0"
+    "glWindowPos3dARB\0"
+    "glWindowPos3fARB\0"
+    "glWindowPos3iARB\0"
+    "glWindowPos3sARB\0"
+    "glWindowPos3dvARB\0"
+    "glWindowPos3fvARB\0"
+    "glWindowPos3ivARB\0"
+    "glWindowPos3svARB\0"
+    "glVertexAttrib1sARB\0"
+    "glVertexAttrib1fARB\0"
+    "glVertexAttrib1dARB\0"
+    "glVertexAttrib2sARB\0"
+    "glVertexAttrib2fARB\0"
+    "glVertexAttrib2dARB\0"
+    "glVertexAttrib3sARB\0"
+    "glVertexAttrib3fARB\0"
+    "glVertexAttrib3dARB\0"
+    "glVertexAttrib4sARB\0"
+    "glVertexAttrib4fARB\0"
+    "glVertexAttrib4dARB\0"
+    "glVertexAttrib4NubARB\0"
+    "glVertexAttrib1svARB\0"
+    "glVertexAttrib1fvARB\0"
+    "glVertexAttrib1dvARB\0"
+    "glVertexAttrib2svARB\0"
+    "glVertexAttrib2fvARB\0"
+    "glVertexAttrib2dvARB\0"
+    "glVertexAttrib3svARB\0"
+    "glVertexAttrib3fvARB\0"
+    "glVertexAttrib3dvARB\0"
+    "glVertexAttrib4svARB\0"
+    "glVertexAttrib4fvARB\0"
+    "glVertexAttrib4dvARB\0"
+    "glVertexAttrib4NubvARB\0"
+    "glBindProgramARB\0"
+    "glDeleteProgramsARB\0"
+    "glGenProgramsARB\0"
+    "glIsProgramARB\0"
+    "glGetVertexAttribdvARB\0"
+    "glGetVertexAttribfvARB\0"
+    "glGetVertexAttribivARB\0"
+    "glGetVertexAttribPointervARB\0"
+    "glBlendColorEXT\0"
+    "glTexImage3DEXT\0"
+    "glTexSubImage3DEXT\0"
+    "glTexSubImage1DEXT\0"
+    "glTexSubImage2DEXT\0"
+    "glCopyTexImage1DEXT\0"
+    "glCopyTexImage2DEXT\0"
+    "glCopyTexSubImage1DEXT\0"
+    "glCopyTexSubImage2DEXT\0"
+    "glCopyTexSubImage3DEXT\0"
+    "glHistogramEXT\0"
+    "glMinmaxEXT\0"
+    "glResetHistogramEXT\0"
+    "glResetMinmaxEXT\0"
+    "glConvolutionFilter1DEXT\0"
+    "glConvolutionFilter2DEXT\0"
+    "glConvolutionParameterfEXT\0"
+    "glConvolutionParameterfvEXT\0"
+    "glConvolutionParameteriEXT\0"
+    "glConvolutionParameterivEXT\0"
+    "glCopyConvolutionFilter1DEXT\0"
+    "glCopyConvolutionFilter2DEXT\0"
+    "glSeparableFilter2DEXT\0"
+    "glColorTableSGI\0"
+    "glColorTableParameterfvSGI\0"
+    "glColorTableParameterivSGI\0"
+    "glCopyColorTableSGI\0"
+    "glBindTextureEXT\0"
+    "glDeleteTexturesEXT\0"
+    "glPrioritizeTexturesEXT\0"
+    "glArrayElementEXT\0"
+    "glDrawArraysEXT\0"
+    "glGetPointervEXT\0"
+    "glBlendEquationEXT\0"
+    "glColorSubTableEXT\0"
+    "glCopyColorSubTableEXT\0"
+    "glColorTableEXT\0"
+    "glDrawRangeElementsEXT\0"
+    "glSampleMaskEXT\0"
+    "glSamplePatternEXT\0"
+    "glDrawBuffersATI\0"
+    "glBlendEquationSeparateATI\0"
+    "glBlendFuncSeparateINGR\0"
+    "glPointParameterfSGIS\0"
+    "glPointParameterfvSGIS\0"
+    ;
 
 static const glprocs_table_t static_functions[] = {
     NAME_FUNC_OFFSET(     0, glNewList, _gloffset_NewList ),
@@ -1379,510 +1380,511 @@ static const glprocs_table_t static_functions[] = {
     NAME_FUNC_OFFSET(  5821, glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB ),
     NAME_FUNC_OFFSET(  5847, glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB ),
     NAME_FUNC_OFFSET(  5873, glSampleCoverageARB, _gloffset_SampleCoverageARB ),
-    NAME_FUNC_OFFSET(  5893, gl__unused413, _gloffset___unused413 ),
-    NAME_FUNC_OFFSET(  5907, glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT ),
-    NAME_FUNC_OFFSET(  5926, glGetTexFilterFuncSGIS, _gloffset_GetTexFilterFuncSGIS ),
-    NAME_FUNC_OFFSET(  5949, glTexFilterFuncSGIS, _gloffset_TexFilterFuncSGIS ),
-    NAME_FUNC_OFFSET(  5969, glGetHistogramEXT, _gloffset_GetHistogramEXT ),
-    NAME_FUNC_OFFSET(  5987, glGetHistogramParameterfvEXT, _gloffset_GetHistogramParameterfvEXT ),
-    NAME_FUNC_OFFSET(  6016, glGetHistogramParameterivEXT, _gloffset_GetHistogramParameterivEXT ),
-    NAME_FUNC_OFFSET(  6045, glGetMinmaxEXT, _gloffset_GetMinmaxEXT ),
-    NAME_FUNC_OFFSET(  6060, glGetMinmaxParameterfvEXT, _gloffset_GetMinmaxParameterfvEXT ),
-    NAME_FUNC_OFFSET(  6086, glGetMinmaxParameterivEXT, _gloffset_GetMinmaxParameterivEXT ),
-    NAME_FUNC_OFFSET(  6112, glGetConvolutionFilterEXT, _gloffset_GetConvolutionFilterEXT ),
-    NAME_FUNC_OFFSET(  6138, glGetConvolutionParameterfvEXT, _gloffset_GetConvolutionParameterfvEXT ),
-    NAME_FUNC_OFFSET(  6169, glGetConvolutionParameterivEXT, _gloffset_GetConvolutionParameterivEXT ),
-    NAME_FUNC_OFFSET(  6200, glGetSeparableFilterEXT, _gloffset_GetSeparableFilterEXT ),
-    NAME_FUNC_OFFSET(  6224, glGetColorTableSGI, _gloffset_GetColorTableSGI ),
-    NAME_FUNC_OFFSET(  6243, glGetColorTableParameterfvSGI, _gloffset_GetColorTableParameterfvSGI ),
-    NAME_FUNC_OFFSET(  6273, glGetColorTableParameterivSGI, _gloffset_GetColorTableParameterivSGI ),
-    NAME_FUNC_OFFSET(  6303, glPixelTexGenSGIX, _gloffset_PixelTexGenSGIX ),
-    NAME_FUNC_OFFSET(  6321, glPixelTexGenParameteriSGIS, _gloffset_PixelTexGenParameteriSGIS ),
-    NAME_FUNC_OFFSET(  6349, glPixelTexGenParameterivSGIS, _gloffset_PixelTexGenParameterivSGIS ),
-    NAME_FUNC_OFFSET(  6378, glPixelTexGenParameterfSGIS, _gloffset_PixelTexGenParameterfSGIS ),
-    NAME_FUNC_OFFSET(  6406, glPixelTexGenParameterfvSGIS, _gloffset_PixelTexGenParameterfvSGIS ),
-    NAME_FUNC_OFFSET(  6435, glGetPixelTexGenParameterivSGIS, _gloffset_GetPixelTexGenParameterivSGIS ),
-    NAME_FUNC_OFFSET(  6467, glGetPixelTexGenParameterfvSGIS, _gloffset_GetPixelTexGenParameterfvSGIS ),
-    NAME_FUNC_OFFSET(  6499, glTexImage4DSGIS, _gloffset_TexImage4DSGIS ),
-    NAME_FUNC_OFFSET(  6516, glTexSubImage4DSGIS, _gloffset_TexSubImage4DSGIS ),
-    NAME_FUNC_OFFSET(  6536, glAreTexturesResidentEXT, _gloffset_AreTexturesResidentEXT ),
-    NAME_FUNC_OFFSET(  6561, glGenTexturesEXT, _gloffset_GenTexturesEXT ),
-    NAME_FUNC_OFFSET(  6578, glIsTextureEXT, _gloffset_IsTextureEXT ),
-    NAME_FUNC_OFFSET(  6593, glDetailTexFuncSGIS, _gloffset_DetailTexFuncSGIS ),
-    NAME_FUNC_OFFSET(  6613, glGetDetailTexFuncSGIS, _gloffset_GetDetailTexFuncSGIS ),
-    NAME_FUNC_OFFSET(  6636, glSharpenTexFuncSGIS, _gloffset_SharpenTexFuncSGIS ),
-    NAME_FUNC_OFFSET(  6657, glGetSharpenTexFuncSGIS, _gloffset_GetSharpenTexFuncSGIS ),
-    NAME_FUNC_OFFSET(  6681, glSampleMaskSGIS, _gloffset_SampleMaskSGIS ),
-    NAME_FUNC_OFFSET(  6698, glSamplePatternSGIS, _gloffset_SamplePatternSGIS ),
-    NAME_FUNC_OFFSET(  6718, glColorPointerEXT, _gloffset_ColorPointerEXT ),
-    NAME_FUNC_OFFSET(  6736, glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT ),
-    NAME_FUNC_OFFSET(  6757, glIndexPointerEXT, _gloffset_IndexPointerEXT ),
-    NAME_FUNC_OFFSET(  6775, glNormalPointerEXT, _gloffset_NormalPointerEXT ),
-    NAME_FUNC_OFFSET(  6794, glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT ),
-    NAME_FUNC_OFFSET(  6815, glVertexPointerEXT, _gloffset_VertexPointerEXT ),
-    NAME_FUNC_OFFSET(  6834, glSpriteParameterfSGIX, _gloffset_SpriteParameterfSGIX ),
-    NAME_FUNC_OFFSET(  6857, glSpriteParameterfvSGIX, _gloffset_SpriteParameterfvSGIX ),
-    NAME_FUNC_OFFSET(  6881, glSpriteParameteriSGIX, _gloffset_SpriteParameteriSGIX ),
-    NAME_FUNC_OFFSET(  6904, glSpriteParameterivSGIX, _gloffset_SpriteParameterivSGIX ),
-    NAME_FUNC_OFFSET(  6928, glPointParameterfEXT, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET(  6949, glPointParameterfvEXT, _gloffset_PointParameterfvEXT ),
-    NAME_FUNC_OFFSET(  6971, glGetInstrumentsSGIX, _gloffset_GetInstrumentsSGIX ),
-    NAME_FUNC_OFFSET(  6992, glInstrumentsBufferSGIX, _gloffset_InstrumentsBufferSGIX ),
-    NAME_FUNC_OFFSET(  7016, glPollInstrumentsSGIX, _gloffset_PollInstrumentsSGIX ),
-    NAME_FUNC_OFFSET(  7038, glReadInstrumentsSGIX, _gloffset_ReadInstrumentsSGIX ),
-    NAME_FUNC_OFFSET(  7060, glStartInstrumentsSGIX, _gloffset_StartInstrumentsSGIX ),
-    NAME_FUNC_OFFSET(  7083, glStopInstrumentsSGIX, _gloffset_StopInstrumentsSGIX ),
-    NAME_FUNC_OFFSET(  7105, glFrameZoomSGIX, _gloffset_FrameZoomSGIX ),
-    NAME_FUNC_OFFSET(  7121, glTagSampleBufferSGIX, _gloffset_TagSampleBufferSGIX ),
-    NAME_FUNC_OFFSET(  7143, glReferencePlaneSGIX, _gloffset_ReferencePlaneSGIX ),
-    NAME_FUNC_OFFSET(  7164, glFlushRasterSGIX, _gloffset_FlushRasterSGIX ),
-    NAME_FUNC_OFFSET(  7182, glGetListParameterfvSGIX, _gloffset_GetListParameterfvSGIX ),
-    NAME_FUNC_OFFSET(  7207, glGetListParameterivSGIX, _gloffset_GetListParameterivSGIX ),
-    NAME_FUNC_OFFSET(  7232, glListParameterfSGIX, _gloffset_ListParameterfSGIX ),
-    NAME_FUNC_OFFSET(  7253, glListParameterfvSGIX, _gloffset_ListParameterfvSGIX ),
-    NAME_FUNC_OFFSET(  7275, glListParameteriSGIX, _gloffset_ListParameteriSGIX ),
-    NAME_FUNC_OFFSET(  7296, glListParameterivSGIX, _gloffset_ListParameterivSGIX ),
-    NAME_FUNC_OFFSET(  7318, glFragmentColorMaterialSGIX, _gloffset_FragmentColorMaterialSGIX ),
-    NAME_FUNC_OFFSET(  7346, glFragmentLightfSGIX, _gloffset_FragmentLightfSGIX ),
-    NAME_FUNC_OFFSET(  7367, glFragmentLightfvSGIX, _gloffset_FragmentLightfvSGIX ),
-    NAME_FUNC_OFFSET(  7389, glFragmentLightiSGIX, _gloffset_FragmentLightiSGIX ),
-    NAME_FUNC_OFFSET(  7410, glFragmentLightivSGIX, _gloffset_FragmentLightivSGIX ),
-    NAME_FUNC_OFFSET(  7432, glFragmentLightModelfSGIX, _gloffset_FragmentLightModelfSGIX ),
-    NAME_FUNC_OFFSET(  7458, glFragmentLightModelfvSGIX, _gloffset_FragmentLightModelfvSGIX ),
-    NAME_FUNC_OFFSET(  7485, glFragmentLightModeliSGIX, _gloffset_FragmentLightModeliSGIX ),
-    NAME_FUNC_OFFSET(  7511, glFragmentLightModelivSGIX, _gloffset_FragmentLightModelivSGIX ),
-    NAME_FUNC_OFFSET(  7538, glFragmentMaterialfSGIX, _gloffset_FragmentMaterialfSGIX ),
-    NAME_FUNC_OFFSET(  7562, glFragmentMaterialfvSGIX, _gloffset_FragmentMaterialfvSGIX ),
-    NAME_FUNC_OFFSET(  7587, glFragmentMaterialiSGIX, _gloffset_FragmentMaterialiSGIX ),
-    NAME_FUNC_OFFSET(  7611, glFragmentMaterialivSGIX, _gloffset_FragmentMaterialivSGIX ),
-    NAME_FUNC_OFFSET(  7636, glGetFragmentLightfvSGIX, _gloffset_GetFragmentLightfvSGIX ),
-    NAME_FUNC_OFFSET(  7661, glGetFragmentLightivSGIX, _gloffset_GetFragmentLightivSGIX ),
-    NAME_FUNC_OFFSET(  7686, glGetFragmentMaterialfvSGIX, _gloffset_GetFragmentMaterialfvSGIX ),
-    NAME_FUNC_OFFSET(  7714, glGetFragmentMaterialivSGIX, _gloffset_GetFragmentMaterialivSGIX ),
-    NAME_FUNC_OFFSET(  7742, glLightEnviSGIX, _gloffset_LightEnviSGIX ),
-    NAME_FUNC_OFFSET(  7758, glVertexWeightfEXT, _gloffset_VertexWeightfEXT ),
-    NAME_FUNC_OFFSET(  7777, glVertexWeightfvEXT, _gloffset_VertexWeightfvEXT ),
-    NAME_FUNC_OFFSET(  7797, glVertexWeightPointerEXT, _gloffset_VertexWeightPointerEXT ),
-    NAME_FUNC_OFFSET(  7822, glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV ),
-    NAME_FUNC_OFFSET(  7848, glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV ),
-    NAME_FUNC_OFFSET(  7869, glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV ),
-    NAME_FUNC_OFFSET(  7893, glCombinerParameterfNV, _gloffset_CombinerParameterfNV ),
-    NAME_FUNC_OFFSET(  7916, glCombinerParameterivNV, _gloffset_CombinerParameterivNV ),
-    NAME_FUNC_OFFSET(  7940, glCombinerParameteriNV, _gloffset_CombinerParameteriNV ),
-    NAME_FUNC_OFFSET(  7963, glCombinerInputNV, _gloffset_CombinerInputNV ),
-    NAME_FUNC_OFFSET(  7981, glCombinerOutputNV, _gloffset_CombinerOutputNV ),
-    NAME_FUNC_OFFSET(  8000, glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV ),
-    NAME_FUNC_OFFSET(  8023, glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV ),
-    NAME_FUNC_OFFSET(  8055, glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV ),
-    NAME_FUNC_OFFSET(  8087, glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV ),
-    NAME_FUNC_OFFSET(  8120, glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV ),
-    NAME_FUNC_OFFSET(  8153, glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV ),
-    NAME_FUNC_OFFSET(  8190, glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV ),
-    NAME_FUNC_OFFSET(  8227, glResizeBuffersMESA, _gloffset_ResizeBuffersMESA ),
-    NAME_FUNC_OFFSET(  8247, glWindowPos2dMESA, _gloffset_WindowPos2dMESA ),
-    NAME_FUNC_OFFSET(  8265, glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA ),
-    NAME_FUNC_OFFSET(  8284, glWindowPos2fMESA, _gloffset_WindowPos2fMESA ),
-    NAME_FUNC_OFFSET(  8302, glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA ),
-    NAME_FUNC_OFFSET(  8321, glWindowPos2iMESA, _gloffset_WindowPos2iMESA ),
-    NAME_FUNC_OFFSET(  8339, glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA ),
-    NAME_FUNC_OFFSET(  8358, glWindowPos2sMESA, _gloffset_WindowPos2sMESA ),
-    NAME_FUNC_OFFSET(  8376, glWindowPos2svMESA, _gloffset_WindowPos2svMESA ),
-    NAME_FUNC_OFFSET(  8395, glWindowPos3dMESA, _gloffset_WindowPos3dMESA ),
-    NAME_FUNC_OFFSET(  8413, glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA ),
-    NAME_FUNC_OFFSET(  8432, glWindowPos3fMESA, _gloffset_WindowPos3fMESA ),
-    NAME_FUNC_OFFSET(  8450, glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA ),
-    NAME_FUNC_OFFSET(  8469, glWindowPos3iMESA, _gloffset_WindowPos3iMESA ),
-    NAME_FUNC_OFFSET(  8487, glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA ),
-    NAME_FUNC_OFFSET(  8506, glWindowPos3sMESA, _gloffset_WindowPos3sMESA ),
-    NAME_FUNC_OFFSET(  8524, glWindowPos3svMESA, _gloffset_WindowPos3svMESA ),
-    NAME_FUNC_OFFSET(  8543, glWindowPos4dMESA, _gloffset_WindowPos4dMESA ),
-    NAME_FUNC_OFFSET(  8561, glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA ),
-    NAME_FUNC_OFFSET(  8580, glWindowPos4fMESA, _gloffset_WindowPos4fMESA ),
-    NAME_FUNC_OFFSET(  8598, glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA ),
-    NAME_FUNC_OFFSET(  8617, glWindowPos4iMESA, _gloffset_WindowPos4iMESA ),
-    NAME_FUNC_OFFSET(  8635, glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA ),
-    NAME_FUNC_OFFSET(  8654, glWindowPos4sMESA, _gloffset_WindowPos4sMESA ),
-    NAME_FUNC_OFFSET(  8672, glWindowPos4svMESA, _gloffset_WindowPos4svMESA ),
-    NAME_FUNC_OFFSET(  8691, glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT ),
-    NAME_FUNC_OFFSET(  8714, glIndexMaterialEXT, _gloffset_IndexMaterialEXT ),
-    NAME_FUNC_OFFSET(  8733, glIndexFuncEXT, _gloffset_IndexFuncEXT ),
-    NAME_FUNC_OFFSET(  8748, glLockArraysEXT, _gloffset_LockArraysEXT ),
-    NAME_FUNC_OFFSET(  8764, glUnlockArraysEXT, _gloffset_UnlockArraysEXT ),
-    NAME_FUNC_OFFSET(  8782, glCullParameterdvEXT, _gloffset_CullParameterdvEXT ),
-    NAME_FUNC_OFFSET(  8803, glCullParameterfvEXT, _gloffset_CullParameterfvEXT ),
-    NAME_FUNC_OFFSET(  8824, glHintPGI, _gloffset_HintPGI ),
-    NAME_FUNC_OFFSET(  8834, glFogCoordfEXT, _gloffset_FogCoordfEXT ),
-    NAME_FUNC_OFFSET(  8849, glFogCoordfvEXT, _gloffset_FogCoordfvEXT ),
-    NAME_FUNC_OFFSET(  8865, glFogCoorddEXT, _gloffset_FogCoorddEXT ),
-    NAME_FUNC_OFFSET(  8880, glFogCoorddvEXT, _gloffset_FogCoorddvEXT ),
-    NAME_FUNC_OFFSET(  8896, glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT ),
-    NAME_FUNC_OFFSET(  8917, glGetColorTableEXT, _gloffset_GetColorTableEXT ),
-    NAME_FUNC_OFFSET(  8936, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameterivEXT ),
-    NAME_FUNC_OFFSET(  8966, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfvEXT ),
-    NAME_FUNC_OFFSET(  8996, glTbufferMask3DFX, _gloffset_TbufferMask3DFX ),
-    NAME_FUNC_OFFSET(  9014, glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB ),
-    NAME_FUNC_OFFSET(  9040, glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB ),
-    NAME_FUNC_OFFSET(  9066, glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB ),
-    NAME_FUNC_OFFSET(  9092, glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB ),
-    NAME_FUNC_OFFSET(  9121, glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB ),
-    NAME_FUNC_OFFSET(  9150, glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB ),
-    NAME_FUNC_OFFSET(  9179, glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB ),
-    NAME_FUNC_OFFSET(  9206, glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT ),
-    NAME_FUNC_OFFSET(  9228, glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT ),
-    NAME_FUNC_OFFSET(  9251, glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT ),
-    NAME_FUNC_OFFSET(  9273, glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT ),
-    NAME_FUNC_OFFSET(  9296, glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT ),
-    NAME_FUNC_OFFSET(  9318, glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT ),
-    NAME_FUNC_OFFSET(  9341, glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT ),
-    NAME_FUNC_OFFSET(  9363, glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT ),
-    NAME_FUNC_OFFSET(  9386, glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT ),
-    NAME_FUNC_OFFSET(  9408, glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT ),
-    NAME_FUNC_OFFSET(  9431, glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT ),
-    NAME_FUNC_OFFSET(  9454, glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT ),
-    NAME_FUNC_OFFSET(  9478, glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT ),
-    NAME_FUNC_OFFSET(  9501, glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT ),
-    NAME_FUNC_OFFSET(  9525, glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT ),
-    NAME_FUNC_OFFSET(  9548, glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT ),
-    NAME_FUNC_OFFSET(  9572, glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT ),
-    NAME_FUNC_OFFSET(  9599, glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV ),
-    NAME_FUNC_OFFSET(  9623, glBindProgramNV, _gloffset_BindProgramNV ),
-    NAME_FUNC_OFFSET(  9639, glDeleteProgramsNV, _gloffset_DeleteProgramsNV ),
-    NAME_FUNC_OFFSET(  9658, glExecuteProgramNV, _gloffset_ExecuteProgramNV ),
-    NAME_FUNC_OFFSET(  9677, glGenProgramsNV, _gloffset_GenProgramsNV ),
-    NAME_FUNC_OFFSET(  9693, glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV ),
-    NAME_FUNC_OFFSET(  9719, glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV ),
-    NAME_FUNC_OFFSET(  9745, glGetProgramivNV, _gloffset_GetProgramivNV ),
-    NAME_FUNC_OFFSET(  9762, glGetProgramStringNV, _gloffset_GetProgramStringNV ),
-    NAME_FUNC_OFFSET(  9783, glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV ),
-    NAME_FUNC_OFFSET(  9804, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ),
-    NAME_FUNC_OFFSET(  9826, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ),
-    NAME_FUNC_OFFSET(  9848, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ),
-    NAME_FUNC_OFFSET(  9870, glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV ),
-    NAME_FUNC_OFFSET(  9898, glIsProgramNV, _gloffset_IsProgramNV ),
-    NAME_FUNC_OFFSET(  9912, glLoadProgramNV, _gloffset_LoadProgramNV ),
-    NAME_FUNC_OFFSET(  9928, glProgramParameter4dNV, _gloffset_ProgramParameter4dNV ),
-    NAME_FUNC_OFFSET(  9951, glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV ),
-    NAME_FUNC_OFFSET(  9975, glProgramParameter4fNV, _gloffset_ProgramParameter4fNV ),
-    NAME_FUNC_OFFSET(  9998, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ),
-    NAME_FUNC_OFFSET( 10022, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ),
-    NAME_FUNC_OFFSET( 10047, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ),
-    NAME_FUNC_OFFSET( 10072, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ),
-    NAME_FUNC_OFFSET( 10100, glTrackMatrixNV, _gloffset_TrackMatrixNV ),
-    NAME_FUNC_OFFSET( 10116, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ),
-    NAME_FUNC_OFFSET( 10140, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ),
-    NAME_FUNC_OFFSET( 10159, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ),
-    NAME_FUNC_OFFSET( 10179, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ),
-    NAME_FUNC_OFFSET( 10198, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ),
-    NAME_FUNC_OFFSET( 10218, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ),
-    NAME_FUNC_OFFSET( 10237, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ),
-    NAME_FUNC_OFFSET( 10257, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ),
-    NAME_FUNC_OFFSET( 10276, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ),
-    NAME_FUNC_OFFSET( 10296, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ),
-    NAME_FUNC_OFFSET( 10315, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ),
-    NAME_FUNC_OFFSET( 10335, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ),
-    NAME_FUNC_OFFSET( 10354, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ),
-    NAME_FUNC_OFFSET( 10374, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ),
-    NAME_FUNC_OFFSET( 10393, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ),
-    NAME_FUNC_OFFSET( 10413, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ),
-    NAME_FUNC_OFFSET( 10432, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ),
-    NAME_FUNC_OFFSET( 10452, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ),
-    NAME_FUNC_OFFSET( 10471, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ),
-    NAME_FUNC_OFFSET( 10491, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ),
-    NAME_FUNC_OFFSET( 10510, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ),
-    NAME_FUNC_OFFSET( 10530, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ),
-    NAME_FUNC_OFFSET( 10549, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ),
-    NAME_FUNC_OFFSET( 10569, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ),
-    NAME_FUNC_OFFSET( 10588, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ),
-    NAME_FUNC_OFFSET( 10608, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ),
-    NAME_FUNC_OFFSET( 10628, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ),
-    NAME_FUNC_OFFSET( 10649, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ),
-    NAME_FUNC_OFFSET( 10670, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ),
-    NAME_FUNC_OFFSET( 10691, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ),
-    NAME_FUNC_OFFSET( 10712, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ),
-    NAME_FUNC_OFFSET( 10733, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ),
-    NAME_FUNC_OFFSET( 10754, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ),
-    NAME_FUNC_OFFSET( 10775, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ),
-    NAME_FUNC_OFFSET( 10796, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ),
-    NAME_FUNC_OFFSET( 10817, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ),
-    NAME_FUNC_OFFSET( 10838, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ),
-    NAME_FUNC_OFFSET( 10859, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ),
-    NAME_FUNC_OFFSET( 10880, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ),
-    NAME_FUNC_OFFSET( 10901, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ),
-    NAME_FUNC_OFFSET( 10923, glPointParameteriNV, _gloffset_PointParameteriNV ),
-    NAME_FUNC_OFFSET( 10943, glPointParameterivNV, _gloffset_PointParameterivNV ),
-    NAME_FUNC_OFFSET( 10964, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ),
-    NAME_FUNC_OFFSET( 10985, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ),
-    NAME_FUNC_OFFSET( 11008, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ),
-    NAME_FUNC_OFFSET( 11031, glDeleteFencesNV, _gloffset_DeleteFencesNV ),
-    NAME_FUNC_OFFSET( 11048, glGenFencesNV, _gloffset_GenFencesNV ),
-    NAME_FUNC_OFFSET( 11062, glIsFenceNV, _gloffset_IsFenceNV ),
-    NAME_FUNC_OFFSET( 11074, glTestFenceNV, _gloffset_TestFenceNV ),
-    NAME_FUNC_OFFSET( 11088, glGetFenceivNV, _gloffset_GetFenceivNV ),
-    NAME_FUNC_OFFSET( 11103, glFinishFenceNV, _gloffset_FinishFenceNV ),
-    NAME_FUNC_OFFSET( 11119, glSetFenceNV, _gloffset_SetFenceNV ),
-    NAME_FUNC_OFFSET( 11132, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ),
-    NAME_FUNC_OFFSET( 11153, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ),
-    NAME_FUNC_OFFSET( 11174, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ),
-    NAME_FUNC_OFFSET( 11196, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ),
-    NAME_FUNC_OFFSET( 11218, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ),
-    NAME_FUNC_OFFSET( 11240, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ),
-    NAME_FUNC_OFFSET( 11262, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ),
-    NAME_FUNC_OFFSET( 11284, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ),
-    NAME_FUNC_OFFSET( 11306, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ),
-    NAME_FUNC_OFFSET( 11329, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ),
-    NAME_FUNC_OFFSET( 11352, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ),
-    NAME_FUNC_OFFSET( 11377, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ),
-    NAME_FUNC_OFFSET( 11406, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ),
-    NAME_FUNC_OFFSET( 11436, glProgramStringARB, _gloffset_ProgramStringARB ),
-    NAME_FUNC_OFFSET( 11455, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ),
-    NAME_FUNC_OFFSET( 11482, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ),
-    NAME_FUNC_OFFSET( 11510, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ),
-    NAME_FUNC_OFFSET( 11537, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ),
-    NAME_FUNC_OFFSET( 11565, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ),
-    NAME_FUNC_OFFSET( 11594, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ),
-    NAME_FUNC_OFFSET( 11624, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ),
-    NAME_FUNC_OFFSET( 11653, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ),
-    NAME_FUNC_OFFSET( 11683, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ),
-    NAME_FUNC_OFFSET( 11713, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ),
-    NAME_FUNC_OFFSET( 11743, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ),
-    NAME_FUNC_OFFSET( 11775, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ),
-    NAME_FUNC_OFFSET( 11807, glGetProgramivARB, _gloffset_GetProgramivARB ),
-    NAME_FUNC_OFFSET( 11825, glGetProgramStringARB, _gloffset_GetProgramStringARB ),
-    NAME_FUNC_OFFSET( 11847, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ),
-    NAME_FUNC_OFFSET( 11875, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ),
-    NAME_FUNC_OFFSET( 11903, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ),
-    NAME_FUNC_OFFSET( 11932, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ),
-    NAME_FUNC_OFFSET( 11961, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ),
-    NAME_FUNC_OFFSET( 11992, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ),
-    NAME_FUNC_OFFSET( 12023, glBindBufferARB, _gloffset_BindBufferARB ),
-    NAME_FUNC_OFFSET( 12039, glBufferDataARB, _gloffset_BufferDataARB ),
-    NAME_FUNC_OFFSET( 12055, glBufferSubDataARB, _gloffset_BufferSubDataARB ),
-    NAME_FUNC_OFFSET( 12074, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ),
-    NAME_FUNC_OFFSET( 12093, glGenBuffersARB, _gloffset_GenBuffersARB ),
-    NAME_FUNC_OFFSET( 12109, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ),
-    NAME_FUNC_OFFSET( 12135, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ),
-    NAME_FUNC_OFFSET( 12158, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ),
-    NAME_FUNC_OFFSET( 12180, glIsBufferARB, _gloffset_IsBufferARB ),
-    NAME_FUNC_OFFSET( 12194, glMapBufferARB, _gloffset_MapBufferARB ),
-    NAME_FUNC_OFFSET( 12209, glUnmapBufferARB, _gloffset_UnmapBufferARB ),
-    NAME_FUNC_OFFSET( 12226, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ),
-    NAME_FUNC_OFFSET( 12243, glGenQueriesARB, _gloffset_GenQueriesARB ),
-    NAME_FUNC_OFFSET( 12259, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ),
-    NAME_FUNC_OFFSET( 12278, glIsQueryARB, _gloffset_IsQueryARB ),
-    NAME_FUNC_OFFSET( 12291, glBeginQueryARB, _gloffset_BeginQueryARB ),
-    NAME_FUNC_OFFSET( 12307, glEndQueryARB, _gloffset_EndQueryARB ),
-    NAME_FUNC_OFFSET( 12321, glGetQueryivARB, _gloffset_GetQueryivARB ),
-    NAME_FUNC_OFFSET( 12337, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ),
-    NAME_FUNC_OFFSET( 12359, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ),
-    NAME_FUNC_OFFSET( 12382, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ),
-    NAME_FUNC_OFFSET( 12407, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ),
-    NAME_FUNC_OFFSET( 12434, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ),
-    NAME_FUNC_OFFSET( 12461, glActiveTexture, _gloffset_ActiveTextureARB ),
-    NAME_FUNC_OFFSET( 12477, glClientActiveTexture, _gloffset_ClientActiveTextureARB ),
-    NAME_FUNC_OFFSET( 12499, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ),
-    NAME_FUNC_OFFSET( 12517, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ),
-    NAME_FUNC_OFFSET( 12536, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ),
-    NAME_FUNC_OFFSET( 12554, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ),
-    NAME_FUNC_OFFSET( 12573, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ),
-    NAME_FUNC_OFFSET( 12591, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ),
-    NAME_FUNC_OFFSET( 12610, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ),
-    NAME_FUNC_OFFSET( 12628, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ),
-    NAME_FUNC_OFFSET( 12647, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ),
-    NAME_FUNC_OFFSET( 12665, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ),
-    NAME_FUNC_OFFSET( 12684, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ),
-    NAME_FUNC_OFFSET( 12702, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ),
-    NAME_FUNC_OFFSET( 12721, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ),
-    NAME_FUNC_OFFSET( 12739, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ),
-    NAME_FUNC_OFFSET( 12758, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ),
-    NAME_FUNC_OFFSET( 12776, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ),
-    NAME_FUNC_OFFSET( 12795, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ),
-    NAME_FUNC_OFFSET( 12813, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ),
-    NAME_FUNC_OFFSET( 12832, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ),
-    NAME_FUNC_OFFSET( 12850, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ),
-    NAME_FUNC_OFFSET( 12869, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ),
-    NAME_FUNC_OFFSET( 12887, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ),
-    NAME_FUNC_OFFSET( 12906, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ),
-    NAME_FUNC_OFFSET( 12924, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ),
-    NAME_FUNC_OFFSET( 12943, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ),
-    NAME_FUNC_OFFSET( 12961, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ),
-    NAME_FUNC_OFFSET( 12980, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ),
-    NAME_FUNC_OFFSET( 12998, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ),
-    NAME_FUNC_OFFSET( 13017, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ),
-    NAME_FUNC_OFFSET( 13035, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ),
-    NAME_FUNC_OFFSET( 13054, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ),
-    NAME_FUNC_OFFSET( 13072, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ),
-    NAME_FUNC_OFFSET( 13091, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ),
-    NAME_FUNC_OFFSET( 13114, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ),
-    NAME_FUNC_OFFSET( 13137, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ),
-    NAME_FUNC_OFFSET( 13160, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ),
-    NAME_FUNC_OFFSET( 13183, glSampleCoverage, _gloffset_SampleCoverageARB ),
-    NAME_FUNC_OFFSET( 13200, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ),
-    NAME_FUNC_OFFSET( 13223, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ),
-    NAME_FUNC_OFFSET( 13246, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ),
-    NAME_FUNC_OFFSET( 13269, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ),
-    NAME_FUNC_OFFSET( 13295, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ),
-    NAME_FUNC_OFFSET( 13321, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ),
-    NAME_FUNC_OFFSET( 13347, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ),
-    NAME_FUNC_OFFSET( 13371, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ),
-    NAME_FUNC_OFFSET( 13391, glFogCoordf, _gloffset_FogCoordfEXT ),
-    NAME_FUNC_OFFSET( 13403, glFogCoordfv, _gloffset_FogCoordfvEXT ),
-    NAME_FUNC_OFFSET( 13416, glFogCoordd, _gloffset_FogCoorddEXT ),
-    NAME_FUNC_OFFSET( 13428, glFogCoorddv, _gloffset_FogCoorddvEXT ),
-    NAME_FUNC_OFFSET( 13441, glFogCoordPointer, _gloffset_FogCoordPointerEXT ),
-    NAME_FUNC_OFFSET( 13459, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ),
-    NAME_FUNC_OFFSET( 13477, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ),
-    NAME_FUNC_OFFSET( 13497, glPointParameterf, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET( 13515, glPointParameterfv, _gloffset_PointParameterfvEXT ),
-    NAME_FUNC_OFFSET( 13534, glPointParameteri, _gloffset_PointParameteriNV ),
-    NAME_FUNC_OFFSET( 13552, glPointParameteriv, _gloffset_PointParameterivNV ),
-    NAME_FUNC_OFFSET( 13571, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ),
-    NAME_FUNC_OFFSET( 13590, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ),
-    NAME_FUNC_OFFSET( 13610, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ),
-    NAME_FUNC_OFFSET( 13629, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ),
-    NAME_FUNC_OFFSET( 13649, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ),
-    NAME_FUNC_OFFSET( 13668, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ),
-    NAME_FUNC_OFFSET( 13688, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ),
-    NAME_FUNC_OFFSET( 13707, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ),
-    NAME_FUNC_OFFSET( 13727, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ),
-    NAME_FUNC_OFFSET( 13746, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ),
-    NAME_FUNC_OFFSET( 13766, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ),
-    NAME_FUNC_OFFSET( 13786, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ),
-    NAME_FUNC_OFFSET( 13807, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ),
-    NAME_FUNC_OFFSET( 13827, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ),
-    NAME_FUNC_OFFSET( 13848, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ),
-    NAME_FUNC_OFFSET( 13868, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ),
-    NAME_FUNC_OFFSET( 13889, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ),
-    NAME_FUNC_OFFSET( 13913, glWindowPos2d, _gloffset_WindowPos2dMESA ),
-    NAME_FUNC_OFFSET( 13927, glWindowPos2dv, _gloffset_WindowPos2dvMESA ),
-    NAME_FUNC_OFFSET( 13942, glWindowPos2f, _gloffset_WindowPos2fMESA ),
-    NAME_FUNC_OFFSET( 13956, glWindowPos2fv, _gloffset_WindowPos2fvMESA ),
-    NAME_FUNC_OFFSET( 13971, glWindowPos2i, _gloffset_WindowPos2iMESA ),
-    NAME_FUNC_OFFSET( 13985, glWindowPos2iv, _gloffset_WindowPos2ivMESA ),
-    NAME_FUNC_OFFSET( 14000, glWindowPos2s, _gloffset_WindowPos2sMESA ),
-    NAME_FUNC_OFFSET( 14014, glWindowPos2sv, _gloffset_WindowPos2svMESA ),
-    NAME_FUNC_OFFSET( 14029, glWindowPos3d, _gloffset_WindowPos3dMESA ),
-    NAME_FUNC_OFFSET( 14043, glWindowPos3dv, _gloffset_WindowPos3dvMESA ),
-    NAME_FUNC_OFFSET( 14058, glWindowPos3f, _gloffset_WindowPos3fMESA ),
-    NAME_FUNC_OFFSET( 14072, glWindowPos3fv, _gloffset_WindowPos3fvMESA ),
-    NAME_FUNC_OFFSET( 14087, glWindowPos3i, _gloffset_WindowPos3iMESA ),
-    NAME_FUNC_OFFSET( 14101, glWindowPos3iv, _gloffset_WindowPos3ivMESA ),
-    NAME_FUNC_OFFSET( 14116, glWindowPos3s, _gloffset_WindowPos3sMESA ),
-    NAME_FUNC_OFFSET( 14130, glWindowPos3sv, _gloffset_WindowPos3svMESA ),
-    NAME_FUNC_OFFSET( 14145, glBindBuffer, _gloffset_BindBufferARB ),
-    NAME_FUNC_OFFSET( 14158, glBufferData, _gloffset_BufferDataARB ),
-    NAME_FUNC_OFFSET( 14171, glBufferSubData, _gloffset_BufferSubDataARB ),
-    NAME_FUNC_OFFSET( 14187, glDeleteBuffers, _gloffset_DeleteBuffersARB ),
-    NAME_FUNC_OFFSET( 14203, glGenBuffers, _gloffset_GenBuffersARB ),
-    NAME_FUNC_OFFSET( 14216, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ),
-    NAME_FUNC_OFFSET( 14239, glGetBufferPointerv, _gloffset_GetBufferPointervARB ),
-    NAME_FUNC_OFFSET( 14259, glGetBufferSubData, _gloffset_GetBufferSubDataARB ),
-    NAME_FUNC_OFFSET( 14278, glIsBuffer, _gloffset_IsBufferARB ),
-    NAME_FUNC_OFFSET( 14289, glMapBuffer, _gloffset_MapBufferARB ),
-    NAME_FUNC_OFFSET( 14301, glUnmapBuffer, _gloffset_UnmapBufferARB ),
-    NAME_FUNC_OFFSET( 14315, glGenQueries, _gloffset_GenQueriesARB ),
-    NAME_FUNC_OFFSET( 14328, glDeleteQueries, _gloffset_DeleteQueriesARB ),
-    NAME_FUNC_OFFSET( 14344, glIsQuery, _gloffset_IsQueryARB ),
-    NAME_FUNC_OFFSET( 14354, glBeginQuery, _gloffset_BeginQueryARB ),
-    NAME_FUNC_OFFSET( 14367, glEndQuery, _gloffset_EndQueryARB ),
-    NAME_FUNC_OFFSET( 14378, glGetQueryiv, _gloffset_GetQueryivARB ),
-    NAME_FUNC_OFFSET( 14391, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ),
-    NAME_FUNC_OFFSET( 14410, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ),
-    NAME_FUNC_OFFSET( 14430, glPointParameterfARB, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET( 14451, glPointParameterfvARB, _gloffset_PointParameterfvEXT ),
-    NAME_FUNC_OFFSET( 14473, glWindowPos2dARB, _gloffset_WindowPos2dMESA ),
-    NAME_FUNC_OFFSET( 14490, glWindowPos2fARB, _gloffset_WindowPos2fMESA ),
-    NAME_FUNC_OFFSET( 14507, glWindowPos2iARB, _gloffset_WindowPos2iMESA ),
-    NAME_FUNC_OFFSET( 14524, glWindowPos2sARB, _gloffset_WindowPos2sMESA ),
-    NAME_FUNC_OFFSET( 14541, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ),
-    NAME_FUNC_OFFSET( 14559, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ),
-    NAME_FUNC_OFFSET( 14577, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ),
-    NAME_FUNC_OFFSET( 14595, glWindowPos2svARB, _gloffset_WindowPos2svMESA ),
-    NAME_FUNC_OFFSET( 14613, glWindowPos3dARB, _gloffset_WindowPos3dMESA ),
-    NAME_FUNC_OFFSET( 14630, glWindowPos3fARB, _gloffset_WindowPos3fMESA ),
-    NAME_FUNC_OFFSET( 14647, glWindowPos3iARB, _gloffset_WindowPos3iMESA ),
-    NAME_FUNC_OFFSET( 14664, glWindowPos3sARB, _gloffset_WindowPos3sMESA ),
-    NAME_FUNC_OFFSET( 14681, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ),
-    NAME_FUNC_OFFSET( 14699, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ),
-    NAME_FUNC_OFFSET( 14717, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ),
-    NAME_FUNC_OFFSET( 14735, glWindowPos3svARB, _gloffset_WindowPos3svMESA ),
-    NAME_FUNC_OFFSET( 14753, glVertexAttrib1sARB, _gloffset_VertexAttrib1sNV ),
-    NAME_FUNC_OFFSET( 14773, glVertexAttrib1fARB, _gloffset_VertexAttrib1fNV ),
-    NAME_FUNC_OFFSET( 14793, glVertexAttrib1dARB, _gloffset_VertexAttrib1dNV ),
-    NAME_FUNC_OFFSET( 14813, glVertexAttrib2sARB, _gloffset_VertexAttrib2sNV ),
-    NAME_FUNC_OFFSET( 14833, glVertexAttrib2fARB, _gloffset_VertexAttrib2fNV ),
-    NAME_FUNC_OFFSET( 14853, glVertexAttrib2dARB, _gloffset_VertexAttrib2dNV ),
-    NAME_FUNC_OFFSET( 14873, glVertexAttrib3sARB, _gloffset_VertexAttrib3sNV ),
-    NAME_FUNC_OFFSET( 14893, glVertexAttrib3fARB, _gloffset_VertexAttrib3fNV ),
-    NAME_FUNC_OFFSET( 14913, glVertexAttrib3dARB, _gloffset_VertexAttrib3dNV ),
-    NAME_FUNC_OFFSET( 14933, glVertexAttrib4sARB, _gloffset_VertexAttrib4sNV ),
-    NAME_FUNC_OFFSET( 14953, glVertexAttrib4fARB, _gloffset_VertexAttrib4fNV ),
-    NAME_FUNC_OFFSET( 14973, glVertexAttrib4dARB, _gloffset_VertexAttrib4dNV ),
-    NAME_FUNC_OFFSET( 14993, glVertexAttrib4NubARB, _gloffset_VertexAttrib4ubNV ),
-    NAME_FUNC_OFFSET( 15015, glVertexAttrib1svARB, _gloffset_VertexAttrib1svNV ),
-    NAME_FUNC_OFFSET( 15036, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvNV ),
-    NAME_FUNC_OFFSET( 15057, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvNV ),
-    NAME_FUNC_OFFSET( 15078, glVertexAttrib2svARB, _gloffset_VertexAttrib2svNV ),
-    NAME_FUNC_OFFSET( 15099, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvNV ),
-    NAME_FUNC_OFFSET( 15120, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvNV ),
-    NAME_FUNC_OFFSET( 15141, glVertexAttrib3svARB, _gloffset_VertexAttrib3svNV ),
-    NAME_FUNC_OFFSET( 15162, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvNV ),
-    NAME_FUNC_OFFSET( 15183, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvNV ),
-    NAME_FUNC_OFFSET( 15204, glVertexAttrib4svARB, _gloffset_VertexAttrib4svNV ),
-    NAME_FUNC_OFFSET( 15225, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvNV ),
-    NAME_FUNC_OFFSET( 15246, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvNV ),
-    NAME_FUNC_OFFSET( 15267, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4ubvNV ),
-    NAME_FUNC_OFFSET( 15290, glBindProgramARB, _gloffset_BindProgramNV ),
-    NAME_FUNC_OFFSET( 15307, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ),
-    NAME_FUNC_OFFSET( 15327, glGenProgramsARB, _gloffset_GenProgramsNV ),
-    NAME_FUNC_OFFSET( 15344, glIsProgramARB, _gloffset_IsProgramNV ),
-    NAME_FUNC_OFFSET( 15359, glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvNV ),
-    NAME_FUNC_OFFSET( 15382, glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvNV ),
-    NAME_FUNC_OFFSET( 15405, glGetVertexAttribivARB, _gloffset_GetVertexAttribivNV ),
-    NAME_FUNC_OFFSET( 15428, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ),
-    NAME_FUNC_OFFSET( 15457, glBlendColorEXT, _gloffset_BlendColor ),
-    NAME_FUNC_OFFSET( 15473, glTexImage3DEXT, _gloffset_TexImage3D ),
-    NAME_FUNC_OFFSET( 15489, glTexSubImage3DEXT, _gloffset_TexSubImage3D ),
-    NAME_FUNC_OFFSET( 15508, glTexSubImage1DEXT, _gloffset_TexSubImage1D ),
-    NAME_FUNC_OFFSET( 15527, glTexSubImage2DEXT, _gloffset_TexSubImage2D ),
-    NAME_FUNC_OFFSET( 15546, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ),
-    NAME_FUNC_OFFSET( 15566, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ),
-    NAME_FUNC_OFFSET( 15586, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ),
-    NAME_FUNC_OFFSET( 15609, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ),
-    NAME_FUNC_OFFSET( 15632, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ),
-    NAME_FUNC_OFFSET( 15655, glHistogramEXT, _gloffset_Histogram ),
-    NAME_FUNC_OFFSET( 15670, glMinmaxEXT, _gloffset_Minmax ),
-    NAME_FUNC_OFFSET( 15682, glResetHistogramEXT, _gloffset_ResetHistogram ),
-    NAME_FUNC_OFFSET( 15702, glResetMinmaxEXT, _gloffset_ResetMinmax ),
-    NAME_FUNC_OFFSET( 15719, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ),
-    NAME_FUNC_OFFSET( 15744, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ),
-    NAME_FUNC_OFFSET( 15769, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ),
-    NAME_FUNC_OFFSET( 15796, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ),
-    NAME_FUNC_OFFSET( 15824, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ),
-    NAME_FUNC_OFFSET( 15851, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ),
-    NAME_FUNC_OFFSET( 15879, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ),
-    NAME_FUNC_OFFSET( 15908, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ),
-    NAME_FUNC_OFFSET( 15937, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ),
-    NAME_FUNC_OFFSET( 15960, glColorTableSGI, _gloffset_ColorTable ),
-    NAME_FUNC_OFFSET( 15976, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ),
-    NAME_FUNC_OFFSET( 16003, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ),
-    NAME_FUNC_OFFSET( 16030, glCopyColorTableSGI, _gloffset_CopyColorTable ),
-    NAME_FUNC_OFFSET( 16050, glBindTextureEXT, _gloffset_BindTexture ),
-    NAME_FUNC_OFFSET( 16067, glDeleteTexturesEXT, _gloffset_DeleteTextures ),
-    NAME_FUNC_OFFSET( 16087, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ),
-    NAME_FUNC_OFFSET( 16111, glArrayElementEXT, _gloffset_ArrayElement ),
-    NAME_FUNC_OFFSET( 16129, glDrawArraysEXT, _gloffset_DrawArrays ),
-    NAME_FUNC_OFFSET( 16145, glGetPointervEXT, _gloffset_GetPointerv ),
-    NAME_FUNC_OFFSET( 16162, glBlendEquationEXT, _gloffset_BlendEquation ),
-    NAME_FUNC_OFFSET( 16181, glColorSubTableEXT, _gloffset_ColorSubTable ),
-    NAME_FUNC_OFFSET( 16200, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ),
-    NAME_FUNC_OFFSET( 16223, glColorTableEXT, _gloffset_ColorTable ),
-    NAME_FUNC_OFFSET( 16239, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ),
-    NAME_FUNC_OFFSET( 16262, glSampleMaskEXT, _gloffset_SampleMaskSGIS ),
-    NAME_FUNC_OFFSET( 16278, glSamplePatternEXT, _gloffset_SamplePatternSGIS ),
-    NAME_FUNC_OFFSET( 16297, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ),
-    NAME_FUNC_OFFSET( 16324, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ),
-    NAME_FUNC_OFFSET( 16348, glPointParameterfSGIS, _gloffset_PointParameterfEXT ),
-    NAME_FUNC_OFFSET( 16370, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET(  5893, glDrawBuffersARB, _gloffset_DrawBuffersARB ),
+    NAME_FUNC_OFFSET(  5910, glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT ),
+    NAME_FUNC_OFFSET(  5929, glGetTexFilterFuncSGIS, _gloffset_GetTexFilterFuncSGIS ),
+    NAME_FUNC_OFFSET(  5952, glTexFilterFuncSGIS, _gloffset_TexFilterFuncSGIS ),
+    NAME_FUNC_OFFSET(  5972, glGetHistogramEXT, _gloffset_GetHistogramEXT ),
+    NAME_FUNC_OFFSET(  5990, glGetHistogramParameterfvEXT, _gloffset_GetHistogramParameterfvEXT ),
+    NAME_FUNC_OFFSET(  6019, glGetHistogramParameterivEXT, _gloffset_GetHistogramParameterivEXT ),
+    NAME_FUNC_OFFSET(  6048, glGetMinmaxEXT, _gloffset_GetMinmaxEXT ),
+    NAME_FUNC_OFFSET(  6063, glGetMinmaxParameterfvEXT, _gloffset_GetMinmaxParameterfvEXT ),
+    NAME_FUNC_OFFSET(  6089, glGetMinmaxParameterivEXT, _gloffset_GetMinmaxParameterivEXT ),
+    NAME_FUNC_OFFSET(  6115, glGetConvolutionFilterEXT, _gloffset_GetConvolutionFilterEXT ),
+    NAME_FUNC_OFFSET(  6141, glGetConvolutionParameterfvEXT, _gloffset_GetConvolutionParameterfvEXT ),
+    NAME_FUNC_OFFSET(  6172, glGetConvolutionParameterivEXT, _gloffset_GetConvolutionParameterivEXT ),
+    NAME_FUNC_OFFSET(  6203, glGetSeparableFilterEXT, _gloffset_GetSeparableFilterEXT ),
+    NAME_FUNC_OFFSET(  6227, glGetColorTableSGI, _gloffset_GetColorTableSGI ),
+    NAME_FUNC_OFFSET(  6246, glGetColorTableParameterfvSGI, _gloffset_GetColorTableParameterfvSGI ),
+    NAME_FUNC_OFFSET(  6276, glGetColorTableParameterivSGI, _gloffset_GetColorTableParameterivSGI ),
+    NAME_FUNC_OFFSET(  6306, glPixelTexGenSGIX, _gloffset_PixelTexGenSGIX ),
+    NAME_FUNC_OFFSET(  6324, glPixelTexGenParameteriSGIS, _gloffset_PixelTexGenParameteriSGIS ),
+    NAME_FUNC_OFFSET(  6352, glPixelTexGenParameterivSGIS, _gloffset_PixelTexGenParameterivSGIS ),
+    NAME_FUNC_OFFSET(  6381, glPixelTexGenParameterfSGIS, _gloffset_PixelTexGenParameterfSGIS ),
+    NAME_FUNC_OFFSET(  6409, glPixelTexGenParameterfvSGIS, _gloffset_PixelTexGenParameterfvSGIS ),
+    NAME_FUNC_OFFSET(  6438, glGetPixelTexGenParameterivSGIS, _gloffset_GetPixelTexGenParameterivSGIS ),
+    NAME_FUNC_OFFSET(  6470, glGetPixelTexGenParameterfvSGIS, _gloffset_GetPixelTexGenParameterfvSGIS ),
+    NAME_FUNC_OFFSET(  6502, glTexImage4DSGIS, _gloffset_TexImage4DSGIS ),
+    NAME_FUNC_OFFSET(  6519, glTexSubImage4DSGIS, _gloffset_TexSubImage4DSGIS ),
+    NAME_FUNC_OFFSET(  6539, glAreTexturesResidentEXT, _gloffset_AreTexturesResidentEXT ),
+    NAME_FUNC_OFFSET(  6564, glGenTexturesEXT, _gloffset_GenTexturesEXT ),
+    NAME_FUNC_OFFSET(  6581, glIsTextureEXT, _gloffset_IsTextureEXT ),
+    NAME_FUNC_OFFSET(  6596, glDetailTexFuncSGIS, _gloffset_DetailTexFuncSGIS ),
+    NAME_FUNC_OFFSET(  6616, glGetDetailTexFuncSGIS, _gloffset_GetDetailTexFuncSGIS ),
+    NAME_FUNC_OFFSET(  6639, glSharpenTexFuncSGIS, _gloffset_SharpenTexFuncSGIS ),
+    NAME_FUNC_OFFSET(  6660, glGetSharpenTexFuncSGIS, _gloffset_GetSharpenTexFuncSGIS ),
+    NAME_FUNC_OFFSET(  6684, glSampleMaskSGIS, _gloffset_SampleMaskSGIS ),
+    NAME_FUNC_OFFSET(  6701, glSamplePatternSGIS, _gloffset_SamplePatternSGIS ),
+    NAME_FUNC_OFFSET(  6721, glColorPointerEXT, _gloffset_ColorPointerEXT ),
+    NAME_FUNC_OFFSET(  6739, glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT ),
+    NAME_FUNC_OFFSET(  6760, glIndexPointerEXT, _gloffset_IndexPointerEXT ),
+    NAME_FUNC_OFFSET(  6778, glNormalPointerEXT, _gloffset_NormalPointerEXT ),
+    NAME_FUNC_OFFSET(  6797, glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT ),
+    NAME_FUNC_OFFSET(  6818, glVertexPointerEXT, _gloffset_VertexPointerEXT ),
+    NAME_FUNC_OFFSET(  6837, glSpriteParameterfSGIX, _gloffset_SpriteParameterfSGIX ),
+    NAME_FUNC_OFFSET(  6860, glSpriteParameterfvSGIX, _gloffset_SpriteParameterfvSGIX ),
+    NAME_FUNC_OFFSET(  6884, glSpriteParameteriSGIX, _gloffset_SpriteParameteriSGIX ),
+    NAME_FUNC_OFFSET(  6907, glSpriteParameterivSGIX, _gloffset_SpriteParameterivSGIX ),
+    NAME_FUNC_OFFSET(  6931, glPointParameterfEXT, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET(  6952, glPointParameterfvEXT, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET(  6974, glGetInstrumentsSGIX, _gloffset_GetInstrumentsSGIX ),
+    NAME_FUNC_OFFSET(  6995, glInstrumentsBufferSGIX, _gloffset_InstrumentsBufferSGIX ),
+    NAME_FUNC_OFFSET(  7019, glPollInstrumentsSGIX, _gloffset_PollInstrumentsSGIX ),
+    NAME_FUNC_OFFSET(  7041, glReadInstrumentsSGIX, _gloffset_ReadInstrumentsSGIX ),
+    NAME_FUNC_OFFSET(  7063, glStartInstrumentsSGIX, _gloffset_StartInstrumentsSGIX ),
+    NAME_FUNC_OFFSET(  7086, glStopInstrumentsSGIX, _gloffset_StopInstrumentsSGIX ),
+    NAME_FUNC_OFFSET(  7108, glFrameZoomSGIX, _gloffset_FrameZoomSGIX ),
+    NAME_FUNC_OFFSET(  7124, glTagSampleBufferSGIX, _gloffset_TagSampleBufferSGIX ),
+    NAME_FUNC_OFFSET(  7146, glReferencePlaneSGIX, _gloffset_ReferencePlaneSGIX ),
+    NAME_FUNC_OFFSET(  7167, glFlushRasterSGIX, _gloffset_FlushRasterSGIX ),
+    NAME_FUNC_OFFSET(  7185, glGetListParameterfvSGIX, _gloffset_GetListParameterfvSGIX ),
+    NAME_FUNC_OFFSET(  7210, glGetListParameterivSGIX, _gloffset_GetListParameterivSGIX ),
+    NAME_FUNC_OFFSET(  7235, glListParameterfSGIX, _gloffset_ListParameterfSGIX ),
+    NAME_FUNC_OFFSET(  7256, glListParameterfvSGIX, _gloffset_ListParameterfvSGIX ),
+    NAME_FUNC_OFFSET(  7278, glListParameteriSGIX, _gloffset_ListParameteriSGIX ),
+    NAME_FUNC_OFFSET(  7299, glListParameterivSGIX, _gloffset_ListParameterivSGIX ),
+    NAME_FUNC_OFFSET(  7321, glFragmentColorMaterialSGIX, _gloffset_FragmentColorMaterialSGIX ),
+    NAME_FUNC_OFFSET(  7349, glFragmentLightfSGIX, _gloffset_FragmentLightfSGIX ),
+    NAME_FUNC_OFFSET(  7370, glFragmentLightfvSGIX, _gloffset_FragmentLightfvSGIX ),
+    NAME_FUNC_OFFSET(  7392, glFragmentLightiSGIX, _gloffset_FragmentLightiSGIX ),
+    NAME_FUNC_OFFSET(  7413, glFragmentLightivSGIX, _gloffset_FragmentLightivSGIX ),
+    NAME_FUNC_OFFSET(  7435, glFragmentLightModelfSGIX, _gloffset_FragmentLightModelfSGIX ),
+    NAME_FUNC_OFFSET(  7461, glFragmentLightModelfvSGIX, _gloffset_FragmentLightModelfvSGIX ),
+    NAME_FUNC_OFFSET(  7488, glFragmentLightModeliSGIX, _gloffset_FragmentLightModeliSGIX ),
+    NAME_FUNC_OFFSET(  7514, glFragmentLightModelivSGIX, _gloffset_FragmentLightModelivSGIX ),
+    NAME_FUNC_OFFSET(  7541, glFragmentMaterialfSGIX, _gloffset_FragmentMaterialfSGIX ),
+    NAME_FUNC_OFFSET(  7565, glFragmentMaterialfvSGIX, _gloffset_FragmentMaterialfvSGIX ),
+    NAME_FUNC_OFFSET(  7590, glFragmentMaterialiSGIX, _gloffset_FragmentMaterialiSGIX ),
+    NAME_FUNC_OFFSET(  7614, glFragmentMaterialivSGIX, _gloffset_FragmentMaterialivSGIX ),
+    NAME_FUNC_OFFSET(  7639, glGetFragmentLightfvSGIX, _gloffset_GetFragmentLightfvSGIX ),
+    NAME_FUNC_OFFSET(  7664, glGetFragmentLightivSGIX, _gloffset_GetFragmentLightivSGIX ),
+    NAME_FUNC_OFFSET(  7689, glGetFragmentMaterialfvSGIX, _gloffset_GetFragmentMaterialfvSGIX ),
+    NAME_FUNC_OFFSET(  7717, glGetFragmentMaterialivSGIX, _gloffset_GetFragmentMaterialivSGIX ),
+    NAME_FUNC_OFFSET(  7745, glLightEnviSGIX, _gloffset_LightEnviSGIX ),
+    NAME_FUNC_OFFSET(  7761, glVertexWeightfEXT, _gloffset_VertexWeightfEXT ),
+    NAME_FUNC_OFFSET(  7780, glVertexWeightfvEXT, _gloffset_VertexWeightfvEXT ),
+    NAME_FUNC_OFFSET(  7800, glVertexWeightPointerEXT, _gloffset_VertexWeightPointerEXT ),
+    NAME_FUNC_OFFSET(  7825, glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV ),
+    NAME_FUNC_OFFSET(  7851, glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV ),
+    NAME_FUNC_OFFSET(  7872, glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV ),
+    NAME_FUNC_OFFSET(  7896, glCombinerParameterfNV, _gloffset_CombinerParameterfNV ),
+    NAME_FUNC_OFFSET(  7919, glCombinerParameterivNV, _gloffset_CombinerParameterivNV ),
+    NAME_FUNC_OFFSET(  7943, glCombinerParameteriNV, _gloffset_CombinerParameteriNV ),
+    NAME_FUNC_OFFSET(  7966, glCombinerInputNV, _gloffset_CombinerInputNV ),
+    NAME_FUNC_OFFSET(  7984, glCombinerOutputNV, _gloffset_CombinerOutputNV ),
+    NAME_FUNC_OFFSET(  8003, glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV ),
+    NAME_FUNC_OFFSET(  8026, glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV ),
+    NAME_FUNC_OFFSET(  8058, glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV ),
+    NAME_FUNC_OFFSET(  8090, glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV ),
+    NAME_FUNC_OFFSET(  8123, glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV ),
+    NAME_FUNC_OFFSET(  8156, glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV ),
+    NAME_FUNC_OFFSET(  8193, glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV ),
+    NAME_FUNC_OFFSET(  8230, glResizeBuffersMESA, _gloffset_ResizeBuffersMESA ),
+    NAME_FUNC_OFFSET(  8250, glWindowPos2dMESA, _gloffset_WindowPos2dMESA ),
+    NAME_FUNC_OFFSET(  8268, glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA ),
+    NAME_FUNC_OFFSET(  8287, glWindowPos2fMESA, _gloffset_WindowPos2fMESA ),
+    NAME_FUNC_OFFSET(  8305, glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA ),
+    NAME_FUNC_OFFSET(  8324, glWindowPos2iMESA, _gloffset_WindowPos2iMESA ),
+    NAME_FUNC_OFFSET(  8342, glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA ),
+    NAME_FUNC_OFFSET(  8361, glWindowPos2sMESA, _gloffset_WindowPos2sMESA ),
+    NAME_FUNC_OFFSET(  8379, glWindowPos2svMESA, _gloffset_WindowPos2svMESA ),
+    NAME_FUNC_OFFSET(  8398, glWindowPos3dMESA, _gloffset_WindowPos3dMESA ),
+    NAME_FUNC_OFFSET(  8416, glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA ),
+    NAME_FUNC_OFFSET(  8435, glWindowPos3fMESA, _gloffset_WindowPos3fMESA ),
+    NAME_FUNC_OFFSET(  8453, glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA ),
+    NAME_FUNC_OFFSET(  8472, glWindowPos3iMESA, _gloffset_WindowPos3iMESA ),
+    NAME_FUNC_OFFSET(  8490, glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA ),
+    NAME_FUNC_OFFSET(  8509, glWindowPos3sMESA, _gloffset_WindowPos3sMESA ),
+    NAME_FUNC_OFFSET(  8527, glWindowPos3svMESA, _gloffset_WindowPos3svMESA ),
+    NAME_FUNC_OFFSET(  8546, glWindowPos4dMESA, _gloffset_WindowPos4dMESA ),
+    NAME_FUNC_OFFSET(  8564, glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA ),
+    NAME_FUNC_OFFSET(  8583, glWindowPos4fMESA, _gloffset_WindowPos4fMESA ),
+    NAME_FUNC_OFFSET(  8601, glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA ),
+    NAME_FUNC_OFFSET(  8620, glWindowPos4iMESA, _gloffset_WindowPos4iMESA ),
+    NAME_FUNC_OFFSET(  8638, glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA ),
+    NAME_FUNC_OFFSET(  8657, glWindowPos4sMESA, _gloffset_WindowPos4sMESA ),
+    NAME_FUNC_OFFSET(  8675, glWindowPos4svMESA, _gloffset_WindowPos4svMESA ),
+    NAME_FUNC_OFFSET(  8694, glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT ),
+    NAME_FUNC_OFFSET(  8717, glIndexMaterialEXT, _gloffset_IndexMaterialEXT ),
+    NAME_FUNC_OFFSET(  8736, glIndexFuncEXT, _gloffset_IndexFuncEXT ),
+    NAME_FUNC_OFFSET(  8751, glLockArraysEXT, _gloffset_LockArraysEXT ),
+    NAME_FUNC_OFFSET(  8767, glUnlockArraysEXT, _gloffset_UnlockArraysEXT ),
+    NAME_FUNC_OFFSET(  8785, glCullParameterdvEXT, _gloffset_CullParameterdvEXT ),
+    NAME_FUNC_OFFSET(  8806, glCullParameterfvEXT, _gloffset_CullParameterfvEXT ),
+    NAME_FUNC_OFFSET(  8827, glHintPGI, _gloffset_HintPGI ),
+    NAME_FUNC_OFFSET(  8837, glFogCoordfEXT, _gloffset_FogCoordfEXT ),
+    NAME_FUNC_OFFSET(  8852, glFogCoordfvEXT, _gloffset_FogCoordfvEXT ),
+    NAME_FUNC_OFFSET(  8868, glFogCoorddEXT, _gloffset_FogCoorddEXT ),
+    NAME_FUNC_OFFSET(  8883, glFogCoorddvEXT, _gloffset_FogCoorddvEXT ),
+    NAME_FUNC_OFFSET(  8899, glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT ),
+    NAME_FUNC_OFFSET(  8920, glGetColorTableEXT, _gloffset_GetColorTableEXT ),
+    NAME_FUNC_OFFSET(  8939, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameterivEXT ),
+    NAME_FUNC_OFFSET(  8969, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfvEXT ),
+    NAME_FUNC_OFFSET(  8999, glTbufferMask3DFX, _gloffset_TbufferMask3DFX ),
+    NAME_FUNC_OFFSET(  9017, glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB ),
+    NAME_FUNC_OFFSET(  9043, glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB ),
+    NAME_FUNC_OFFSET(  9069, glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB ),
+    NAME_FUNC_OFFSET(  9095, glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB ),
+    NAME_FUNC_OFFSET(  9124, glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB ),
+    NAME_FUNC_OFFSET(  9153, glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB ),
+    NAME_FUNC_OFFSET(  9182, glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB ),
+    NAME_FUNC_OFFSET(  9209, glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT ),
+    NAME_FUNC_OFFSET(  9231, glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT ),
+    NAME_FUNC_OFFSET(  9254, glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT ),
+    NAME_FUNC_OFFSET(  9276, glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT ),
+    NAME_FUNC_OFFSET(  9299, glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT ),
+    NAME_FUNC_OFFSET(  9321, glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT ),
+    NAME_FUNC_OFFSET(  9344, glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT ),
+    NAME_FUNC_OFFSET(  9366, glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT ),
+    NAME_FUNC_OFFSET(  9389, glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT ),
+    NAME_FUNC_OFFSET(  9411, glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT ),
+    NAME_FUNC_OFFSET(  9434, glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT ),
+    NAME_FUNC_OFFSET(  9457, glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT ),
+    NAME_FUNC_OFFSET(  9481, glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT ),
+    NAME_FUNC_OFFSET(  9504, glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT ),
+    NAME_FUNC_OFFSET(  9528, glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT ),
+    NAME_FUNC_OFFSET(  9551, glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT ),
+    NAME_FUNC_OFFSET(  9575, glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT ),
+    NAME_FUNC_OFFSET(  9602, glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV ),
+    NAME_FUNC_OFFSET(  9626, glBindProgramNV, _gloffset_BindProgramNV ),
+    NAME_FUNC_OFFSET(  9642, glDeleteProgramsNV, _gloffset_DeleteProgramsNV ),
+    NAME_FUNC_OFFSET(  9661, glExecuteProgramNV, _gloffset_ExecuteProgramNV ),
+    NAME_FUNC_OFFSET(  9680, glGenProgramsNV, _gloffset_GenProgramsNV ),
+    NAME_FUNC_OFFSET(  9696, glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV ),
+    NAME_FUNC_OFFSET(  9722, glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV ),
+    NAME_FUNC_OFFSET(  9748, glGetProgramivNV, _gloffset_GetProgramivNV ),
+    NAME_FUNC_OFFSET(  9765, glGetProgramStringNV, _gloffset_GetProgramStringNV ),
+    NAME_FUNC_OFFSET(  9786, glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV ),
+    NAME_FUNC_OFFSET(  9807, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ),
+    NAME_FUNC_OFFSET(  9829, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ),
+    NAME_FUNC_OFFSET(  9851, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ),
+    NAME_FUNC_OFFSET(  9873, glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV ),
+    NAME_FUNC_OFFSET(  9901, glIsProgramNV, _gloffset_IsProgramNV ),
+    NAME_FUNC_OFFSET(  9915, glLoadProgramNV, _gloffset_LoadProgramNV ),
+    NAME_FUNC_OFFSET(  9931, glProgramParameter4dNV, _gloffset_ProgramParameter4dNV ),
+    NAME_FUNC_OFFSET(  9954, glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV ),
+    NAME_FUNC_OFFSET(  9978, glProgramParameter4fNV, _gloffset_ProgramParameter4fNV ),
+    NAME_FUNC_OFFSET( 10001, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ),
+    NAME_FUNC_OFFSET( 10025, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ),
+    NAME_FUNC_OFFSET( 10050, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ),
+    NAME_FUNC_OFFSET( 10075, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ),
+    NAME_FUNC_OFFSET( 10103, glTrackMatrixNV, _gloffset_TrackMatrixNV ),
+    NAME_FUNC_OFFSET( 10119, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ),
+    NAME_FUNC_OFFSET( 10143, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ),
+    NAME_FUNC_OFFSET( 10162, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ),
+    NAME_FUNC_OFFSET( 10182, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ),
+    NAME_FUNC_OFFSET( 10201, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ),
+    NAME_FUNC_OFFSET( 10221, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ),
+    NAME_FUNC_OFFSET( 10240, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ),
+    NAME_FUNC_OFFSET( 10260, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ),
+    NAME_FUNC_OFFSET( 10279, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ),
+    NAME_FUNC_OFFSET( 10299, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ),
+    NAME_FUNC_OFFSET( 10318, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ),
+    NAME_FUNC_OFFSET( 10338, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ),
+    NAME_FUNC_OFFSET( 10357, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ),
+    NAME_FUNC_OFFSET( 10377, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ),
+    NAME_FUNC_OFFSET( 10396, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ),
+    NAME_FUNC_OFFSET( 10416, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ),
+    NAME_FUNC_OFFSET( 10435, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ),
+    NAME_FUNC_OFFSET( 10455, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ),
+    NAME_FUNC_OFFSET( 10474, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ),
+    NAME_FUNC_OFFSET( 10494, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ),
+    NAME_FUNC_OFFSET( 10513, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ),
+    NAME_FUNC_OFFSET( 10533, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ),
+    NAME_FUNC_OFFSET( 10552, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ),
+    NAME_FUNC_OFFSET( 10572, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ),
+    NAME_FUNC_OFFSET( 10591, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ),
+    NAME_FUNC_OFFSET( 10611, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ),
+    NAME_FUNC_OFFSET( 10631, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ),
+    NAME_FUNC_OFFSET( 10652, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ),
+    NAME_FUNC_OFFSET( 10673, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ),
+    NAME_FUNC_OFFSET( 10694, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ),
+    NAME_FUNC_OFFSET( 10715, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ),
+    NAME_FUNC_OFFSET( 10736, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ),
+    NAME_FUNC_OFFSET( 10757, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ),
+    NAME_FUNC_OFFSET( 10778, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ),
+    NAME_FUNC_OFFSET( 10799, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ),
+    NAME_FUNC_OFFSET( 10820, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ),
+    NAME_FUNC_OFFSET( 10841, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ),
+    NAME_FUNC_OFFSET( 10862, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ),
+    NAME_FUNC_OFFSET( 10883, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ),
+    NAME_FUNC_OFFSET( 10904, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ),
+    NAME_FUNC_OFFSET( 10926, glPointParameteriNV, _gloffset_PointParameteriNV ),
+    NAME_FUNC_OFFSET( 10946, glPointParameterivNV, _gloffset_PointParameterivNV ),
+    NAME_FUNC_OFFSET( 10967, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ),
+    NAME_FUNC_OFFSET( 10988, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ),
+    NAME_FUNC_OFFSET( 11011, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ),
+    NAME_FUNC_OFFSET( 11034, glDeleteFencesNV, _gloffset_DeleteFencesNV ),
+    NAME_FUNC_OFFSET( 11051, glGenFencesNV, _gloffset_GenFencesNV ),
+    NAME_FUNC_OFFSET( 11065, glIsFenceNV, _gloffset_IsFenceNV ),
+    NAME_FUNC_OFFSET( 11077, glTestFenceNV, _gloffset_TestFenceNV ),
+    NAME_FUNC_OFFSET( 11091, glGetFenceivNV, _gloffset_GetFenceivNV ),
+    NAME_FUNC_OFFSET( 11106, glFinishFenceNV, _gloffset_FinishFenceNV ),
+    NAME_FUNC_OFFSET( 11122, glSetFenceNV, _gloffset_SetFenceNV ),
+    NAME_FUNC_OFFSET( 11135, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ),
+    NAME_FUNC_OFFSET( 11156, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ),
+    NAME_FUNC_OFFSET( 11177, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ),
+    NAME_FUNC_OFFSET( 11199, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ),
+    NAME_FUNC_OFFSET( 11221, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ),
+    NAME_FUNC_OFFSET( 11243, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ),
+    NAME_FUNC_OFFSET( 11265, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ),
+    NAME_FUNC_OFFSET( 11287, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ),
+    NAME_FUNC_OFFSET( 11309, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ),
+    NAME_FUNC_OFFSET( 11332, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ),
+    NAME_FUNC_OFFSET( 11355, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ),
+    NAME_FUNC_OFFSET( 11380, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ),
+    NAME_FUNC_OFFSET( 11409, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ),
+    NAME_FUNC_OFFSET( 11439, glProgramStringARB, _gloffset_ProgramStringARB ),
+    NAME_FUNC_OFFSET( 11458, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ),
+    NAME_FUNC_OFFSET( 11485, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ),
+    NAME_FUNC_OFFSET( 11513, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ),
+    NAME_FUNC_OFFSET( 11540, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ),
+    NAME_FUNC_OFFSET( 11568, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ),
+    NAME_FUNC_OFFSET( 11597, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ),
+    NAME_FUNC_OFFSET( 11627, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ),
+    NAME_FUNC_OFFSET( 11656, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ),
+    NAME_FUNC_OFFSET( 11686, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ),
+    NAME_FUNC_OFFSET( 11716, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ),
+    NAME_FUNC_OFFSET( 11746, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ),
+    NAME_FUNC_OFFSET( 11778, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ),
+    NAME_FUNC_OFFSET( 11810, glGetProgramivARB, _gloffset_GetProgramivARB ),
+    NAME_FUNC_OFFSET( 11828, glGetProgramStringARB, _gloffset_GetProgramStringARB ),
+    NAME_FUNC_OFFSET( 11850, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ),
+    NAME_FUNC_OFFSET( 11878, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ),
+    NAME_FUNC_OFFSET( 11906, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ),
+    NAME_FUNC_OFFSET( 11935, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ),
+    NAME_FUNC_OFFSET( 11964, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ),
+    NAME_FUNC_OFFSET( 11995, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ),
+    NAME_FUNC_OFFSET( 12026, glBindBufferARB, _gloffset_BindBufferARB ),
+    NAME_FUNC_OFFSET( 12042, glBufferDataARB, _gloffset_BufferDataARB ),
+    NAME_FUNC_OFFSET( 12058, glBufferSubDataARB, _gloffset_BufferSubDataARB ),
+    NAME_FUNC_OFFSET( 12077, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ),
+    NAME_FUNC_OFFSET( 12096, glGenBuffersARB, _gloffset_GenBuffersARB ),
+    NAME_FUNC_OFFSET( 12112, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ),
+    NAME_FUNC_OFFSET( 12138, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ),
+    NAME_FUNC_OFFSET( 12161, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ),
+    NAME_FUNC_OFFSET( 12183, glIsBufferARB, _gloffset_IsBufferARB ),
+    NAME_FUNC_OFFSET( 12197, glMapBufferARB, _gloffset_MapBufferARB ),
+    NAME_FUNC_OFFSET( 12212, glUnmapBufferARB, _gloffset_UnmapBufferARB ),
+    NAME_FUNC_OFFSET( 12229, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ),
+    NAME_FUNC_OFFSET( 12246, glGenQueriesARB, _gloffset_GenQueriesARB ),
+    NAME_FUNC_OFFSET( 12262, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ),
+    NAME_FUNC_OFFSET( 12281, glIsQueryARB, _gloffset_IsQueryARB ),
+    NAME_FUNC_OFFSET( 12294, glBeginQueryARB, _gloffset_BeginQueryARB ),
+    NAME_FUNC_OFFSET( 12310, glEndQueryARB, _gloffset_EndQueryARB ),
+    NAME_FUNC_OFFSET( 12324, glGetQueryivARB, _gloffset_GetQueryivARB ),
+    NAME_FUNC_OFFSET( 12340, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ),
+    NAME_FUNC_OFFSET( 12362, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ),
+    NAME_FUNC_OFFSET( 12385, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ),
+    NAME_FUNC_OFFSET( 12410, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ),
+    NAME_FUNC_OFFSET( 12437, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ),
+    NAME_FUNC_OFFSET( 12464, glActiveTexture, _gloffset_ActiveTextureARB ),
+    NAME_FUNC_OFFSET( 12480, glClientActiveTexture, _gloffset_ClientActiveTextureARB ),
+    NAME_FUNC_OFFSET( 12502, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ),
+    NAME_FUNC_OFFSET( 12520, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ),
+    NAME_FUNC_OFFSET( 12539, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ),
+    NAME_FUNC_OFFSET( 12557, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ),
+    NAME_FUNC_OFFSET( 12576, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ),
+    NAME_FUNC_OFFSET( 12594, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ),
+    NAME_FUNC_OFFSET( 12613, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ),
+    NAME_FUNC_OFFSET( 12631, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ),
+    NAME_FUNC_OFFSET( 12650, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ),
+    NAME_FUNC_OFFSET( 12668, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ),
+    NAME_FUNC_OFFSET( 12687, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ),
+    NAME_FUNC_OFFSET( 12705, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ),
+    NAME_FUNC_OFFSET( 12724, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ),
+    NAME_FUNC_OFFSET( 12742, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ),
+    NAME_FUNC_OFFSET( 12761, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ),
+    NAME_FUNC_OFFSET( 12779, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ),
+    NAME_FUNC_OFFSET( 12798, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ),
+    NAME_FUNC_OFFSET( 12816, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ),
+    NAME_FUNC_OFFSET( 12835, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ),
+    NAME_FUNC_OFFSET( 12853, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ),
+    NAME_FUNC_OFFSET( 12872, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ),
+    NAME_FUNC_OFFSET( 12890, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ),
+    NAME_FUNC_OFFSET( 12909, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ),
+    NAME_FUNC_OFFSET( 12927, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ),
+    NAME_FUNC_OFFSET( 12946, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ),
+    NAME_FUNC_OFFSET( 12964, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ),
+    NAME_FUNC_OFFSET( 12983, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ),
+    NAME_FUNC_OFFSET( 13001, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ),
+    NAME_FUNC_OFFSET( 13020, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ),
+    NAME_FUNC_OFFSET( 13038, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ),
+    NAME_FUNC_OFFSET( 13057, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ),
+    NAME_FUNC_OFFSET( 13075, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ),
+    NAME_FUNC_OFFSET( 13094, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ),
+    NAME_FUNC_OFFSET( 13117, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ),
+    NAME_FUNC_OFFSET( 13140, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ),
+    NAME_FUNC_OFFSET( 13163, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ),
+    NAME_FUNC_OFFSET( 13186, glSampleCoverage, _gloffset_SampleCoverageARB ),
+    NAME_FUNC_OFFSET( 13203, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ),
+    NAME_FUNC_OFFSET( 13226, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ),
+    NAME_FUNC_OFFSET( 13249, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ),
+    NAME_FUNC_OFFSET( 13272, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ),
+    NAME_FUNC_OFFSET( 13298, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ),
+    NAME_FUNC_OFFSET( 13324, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ),
+    NAME_FUNC_OFFSET( 13350, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ),
+    NAME_FUNC_OFFSET( 13374, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ),
+    NAME_FUNC_OFFSET( 13394, glFogCoordf, _gloffset_FogCoordfEXT ),
+    NAME_FUNC_OFFSET( 13406, glFogCoordfv, _gloffset_FogCoordfvEXT ),
+    NAME_FUNC_OFFSET( 13419, glFogCoordd, _gloffset_FogCoorddEXT ),
+    NAME_FUNC_OFFSET( 13431, glFogCoorddv, _gloffset_FogCoorddvEXT ),
+    NAME_FUNC_OFFSET( 13444, glFogCoordPointer, _gloffset_FogCoordPointerEXT ),
+    NAME_FUNC_OFFSET( 13462, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ),
+    NAME_FUNC_OFFSET( 13480, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ),
+    NAME_FUNC_OFFSET( 13500, glPointParameterf, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 13518, glPointParameterfv, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 13537, glPointParameteri, _gloffset_PointParameteriNV ),
+    NAME_FUNC_OFFSET( 13555, glPointParameteriv, _gloffset_PointParameterivNV ),
+    NAME_FUNC_OFFSET( 13574, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ),
+    NAME_FUNC_OFFSET( 13593, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ),
+    NAME_FUNC_OFFSET( 13613, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ),
+    NAME_FUNC_OFFSET( 13632, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ),
+    NAME_FUNC_OFFSET( 13652, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ),
+    NAME_FUNC_OFFSET( 13671, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ),
+    NAME_FUNC_OFFSET( 13691, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ),
+    NAME_FUNC_OFFSET( 13710, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ),
+    NAME_FUNC_OFFSET( 13730, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ),
+    NAME_FUNC_OFFSET( 13749, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ),
+    NAME_FUNC_OFFSET( 13769, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ),
+    NAME_FUNC_OFFSET( 13789, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ),
+    NAME_FUNC_OFFSET( 13810, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ),
+    NAME_FUNC_OFFSET( 13830, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ),
+    NAME_FUNC_OFFSET( 13851, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ),
+    NAME_FUNC_OFFSET( 13871, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ),
+    NAME_FUNC_OFFSET( 13892, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ),
+    NAME_FUNC_OFFSET( 13916, glWindowPos2d, _gloffset_WindowPos2dMESA ),
+    NAME_FUNC_OFFSET( 13930, glWindowPos2dv, _gloffset_WindowPos2dvMESA ),
+    NAME_FUNC_OFFSET( 13945, glWindowPos2f, _gloffset_WindowPos2fMESA ),
+    NAME_FUNC_OFFSET( 13959, glWindowPos2fv, _gloffset_WindowPos2fvMESA ),
+    NAME_FUNC_OFFSET( 13974, glWindowPos2i, _gloffset_WindowPos2iMESA ),
+    NAME_FUNC_OFFSET( 13988, glWindowPos2iv, _gloffset_WindowPos2ivMESA ),
+    NAME_FUNC_OFFSET( 14003, glWindowPos2s, _gloffset_WindowPos2sMESA ),
+    NAME_FUNC_OFFSET( 14017, glWindowPos2sv, _gloffset_WindowPos2svMESA ),
+    NAME_FUNC_OFFSET( 14032, glWindowPos3d, _gloffset_WindowPos3dMESA ),
+    NAME_FUNC_OFFSET( 14046, glWindowPos3dv, _gloffset_WindowPos3dvMESA ),
+    NAME_FUNC_OFFSET( 14061, glWindowPos3f, _gloffset_WindowPos3fMESA ),
+    NAME_FUNC_OFFSET( 14075, glWindowPos3fv, _gloffset_WindowPos3fvMESA ),
+    NAME_FUNC_OFFSET( 14090, glWindowPos3i, _gloffset_WindowPos3iMESA ),
+    NAME_FUNC_OFFSET( 14104, glWindowPos3iv, _gloffset_WindowPos3ivMESA ),
+    NAME_FUNC_OFFSET( 14119, glWindowPos3s, _gloffset_WindowPos3sMESA ),
+    NAME_FUNC_OFFSET( 14133, glWindowPos3sv, _gloffset_WindowPos3svMESA ),
+    NAME_FUNC_OFFSET( 14148, glBindBuffer, _gloffset_BindBufferARB ),
+    NAME_FUNC_OFFSET( 14161, glBufferData, _gloffset_BufferDataARB ),
+    NAME_FUNC_OFFSET( 14174, glBufferSubData, _gloffset_BufferSubDataARB ),
+    NAME_FUNC_OFFSET( 14190, glDeleteBuffers, _gloffset_DeleteBuffersARB ),
+    NAME_FUNC_OFFSET( 14206, glGenBuffers, _gloffset_GenBuffersARB ),
+    NAME_FUNC_OFFSET( 14219, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ),
+    NAME_FUNC_OFFSET( 14242, glGetBufferPointerv, _gloffset_GetBufferPointervARB ),
+    NAME_FUNC_OFFSET( 14262, glGetBufferSubData, _gloffset_GetBufferSubDataARB ),
+    NAME_FUNC_OFFSET( 14281, glIsBuffer, _gloffset_IsBufferARB ),
+    NAME_FUNC_OFFSET( 14292, glMapBuffer, _gloffset_MapBufferARB ),
+    NAME_FUNC_OFFSET( 14304, glUnmapBuffer, _gloffset_UnmapBufferARB ),
+    NAME_FUNC_OFFSET( 14318, glGenQueries, _gloffset_GenQueriesARB ),
+    NAME_FUNC_OFFSET( 14331, glDeleteQueries, _gloffset_DeleteQueriesARB ),
+    NAME_FUNC_OFFSET( 14347, glIsQuery, _gloffset_IsQueryARB ),
+    NAME_FUNC_OFFSET( 14357, glBeginQuery, _gloffset_BeginQueryARB ),
+    NAME_FUNC_OFFSET( 14370, glEndQuery, _gloffset_EndQueryARB ),
+    NAME_FUNC_OFFSET( 14381, glGetQueryiv, _gloffset_GetQueryivARB ),
+    NAME_FUNC_OFFSET( 14394, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ),
+    NAME_FUNC_OFFSET( 14413, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ),
+    NAME_FUNC_OFFSET( 14433, glPointParameterfARB, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 14454, glPointParameterfvARB, _gloffset_PointParameterfvEXT ),
+    NAME_FUNC_OFFSET( 14476, glWindowPos2dARB, _gloffset_WindowPos2dMESA ),
+    NAME_FUNC_OFFSET( 14493, glWindowPos2fARB, _gloffset_WindowPos2fMESA ),
+    NAME_FUNC_OFFSET( 14510, glWindowPos2iARB, _gloffset_WindowPos2iMESA ),
+    NAME_FUNC_OFFSET( 14527, glWindowPos2sARB, _gloffset_WindowPos2sMESA ),
+    NAME_FUNC_OFFSET( 14544, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ),
+    NAME_FUNC_OFFSET( 14562, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ),
+    NAME_FUNC_OFFSET( 14580, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ),
+    NAME_FUNC_OFFSET( 14598, glWindowPos2svARB, _gloffset_WindowPos2svMESA ),
+    NAME_FUNC_OFFSET( 14616, glWindowPos3dARB, _gloffset_WindowPos3dMESA ),
+    NAME_FUNC_OFFSET( 14633, glWindowPos3fARB, _gloffset_WindowPos3fMESA ),
+    NAME_FUNC_OFFSET( 14650, glWindowPos3iARB, _gloffset_WindowPos3iMESA ),
+    NAME_FUNC_OFFSET( 14667, glWindowPos3sARB, _gloffset_WindowPos3sMESA ),
+    NAME_FUNC_OFFSET( 14684, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ),
+    NAME_FUNC_OFFSET( 14702, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ),
+    NAME_FUNC_OFFSET( 14720, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ),
+    NAME_FUNC_OFFSET( 14738, glWindowPos3svARB, _gloffset_WindowPos3svMESA ),
+    NAME_FUNC_OFFSET( 14756, glVertexAttrib1sARB, _gloffset_VertexAttrib1sNV ),
+    NAME_FUNC_OFFSET( 14776, glVertexAttrib1fARB, _gloffset_VertexAttrib1fNV ),
+    NAME_FUNC_OFFSET( 14796, glVertexAttrib1dARB, _gloffset_VertexAttrib1dNV ),
+    NAME_FUNC_OFFSET( 14816, glVertexAttrib2sARB, _gloffset_VertexAttrib2sNV ),
+    NAME_FUNC_OFFSET( 14836, glVertexAttrib2fARB, _gloffset_VertexAttrib2fNV ),
+    NAME_FUNC_OFFSET( 14856, glVertexAttrib2dARB, _gloffset_VertexAttrib2dNV ),
+    NAME_FUNC_OFFSET( 14876, glVertexAttrib3sARB, _gloffset_VertexAttrib3sNV ),
+    NAME_FUNC_OFFSET( 14896, glVertexAttrib3fARB, _gloffset_VertexAttrib3fNV ),
+    NAME_FUNC_OFFSET( 14916, glVertexAttrib3dARB, _gloffset_VertexAttrib3dNV ),
+    NAME_FUNC_OFFSET( 14936, glVertexAttrib4sARB, _gloffset_VertexAttrib4sNV ),
+    NAME_FUNC_OFFSET( 14956, glVertexAttrib4fARB, _gloffset_VertexAttrib4fNV ),
+    NAME_FUNC_OFFSET( 14976, glVertexAttrib4dARB, _gloffset_VertexAttrib4dNV ),
+    NAME_FUNC_OFFSET( 14996, glVertexAttrib4NubARB, _gloffset_VertexAttrib4ubNV ),
+    NAME_FUNC_OFFSET( 15018, glVertexAttrib1svARB, _gloffset_VertexAttrib1svNV ),
+    NAME_FUNC_OFFSET( 15039, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvNV ),
+    NAME_FUNC_OFFSET( 15060, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvNV ),
+    NAME_FUNC_OFFSET( 15081, glVertexAttrib2svARB, _gloffset_VertexAttrib2svNV ),
+    NAME_FUNC_OFFSET( 15102, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvNV ),
+    NAME_FUNC_OFFSET( 15123, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvNV ),
+    NAME_FUNC_OFFSET( 15144, glVertexAttrib3svARB, _gloffset_VertexAttrib3svNV ),
+    NAME_FUNC_OFFSET( 15165, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvNV ),
+    NAME_FUNC_OFFSET( 15186, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvNV ),
+    NAME_FUNC_OFFSET( 15207, glVertexAttrib4svARB, _gloffset_VertexAttrib4svNV ),
+    NAME_FUNC_OFFSET( 15228, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvNV ),
+    NAME_FUNC_OFFSET( 15249, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvNV ),
+    NAME_FUNC_OFFSET( 15270, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4ubvNV ),
+    NAME_FUNC_OFFSET( 15293, glBindProgramARB, _gloffset_BindProgramNV ),
+    NAME_FUNC_OFFSET( 15310, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ),
+    NAME_FUNC_OFFSET( 15330, glGenProgramsARB, _gloffset_GenProgramsNV ),
+    NAME_FUNC_OFFSET( 15347, glIsProgramARB, _gloffset_IsProgramNV ),
+    NAME_FUNC_OFFSET( 15362, glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvNV ),
+    NAME_FUNC_OFFSET( 15385, glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvNV ),
+    NAME_FUNC_OFFSET( 15408, glGetVertexAttribivARB, _gloffset_GetVertexAttribivNV ),
+    NAME_FUNC_OFFSET( 15431, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ),
+    NAME_FUNC_OFFSET( 15460, glBlendColorEXT, _gloffset_BlendColor ),
+    NAME_FUNC_OFFSET( 15476, glTexImage3DEXT, _gloffset_TexImage3D ),
+    NAME_FUNC_OFFSET( 15492, glTexSubImage3DEXT, _gloffset_TexSubImage3D ),
+    NAME_FUNC_OFFSET( 15511, glTexSubImage1DEXT, _gloffset_TexSubImage1D ),
+    NAME_FUNC_OFFSET( 15530, glTexSubImage2DEXT, _gloffset_TexSubImage2D ),
+    NAME_FUNC_OFFSET( 15549, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ),
+    NAME_FUNC_OFFSET( 15569, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ),
+    NAME_FUNC_OFFSET( 15589, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ),
+    NAME_FUNC_OFFSET( 15612, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ),
+    NAME_FUNC_OFFSET( 15635, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ),
+    NAME_FUNC_OFFSET( 15658, glHistogramEXT, _gloffset_Histogram ),
+    NAME_FUNC_OFFSET( 15673, glMinmaxEXT, _gloffset_Minmax ),
+    NAME_FUNC_OFFSET( 15685, glResetHistogramEXT, _gloffset_ResetHistogram ),
+    NAME_FUNC_OFFSET( 15705, glResetMinmaxEXT, _gloffset_ResetMinmax ),
+    NAME_FUNC_OFFSET( 15722, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ),
+    NAME_FUNC_OFFSET( 15747, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ),
+    NAME_FUNC_OFFSET( 15772, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ),
+    NAME_FUNC_OFFSET( 15799, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ),
+    NAME_FUNC_OFFSET( 15827, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ),
+    NAME_FUNC_OFFSET( 15854, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ),
+    NAME_FUNC_OFFSET( 15882, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ),
+    NAME_FUNC_OFFSET( 15911, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ),
+    NAME_FUNC_OFFSET( 15940, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ),
+    NAME_FUNC_OFFSET( 15963, glColorTableSGI, _gloffset_ColorTable ),
+    NAME_FUNC_OFFSET( 15979, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ),
+    NAME_FUNC_OFFSET( 16006, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ),
+    NAME_FUNC_OFFSET( 16033, glCopyColorTableSGI, _gloffset_CopyColorTable ),
+    NAME_FUNC_OFFSET( 16053, glBindTextureEXT, _gloffset_BindTexture ),
+    NAME_FUNC_OFFSET( 16070, glDeleteTexturesEXT, _gloffset_DeleteTextures ),
+    NAME_FUNC_OFFSET( 16090, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ),
+    NAME_FUNC_OFFSET( 16114, glArrayElementEXT, _gloffset_ArrayElement ),
+    NAME_FUNC_OFFSET( 16132, glDrawArraysEXT, _gloffset_DrawArrays ),
+    NAME_FUNC_OFFSET( 16148, glGetPointervEXT, _gloffset_GetPointerv ),
+    NAME_FUNC_OFFSET( 16165, glBlendEquationEXT, _gloffset_BlendEquation ),
+    NAME_FUNC_OFFSET( 16184, glColorSubTableEXT, _gloffset_ColorSubTable ),
+    NAME_FUNC_OFFSET( 16203, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ),
+    NAME_FUNC_OFFSET( 16226, glColorTableEXT, _gloffset_ColorTable ),
+    NAME_FUNC_OFFSET( 16242, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ),
+    NAME_FUNC_OFFSET( 16265, glSampleMaskEXT, _gloffset_SampleMaskSGIS ),
+    NAME_FUNC_OFFSET( 16281, glSamplePatternEXT, _gloffset_SamplePatternSGIS ),
+    NAME_FUNC_OFFSET( 16300, glDrawBuffersATI, _gloffset_DrawBuffersARB ),
+    NAME_FUNC_OFFSET( 16317, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ),
+    NAME_FUNC_OFFSET( 16344, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ),
+    NAME_FUNC_OFFSET( 16368, glPointParameterfSGIS, _gloffset_PointParameterfEXT ),
+    NAME_FUNC_OFFSET( 16390, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ),
     NAME_FUNC_OFFSET( -1, NULL, -1 )
 };
 
index 1f490540d899ad50ac2c413b0723832af239b23b..37fcef51136ae31238ed8b85c7d4d409cc104f5f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.2
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -830,7 +830,8 @@ _mesa_PopAttrib(void)
                                (GLboolean) (color->ColorMask[1] != 0),
                                (GLboolean) (color->ColorMask[2] != 0),
                                (GLboolean) (color->ColorMask[3] != 0));
-               _mesa_DrawBuffer(color->DrawBuffer);
+               _mesa_DrawBuffersARB(ctx->Const.MaxDrawBuffers,
+                                    color->DrawBuffer);
                _mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled);
                _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef);
                _mesa_set_enable(ctx, GL_BLEND, color->BlendEnabled);
@@ -928,9 +929,8 @@ _mesa_PopAttrib(void)
                /* lighting enable */
                _mesa_set_enable(ctx, GL_LIGHTING, light->Enabled);
                /* per-light state */
-
-              if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) 
-                 _math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
+               if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) 
+                  _math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
               
                for (i = 0; i < MAX_LIGHTS; i++) {
                   GLenum lgt = (GLenum) (GL_LIGHT0 + i);
@@ -1079,7 +1079,6 @@ _mesa_PopAttrib(void)
                const struct gl_transform_attrib *xform;
                xform = (const struct gl_transform_attrib *) attr->data;
                _mesa_MatrixMode(xform->MatrixMode);
-
                if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY)
                   _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
 
index fde542c4b95854a228edabf03b05e621ade1a376..0257528581b16601c8cfd1ba5eccae17f07fd54e 100644 (file)
@@ -549,7 +549,6 @@ void _mesa_init_color( GLcontext * ctx )
    ctx->Color.ColorMask[3] = 0xff;
    ctx->Color.ClearIndex = 0;
    ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 );
-   ctx->Color.DrawBuffer = GL_FRONT;
    ctx->Color.AlphaEnabled = GL_FALSE;
    ctx->Color.AlphaFunc = GL_ALWAYS;
    ctx->Color.AlphaRef = 0;
@@ -568,12 +567,12 @@ void _mesa_init_color( GLcontext * ctx )
    ctx->Color.DitherFlag = GL_TRUE;
 
    if (ctx->Visual.doubleBufferMode) {
-      ctx->Color.DrawBuffer = GL_BACK;
-      ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT;
+      ctx->Color.DrawBuffer[0] = GL_BACK;
+      ctx->Color._DrawDestMask[0] = DD_BACK_LEFT_BIT;
    }
    else {
-      ctx->Color.DrawBuffer = GL_FRONT;
-      ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT;
+      ctx->Color.DrawBuffer[0] = GL_FRONT;
+      ctx->Color._DrawDestMask[0] = DD_FRONT_LEFT_BIT;
    }
 }
 
index 4c5c077669a0b51dc30638be4dc12b1577716ff2..35e03d7eb5cca9229d4fa5f849f3fcbed11e0ad7 100644 (file)
@@ -149,7 +149,7 @@ _mesa_Clear( GLbitfield mask )
        */
       ddMask = 0;
       if (mask & GL_COLOR_BUFFER_BIT)
-         ddMask |= ctx->Color._DrawDestMask;
+         ddMask |= ctx->Color._DrawDestMask[0];
       if ((mask & GL_DEPTH_BUFFER_BIT) && ctx->Visual.depthBits > 0)
          ddMask |= GL_DEPTH_BUFFER_BIT;
       if ((mask & GL_STENCIL_BUFFER_BIT) && ctx->Visual.stencilBits > 0)
@@ -164,6 +164,121 @@ _mesa_Clear( GLbitfield mask )
 }
 
 
+
+/**
+ * Return bitmask of DD_* flags indicating which color buffers are
+ * available to the rendering context;
+ */
+static GLuint
+supported_buffer_bitmask(const GLcontext *ctx)
+{
+   GLuint mask = DD_FRONT_LEFT_BIT; /* always have this */
+   GLuint i;
+
+   if (ctx->Visual.stereoMode) {
+      mask |= DD_FRONT_RIGHT_BIT;
+      if (ctx->Visual.doubleBufferMode) {
+         mask |= DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT;
+      }
+   }
+   else if (ctx->Visual.doubleBufferMode) {
+      mask |= DD_BACK_LEFT_BIT;
+   }
+
+   for (i = 0; i < ctx->Visual.numAuxBuffers; i++) {
+      mask |= (DD_AUX0_BIT << i);
+   }
+
+   return mask;
+}
+
+
+/**
+ * Helper routine used by glDrawBuffer and glDrawBuffersARB.
+ * Given a GLenum naming (a) color buffer(s), return the corresponding
+ * bitmask of DD_* flags.
+ */
+static GLuint
+draw_buffer_enum_to_bitmask(GLenum buffer)
+{
+   switch (buffer) {
+      case GL_FRONT:
+         return DD_FRONT_LEFT_BIT | DD_FRONT_RIGHT_BIT;
+      case GL_BACK:
+         return DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT;
+      case GL_NONE:
+         return 0;
+      case GL_RIGHT:
+         return DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT;
+      case GL_FRONT_RIGHT:
+         return DD_FRONT_RIGHT_BIT;
+      case GL_BACK_RIGHT:
+         return DD_BACK_RIGHT_BIT;
+      case GL_BACK_LEFT:
+         return DD_BACK_LEFT_BIT;
+      case GL_FRONT_AND_BACK:
+         return DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT
+              | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT;
+      case GL_LEFT:
+         return DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT;
+      case GL_FRONT_LEFT:
+         return DD_FRONT_LEFT_BIT;
+      case GL_AUX0:
+         return DD_AUX0_BIT;
+      case GL_AUX1:
+         return DD_AUX1_BIT;
+      case GL_AUX2:
+         return DD_AUX2_BIT;
+      case GL_AUX3:
+         return DD_AUX3_BIT;
+      default:
+         /* error */
+         return ~0;
+   }
+}
+
+
+/**
+ * Helper routine used by glReadBuffer.
+ * Given a GLenum naming (a) color buffer(s), return the corresponding
+ * bitmask of DD_* flags.
+ */
+static GLuint
+read_buffer_enum_to_bitmask(GLenum buffer)
+{
+   switch (buffer) {
+      case GL_FRONT:
+         return DD_FRONT_LEFT_BIT;
+      case GL_BACK:
+         return DD_BACK_LEFT_BIT;
+      case GL_RIGHT:
+         return DD_FRONT_RIGHT_BIT;
+      case GL_FRONT_RIGHT:
+         return DD_FRONT_RIGHT_BIT;
+      case GL_BACK_RIGHT:
+         return DD_BACK_RIGHT_BIT;
+      case GL_BACK_LEFT:
+         return DD_BACK_LEFT_BIT;
+      case GL_LEFT:
+         return DD_FRONT_LEFT_BIT;
+      case GL_FRONT_LEFT:
+         return DD_FRONT_LEFT_BIT;
+      case GL_AUX0:
+         return DD_AUX0_BIT;
+      case GL_AUX1:
+         return DD_AUX1_BIT;
+      case GL_AUX2:
+         return DD_AUX2_BIT;
+      case GL_AUX3:
+         return DD_AUX3_BIT;
+      default:
+         /* error */
+         return ~0;
+   }
+}
+
+
+
 /**
  * Specify which color buffers to draw into.
  *
@@ -179,6 +294,7 @@ _mesa_Clear( GLbitfield mask )
 void GLAPIENTRY
 _mesa_DrawBuffer( GLenum mode )
 {
+   GLenum destMask, supportedMask;
    GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); /* too complex... */
 
@@ -188,124 +304,22 @@ _mesa_DrawBuffer( GLenum mode )
    /*
     * Do error checking and compute the _DrawDestMask bitfield.
     */
-   switch (mode) {
-      case GL_FRONT:
-         /* never an error */
-         if (ctx->Visual.stereoMode)
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_FRONT_RIGHT_BIT;
-         else
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT;
-         break;
-      case GL_BACK:
-         if (!ctx->Visual.doubleBufferMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK)");
-            return;
-         }
-         if (ctx->Visual.stereoMode)
-            ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT;
-         else
-            ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT;
-         break;
-      case GL_NONE:
-         /* never an error */
-         ctx->Color._DrawDestMask = 0;
-         break;
-#if _HAVE_FULL_GL
-      case GL_RIGHT:
-         if (!ctx->Visual.stereoMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_RIGHT)");
-            return;}
-         if (ctx->Visual.doubleBufferMode)
-            ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT;
-         else
-            ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT;
-         break;
-      case GL_FRONT_RIGHT:
-         if (!ctx->Visual.stereoMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_FRONT_RIGHT)");
-            return;
-         }
-         ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT;
-         break;
-      case GL_BACK_RIGHT:
-         if (!ctx->Visual.stereoMode || !ctx->Visual.doubleBufferMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK_RIGHT)");
-            return;
-         }
-         ctx->Color._DrawDestMask = DD_BACK_RIGHT_BIT;
-         break;
-      case GL_BACK_LEFT:
-         if (!ctx->Visual.doubleBufferMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK_LEFT)");
-            return;
-         }
-         ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT;
-         break;
-      case GL_FRONT_AND_BACK:
-         if (!ctx->Visual.doubleBufferMode) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_FRONT_AND_BACK)");
-            return;
-         }
-         if (ctx->Visual.stereoMode)
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT
-                                    | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT;
-         else
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT;
-         break;
-      case GL_LEFT:
-         /* never an error */
-         if (ctx->Visual.doubleBufferMode)
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT;
-         else
-            ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT;
-         break;
-      case GL_FRONT_LEFT:
-         /* never an error */
-         ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT;
-         break;
-      case GL_AUX0:
-         if (ctx->Visual.numAuxBuffers >= 1) {
-            ctx->Color._DrawDestMask = DD_AUX0_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX0)" );
-            return;
-         }
-         break;
-      case GL_AUX1:
-         if (ctx->Visual.numAuxBuffers >= 2) {
-            ctx->Color._DrawDestMask = DD_AUX1_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX1)" );
-            return;
-         }
-         break;
-      case GL_AUX2:
-         if (ctx->Visual.numAuxBuffers >= 3) {
-            ctx->Color._DrawDestMask = DD_AUX2_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX2)" );
-            return;
-         }
-         break;
-      case GL_AUX3:
-         if (ctx->Visual.numAuxBuffers >= 4) {
-            ctx->Color._DrawDestMask = DD_AUX3_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX3)" );
-            return;
-         }
-         break;
-#endif
-      default:
-         _mesa_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" );
-         return;
+   destMask = draw_buffer_enum_to_bitmask(mode);
+   if (destMask == ~0) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffer(mode)");
+      return;
+   }
+
+   supportedMask = supported_buffer_bitmask(ctx);
+   destMask &= supportedMask;
+
+   if (destMask == 0) {
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(mode)");
+      return;
    }
 
-   ctx->Color.DrawBuffer = mode;
+   ctx->Color.DrawBuffer[0] = mode;
+   ctx->Color._DrawDestMask[0] = destMask;
    ctx->NewState |= _NEW_COLOR;
 
    /*
@@ -316,6 +330,60 @@ _mesa_DrawBuffer( GLenum mode )
 }
 
 
+/**
+ * Called by glDrawBuffersARB; specifies the destination color buffers
+ * for N fragment program color outputs.
+ */
+void GLAPIENTRY
+_mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers)
+{
+   GLint i;
+   GLuint usedBufferMask, supportedMask;
+   GET_CURRENT_CONTEXT(ctx);
+   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+   if (n < 1 || n > ctx->Const.MaxDrawBuffers) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glDrawBuffersARB(n)" );
+      return;
+   }
+
+   supportedMask = supported_buffer_bitmask(ctx);
+   usedBufferMask = 0;
+   for (i = 0; i < n; i++) {
+      GLuint destMask = draw_buffer_enum_to_bitmask(buffers[i]);
+      if (destMask == ~0) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffersARB(buffer)");
+         return;
+      }         
+      destMask &= supportedMask;
+      if (destMask == 0) {
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "glDrawBuffersARB(unsupported buffer)");
+         return;
+      }
+      if (destMask & usedBufferMask) {
+         /* can't use a dest buffer more than once! */
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "glDrawBuffersARB(duplicated buffer)");
+         return;
+      }
+      /* update bitmask */
+      usedBufferMask |= destMask;
+      /* save state */
+      ctx->Color.DrawBuffer[i] = buffers[i];
+      ctx->Color._DrawDestMask[i] = destMask;
+   }
+
+   ctx->NewState |= _NEW_COLOR;
+
+   /*
+    * Call device driver function.
+    */
+   if (ctx->Driver.DrawBuffers)
+      (*ctx->Driver.DrawBuffers)(ctx, n, buffers);
+}
+
+
 /**
  * Set the color buffer source for reading pixels.
  *
@@ -330,89 +398,24 @@ _mesa_DrawBuffer( GLenum mode )
 void GLAPIENTRY
 _mesa_ReadBuffer( GLenum mode )
 {
+   GLuint srcMask, supportedMask;
    GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
 
    if (MESA_VERBOSE & VERBOSE_API)
       _mesa_debug(ctx, "glReadBuffer %s\n", _mesa_lookup_enum_by_nr(mode));
 
-   /*
-    * Do error checking and compute ctx->Pixel._ReadSrcMask.
-    */
-   switch (mode) {
-      case GL_LEFT:
-      case GL_FRONT:
-      case GL_FRONT_LEFT:
-         /* Front-Left buffer, always exists */
-         ctx->Pixel._ReadSrcMask = DD_FRONT_LEFT_BIT;
-         break;
-      case GL_BACK:
-      case GL_BACK_LEFT:
-         /* Back-Left buffer, requires double buffering */
-         if (!ctx->Visual.doubleBufferMode) {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
-            return;
-         }
-         ctx->Pixel._ReadSrcMask = DD_BACK_LEFT_BIT;
-         break;
-#if _HAVE_FULL_GL
-      case GL_FRONT_RIGHT:
-      case GL_RIGHT:
-         if (!ctx->Visual.stereoMode) {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
-            return;
-         }
-         ctx->Pixel._ReadSrcMask = DD_FRONT_RIGHT_BIT;
-         break;
-      case GL_BACK_RIGHT:
-         if (!ctx->Visual.stereoMode || !ctx->Visual.doubleBufferMode) {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
-            return;
-         }
-         ctx->Pixel._ReadSrcMask = DD_BACK_RIGHT_BIT;
-         break;
-      case GL_AUX0:
-         if (ctx->Visual.numAuxBuffers >= 1) {
-            ctx->Pixel._ReadSrcMask = DD_AUX0_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX0)" );
-            return;
-         }
-         break;
-      case GL_AUX1:
-         if (ctx->Visual.numAuxBuffers >= 2) {
-            ctx->Pixel._ReadSrcMask = DD_AUX1_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX1)" );
-            return;
-         }
-         break;
-      case GL_AUX2:
-         if (ctx->Visual.numAuxBuffers >= 3) {
-            ctx->Pixel._ReadSrcMask = DD_AUX2_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX2)" );
-            return;
-         }
-         break;
-      case GL_AUX3:
-         if (ctx->Visual.numAuxBuffers >= 4) {
-            ctx->Pixel._ReadSrcMask = DD_AUX3_BIT;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX3)" );
-            return;
-         }
-         break;
-#endif
-      default:
-         _mesa_error( ctx, GL_INVALID_ENUM, "glReadBuffer" );
-         return;
+   srcMask = read_buffer_enum_to_bitmask(mode);
+   if (srcMask == ~0) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "glReadBuffer(mode)");
+      return;
    }
-
+   supportedMask = supported_buffer_bitmask(ctx);
+   if ((srcMask & supportedMask) == 0) {
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glReadBuffer(mode)");
+      return;
+   }
+   ctx->Pixel._ReadSrcMask = srcMask;
    ctx->Pixel.ReadBuffer = mode;
    ctx->NewState |= _NEW_PIXEL;
 
@@ -423,6 +426,7 @@ _mesa_ReadBuffer( GLenum mode )
       (*ctx->Driver.ReadBuffer)(ctx, mode);
 }
 
+
 #if _HAVE_FULL_GL
 
 /**
@@ -485,6 +489,7 @@ _mesa_ResizeBuffersMESA( void )
    }
 }
 
+
 /*
  * XXX move somewhere else someday?
  */
@@ -550,6 +555,8 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
       ctx->Driver.Scissor( ctx, x, y, width, height );
 }
 
+
+
 /**********************************************************************/
 /** \name State management */
 /*@{*/
index 83e1b4825119ce9c0732b883c1ad6aa24afed288..f9369864b65492177e03e8a1dfe92cc197fbe573 100644 (file)
@@ -49,6 +49,9 @@ _mesa_Clear( GLbitfield mask );
 extern void GLAPIENTRY
 _mesa_DrawBuffer( GLenum mode );
 
+extern void GLAPIENTRY
+_mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers);
+
 extern void GLAPIENTRY
 _mesa_ReadBuffer( GLenum mode );
 
index 496997b957496340c426a5a99814cff9704afc42..bc9202eaede5cbd372ee51d57fef23cb7d206b07 100644 (file)
 /*@}*/
 
 
+/** For GL_ARB_draw_buffers */
+/*@{*/
+#define MAX_DRAW_BUFFERS 1
+/*@}*/
+
+
+
 /**
  * \name Mesa-specific parameters
  */
 /*@}*/
 
 
+/**
+ * Maximum number of temporary vertices required for clipping.  
+ *
+ * Used in array_cache and tnl modules.
+ */
+#define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
+
+
 #endif /* CONFIG_H */
index 96c436971b1a6b0610a172b7400692681dd9bbd8..44e3fcb9adc4724dbd9573b3fca6d9f2ddc0ee2a 100644 (file)
@@ -1050,7 +1050,7 @@ _mesa_init_constants( GLcontext *ctx )
    assert(MAX_TEXTURE_LEVELS >= MAX_3D_TEXTURE_LEVELS);
    assert(MAX_TEXTURE_LEVELS >= MAX_CUBE_TEXTURE_LEVELS);
 
-   /* Constants, may be overriden by device drivers */
+   /* Constants, may be overriden (usually only reduced) by device drivers */
    ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS;
    ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS;
    ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS;
@@ -1077,8 +1077,10 @@ _mesa_init_constants( GLcontext *ctx )
    ctx->Const.MaxConvolutionHeight = MAX_CONVOLUTION_HEIGHT;
    ctx->Const.MaxClipPlanes = MAX_CLIP_PLANES;
    ctx->Const.MaxLights = MAX_LIGHTS;
-   ctx->Const.MaxSpotExponent = 128.0;
    ctx->Const.MaxShininess = 128.0;
+   ctx->Const.MaxSpotExponent = 128.0;
+   ctx->Const.MaxViewportWidth = MAX_WIDTH;
+   ctx->Const.MaxViewportHeight = MAX_HEIGHT;
 #if FEATURE_ARB_vertex_program
    ctx->Const.MaxVertexProgramInstructions = MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS;
    ctx->Const.MaxVertexProgramAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS;
@@ -1110,6 +1112,9 @@ _mesa_init_constants( GLcontext *ctx )
    ctx->Const.CheckArrayBounds = GL_FALSE;
 #endif
 
+   ctx->Const.MaxDrawBuffers = MAX_DRAW_BUFFERS;
+
+   /* sanity checks */
    ASSERT(ctx->Const.MaxTextureUnits == MAX2(ctx->Const.MaxTextureImageUnits, ctx->Const.MaxTextureCoordUnits));
 }
 
index e314fd8fa127e57e7aa881a83285d07b7cc57b71..68e6273a67965c67d67682cc2dcc4fdff095d28e 100644 (file)
@@ -615,6 +615,8 @@ struct dd_function_table {
    void (*DepthRange)(GLcontext *ctx, GLclampd nearval, GLclampd farval);
    /** Specify the current buffer for writing */
    void (*DrawBuffer)( GLcontext *ctx, GLenum buffer );
+   /** Specify the buffers for writing for fragment programs*/
+   void (*DrawBuffers)( GLcontext *ctx, GLsizei n, const GLenum *buffers );
    /** Enable or disable server-side gl capabilities */
    void (*Enable)(GLcontext *ctx, GLenum cap, GLboolean state);
    /** Specify fog parameters */
index ebf3af326a947fb27e63affcb1ab2a9724904a05..ef2dada710106f868740a6d9502772cf46a4d175 100644 (file)
@@ -314,6 +314,8 @@ typedef enum {
         /* GL_ARB_occlusion_query */
         OPCODE_BEGIN_QUERY_ARB,
         OPCODE_END_QUERY_ARB,
+       /* GL_ARB_draw_buffers */
+        OPCODE_DRAW_BUFFERS_ARB,
 
        /* Vertex attributes -- fallback for when optimized display
         * list build isn't active.
@@ -782,6 +784,7 @@ _mesa_init_lists( void )
       InstSize[OPCODE_BEGIN_QUERY_ARB] = 3;
       InstSize[OPCODE_END_QUERY_ARB] = 2;
 #endif
+      InstSize[OPCODE_DRAW_BUFFERS_ARB] = 2 + MAX_DRAW_BUFFERS;
       InstSize[OPCODE_ATTR_1F] = 3;
       InstSize[OPCODE_ATTR_2F] = 4;
       InstSize[OPCODE_ATTR_3F] = 5;
@@ -4683,6 +4686,27 @@ save_EndQueryARB(GLenum target)
 #endif /* FEATURE_ARB_occlusion_query */
 
 
+static void GLAPIENTRY
+save_DrawBuffersARB(GLsizei count, const GLenum *buffers)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   Node *n;
+   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+   n = ALLOC_INSTRUCTION( ctx, OPCODE_DRAW_BUFFERS_ARB, 1 + MAX_DRAW_BUFFERS );
+   if (n) {
+      GLint i;
+      n[1].i = count;
+      if (count > MAX_DRAW_BUFFERS)
+        count = MAX_DRAW_BUFFERS;
+      for (i = 0; i < count; i++) {
+        n[2 + i].e = buffers[i];
+      }
+   }
+   if (ctx->ExecuteFlag) {
+      (*ctx->Exec->DrawBuffersARB)(count, buffers);
+   }
+}
+
 
 static void save_Attr1f( GLenum attr, GLfloat x )
 {
@@ -6043,6 +6067,15 @@ execute_list( GLcontext *ctx, GLuint list )
             ctx->Exec->EndQueryARB(n[1].e);
             break;
 #endif
+         case OPCODE_DRAW_BUFFERS_ARB:
+           {
+              GLenum buffers[MAX_DRAW_BUFFERS];
+              GLint i, count = MIN2(n[1].i, MAX_DRAW_BUFFERS);
+              for (i = 0; i < count; i++)
+                 buffers[i] = n[2 + i].e;
+              ctx->Exec->DrawBuffersARB(n[1].i, buffers);
+           }
+            break;
         case OPCODE_ATTR_1F:
            (*ctx->Exec->VertexAttrib1fNV)(n[1].e, n[2].f);
            break;
@@ -7635,6 +7668,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
    table->GetQueryObjectivARB = _mesa_GetQueryObjectivARB;
    table->GetQueryObjectuivARB = _mesa_GetQueryObjectuivARB;
 #endif
+   table->DrawBuffersARB = save_DrawBuffersARB;
 
    /* 299. GL_EXT_blend_equation_separate */
    table->BlendEquationSeparateEXT = save_BlendEquationSeparateEXT;
index efdee0c67de2a9505fc990d1ca968dc561f10d25..a8003116fadb8b65273c1c443df34ede29c29da4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.2
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -45,6 +45,7 @@ static const struct {
    int flag_offset;
 } default_extensions[] = {
    { OFF, "GL_ARB_depth_texture",              F(ARB_depth_texture) },
+   { OFF, "GL_ARB_draw_buffers",               F(ARB_draw_buffers) },
    { OFF, "GL_ARB_fragment_program",           F(ARB_fragment_program) },
    { OFF, "GL_MESAX_half_float_pixel",         F(ARB_half_float_pixel) },
    { OFF, "GL_ARB_imaging",                    F(ARB_imaging) },
@@ -166,6 +167,7 @@ void
 _mesa_enable_sw_extensions(GLcontext *ctx)
 {
    ctx->Extensions.ARB_depth_texture = GL_TRUE;
+   ctx->Extensions.ARB_draw_buffers = GL_TRUE;
 #if FEATURE_ARB_fragment_program
    ctx->Extensions.ARB_fragment_program = GL_TRUE;
 #endif
@@ -330,6 +332,22 @@ _mesa_enable_1_5_extensions(GLcontext *ctx)
 }
 
 
+/**
+ * Enable all OpenGL 2.0 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_2_0_extensions(GLcontext *ctx)
+{
+   ctx->Extensions.ARB_draw_buffers = GL_TRUE;
+   ctx->Extensions.ARB_point_sprite = GL_TRUE;
+   ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE;
+   ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
+   /* Also, shading language */
+}
+
+
+
 /**
  * Either enable or disable the named extension.
  */
index 54aa25511b4f55b2e4c2f74297df33736234ea5c..9d843a8b6b6d0b52da854d0b7407a3077afffbee 100644 (file)
@@ -10,9 +10,9 @@
 
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.3
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -50,6 +50,8 @@ extern void _mesa_enable_1_4_extensions(GLcontext *ctx);
 
 extern void _mesa_enable_1_5_extensions(GLcontext *ctx);
 
+extern void _mesa_enable_2_0_extensions(GLcontext *ctx);
+
 extern void _mesa_enable_extension(GLcontext *ctx, const char *name);
 
 extern void _mesa_disable_extension(GLcontext *ctx, const char *name);
index 98ab70eb4d081fa0a490d8f2aa5c727d726bb041..6eac604ea51b71dce2ef7ce479ecd03b18432159 100644 (file)
@@ -5,7 +5,7 @@
 
 /*
  * Mesa 3-D graphics library
- * Version:  6.2
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -380,7 +380,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
         *params = ctx->Visual.doubleBufferMode;
         break;
       case GL_DRAW_BUFFER:
-        *params = ENUM_TO_BOOL(ctx->Color.DrawBuffer);
+        *params = ENUM_TO_BOOL(ctx->Color.DrawBuffer[0]);
         break;
       case GL_EDGE_FLAG:
         FLUSH_CURRENT(ctx, 0);
@@ -1691,6 +1691,38 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
          break;
 #endif
 
+      case GL_MAX_DRAW_BUFFERS_ARB:
+         CHECK_EXTENSION_B(ARB_draw_buffers, pname);
+         *params = INT_TO_BOOL(ctx->Const.MaxDrawBuffers);
+         break;
+      case GL_DRAW_BUFFER0_ARB:
+      case GL_DRAW_BUFFER1_ARB:
+      case GL_DRAW_BUFFER2_ARB:
+      case GL_DRAW_BUFFER3_ARB:
+      case GL_DRAW_BUFFER4_ARB:
+      case GL_DRAW_BUFFER5_ARB:
+      case GL_DRAW_BUFFER6_ARB:
+      case GL_DRAW_BUFFER7_ARB:
+      case GL_DRAW_BUFFER8_ARB:
+      case GL_DRAW_BUFFER9_ARB:
+      case GL_DRAW_BUFFER10_ARB:
+      case GL_DRAW_BUFFER11_ARB:
+      case GL_DRAW_BUFFER12_ARB:
+      case GL_DRAW_BUFFER13_ARB:
+      case GL_DRAW_BUFFER14_ARB:
+      case GL_DRAW_BUFFER15_ARB:
+         CHECK_EXTENSION_B(ARB_draw_buffers, pname);
+         {
+            GLuint i = pname - GL_DRAW_BUFFER0_ARB;
+            if (i >= ctx->Const.MaxDrawBuffers) {
+               _mesa_error(ctx, GL_INVALID_ENUM,
+                           "glGetBooleanv(GL_DRAW_BUFFERx_ARB)");
+               return;
+            }
+            *params = INT_TO_BOOL(ctx->Color.DrawBuffer[i]);
+         }
+         break;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
    }
@@ -1947,7 +1979,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
         *params = (GLdouble) ctx->Visual.doubleBufferMode;
         break;
       case GL_DRAW_BUFFER:
-        *params = ENUM_TO_DOUBLE(ctx->Color.DrawBuffer);
+        *params = ENUM_TO_DOUBLE(ctx->Color.DrawBuffer[0]);
         break;
       case GL_EDGE_FLAG:
         FLUSH_CURRENT(ctx, 0);
@@ -3253,6 +3285,38 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          break;
 #endif
 
+      case GL_MAX_DRAW_BUFFERS_ARB:
+         CHECK_EXTENSION_D(ARB_draw_buffers, pname);
+         *params = (GLdouble) ctx->Const.MaxDrawBuffers;
+         break;
+      case GL_DRAW_BUFFER0_ARB:
+      case GL_DRAW_BUFFER1_ARB:
+      case GL_DRAW_BUFFER2_ARB:
+      case GL_DRAW_BUFFER3_ARB:
+      case GL_DRAW_BUFFER4_ARB:
+      case GL_DRAW_BUFFER5_ARB:
+      case GL_DRAW_BUFFER6_ARB:
+      case GL_DRAW_BUFFER7_ARB:
+      case GL_DRAW_BUFFER8_ARB:
+      case GL_DRAW_BUFFER9_ARB:
+      case GL_DRAW_BUFFER10_ARB:
+      case GL_DRAW_BUFFER11_ARB:
+      case GL_DRAW_BUFFER12_ARB:
+      case GL_DRAW_BUFFER13_ARB:
+      case GL_DRAW_BUFFER14_ARB:
+      case GL_DRAW_BUFFER15_ARB:
+         CHECK_EXTENSION_D(ARB_draw_buffers, pname);
+         {
+            GLuint i = pname - GL_DRAW_BUFFER0_ARB;
+            if (i >= ctx->Const.MaxDrawBuffers) {
+               _mesa_error(ctx, GL_INVALID_ENUM,
+                           "glGetDoublev(GL_DRAW_BUFFERx_ARB)");
+               return;
+            }
+            *params = (GLdouble) ctx->Color.DrawBuffer[i];
+         }
+         break;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev(pname=0x%x)", pname);
    }
@@ -3509,7 +3573,7 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
         *params = (GLfloat) ctx->Visual.doubleBufferMode;
         break;
       case GL_DRAW_BUFFER:
-        *params = ENUM_TO_FLOAT(ctx->Color.DrawBuffer);
+        *params = ENUM_TO_FLOAT(ctx->Color.DrawBuffer[0]);
         break;
       case GL_EDGE_FLAG:
         FLUSH_CURRENT(ctx, 0);
@@ -4791,6 +4855,38 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          break;
 #endif
 
+      case GL_MAX_DRAW_BUFFERS_ARB:
+         CHECK_EXTENSION_F(ARB_draw_buffers, pname);
+         *params = (GLfloat) ctx->Const.MaxDrawBuffers;
+         break;
+      case GL_DRAW_BUFFER0_ARB:
+      case GL_DRAW_BUFFER1_ARB:
+      case GL_DRAW_BUFFER2_ARB:
+      case GL_DRAW_BUFFER3_ARB:
+      case GL_DRAW_BUFFER4_ARB:
+      case GL_DRAW_BUFFER5_ARB:
+      case GL_DRAW_BUFFER6_ARB:
+      case GL_DRAW_BUFFER7_ARB:
+      case GL_DRAW_BUFFER8_ARB:
+      case GL_DRAW_BUFFER9_ARB:
+      case GL_DRAW_BUFFER10_ARB:
+      case GL_DRAW_BUFFER11_ARB:
+      case GL_DRAW_BUFFER12_ARB:
+      case GL_DRAW_BUFFER13_ARB:
+      case GL_DRAW_BUFFER14_ARB:
+      case GL_DRAW_BUFFER15_ARB:
+         CHECK_EXTENSION_F(ARB_draw_buffers, pname);
+         {
+            GLuint i = pname - GL_DRAW_BUFFER0_ARB;
+            if (i >= ctx->Const.MaxDrawBuffers) {
+               _mesa_error(ctx, GL_INVALID_ENUM,
+                           "glGetFloatv(GL_DRAW_BUFFERx_ARB)");
+               return;
+            }
+            *params = (GLfloat) ctx->Color.DrawBuffer[i];
+         }
+         break;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(0x%x)", pname);
    }
@@ -5048,7 +5144,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
         *params = (GLint) ctx->Visual.doubleBufferMode;
         break;
       case GL_DRAW_BUFFER:
-        *params = (GLint) ctx->Color.DrawBuffer;
+        *params = (GLint) ctx->Color.DrawBuffer[0];
         break;
       case GL_EDGE_FLAG:
         FLUSH_CURRENT(ctx, 0);
@@ -6367,6 +6463,38 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          break;
 #endif
 
+      case GL_MAX_DRAW_BUFFERS_ARB:
+         CHECK_EXTENSION_I(ARB_draw_buffers, pname);
+         *params = ctx->Const.MaxDrawBuffers;
+         break;
+      case GL_DRAW_BUFFER0_ARB:
+      case GL_DRAW_BUFFER1_ARB:
+      case GL_DRAW_BUFFER2_ARB:
+      case GL_DRAW_BUFFER3_ARB:
+      case GL_DRAW_BUFFER4_ARB:
+      case GL_DRAW_BUFFER5_ARB:
+      case GL_DRAW_BUFFER6_ARB:
+      case GL_DRAW_BUFFER7_ARB:
+      case GL_DRAW_BUFFER8_ARB:
+      case GL_DRAW_BUFFER9_ARB:
+      case GL_DRAW_BUFFER10_ARB:
+      case GL_DRAW_BUFFER11_ARB:
+      case GL_DRAW_BUFFER12_ARB:
+      case GL_DRAW_BUFFER13_ARB:
+      case GL_DRAW_BUFFER14_ARB:
+      case GL_DRAW_BUFFER15_ARB:
+         CHECK_EXTENSION_I(ARB_draw_buffers, pname);
+         {
+            GLuint i = pname - GL_DRAW_BUFFER0_ARB;
+            if (i >= ctx->Const.MaxDrawBuffers) {
+               _mesa_error(ctx, GL_INVALID_ENUM,
+                           "glGetIntegerv(GL_DRAW_BUFFERx_ARB)");
+               return;
+            }
+            *params = (GLint) ctx->Color.DrawBuffer[i];
+         }
+         break;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
    }
@@ -6489,6 +6617,7 @@ _mesa_GetString( GLenum name )
    static const char *version_1_3 = "1.3 Mesa " MESA_VERSION_STRING;
    static const char *version_1_4 = "1.4 Mesa " MESA_VERSION_STRING;
    static const char *version_1_5 = "1.5 Mesa " MESA_VERSION_STRING;
+   static const char *version_2_0 = "1.5 Mesa " MESA_VERSION_STRING;/*XXX FIX*/
 
    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
 
@@ -6533,7 +6662,15 @@ _mesa_GetString( GLenum name )
                   if (ctx->Extensions.ARB_occlusion_query &&
                       ctx->Extensions.ARB_vertex_buffer_object &&
                       ctx->Extensions.EXT_shadow_funcs) {
-                     return (const GLubyte *) version_1_5;
+                     if (ctx->Extensions.ARB_draw_buffers &&
+                         ctx->Extensions.ARB_point_sprite &&
+                         ctx->Extensions.ARB_texture_non_power_of_two &&
+                         ctx->Extensions.EXT_stencil_two_side) {
+                        return (const GLubyte *) version_2_0;
+                     }
+                     else {
+                        return (const GLubyte *) version_1_5;
+                     }
                   }
                   else {
                      return (const GLubyte *) version_1_4;
index 025b3a5857d8bff28d01c29d7b56ae3f771b1292..3057770d0954c0591d269224470519f268b72659 100644 (file)
@@ -246,10 +246,14 @@ typedef GLushort GLhalfARB;
 #endif
 
 /* XXX temporary hack - remove when glext.h is updated */
-#ifndef GL_POINT_SPRITE_COORD_ORIGIN
-#define GL_POINT_SPRITE_COORD_ORIGIN        0x10000
-#define GL_LOWER_LEFT                       0x10001
-#define GL_UPPER_LEFT                       0x10002
+#ifndef GL_CURRENT_PROGRAM
+#define GL_CURRENT_PROGRAM             0x8B8D
+#define GL_POINT_SPRITE_COORD_ORIGIN   0x8CA0
+#define GL_LOWER_LEFT                  0x8CA1
+#define GL_UPPER_LEFT                  0x8CA2
+#define GL_STENCIL_BACK_REF            0x8CA3
+#define GL_STENCIL_BACK_VALUE_MASK     0x8CA4
+#define GL_STENCIL_BACK_WRITEMASK      0x8CA5
 #endif
 
 
index be6882f203f560fa89c6508a79636efdd80dceb0..07119a2fb6e182ecdd67d8978927ee6c9b8290ba 100644 (file)
@@ -7,7 +7,7 @@
 
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -150,71 +150,89 @@ struct gl_texture_format;
 
 
 /**
- * These define the aliases between numbered vertex attributes and
- * conventional OpenGL vertex attributes.  We use these values in
- * quite a few places.  
- *
- * New in Mesa 4.1.
+ * Indexes for vertex program attributes.
+ * GL_NV_vertex_program aliases generic attributes over the conventional
+ * attributes.  In GL_ARB_vertex_program shader the aliasing is optional.
+ * In GL_ARB_vertex_shader / OpenGL 2.0 the aliasing is disallowed (the
+ * generic attributes are distinct/separate).
  */
 enum {
-       VERT_ATTRIB_POS = 0,
-       VERT_ATTRIB_WEIGHT = 1,
-       VERT_ATTRIB_NORMAL = 2,
-       VERT_ATTRIB_COLOR0 = 3,
-       VERT_ATTRIB_COLOR1 = 4,
-       VERT_ATTRIB_FOG = 5,
-       VERT_ATTRIB_SIX = 6,
-       VERT_ATTRIB_SEVEN = 7,
-       VERT_ATTRIB_TEX0 = 8,
-       VERT_ATTRIB_TEX1 = 9,
-       VERT_ATTRIB_TEX2 = 10,
-       VERT_ATTRIB_TEX3 = 11,
-       VERT_ATTRIB_TEX4 = 12,
-       VERT_ATTRIB_TEX5 = 13,
-       VERT_ATTRIB_TEX6 = 14,
-       VERT_ATTRIB_TEX7 = 15,
-       VERT_ATTRIB_MAX = 16
-} ;
-
-/* These are used in bitfields in many places */
-#define VERT_BIT_POS     (1 << VERT_ATTRIB_POS)
-#define VERT_BIT_WEIGHT  (1 << VERT_ATTRIB_WEIGHT)
-#define VERT_BIT_NORMAL  (1 << VERT_ATTRIB_NORMAL)
-#define VERT_BIT_COLOR0  (1 << VERT_ATTRIB_COLOR0)
-#define VERT_BIT_COLOR1  (1 << VERT_ATTRIB_COLOR1)
-#define VERT_BIT_FOG     (1 << VERT_ATTRIB_FOG)
-#define VERT_BIT_SIX     (1 << VERT_ATTRIB_SIX)
-#define VERT_BIT_SEVEN   (1 << VERT_ATTRIB_SEVEN)
-#define VERT_BIT_TEX0    (1 << VERT_ATTRIB_TEX0)
-#define VERT_BIT_TEX1    (1 << VERT_ATTRIB_TEX1)
-#define VERT_BIT_TEX2    (1 << VERT_ATTRIB_TEX2)
-#define VERT_BIT_TEX3    (1 << VERT_ATTRIB_TEX3)
-#define VERT_BIT_TEX4    (1 << VERT_ATTRIB_TEX4)
-#define VERT_BIT_TEX5    (1 << VERT_ATTRIB_TEX5)
-#define VERT_BIT_TEX6    (1 << VERT_ATTRIB_TEX6)
-#define VERT_BIT_TEX7    (1 << VERT_ATTRIB_TEX7)
+   VERT_ATTRIB_POS = 0,
+   VERT_ATTRIB_WEIGHT = 1,
+   VERT_ATTRIB_NORMAL = 2,
+   VERT_ATTRIB_COLOR0 = 3,
+   VERT_ATTRIB_COLOR1 = 4,
+   VERT_ATTRIB_FOG = 5,
+   VERT_ATTRIB_SIX = 6,
+   VERT_ATTRIB_SEVEN = 7,
+   VERT_ATTRIB_TEX0 = 8,
+   VERT_ATTRIB_TEX1 = 9,
+   VERT_ATTRIB_TEX2 = 10,
+   VERT_ATTRIB_TEX3 = 11,
+   VERT_ATTRIB_TEX4 = 12,
+   VERT_ATTRIB_TEX5 = 13,
+   VERT_ATTRIB_TEX6 = 14,
+   VERT_ATTRIB_TEX7 = 15,
+   VERT_ATTRIB_GENERIC0 = 16,
+   VERT_ATTRIB_GENERIC1 = 17,
+   VERT_ATTRIB_GENERIC2 = 18,
+   VERT_ATTRIB_GENERIC3 = 19,
+   VERT_ATTRIB_MAX = 16
+};
+
+/**
+ * Bitflags for vertex attributes.
+ * These are used in bitfields in many places.
+ */
+/*@{*/
+#define VERT_BIT_POS      (1 << VERT_ATTRIB_POS)
+#define VERT_BIT_WEIGHT   (1 << VERT_ATTRIB_WEIGHT)
+#define VERT_BIT_NORMAL   (1 << VERT_ATTRIB_NORMAL)
+#define VERT_BIT_COLOR0   (1 << VERT_ATTRIB_COLOR0)
+#define VERT_BIT_COLOR1   (1 << VERT_ATTRIB_COLOR1)
+#define VERT_BIT_FOG      (1 << VERT_ATTRIB_FOG)
+#define VERT_BIT_SIX      (1 << VERT_ATTRIB_SIX)
+#define VERT_BIT_SEVEN    (1 << VERT_ATTRIB_SEVEN)
+#define VERT_BIT_TEX0     (1 << VERT_ATTRIB_TEX0)
+#define VERT_BIT_TEX1     (1 << VERT_ATTRIB_TEX1)
+#define VERT_BIT_TEX2     (1 << VERT_ATTRIB_TEX2)
+#define VERT_BIT_TEX3     (1 << VERT_ATTRIB_TEX3)
+#define VERT_BIT_TEX4     (1 << VERT_ATTRIB_TEX4)
+#define VERT_BIT_TEX5     (1 << VERT_ATTRIB_TEX5)
+#define VERT_BIT_TEX6     (1 << VERT_ATTRIB_TEX6)
+#define VERT_BIT_TEX7     (1 << VERT_ATTRIB_TEX7)
+#define VERT_BIT_GENERIC0 (1 << VERT_ATTRIB_GENERIC0)
+#define VERT_BIT_GENERIC1 (1 << VERT_ATTRIB_GENERIC1)
+#define VERT_BIT_GENERIC2 (1 << VERT_ATTRIB_GENERIC2)
+#define VERT_BIT_GENERIC3 (1 << VERT_ATTRIB_GENERIC3)
 
 #define VERT_BIT_TEX(u)  (1 << (VERT_ATTRIB_TEX0 + (u)))
+#define VERT_BIT_GENERIC(g)  (1 << (VERT_ATTRIB_GENERIC0 + (g)))
+/*@}*/
 
 
-/* Fragment programs use a different but related set of attributes:
+/**
+ * Indexes for fragment program input attributes.
  */
+enum {
+   FRAG_ATTRIB_WPOS = 0,
+   FRAG_ATTRIB_COL0 = 1,
+   FRAG_ATTRIB_COL1 = 2,
+   FRAG_ATTRIB_FOGC = 3,
+   FRAG_ATTRIB_TEX0 = 4,
+   FRAG_ATTRIB_TEX1 = 5,
+   FRAG_ATTRIB_TEX2 = 6,
+   FRAG_ATTRIB_TEX3 = 7,
+   FRAG_ATTRIB_TEX4 = 8,
+   FRAG_ATTRIB_TEX5 = 9,
+   FRAG_ATTRIB_TEX6 = 10,
+   FRAG_ATTRIB_TEX7 = 11
+};
 
-/* Fragment input registers / attributes */
-#define FRAG_ATTRIB_WPOS  0
-#define FRAG_ATTRIB_COL0  1
-#define FRAG_ATTRIB_COL1  2
-#define FRAG_ATTRIB_FOGC  3
-#define FRAG_ATTRIB_TEX0  4
-#define FRAG_ATTRIB_TEX1  5
-#define FRAG_ATTRIB_TEX2  6
-#define FRAG_ATTRIB_TEX3  7
-#define FRAG_ATTRIB_TEX4  8
-#define FRAG_ATTRIB_TEX5  9
-#define FRAG_ATTRIB_TEX6  10
-#define FRAG_ATTRIB_TEX7  11
-
-/* Bitmasks for the above */
+/*
+ * Bitflags for fragment attributes.
+ */
+/*@{*/
 #define FRAG_BIT_WPOS  (1 << FRAG_ATTRIB_WPOS)
 #define FRAG_BIT_COL0  (1 << FRAG_ATTRIB_COL0)
 #define FRAG_BIT_COL1  (1 << FRAG_ATTRIB_COL1)
@@ -236,6 +254,7 @@ enum {
                           FRAG_BIT_TEX5|       \
                           FRAG_BIT_TEX6|       \
                           FRAG_BIT_TEX7)
+/*@}*/
 
 
 /**
@@ -260,14 +279,6 @@ enum {
 /*@}*/
 
 
-/**
- * Maximum number of temporary vertices required for clipping.  
- *
- * Used in array_cache and tnl modules.
- */
-#define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
-
-
 /**
  * Data structure for color tables
  */
@@ -433,7 +444,7 @@ struct gl_accum_attrib {
 
 
 /**
- * Color buffers attributes.
+ * Color buffer attributes.
  */
 struct gl_colorbuffer_attrib {
    GLuint ClearIndex;                  /**< Index to use for glClear */
@@ -442,8 +453,8 @@ struct gl_colorbuffer_attrib {
    GLuint IndexMask;                   /**< Color index write mask */
    GLubyte ColorMask[4];               /**< Each flag is 0xff or 0x0 */
 
-   GLenum DrawBuffer;                  /**< Which buffer to draw into */
-   GLbitfield _DrawDestMask;           /**< bitmask of DD_*_BIT bits */
+   GLenum DrawBuffer[MAX_DRAW_BUFFERS];        /**< Which buffer to draw into */
+   GLbitfield _DrawDestMask[MAX_DRAW_BUFFERS];/**< bitmask of DD_*_BIT bits */
 
    /** 
     * \name alpha testing
@@ -698,6 +709,9 @@ struct gl_histogram_attrib {
 };
 
 
+/**
+ * Color Min/max state.
+ */
 struct gl_minmax_attrib {
    GLenum Format;
    GLboolean Sink;
@@ -705,6 +719,9 @@ struct gl_minmax_attrib {
 };
 
 
+/**
+ * Image convolution state.
+ */
 struct gl_convolution_attrib {
    GLenum Format;
    GLenum InternalFormat;
@@ -714,10 +731,16 @@ struct gl_convolution_attrib {
 };
 
 
+/**
+ * Light state flags.
+ */
+/*@{*/
 #define LIGHT_SPOT         0x1
 #define LIGHT_LOCAL_VIEWER 0x2
 #define LIGHT_POSITIONAL   0x4
 #define LIGHT_NEED_VERTICES (LIGHT_POSITIONAL|LIGHT_LOCAL_VIEWER)
+/*@}*/
+
 
 /**
  * Lighting attributes.
@@ -767,6 +790,9 @@ struct gl_line_attrib {
 };
 
 
+/**
+ * Display list state.
+ */
 struct gl_list_attrib {
    GLuint ListBase;
 };
@@ -787,6 +813,9 @@ struct gl_list_extensions {
 };
 
 
+/**
+ * Multisample state
+ */
 struct gl_multisample_attrib {
    GLboolean Enabled;
    GLboolean SampleAlphaToCoverage;
@@ -944,27 +973,45 @@ struct gl_stencil_attrib {
 
 #define NUM_TEXTURE_TARGETS 5   /* 1D, 2D, 3D, CUBE and RECT */
 
+/**
+ * An index for each type of texture object
+ */
+/*@{*/
 #define TEXTURE_1D_INDEX    0
 #define TEXTURE_2D_INDEX    1
 #define TEXTURE_3D_INDEX    2
 #define TEXTURE_CUBE_INDEX  3
 #define TEXTURE_RECT_INDEX  4
+/*@}*/
 
-/* Texture.Unit[]._ReallyEnabled flags: */
+/**
+ * Bit flags for each type of texture object
+ * Used for Texture.Unit[]._ReallyEnabled flags.
+ */
+/*@{*/
 #define TEXTURE_1D_BIT   (1 << TEXTURE_1D_INDEX)
 #define TEXTURE_2D_BIT   (1 << TEXTURE_2D_INDEX)
 #define TEXTURE_3D_BIT   (1 << TEXTURE_3D_INDEX)
 #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX)
 #define TEXTURE_RECT_BIT (1 << TEXTURE_RECT_INDEX)
+/*@}*/
 
 
-/* TexGenEnabled flags */
+/**
+ * TexGenEnabled flags.
+ */
+/*@{*/
 #define S_BIT 1
 #define T_BIT 2
 #define R_BIT 4
 #define Q_BIT 8
+/*@}*/
+
 
-/* Bitmap versions of the GL_ constants. */
+/**
+ * Bit flag versions of the corresponding GL_ constants.
+ */
+/*@{*/
 #define TEXGEN_SPHERE_MAP        0x1
 #define TEXGEN_OBJ_LINEAR        0x2
 #define TEXGEN_EYE_LINEAR        0x4
@@ -978,6 +1025,8 @@ struct gl_stencil_attrib {
                                  TEXGEN_REFLECTION_MAP_NV | \
                                  TEXGEN_NORMAL_MAP_NV     | \
                                  TEXGEN_EYE_LINEAR)
+/*@}*/
+
 
 /* A selection of state flags to make driver and module's lives easier. */
 #define ENABLE_TEXGEN0        0x1
@@ -1133,6 +1182,11 @@ struct gl_texture_image {
    /*@}*/
 };
 
+
+/**
+ * Indexes for cube map faces.
+ */
+/*@{*/
 #define FACE_POS_X   0
 #define FACE_NEG_X   1
 #define FACE_POS_Y   2
@@ -1140,6 +1194,8 @@ struct gl_texture_image {
 #define FACE_POS_Z   4
 #define FACE_NEG_Z   5
 #define MAX_FACES  6
+/*@}*/
+
 
 /**
  * Texture object record
@@ -1195,6 +1251,7 @@ struct gl_texture_object {
    /*@}*/
 };
 
+
 /**
  * Texture combine environment state.
  * 
@@ -1215,6 +1272,7 @@ struct gl_tex_env_combine_state {
    GLuint _NumArgsA;     /**< Number of inputs used for the combine mode. */
 };
 
+
 /**
  * Texture unit record 
  */
@@ -1414,7 +1472,7 @@ struct gl_client_array {
 
 
 /**
- * Array attributes.
+ * Vertex array state
  */
 struct gl_array_attrib {
    struct gl_client_array Vertex;           /**< client data descriptors */
@@ -1444,6 +1502,9 @@ struct gl_array_attrib {
 };
 
 
+/**
+ * Feedback buffer state
+ */
 struct gl_feedback {
    GLenum Type;
    GLuint _Mask;               /* FB_* bits */
@@ -1454,7 +1515,7 @@ struct gl_feedback {
 
 
 /**
- * Selection attributes.
+ * Selection buffer state
  */
 struct gl_selection {
    GLuint *Buffer;     /**< selection buffer */
@@ -1494,7 +1555,7 @@ struct gl_2d_map
 
 
 /**
- * All evaluator control points
+ * All evaluator control point state
  */
 struct gl_evaluators
 {
@@ -1561,7 +1622,7 @@ enum register_file
 };
 
 
-/* Vertex and fragment instructions */
+/** Vertex and fragment instructions */
 struct vp_instruction;
 struct fp_instruction;
 
@@ -1633,7 +1694,7 @@ struct program_state {
 
 
 /**
- * State vars for GL_NV_vertex_program
+ * State vars for GL_ARB/GL_NV_vertex_program
  */
 struct vertex_program_state
 {
@@ -1650,6 +1711,7 @@ struct vertex_program_state
    /* Only used during program execution (may be moved someday): */
    GLfloat Temporaries[MAX_NV_VERTEX_PROGRAM_TEMPS][4];
    GLfloat Inputs[MAX_NV_VERTEX_PROGRAM_INPUTS][4];
+   GLuint InputsSize[MAX_NV_VERTEX_PROGRAM_INPUTS];
    GLfloat Outputs[MAX_NV_VERTEX_PROGRAM_OUTPUTS][4];
    GLint AddressReg[4];
 
@@ -1826,6 +1888,7 @@ struct gl_constants
    GLuint MaxLights;
    GLfloat MaxShininess;                       /* GL_NV_light_max_exponent */
    GLfloat MaxSpotExponent;                    /* GL_NV_light_max_exponent */
+   GLuint MaxViewportWidth, MaxViewportHeight;
    /* GL_ARB_vertex_program */
    GLuint MaxVertexProgramInstructions;
    GLuint MaxVertexProgramAttribs;
@@ -1848,6 +1911,8 @@ struct gl_constants
    GLuint MaxProgramMatrixStackDepth;
    /* vertex array / buffer object bounds checking */
    GLboolean CheckArrayBounds;
+   /* GL_ARB_draw_buffers */
+   GLuint MaxDrawBuffers;
 };
 
 
@@ -1864,6 +1929,7 @@ struct gl_extensions
    /*@{*/
    GLboolean dummy;  /* don't remove this! */
    GLboolean ARB_depth_texture;
+   GLboolean ARB_draw_buffers;
    GLboolean ARB_fragment_program;
    GLboolean ARB_half_float_pixel;
    GLboolean ARB_imaging;
index 21e07e70d1eb4a367871f3e5d6ebe99f7056b149..449e4631e7797e73f889b0ac47850888ce3334fc 100644 (file)
@@ -724,6 +724,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
    exec->UnmapBufferARB = _mesa_UnmapBufferARB;
 #endif
 
+   /* ARB 29. GL_ARB_occlusion_query */
 #if FEATURE_ARB_occlusion_query
    exec->GenQueriesARB = _mesa_GenQueriesARB;
    exec->DeleteQueriesARB = _mesa_DeleteQueriesARB;
@@ -734,6 +735,9 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
    exec->GetQueryObjectivARB = _mesa_GetQueryObjectivARB;
    exec->GetQueryObjectuivARB = _mesa_GetQueryObjectuivARB;
 #endif
+
+   /* ARB 37. GL_ARB_draw_buffers */
+   exec->DrawBuffersARB = _mesa_DrawBuffersARB;
 }
 
 /*@}*/
index b563baf39a01f9ba81ea9235a60c3b4d670e3dc3..736ff2d73949ff764bc892e023bde2c72dfa3cba 100644 (file)
@@ -112,7 +112,7 @@ _swrast_clear_alpha_buffers( GLcontext *ctx )
 
    /* loop over four possible alpha buffers */
    for (bufferBit = 1; bufferBit <= 8; bufferBit = bufferBit << 1) {
-      if (bufferBit & ctx->Color._DrawDestMask) {
+      if (bufferBit & ctx->Color._DrawDestMask[0]) {
          GLchan *buffer;
          if (bufferBit == DD_FRONT_LEFT_BIT) {
             buffer = ctx->DrawBuffer->FrontLeftAlpha;
index 26b4f902e140123c3c84f0261ca5347014cc4292..d05c8dfbf9b8903f2a7c3cecbda14df0e131c46e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -147,7 +147,7 @@ clear_color_buffers(GLcontext *ctx)
 
    /* loop over four possible dest color buffers */
    for (bufferBit = 1; bufferBit <= DD_AUX3_BIT; bufferBit <<= 1) {
-      if (bufferBit & ctx->Color._DrawDestMask) {
+      if (bufferBit & ctx->Color._DrawDestMask[0]) {
          (*swrast->Driver.SetBuffer)(ctx, ctx->DrawBuffer, bufferBit);
 
          if (colorMask != 0xffffffff) {
@@ -199,7 +199,7 @@ _swrast_Clear( GLcontext *ctx, GLbitfield mask,
 
    /* do software clearing here */
    if (mask) {
-      if (mask & ctx->Color._DrawDestMask) {
+      if (mask & ctx->Color._DrawDestMask[0]) {
          clear_color_buffers(ctx);
          /* clear software-based alpha buffer(s) */
          if (ctx->DrawBuffer->UseSoftwareAlphaBuffers
@@ -260,6 +260,16 @@ _swrast_DrawBuffer( GLcontext *ctx, GLenum mode )
 }
 
 
+/*
+ * Fallback for ctx->Driver.DrawBuffers()
+ */
+void
+_swrast_DrawBuffers( GLcontext *ctx, GLsizei n, const GLenum *buffers )
+{
+   _swrast_use_draw_buffer(ctx);
+}
+
+
 /*
  * Setup things so that we read/write spans from the user-designated
  * read buffer (set via glReadPixels).  We usually just have to call
@@ -297,21 +307,21 @@ _swrast_use_draw_buffer( GLcontext *ctx )
     * we loop over multiple color buffers when needed.
     */
 
-   if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT)
+   if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT)
       swrast->CurrentBufferBit = DD_FRONT_LEFT_BIT;
-   else if (ctx->Color._DrawDestMask & DD_BACK_LEFT_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_BACK_LEFT_BIT)
       swrast->CurrentBufferBit = DD_BACK_LEFT_BIT;
-   else if (ctx->Color._DrawDestMask & DD_FRONT_RIGHT_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_FRONT_RIGHT_BIT)
       swrast->CurrentBufferBit = DD_FRONT_RIGHT_BIT;
-   else if (ctx->Color._DrawDestMask & DD_BACK_RIGHT_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_BACK_RIGHT_BIT)
       swrast->CurrentBufferBit = DD_BACK_RIGHT_BIT;
-   else if (ctx->Color._DrawDestMask & DD_AUX0_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_AUX0_BIT)
       swrast->CurrentBufferBit = DD_AUX0_BIT;
-   else if (ctx->Color._DrawDestMask & DD_AUX1_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_AUX1_BIT)
       swrast->CurrentBufferBit = DD_AUX1_BIT;
-   else if (ctx->Color._DrawDestMask & DD_AUX2_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_AUX2_BIT)
       swrast->CurrentBufferBit = DD_AUX2_BIT;
-   else if (ctx->Color._DrawDestMask & DD_AUX3_BIT)
+   else if (ctx->Color._DrawDestMask[0] & DD_AUX3_BIT)
       swrast->CurrentBufferBit = DD_AUX3_BIT;
    else
       /* glDrawBuffer(GL_NONE) */
index a678e0b55b25d22bbb51019fd9317d5263cf2c04..87d4bf8cdf39f4f7e7af17c1a07575fc87d5004b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -93,7 +93,7 @@ _swrast_update_rasterflags( GLcontext *ctx )
     * MULTI_DRAW_BIT flag.  Also set it if we're drawing to no
     * buffers or the RGBA or CI mask disables all writes.
     */
-   if (_mesa_bitcount(ctx->Color._DrawDestMask) != 1) {
+   if (_mesa_bitcount(ctx->Color._DrawDestMask[0]) != 1) {
       /* more than one color buffer designated for writing (or zero buffers) */
       rasterMask |= MULTI_DRAW_BIT;
    }
index f715e5a6267e150fe61d508c69b0c1d03d365c51..bfcd9cb8f7bd5cc70222a79da3d88aa09866bedf 100644 (file)
@@ -158,7 +158,7 @@ copy_conv_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
    }
 
    /* If read and draw buffer are different we must do buffer switching */
-   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer
+   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0]
                || ctx->DrawBuffer != ctx->ReadBuffer;
 
 
@@ -326,7 +326,7 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
    }
 
    /* If read and draw buffer are different we must do buffer switching */
-   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer
+   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0]
                   || ctx->DrawBuffer != ctx->ReadBuffer;
 
    if (overlapping) {
@@ -466,7 +466,7 @@ copy_ci_pixels( GLcontext *ctx, GLint srcx, GLint srcy,
       _swrast_span_default_fog(ctx, &span);
 
    /* If read and draw buffer are different we must do buffer switching */
-   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer
+   changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0]
                || ctx->DrawBuffer != ctx->ReadBuffer;
 
    if (overlapping) {
index 46f59ef3c02b64a7d570be5f90542846e155ead9..c4a86f141c5b770c822aa9f5a645a5447d1a1d72 100644 (file)
@@ -749,7 +749,7 @@ multi_write_index_span( GLcontext *ctx, struct sw_span *span )
 
    /* loop over four possible dest color buffers */
    for (bufferBit = 1; bufferBit <= 8; bufferBit <<= 1) {
-      if (bufferBit & ctx->Color._DrawDestMask) {
+      if (bufferBit & ctx->Color._DrawDestMask[0]) {
          GLuint indexTmp[MAX_WIDTH];
          ASSERT(span->end < MAX_WIDTH);
 
@@ -806,7 +806,7 @@ multi_write_rgba_span( GLcontext *ctx, struct sw_span *span )
 
    /* loop over four possible dest color buffers */
    for (bufferBit = 1; bufferBit <= 8; bufferBit <<= 1) {
-      if (bufferBit & ctx->Color._DrawDestMask) {
+      if (bufferBit & ctx->Color._DrawDestMask[0]) {
          GLchan rgbaTmp[MAX_WIDTH][4];
          ASSERT(span->end < MAX_WIDTH);
 
index 7fb0d2a389c88732af7bb4bf756ef66825b9aca7..7d8cf8c7a8a4d6648edde9b6a2e191f6d5824ede 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -141,6 +141,10 @@ extern void
 _swrast_DrawBuffer( GLcontext *ctx, GLenum mode );
 
 
+extern void
+_swrast_DrawBuffers( GLcontext *ctx, GLsizei n, const GLenum *buffers );
+
+
 /* Reset the stipple counter
  */
 extern void